function Lebrand_GetPageSize()
{
 var de = document.documentElement;
 var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
 var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
 arrayPageSize = [w,h];
 return arrayPageSize;
}

function show_progress_bar()
{


    //alert('показать прогрессбар');
    var arrayPageSize = Lebrand_GetPageSize();
    var page_width  = arrayPageSize[0];
    var page_height = arrayPageSize[1];
    jQuery.noConflict();




        var left = parseInt(jQuery().scrollLeft() + page_width/2 - 120);
	    var top =  parseInt(jQuery().scrollTop() + page_height/2 - 103);
		// создадим сообщение о загрузке
		////////jQuery('body').append('<DIV id="wait" class="waitwindowlocal" style="position:absolute; top:'+top+'px; left: '+left+'px"><img src="/img/progress_bar.gif" width="32" height="32" alt="" border="0" /><br /><br />Подождите, идет загрузка...</DIV>');

        jQuery('#wait').css( 'top',  top  );
		jQuery('#wait').css( 'left', left );
		


         //jQuery('#wait').show();


			//делаем ее посередине окна и с фиксированным положением



        //alert('top-' + top );
        //alert('left-' + left );
        //alert('jQuery().scrollTop()-' + jQuery().scrollTop() );



		// добавим текст
        //jQuery('#wait').html('');




}
function hide_progress_bar()
{
    //alert('скрыть прогрессбар');
    ////jQuery('#wait').empty();
    ////jQuery('#wait').remove();
    //jQuery('#wait').hide();
    jQuery('#wait').css( 'top',  '-10000px'  );
	jQuery('#wait').css( 'left', '-10000px' );

}


function empty(obj)
{
  return (typeof obj == "undefined");
}

