Validation=function(options){this.options=options;this.form=$j(options.form);this.errors={};var me=this;this.form.submit(function(){return me.validate()});for(field in this.options.fields){var validator=(function(field2){return function(){if(this.pressed)me.validate_field(field2,true)}})(field);this.form.find(field).blur(validator);this.form.find(field).keypress(function(ev){if(ev.keyCode!=9)this.pressed=true})}};Validation.prototype={validate:function(){var me=this;for(field in this.options.fields){me.validate_field(field)};if(this.all_errors().length>0){this.show_errors();return false}else{return true}},validate_field:function(field,show_errors){var me=this;this.field=field;var value=this.form.find(field).removeClass("error").val();this.label_tag(field).find("small").remove();this.errors[field]=[];$j(this.options.fields[field]).each(function(){return this(value,me)});if(show_errors)this.show_errors_for_field(field)},error:function(message){if(!this.errors[this.field])this.errors[this.field]=[];this.errors[this.field].push(message)},all_errors:function(){var me=this;var all_errors=[];for(field in this.errors){$j(this.errors[field]).each(function(){all_errors.push(me.label_of(field)+": "+this)})};return all_errors},label_tag:function(field){return this.form.find("label[for="+field.replace(/^\#/,'')+"]")},label_of:function(field){return this.label_tag(field).html()},show_errors:function(){var me=this;var all_errors_container=me.form.find(".error-messages").show();if(all_errors_container.size()){var error_tag="p";if(all_errors_container.find("ul").size()>0){error_tag="li";all_errors_container=all_errors_container.find("ul")};all_errors_container.html(" ");$j(this.all_errors()).each(function(){var p=$j("<"+error_tag+">"+this+"</"+error_tag+">");all_errors_container.append(p)})}for(field in this.errors){this.show_errors_for_field(field)}},show_errors_for_field:function(field){if(this.errors[field].length==0)return false;var me=this;this.form.find(field).addClass("error");var label=this.label_tag(field);text=$j(this.errors[field]).map(function(){return"<small>"+this+""});label.append(text.get().join(",</small> ")+"</small>")}};Validation.presense=function(message){if(!message)message="необходимо заполнить";return function(value,object){if(value){return true}else{object.error(message);return false}}};Validation.length_in=function(f,t,message1,message2){if(!message1)message1="слишком короткое";if(!message2)message2="слишком длинное";return function(value,object){if(value.length<f){object.error(message1);return false};if(value.length>t){object.error(message2);return false}};return true};Validation.match=function(regexp,message){if(!message)message="имеет неверный формат";return function(value,object){if(value.match(regexp)){return true}else{object.error(message);return false}}};
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'; path=/';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
if(!Array.indexOf){Array.prototype.indexOf = function(obj){for(var i=0; i<this.length; i++){if(this[i]==obj){return i;};};return -1;};};

var $j = jQuery.noConflict();
function corners(e, inline){  
  if($j.browser.opera && inline) e.each(function() { this.innerHTML = $j(this).text(); }); // opera have some problems with inline-block and span
  
  e.append($j("<small class='tl'></small><small class='tr'></small><small class='br'></small><small class='bl'></small>"))
}
$j(document).ready(function() {
  if($j.browser && ($j.browser.msie || $j.browser.opera)){
    
    $j.browser.msie6 = navigator.userAgent.match(/MSIE 6/);
    $j.browser.msie7 = navigator.userAgent.match(/MSIE 7/);
    $j.browser.msie67 = $j.browser.msie6 || $j.browser.msie7;
    
    corners($j("#main .left li.active a"), true);
    corners($j("#top_menu li.active a"), true);
    corners($j("#order"));
    $j("#main .text table tr th:first-child").addClass("first_child");
  }
    
  $j("a.file").each(function() {
    var me = $j(this);
    var ext = this.href.match(/\.(\w+)$/)[1];
    var p = $j("<p class='file-note note-top'><a href='"+ this.href + "' class='" + ext + "'>" + this.title + "</a></p>");
    var rulers = $j("<p class='rulers'></p>");
    p.append(rulers);
    me.append(p);
    var fix_width = function() {
      rulers.width(Math.abs(me.offset().left - p.offset().left) - me.width()/2);
    }
    fix_width();
    $j(window).resize(fix_width)
  })
  
  // init search
  var search_field = $j("#search .field");
  search_field.blur(function(){
    if(!search_field.val()){ search_field.val("Поиск"); search_field.removeClass("active"); }
  }).focus(function(){
    if(search_field.val() == "Поиск"){ search_field.val(""); search_field.addClass("active"); }
  })
  $j("#search form").submit(function() {
    if(search_field.val() == "" || search_field.val() == "Поиск") return false;
  })
    
  init_order();
  init_menu();
  init_fancy();
  init_switchers();
  enchant_tracking();
})


var validate_order = function() {

}


var init_menu = function(){
  //version 3
  return false;
  // version 2
  var menus = $j.cookie("mv");
  if(!menus) menus = "";
  menus = menus.split(";");
  var active_id = $j("#menu li.level1.active.container:has(a.active)").attr("id");
  if(active_id) active_id = active_id.match(/\d+/)[0];
  if(menus.indexOf(active_id) == -1) menus.push(active_id);
  $j(menus).each(function() {
    $j("#menu_"+this).addClass("active");
  })
  $j.cookie("mv", menus.join(";"))
  
  return false;
  // version 1
  var menu = $j("#menu .level1");
  folds = menu.find("> a");
  folds.click(function() {
    
    var me = $j(this).parent();
    var was_active = me.hasClass("active");
    folds.each(function(){
      var fold = $j(this).parent();
      if(fold[0] == me[0]) return true;
      if(fold.hasClass("active")){
//        fold.find("ul").slideUp("slow")
        fold.removeClass("active")
      }
    })
    
//    me.find("ul").slideDown(1000);
    if(was_active) me.removeClass("active");
    else me.addClass("active");
    return false;
  })
}


// validation_type:
// 1 -- Вариант с проверкой: или email или телефон
// 2 -- Вариант с проверкой: телефон обязательно, e-mail по желанию
// 3 -- Вариант с проверкой: телефон и email обязательны
function validate_mail_and_phone(phone, email, validation_type){
  
  if (validation_type == 1){
    // 1 -- Вариант с проверкой: или email или телефон
    if(email.val()){ // есть email
      if(!email.val().match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)){ // email не того формата
        email.addClass("error");
      }else{ // нормальный email
        email.removeClass("error");
        phone.removeClass("error");
      }
    }else{ // нет email
      if(phone.val()){ // есть телефон
        if(!phone.val().match(/(\d+.*){4}/i)){ // телефон не того формата
          phone.addClass("error");
        }else{ // нормальный телефон
          phone.removeClass("error");
          email.removeClass("error")
        }
      }else{ // ни телефона ни емейла
        email.addClass("error");
        phone.addClass("error");
      }
    }
  }else if (validation_type == 2){      
    // 2 -- Вариант с проверкой: телефон обязательно, e-mail по желанию
    if(email.val()){ // есть email
      if(!email.val().match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)){ // email не того формата
        email.addClass("error");
      }else{ // нормальный email
        email.removeClass("error");
      }
    }
    if(phone.val()){ // есть телефон
      if(!phone.val().match(/(\d+.*){4}/i)){ // телефон не того формата
        phone.addClass("error");
      }else{ // нормальный телефон
        phone.removeClass("error");
      }
    }else{
      phone.addClass("error");
    }
  }else if (validation_type == 3){
    // 3 -- Вариант с проверкой: телефон и email обязательны
    if(email.val()){ // есть email
      if(!email.val().match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)){ // email не того формата
        email.addClass("error");
      }else{ // нормальный email
        email.removeClass("error");
      }
    }else{
      email.addClass("error");
    }
    if(phone.val()){ // есть телефон
      if(!phone.val().match(/(\d+.*){4}/i)){ // телефон не того формата
        phone.addClass("error");
      }else{ // нормальный телефон
        phone.removeClass("error");
      }
    }else{
      phone.addClass("error");
    }
  }
}

var init_order = function(){
  $j("div.order-now a.option").click(function(e){
    // Реагировать только на нажатие области с X от 0 до 15
    if ((e.clientX - $j(this).offset().left) < 15){
      $j(this).toggleClass("checked");
      return false;
    }
  });
    
  $j("div.order-now").css("cursor","pointer").click(function(){
    var options = $j(this).find("a.checked").map(function() { return $j(this).attr('rel') }).get();
    $j.cookie("options", options.join(';'));
    var href = $j(this).find(".order").attr("href");
    if (href.match(/order\.html/)) href = href.split(/#/)[0];
    location.href = href;
    return true;
  });
  
  $j(".order-wrapper-left .order-people").each(function() {
    var me = $j(this);
    var texts = me.find("strong");
    if (texts.size() > 1){
      var tick = 0;
      setInterval(function() {
        tick += 1;
        me.find("strong:visible").fadeOut(500, function() {
          me.find(".order-text-" + (tick % texts.size())).animate({opacity: 'show'}, {step: function() { this.style.display = 'block'}, duration: 500});
        });
      }, 3000)
    }
  })
  
  var form = $j("#order");
  if(form.size()){
    // cb init
    var load_options_to_form = function(options){
      form.find(".cb input").removeAttr("checked");
      $j(options).each(function() {
        $j("#" + this).attr("checked", "checked");
      })
    };
    
    var load_options_to_order_now = function(){
      var order_now = $j("#main div.order-now");
      order_now.find("a.option").removeClass("checked");
      $j(options).each(function() {
        order_now.find("a[rel='" + this + "']").addClass("checked"); 
      })
    };
    
    var options = $j.cookie("options");
    if(options && options.split(";").length > 0){
      options = options.split(";");
      load_options_to_form(options);
      load_options_to_order_now(options);
      $j("div.order-now a.order").click(function(){
        load_options_to_form($j.cookie("options").split(";"));
        return true;
      })
    }
    
    if(navigator.userAgent.match(/MSIE 6/)){
      var iefixtextarea = function(){ form.find("textarea").width("97%");form.find("textarea").width(form.find("textarea").width()); };
      iefixtextarea();
      $j(window).resize(iefixtextarea);
    }
    
    form.append($j("<input type='hidden' name='spamtrap' value='42'>"));
    
    form.submit(function() {
      var email = form.find("#order_email");
      var phone = form.find("#order_phone");
      var name  = form.find("#order_name");
      
      // Вызываем проверку телефона и email с типом проверки = 2
      validate_mail_and_phone(phone, email, 2);
      
      if(name.val()){ // проверка имени
        name.removeClass("error");
      }else{
        name.addClass("error");
      }
      
      // Финальный тест
      if(form.find(".error").size()){ // есть ошибка
        // выбираем сообщение
        if(form.find(".error[value!='']").size())
          $j(".error-messages").html("Проверьте правильность заполнения полей ввода");
        else
          $j(".error-messages").html("Заполните поля ввода");

        $j(".error-messages").show();
        return false;
      }else{
        $j(".error-messages").hide();
        return true;
      }
      
    })
    
  }
}

// fancy_actual
function fancy_actual_off(){
  var wrap = $j("#fancy_wrap");
  var out = wrap.find("#fancy_outer");
  wrap.removeClass("actual");
  $j("#fancy_actual").attr("title","Исходный размер");
  if(navigator.userAgent.match(/MSIE 7/)){
    $j("body").css("width","auto");
  }
  if(navigator.userAgent.match(/MSIE 6/)){
    $j("body").css("width","auto");
  }
}

function fancy_actual(){
  var wrap = $j("#fancy_wrap");
  var out = wrap.find("#fancy_outer");
  if(wrap.hasClass("actual")){
    fancy_actual_off();
    out.css("left", out.data('old_left'));
  }else{
    wrap.addClass("actual");
    out.data('old_left', out.css("left"));
    var box_width = out.width();
    
    if(navigator.userAgent.match(/MSIE 7/)){
      box_width = Math.max(box_width, out.find("img").width()+40);
      $j("body").css("width",box_width);
    }
    
    if(navigator.userAgent.match(/MSIE 6/)){ // Иногда поведение отличается от IE7, зависит от фазы луны
      box_width = Math.max(box_width, out.find("img").width()+40);
      $j("body").css("width",box_width);      
    }
    
    out.css("left", Math.max(0, $j(window).width() - box_width) / 2 );
    $j("#fancy_actual").attr("title","Уместить в экран")
  }
  window.scroll(0,$j("#fancy_outer").offset().top);
  return false;
}
function fancy_actual_start(){
  if($j("#fancy_actual").size() == 0){
    var actual = $j("<a href='javascript:void(0)' id='fancy_actual' title='Исходный размер'></a>");
    actual.click(fancy_actual);
    $j("#fancy_inner").append(actual);
  }
}
function fancy_actual_show(){
  fancy_actual_off();
}
function fancy_actual_close(){
  fancy_actual_off();
}



// end fancy_actual

function init_fancy(){
  
  fancybox_options = {
    imageScale: true,
    centerOnScroll: false
    // callbackOnStart: fancy_actual_start,
    // callbackOnShow: function() { 
    //   fancy_actual_show();
    //   track('Images', 'Show', $j("#fancy_img").attr("src").split(/\?/)[0]);
    // },
    // callbackOnClose: fancy_actual_close
  }
  
  $j("#main .text a.report").click(function(){
    var anchor = $j(this).attr("href").split("#")[1];
    $j("#main .text p#" + anchor + " .image:first").trigger("click");
    return false;
  })
  
  $j("#main .text p.images").each(function() {
    
    if($j.browser.msie67){ // fix images scaling for ie6 & ie7
      $j(this).find("a.image.iefix").each(function() {
        this.href = this.href.replace(/(\.[^\/]+)$/,'_ie$1');
      })
      fancybox_options.imageScale = false;
    }
    
    $j(this).find("a.image").fancybox(fancybox_options);
  });
}

function init_switchers(){
  var switchers = $j("#main .text a.switcher");
  switchers.click(function() {
    var me = $j(this);
    var related = $j(me.attr("rel"))
    if(related.is(":visible")){
      related.hide();
      me.addClass("switcher-inactive")
    }else{
      related.show();
      me.removeClass("switcher-inactive")
    }
    return false;
  });
  
  switchers.each(function() {
    var me = $j(this);
    if(!me.hasClass("switcher-on")){
      $j(me.attr("rel")).hide();
      me.addClass("switcher-inactive")
    }
  })
}

function init_support(){
  var form = $j("#support_form");
  
  form.append($j("<input type='hidden' name='spamtrap' value='42'>"));
  
  //validation
  var fields = { "#support_dogovor": [Validation.presense()] };
  fields["#support_fio"] = [Validation.presense()];
  // fields["#support_phone"] = [Validation.presense()];
  // fields["#support_email"] = [Validation.presense(), Validation.match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)];
  fields["#support_date"] = [Validation.presense()];
  fields["#support_text"] = [Validation.presense()];
  var validator = new Validation({form: "#support_form", fields: fields})
  
  form.submit(function() {
    
    var email = form.find("#support_email");
    var phone = form.find("#support_phone");
    
    // Вызываем проверку телефона и email с типом проверки = 2
    validate_mail_and_phone(phone, email, 2);
    
    // Финальный тест
    if(form.find(".error").size()){ // есть ошибка
      // выбираем сообщение
      if(form.find(".error[value!='']").size())
        $j(".error-messages").html("Проверьте правильность заполнения полей ввода");
      else
        $j(".error-messages").html("Заполните поля ввода");

      $j(".error-messages").show();
      return false;
    }else{
      $j(".error-messages").hide();
      return true;
    }
  });
}

function video_start_ga(obj){
  if(obj.state) track('Video', 'Play', location.href);
  else track('Video', 'Pause', location.href);  
}
function video_item_ga(obj){
  track('Video', 'Play', location.href);
}
function video_stop_ga(){
  track('Video', 'Stop', location.href);
}

var player = null; 
function playerReady(thePlayer) { 
  player = window.document[thePlayer.id];
  if(location.hash == '#video') player.sendEvent('PLAY');
  $j("a.video").click(function() { player.sendEvent('PLAY') })
  
  player.addControllerListener("ITEM", "video_item_ga");
  player.addControllerListener("PLAY", "video_start_ga");
  player.addControllerListener("STOP", "video_stop_ga");
}


function init_clients(){
  $j("#clients h2").hide();
  var links = $j("#top_menu a");
  links.click(function() {
    var me = $j(this);
    var ul = me.attr("href").match(/(#.*)/)[0]
    if(ul == "#all"){
      $j("#clients ul").show();
    }else{
      ul = $j(ul);
      $j("#clients ul").hide();
      ul.show();
    }
    $j("#top_menu li").removeClass("active");
    me.parent().addClass("active");
    return false;
  })
}

function news_date_init(){
  return false;
  var news = $j("#main .text .news-item .news-date");
  if(news.size()){
    
    var filter_news = function() {
      var me = $j(this);
      var year = me.attr("rel");
      var y = year % 100;
      if(y < 10) y = "0" + y;
      var r = new RegExp(y + "$");
      news.each(function() {
        var me = $j(this);
        if(me.html().match(r)){
          me.parent().show();
        }else{
          me.parent().hide();
        }
      })
    
      $j("#top_menu li").removeClass("active");
      me.parent().addClass("active");
    }
    
    var hash = location.hash;
    hash = $j("#top_menu a[rel=" + hash.replace('#','') + "]")
    if(hash.size()){
      hash.parent().addClass("active");
      filter_news.apply(hash.get(0))
    }else{
      hash = $j("#top_menu a:first");
      hash.parent().addClass("active");
      filter_news.apply(hash.get(0))
    }
    
    $j("#top_menu a").click(filter_news)
  }else{
    var y = $j("#main .news-date:first").html();
    var m = y.match(/.(\d\d)$/)
    if(m) y = m[1];
    else return false;
    var r = new RegExp(y + "$");

    $j("#top_menu a").each(function() {
      var me = $j(this);
      if(me.attr('rel').match(r)){
        me.parent().addClass("active link")
      }
    })
  }
}

function track(g, e, l, v){
  if(window.pageTracker) pageTracker._trackEvent(g, e, l, v);
}


// Настройка отслеживания событий
function enchant_tracking(){
  // Записываем события об открытии файлов
  $j("#main .text p.library-file a").click(function() {
    track("Files","Open", $j(this).attr("href"));
    return true;
  })
  
  // Проверяем, был ли переход со статей
  var articles_click = $j.cookie("articles-click");
  if (articles_click){
    $j.cookie("articles-click","");
  }
  
  
  // Записываем события о действиях с формой заказа
  $j("#order").submit(function() {
    if($j(".error-messages:visible").size()){
      track("Order","Error", location.href);
    }else{
      if (articles_click){
        track("Order","Submit-From-Article", articles_click);
      }else{
        track("Order","Submit", location.href);
      }
    }
    return true;
  })
  
  // Записываем события о баннерах со статьями
  $j("body.article .order-wrapper a.option").click(function() {
    track("Articles-Test","Order-Checkbox-Click",location.href + ';' + $j(this).text());
  })
  $j("body.article .order-wrapper a.order").click(function() {
    track("Articles-Test","Order-Do-Click", location.href);
    $j.cookie("articles-click", location.href);
  })
}

function show_menu(id){
  $j("#menu_"+id).addClass("active");
}