jQuery.noConflict();
jQuery(function($) {  
  /* views list */
    var leViews = {
      block_hash_change: false,
      back_hash: "/",
      views: [],
      content_active_views: [],
      content_shown_view: "/",
      submenu_active_views: [],
      get: function(hash, $event_sender, content)
      {
        if (empty(this.views[hash]))
          this.views[hash] = new leContentViewer(hash, $event_sender, content);
        return this.views[hash];
      },
      getByHash: function(hash)
      {
        return this.views[hash];
      },
      addContentActiveView: function(hash)
      {
        this.back_hash = this.content_shown_view;
        this.content_shown_view = hash;
        updateAddress();
        this.content_active_views[this.content_active_views.length] = hash;
      },
      addSubmenuActiveView: function(hash)
      {
        this.submenu_active_views[this.submenu_active_views.length] = hash;
      },
      inContentActiveViews: function(hash)
      {
        var i = 0;        
        for (i=0;i<this.content_active_views.length;i++)
          if (this.content_active_views[i] == hash)
            return true;
        return false;
      },
      removeContentActiveView: function(hash)
      {
        this.content_shown_view = this.back_hash;
        this.back_hash = "/";
        updateAddress();
        var tmp = [];
        var j = 0;
        var i = 0;        
        var content_active_views = this.content_active_views;
        for (i=0;i<content_active_views.length;i++)
          if (content_active_views[i] != hash)
            tmp[j++] = content_active_views[i];
        this.content_active_views = tmp;
      },
      removeSubmenuActiveView: function(hash)
      {
        var tmp = [];
        var i = 0, j = 0;
        var submenu_active_views = this.submenu_active_views;
        for (i=0;i<submenu_active_views.length;i++)
          if (submenu_active_views[i] != hash)
            tmp[j++] = submenu_active_views[i];
        this.submenu_active_views = tmp;
      },
      redirect: function(hash)
      {
        var v;
        var content_active_views = this.content_active_views;
        var content_active_views_length = content_active_views.length;
        var i = 0;
        for (i=0;i<content_active_views_length;i++)
        {
          v = this.getByHash(content_active_views[i]);
          if (hash.indexOf(v.hash) < 0)
            v.close();
        }
      },
      closeSubmenuActiveViews: function(hash)
      {
        var v;
        var submenu_active_views = this.submenu_active_views;
        var submenu_active_views_length = submenu_active_views.length;
        var i = 0;
        for (i=0;i<submenu_active_views_length;i++)
        {
          v = this.getByHash(submenu_active_views[i]);
          if (hash.indexOf(v.hash) < 0)
            v.close();          
        }
      }      
    }
  /* . */
  
  /* подгрузка контента */
  var leContentServer = {
    cache: [],
    getContent: function(url, $event_sender)
    {
      show_progress_bar();//на время подгрузки контента показывает индикатор

      if (empty(this.cache[url]))
      {
        $("a", $event_sender).addClass("processing");
        $.get(url, function(content){
          leContentServer.cache[url] = content;
          leContentServer.viewContent(url, $event_sender, content);
        });
      }
      else
        leContentServer.viewContent(url, $event_sender, this.cache[url]);
    },
    viewContent: function(url, $event_sender, content)
    {
      hide_progress_bar();//скрывает индикатор загрузки

      var v = leViews.get(url, $event_sender, content);
      $("a.preprocessing", v.$event_sender).removeClass("preprocessing").addClass("processing");
      v.view();
    }
  }
  /* . */

  
  /* отображение контента */
  var leContentViewer = Class.create();
  leContentViewer.prototype = {
    x: -1,
    width: -1,
    animation_speed: 0,
    animation_speed_multiplier: 2,
    hash: "",
    content: "",
    $content: "",
    content_type: "content",
    $event_sender: "",
    $content_holder: "",
    viewBlock: "",
    initialize: function(hash, $event_sender, content)
    {
      this.hash = hash;
      this.content = content;
      this.$event_sender = $event_sender;
      this.getContentType();
      if (this.content_type == "submenu")
        prepareLinks(this.$content);
    },
    getAnimationSpeed: function()
    {
      /*
      if (!this.animation_speed)
        this.animation_speed = this.$content.height()*this.animation_speed_multiplier;
      */
      this.animation_speed = 500;
      return this.animation_speed;
    },    
    view: function()
    {
      this.$event_sender.prepend('<em class="selector">></em>');
      this.$event_sender.addClass("item_selected");
      if (!$(".keep_actives", this.$event_sender).length)
      {
        leViews.closeSubmenuActiveViews(this.hash);
      }
      else
        $(".keep_actives", this.$event_sender).removeClass("keep_actives");
        
      
      if (this.content_type == "submenu")
      {
        this.$content_holder = this.$event_sender;
        this.$event_sender.addClass("preselected");
        this.viewSubmenu();        
      }
      else
      {
        if (!this.isPermanent())
          prepareLinks(this.$content);
        if (($dropzone = leContentDropzones.getDropzoneForHash(this.hash)) !== false)
        {
          this.$content_holder = $(".content_holder:eq(0)", $dropzone);
          if (this.$content_holder.length)
            this.viewContent();
        }
      }
      
      this.$event_sender.removeClass("preselected");
    },
    clearProcessing: function()
    {
      $("a.processing", this.$event_sender).addClass("openedlink").removeClass("processing");
    },
    getContentType: function()
    {
      this.viewBlock = new leViewBlock(this.content);
      this.content_type =  this.viewBlock.getType();
      this.$content = this.viewBlock.clear();
    },
    viewSubmenu: function()
    {
      leViews.addSubmenuActiveView(this.hash);
      this.$content.hide().appendTo(this.$content_holder);
      this.$event_sender.addClass("selected");
      this.$content.trigger("content_before_view");
      leViewerStates.changeState();
      this.$content.slideDown(this.getAnimationSpeed(), function(){
        this.clearProcessing();
        this.$event_sender.trigger("view_for_sender");
        this.$content.trigger("view");
        $("body").dequeue();
      }.bind(this));
    },
    viewContent: function()
    {
      if (!this.isSilent())
        leViews.redirect(this.hash);
      
      $("#content_main").queue(function(){        
        leViews.addContentActiveView(this.hash);
        this.$content_holder.trigger("before_view");
        /*
        if ($(document).scrollTop())
          $(document).scrollTo(0, "slow");        
        */
        $(this.$content_holder).addClass("opened");
        this.$content.appendTo(this.$content_holder);
        this.$content_holder.trigger("before_content_view");
        this.$event_sender.addClass("selected");
        leViewerStates.changeState();
        this.setPosition();
        if (this.getAnimationType() == "none")
        {
          this.$content_holder.show();
          this.afterViewContent();
          $("#content_main").dequeue();
        }
        else
          this.$content_holder.hide().slideDown(this.getAnimationSpeed(), function(){
            this.afterViewContent();
            $("#content_main").dequeue();
          }.bind(this));      
      }.bind(this));
    },
    afterViewContent: function()
    {
      this.clearProcessing();
      this.$content.trigger("view");
      this.$event_sender.trigger("view_for_sender");      
      $("body").dequeue();
    },
    close: function()
    {
      this.$event_sender.removeClass("item_selected");
      if (this.content_type == "submenu")
        this.closeSubmenu();
      else
        this.closeContent();
      $("em.selector", this.$event_sender).remove();
      var $v;
      $(".item_selected a.openedlink", this.$event_sender).each(function(i, obj){
        $v = leViews.getByHash($(obj).attr("content"));
        if (!this.isSilent() || $v.content_type == "submenu")
          $v.close();
      }.bind(this));
      $("a.openedlink", this.$event_sender).removeClass("openedlink");
    },
    closeSubmenu: function()
    {
      leViews.removeSubmenuActiveView(this.hash);
      this.$content.slideUp(this.getAnimationSpeed(), function(){
        if (!this.$event_sender.hasClass("item_selected"))
          this.$event_sender.removeClass("selected");          
        leViewerStates.changeState();
        this.$event_sender.trigger("close_for_sender");
        this.$content.trigger("close"); 
      }.bind(this));
    },
    closeContent: function()
    {
      $("#content_main").queue(function(){
        leViews.removeContentActiveView(this.hash);
        if (this.getAnimationType() == "none")
        {
          this.$content_holder.hide();
          this.afterContentClose();
          $("#content_main").dequeue();
          $(".right").removeClass("disabled");            
        }
        else
          this.$content_holder.slideUp(this.getAnimationSpeed(), function(){
            this.afterContentClose();
            $("#content_main").dequeue();
            $(".right").removeClass("disabled");            
          }.bind(this));        
      }.bind(this));
    },
    afterContentClose: function()
    {
      if ($("body").hasClass("nonewsblock"))
        $(".right").addClass("disabled");
      $(this.$content_holder).removeClass("opened");
      if (!this.$event_sender.hasClass("item_selected"))
        this.$event_sender.removeClass("selected");
      this.$content_holder.trigger("before_content_close");
      this.$event_sender.trigger("close_for_sender");
      this.$content.trigger("close");
      if (!this.isPermanent())
        this.$content.remove();
      leViewerStates.changeState();
    },
    setPosition: function()
    {
      this.width = this.$content.width();
      this.x = this.$content.offset().left;
    },
    getWidth: function()
    {
      if (this.width == -1)
        this.setPosition();
      return this.width;
    },
    getX: function()
    {
      if (this.x == -1)
        this.setPosition();
      return this.x;
    },
    isPermanent: function()
    {
      return this.$content.hasClass("permanent");   
    },
    isSilent: function ()
    {
      return ($(".silent_mode", this.$event_sender).length > 0);
    },
    isViewed: function ()
    {
      return this.$event_sender.hasClass("item_selected");
    },
    getAnimationType: function()
    {
      if (this.$content_holder.hasClass("clip_animation"))
        return "none";      
      return "slide";
    },
    getAnimationDirection: function()
    {
      if (this.$content_holder.hasClass("clip_animation"))
        return "vertical";      
      return "down";
    }    
  }
  /* . */

  /* отображение контента */
  var leViewBlock = Class.create();
  leViewBlock.prototype = {
    $block: "",
    content: "",
    initialize: function(content)
    {
      this.content = content;
      this.create();
    },
    create: function()
    {
      this.$block = $("<div class='view_block_holder' style='display:none'>" + this.content + "</div>");
      $("img", this.$block).each(function(i, el){
        var j = 0;
        var $img = $(el).clone();
        var img_src = [];
        if (!empty($img.attr("src")))
          img_src[j++] = $img.attr("src");
        if (!empty($img.attr("project")))
          img_src[j++] = $img.attr("project");
        for (k=0; k<j; k++)
          $("<img src='" + img_src[k] + "' />").appendTo("#preload_dropzone").load(function(){
            $(this).remove();
          });          
      });
    },
    get: function ()
    {
      return this.$block;
    },
    clear: function ()
    {
      var $children = this.get().children();
      this.get().remove();
      return $children;
    },
    getType: function ()
    {
      if (this.get().children(".submenu").length)
        return "submenu";
      else
        return "content";     
    }
  }
  /* . */
  
  
  /* ссылки */
  function prepareLinks($parent)
  {
    $("a[href]", $parent).attr("content", function(){
      var href = $(this).attr("href");
      if ((href.indexOf("http://") > -1 && href.indexOf(window.location.host) < 0) || href.indexOf("mailto:") > -1 || href.indexOf("javascript:") > -1)
        return '';
      if (href.indexOf(window.location.host) > -1)
      {
        href = href.replace("http://", "");
        href = href.replace(window.location.host, "");
      }
      $(this).removeAttr("href")
      return href;
    });
    $("a[content]", $parent).click(function(){
      $("body").queue(function($event_sender){
        return function(){
          $event_sender.trigger("before_click");
          if ($event_sender.hasClass("processing"))
            return false;    
          if ($event_sender.hasClass("openedlink"))
          {
            leViews.getByHash($event_sender.attr("content")).close();
            $("body").dequeue();
            return false;
          }
          $event_sender.addClass("preprocessing");
          leContentServer.getContent($event_sender.attr("content"), $event_sender.parent());
        }
      }($(this)));
      return false;
    });
  }
  /* . */
   
  /* dropzones */
   var leContentDropzones = {
    zones: [],
    content_selector: "content_related",
    initialize: function()
    {
      var $zones = $(".page *[class*=" + leContentDropzones.content_selector + "]");
      $.each($zones, function(i, zone){
        var cls = $(zone).attr("class").split(" ");
        $.each(cls, function(j, cl){
          var p = -1;
          if ((p = cl.indexOf(leContentDropzones.content_selector)) > -1)
          {
            leContentDropzones.zones[cl.substr(p + leContentDropzones.content_selector.length).replace(/_/g, "/")] = $(zone);
          }
        })
      });
    },
    getDropzoneForHash: function(hash)
    {
      var $zone = null;
      var path = "";
      var chunks = hash.split("/");
      $.each(chunks, function(i, chunk){
        if (chunk.length && chunk.indexOf("http:") < 0 && chunk.indexOf(window.location.host) < 0)
        {
          if (!empty(Number(chunk)) && Number(chunk))
            path += "/NUM";
          else  
            path += "/" + chunk;
          if (!empty(leContentDropzones.zones[path]))
            $zone = leContentDropzones.zones[path];
        }
      })
      return ($zone === null)? false: $zone;
    }
  }
  leContentDropzones.initialize();
  /* . */  
  
  /* states */
   var leViewerStates = {
    default_state: "type1",
    tree: [
      {state: "nonewsblock", triggers: [".left .first.vacancies", ".center .portfolio"]},
      {state: "grey_page", triggers: [".page .box.content .content_holder.opened div"]},
      {state: "map", triggers: [".page .box.content .content_holder.opened div#map_canvas"]},
      {state: "structure", triggers: [".page .box.content .content_holder.opened div.structure"]},
      {state: "violet", triggers: [".page .box.content .content_holder.opened div.violet"]},
      {state: "green", triggers: [".page .box.content .content_holder.opened div.green"]},
      {state: "blue", triggers: [".page .box.content .content_holder.opened div.blue"]},
      {state: "turquoise", triggers: [".page .box.content .content_holder.opened div.turquoise"]},
      {state: "red", triggers: [".page .box.content .content_holder.opened div.red"]},
      {state: "orange", triggers: [".page .box.content .content_holder.opened div.orange"]},
      {state: "crimson", triggers: [".page .box.content .content_holder.opened div.crimson"]},
      {state: "type5", triggers: [".center .services"]},
      {state: "type2", triggers: [".center .portfolio"]},
      {state: "type3", triggers: [".left .first.vacancies"]},
      {state: "type4", triggers: [".left .first:not(.vacancies)"]},
      {state: "first_selected", triggers: [".menu .first .preselected ul.submenu li div", ".menu .first .selected ul.submenu li div"]},
      {state: "third_selected", triggers: [".menu .third .content_holder.opened .clients_all_submenu"]}
    ],
    current_state: "type1",
    state_holder_selector: "body",
    getState: function()
    {
      var states = [];
      var state_i = 0;
      for (i=0;i<leViewerStates.tree.length;i++)
        for (j=0; j< leViewerStates.tree[i].triggers.length; j++)
          if ($(leViewerStates.tree[i].triggers[j]).length)
            states[state_i++] = leViewerStates.tree[i].state;
      if (state_i)
        return states.join(" ");
      return false;
    },
    changeState: function()
    {
      var new_state = leViewerStates.getState();
      if (!new_state) new_state = leViewerStates.default_state;
      if (new_state.indexOf("type") < 0)
        new_state = leViewerStates.default_state + " " + new_state;
      if (leViewerStates.current_state != "")
        $(leViewerStates.state_holder_selector).removeClass(leViewerStates.current_state);
      $(leViewerStates.state_holder_selector).addClass(new_state);
      leViewerStates.current_state = new_state;
    }
  }
  /* . */  
      
  prepareLinks($("ul.menu .topmenu ul"));
  prepareLinks($("ul.change_type"));  
  prepareLinks($(".new_holder .viewer_holder"));
  
  $("#clients_all_reset").click(function(){
    leViews.redirect("/");
  });
  
  $("ul.menu .topmenu.last a[href]").removeAttr("href").click(function(){
    var $menu_reset = $("#clients_all_reset");
    if ($menu_reset.length)
        $menu_reset.click();
    return false;
  });

  $("ul.menu .topmenu a[href]").removeAttr("href").click(function(){
    leViews.closeSubmenuActiveViews("/");
    return false;
  });
  
  $(".left .content_holder").bind("before_content_view", function(){    
    $(".awards").bind("view", function(){
      $("div h6", this).unbind("click").bind("click", function(){
        if ($(this).parent("div").hasClass("open"))
          return false;
        $(".awards div.open").removeClass("open");
        $(this).parent("div").addClass("open");
        var $i = $("img", $(this).parent("div"));
        if ($i.length)
        {
          $(".awards img.viewer").attr("src", $i.attr("src")).attr("width", $i.attr("project_width")).attr("height", $i.attr("project_height")).show();
        }
        else
          $(".awards img.viewer").hide();      
      });
    });
  });    
  
  
  $("a.home").click(function(){
    var path = leViews.back_hash;
    leViews.redirect(path);
    return false;
  });
    
  $("span.logo").click(function(){
    if ($(".grey_page ").length)
      $("a.home").click();
    return false;
  });  
  
  
  $('<a id="redirect_link" href=""></a>').click(function(){
    var hash = $(this).attr("href");
    
    if (!hash.length)
      return false;
      
    if (!leViews.inContentActiveViews(hash))
    {
        var $submenu_link = $("a[content=" + hash + "]");
        if ($submenu_link.length)
          $($submenu_link.get(0)).click();
        else
        {
          var p, $v;
          var hash_tmp = hash;
          while (hash_tmp.length && (p = hash_tmp.lastIndexOf("/")) > -1)
          {
            hash_tmp = hash_tmp.substr(0, p);
            $submenu_link = $("a[content=" + hash_tmp + "/]");
            if ($submenu_link.length)
            {
              $submenu_link = $($submenu_link.get(0));
              $submenu_link.parent().one("view_for_sender", function(){
                $("#redirect_link").attr("href", hash).click();
              });          
              $submenu_link.click();
              return false;
            }
          }
        }
    }
    else
      leViews.redirect(hash);
    return false;
  }).appendTo("#preload_dropzone");
  
  $('<div id="content_injected"></div>').change(function(){
    prepareLinks($(".to_prepare", this).removeClass("to_prepare"));
  }).appendTo("#preload_dropzone");

  function addressChangeHandler(event)
  {    
    SWFAddress.removeEventListener(SWFAddressEvent.CHANGE, addressChangeHandler);
    var address = SWFAddress.getPath();
    if (address == "/")
    {
      leViews.redirect("/");
      return false;
    }
    if (address.length)
    {
      $("#redirect_link").attr("href", address).click();
    }
  }
  function updateAddress()
  {
    SWFAddress.removeEventListener(SWFAddressEvent.CHANGE, addressChangeHandler);
    SWFAddress.setValue(leViews.content_shown_view);    
    SWFAddress.addEventListener(SWFAddressEvent.CHANGE, addressChangeHandler); 
  }
  SWFAddress.addEventListener(SWFAddressEvent.CHANGE, addressChangeHandler);
  if ($.browser.opera)
      addressChangeHandler();
});