jQuery.preventDefaultEvent = function(e, options) {
  options = options || {shift:1, ctrl:1, alt:1, meta:1, wheel:1};
  var href = e.currentTarget.href;
  if(((options.shift && e.shiftKey)
    || (options.alt && e.altKey)
    || (options.ctrl && e.ctrlKey) 
    || (options.meta && e.metaKey)
    || (options.wheel && e.button == 1))
    && href && href.indexOf('#') != 0
    && href.indexOf('javascript:') != 0
  ) return true;
  e.preventDefault();
  return false;
}

var shift_x = 0;
var old_pos =0;

var unverified = false;

function shift_amp(x, b, a)
{
	if(a == undefined) {a = 3;}
	if(b == undefined) {b = 30;}
	var xx = Math.PI/2+ Math.PI*x;
	return b*Math.sin(xx)*Math.exp(-x/a);
}
function shift_user_popup(sh)
{
	if(old_pos ==0)
	{
		old_pos = $('#user-popover').position().left;
		shift_x = 0;
	}
	if(sh == undefined) {shift_x=0;}
	var dx = shift_amp(shift_x);
	var sx = old_pos - dx;
	
	var tx = Math.abs(dx)/30;
	
	$('#user-popover').animate({left: sx}, 50, function(){
		shift_x++;
		if( Math.abs(old_pos - sx)>5) {shift_user_popup(1);}
		else{$('#user-popover').animate({left: old_pos}, 100, function(){});}
	});
	
	return;
}

var setcur_flag = 0;

/* variable to get syncronized  */
var Post_sync = {
	post: false
};


var Data = {};

var S = {
  initialize: function() {
  this.detectIE();
  this.doubleHover();
	this.TakeMoney.initialize();
	this.ChangeName.initialize();
	this.Tracking.initialize();
	this.ChangeBillingAddress.initialize();
	this.LoadProductPic.initialize();
	this.LoadUserPic.initialize();
	this.ProductGallery.initialize();
	this.ChangeUserText.initialize();
	this.AlignSocial.initialize();
	this.CardRotation.initialize();
    this.Placeholder.initialize();
    this.Button.initialize();
    this.History.initialize();
	this.Currency.initialize();
    this.Cart.initialize();
	this.Popover.initialize();
	this.UserPopover.initialize();
	this.checkRequiredFields();
	this.Rotate.initialize();
	this.MailPopover.initialize();
	this.PayPopover.initialize();
    this.ImagePopover.initialize();
  this.Matrix.initialize();
		this.OldPrice.initialize();
	this.Voting.initialize();
	this.root = $("#root");

	 this.Zoom.initialize();
	},

	/*Демонстрация голосования на странице конкретных джинс (product.shtml)*/
	Voting: {
		initialize: function() {
			var container = $("#voting");
			if (container.size()) {
				this.container = container;
				this.stars = $(".b-stars", this.container);
				this.average = parseFloat(this.stars.attr("data-average"));
				this.stars.data({average: this.average});
				this.star = $("i", this.stars);
				this.text = $(".text", this.container);
				this.votes = Math.ceil($(".votes", this.text).text()); 

				this.star.hover(function(){$(this).addClass("hover")},function(){$(this).removeClass("hover")});

				// Переменная с голосом, пользователя, видимо должна хранится где-то в другом месте.
				// Если переменная определена, неразрешаем пользователю больше голосовать.
				this.myVote = false;

				if(this.stars.hasClass('allow'))
				{
					this.stars.mouseenter($.proxy(this.readyToVote,this));
					this.stars.mouseleave($.proxy(this.notReadyToVote,this));
					this.star.click(function(){
						S.Voting.vote($(this));
					});
				}
				this.setAverage();
			}
		},
		setAverage: function() {
			var average = Math.round(this.average)/2;
			var full = Math.floor(average);
			var half = average - full > 0 ? full + 1 : false;

			this.star.removeClass("my filled filled_my filled_half filled_half_my");

			this.star.slice(0, full).addClass("filled");
			if (half) {
				this.star.slice(full, half).addClass("filled_half");
			}

			if (this.myVote) {
				var myStar = this.star.eq((this.myVote/2)-1);
				if (myStar.hasClass("filled")) {
					myStar.addClass("filled_my");
				} else if (myStar.hasClass("filled_half")) {
					myStar.addClass("filled_half_my");
				} else {
					myStar.addClass("my");
				}
			}
		},
		readyToVote: function() {
			if (!this.myVote) {
				this.stars.addClass("b-stars_ready-to-vote");
				this.text.html("<strong>Cast your vote</strong>");
			}
		},
		notReadyToVote: function() {
			if (!this.myVote) {
				this.stars.removeClass("b-stars_ready-to-vote");
				this.setText();
			}
		},
		setText: function() {
			if(this.votes == 0)
			{var html = '<span class="votes">Vote</span>';}
			else if(this.votes % 10 == 1)
			{var html = '<span class="votes">'+this.votes+' vote</span>';}
			else
			{var html = '<span class="votes">'+this.votes+' votes</span>';}
			
			if (this.myVote) {
				if(this.votes > 1){	html = html + ' with yours';}
				else {	html = ' Your vote';}
			}
			this.text.html(html);
		},
		vote: function(star) {
			if (!this.myVote) {
				this.notReadyToVote();

				this.myVote = (this.star.index(star) + 1) * 2;

				// Подсчёт нового среднего значения, алгоритм упрощён в целях демонстрации
				this.average = ((this.votes*this.average)+this.myVote)/(this.votes+1);
				this.votes++;

				//console.log(this.average);

				this.setAverage();

				// Заводим иконку «аякс-лоадер»...
				this.text.html('<strong>Updating <i class="ajax"></i></strong>');
				
				$.post('/product/vote/', {'id':  page_product_id , 'vote':this.myVote}); 

				// Демо-таймер на секунду, типа отправляем аякс здесь куда-то. А потом показываем новую шкалу и текст.
				//setTimeout($.proxy(function(){
					this.setText();
				//},this),1000);
			}
		}
	},

		/* Пересортировка джинс в матрице by stars, by price, created recently и т. д. (frontpage.shtml, catalog_inside.shtml) */
    Matrix:
    {
        initialize: function() {
            var switcher = $(".js-sort-matrix .switch");
            switcher.click(
                    function() {
                        if (!$(this).hasClass("switch_selected")) {
                            $(this).addClass("switch_selected");
                            switcher.not($(this)).removeClass("switch_selected"); 
                            S.Matrix.reload($(this).parents(".js-sort-matrix").attr("data-matrix"), $(this).attr('data-section'));
                        }
                    }
            );
        },

        reload: function(matrixId, section) {
            var matrix = $("#" + matrixId);
						matrix.stop().fadeTo(0, 0.5);
						// __________CHANGE___________
            matrix.load( section , function() {
							matrix.stop().fadeTo("fast", 1);
							S.Rotate.initialize();
	            var price = $(".price", matrix);
	            S.Currency.findAndWrap(price);
	            S.Currency.setCurrency(Currency.currentCurrency, true, matrix);
            });
        }
    },

	/* Смена валюты на всём сайте, в корзине (S.Cart) реализована отдельной функцией */
	/* Принимает в себя данные о курсах Currency.currencies, и о текущей валюте Currency.currentCurrency */
	/* Подразумевается, что в ХТМЛ отдаются цены в долларах, дальше скрипт их конвертирует при необходимости. */
	Currency: {
		initialize: function() {
			var button = $(".bCurrency");
			if (button.size()) {
				this.button = button; 
				this.price = $(".b-matrix .price")
						.add(".b-matrix .sales")
						.add(".b-button_red-price .b-button__text")
						.add("div:not(.item_checkout) .b-buy__price")
						.add(".b-form .to-pay")
						.add(".b-footer .price")
						.add(".t-old-price")
						.add(".t-new-price")
						.add(".b-take-money .sum")
						.add(".b-take-money .sum-out .sup")
						.add(".b-take-money p")
						//.add(".discount-value")   // added 
						.add(".b-popover .my-money"); 
				this.currencySign = $();
				this.currencyValue = $(".b-take-money .take-it input");
				this.findAndWrap(this.price);

				S.Currency.setCurrency(Currency.currentCurrency, true, false);

				this.button.click(function(e){
					e.preventDefault();
					var currency = $(".b-button__text", this).text();
					S.Currency.setCurrency(currency, false, false);
				});
			}
		},
		findAndWrap: function(price) {
			var signReg = /([$€?])/g;
			var signValue = /([0-9]+)/g;
			price.each(function(i){
				//console.log(i);
				$(this).html($(this).html().replace(signReg, '<span class="js-currency-sign">$1</span>'));
				$(this).html($(this).html().replace(signValue, '<span class="js-currency-value">$1</span>'));
			});
			this.currencySign = this.currencySign.add(".js-currency-sign", price);
			this.currencyValue = this.currencyValue.add(".js-currency-value", price);
		},
		setCurrency: function(currency, onReady, region) {
			var button = this.button.filter(function(){
					return $(".b-button__text", this).text() == currency;
				});
			

			var currencySign = this.currencySign;
			var currencyValue = this.currencyValue;

			if (region) {
				currencySign = $(".js-currency-sign", region);
				currencyValue = $(".js-currency-value", region);
			}

			currencySign.text("").text(currency);

			currencyValue.each(function(){
				var value = $(this).data("value");
				if (!$(this).is("input")) {
					if (!value) {
						value = Math.ceil($(this).text());
					}
				} else {
					if (!value) {
						value = Math.ceil($(this).val());
					}
				}

				var prevCurrencyRate = Currency.currencies[Currency.currentCurrency];
				if (onReady) {
					prevCurrencyRate = 1;
				}

				var newValue = value / prevCurrencyRate * Currency.currencies[currency];

				//console.log(value, Data.money.currencies[S.Currency.currentCurrency], S.Currency.currentCurrency, S.Currency.currencies[currency]);

				if (!$(this).is("input")) {
					$(this).text(Math.round(newValue)).data({"value": newValue});
				} else {
					$(this).val(Math.round(newValue)).data({"value": newValue});
				}
			});

			button.addClass("b-button_checked");
			this.button.not(button).removeClass("b-button_checked");
			Currency.currentCurrency = currency;
			if(setcur_flag >0){
				$.post('/cart/setcur/', {'currency': Currency.currencyKeys[currency] }); 
				$("#tDiscountCode").trigger('keyup');
			}
				
			setcur_flag ++;
		}
	},

  /*Поведение корзины: валюта, дублирование джинс, удаление из заказа, восстановление, доставка, подрузка Гугль-карт предыдущие адреса, скидка по промо-коду (cart_full.shtml) */
	Cart: {
    
    dicountValidator: null,
    currentSizeButton: null,
    map: null,
    marker: null,
    switcher: null,
    currentAddress: null,
    
    initialize: function()
    {
      if (typeof(Data.money) == 'undefined') { return; }
      var saveValue = '';
      
      var checkout = $('.b-cart .item_checkout');
	  checkout.css('display', 'block');
	  S.Button.initializeDeferred(checkout);
      $('.b-cart .b-button--wrap_currency').css('display', 'block');
      Data.money.discountStatus = 'none';
      $('.b-cart #tDiscountCode').keyup(
        function()
        {
          
          var value = $(this).val();
          //if (value != saveValue)
          //{
            $(this).stopTime('discount');
            if (S.Cart.dicountValidator != null)
            {
              S.Cart.dicountValidator.abort();
              S.Cart.dicountValidator = null; 
            }
          //}
          //console.log(value);
          if (value != '' && value != 'Enter here')
          { 
            $(this).oneTime(250, 'discount', 
              function()
              {
				var coupon = value.replace('#','|');
				if(coupon != '|' && coupon.length > 3)
				{
					var val_url = '/cart/validate/code/' + coupon;
					//alert("Value: "+val_url);
					
					S.Cart.dicountValidator = $.ajax({
					  url: val_url,
					  dataType: 'json',
					  success: function(data)
					  {
						//console.log(data);
						if (data.error != 1)  
						{ 
							Data.money.discountType = data.coupon_type; 
							if(data.coupon_amount_type !='perc')
							{
								
								var Disc = Math.round(data.coupon_rest_amount * Currency.currencies[Currency.currentCurrency]);
								Data.money.discount = Disc;
								
								
							}else 
							{
								Data.money.discount = data.coupon_rest_amount;
								
							}
							Data.money.discountType = data.coupon_amount_type;
							//console.log(Data.money.discountType);
							
							Data.money.discountStatus = 'ok'; 
						} 
						else
						{
						  Data.money.discount = 0;
						  Data.money.discountStatus = 'error';  
						}   
					  },
					  error: function()
					  {
						Data.money.discount = 0;
						Data.money.discountStatus = 'error';  
					  },
					  complete: function()
					  {
						S.Cart.calculate();
					  }
					});  
				}
              }
            )
          }
          else
          {
            Data.money.discount = 0;
            Data.money.discountStatus = 'none';
            S.Cart.calculate();  
          }
        }
      
      );
      if (typeof(Data) != 'undefined') {
        this.setCurrency(Data.money.currency);
        $('.bCurrency').click(
            function(e) {
	            e.preventDefault();
              var currency = $(this).find('.b-button__text').text();
              S.Cart.setCurrency(currency);
            }
        );
      }
    },
    
    setCurrency: function(currency)
    {
      Data.money.currency = currency;
      $('.bCurrency').each(
        function()
        {
          var button = $(this);
          var label = button.find('.b-button__text').text();
          if (label == Data.money.currency)
          {
            button.addClass('b-button_checked');
          }
          else
          {
            button.removeClass('b-button_checked');  
          }  
        }
        
      );
      
      $('#cartTotalCurrency').text(currency);
      this.calculate();  
    },
    
    clone: function(index)
    {
      var newItem = $.extend(true, {}, Data.cart.items[index]);
      Data.cart.items.splice(index, 0, newItem);
	  //alert('clone '+index+' -> '+Data.cart.items.length);
      this.calculate(); 
		 //alert('clone '+index+' -> '+Data.cart.items.length);
    },
    
    remove: function(index)
    {
      Data.cart.items[index].productStatus = 'item_deleted';
	  //alert('remove '+index+' -> '+Data.cart.items.length);
      this.calculate();  
	   //alert('remove '+index+' -> '+Data.cart.items.length);
    },
    
    putBack: function(index)
    {
		Data.cart.items[index].productStatus = '';
		$('div.b-buy_cart').removeClass('b-buy_disabled');
		$('#to_proceed').hide();
		$('#addr_proceed').hide();
		$('.b-buy__we-accept').show();
      this.calculate();  
    },
    
    draw: function()
    {
      var template = $('#t_cartItem').html();
      var isFirst = true;
      var count = 0;
      $('div.b-cart > div.item_dynamic').remove();
      if (Data.cart.items.length > 0) 
      {
        for (var i = 0; i < Data.cart.items.length; i++) 
        {
          
          var cartItem = Data.cart.items[i];
		  // alert(dump(Data.cart.items));  
		  // alert(i);
		  // alert(Data.cart.items.length);
		   
          cartItem.index = i;
          var item = template;
		  
          if (typeof(cartItem.backStatus) == 'undefined')
          {
            cartItem.backStatus = false;
          }
	        if (typeof(cartItem.backFirst) == 'undefined')
          {
            cartItem.backFirst = false;
          }
          if (!cartItem.backStatus)
          {
				//var back.src = img.attr("altim");
				cartItem.productImage = cartItem.productImage;//.replace('_ass.', '.');
          }
          else if (cartItem.backStatus && !cartItem.backFirst)
          {
				cartItem.productImage = cartItem.productImageAlt;//.replace('.', '_ass.');
          }//*/
	        //console.log(cartItem.productImage);
			//console.log(cartItem.productImageAlt);
          for (var property in cartItem)
          {
	        if(!(property == "productImageWidth" && isIE))
                item = item.replace(new RegExp('%%' + property + '%%', 'g'), cartItem[property]);
	        else { // в инетрнет эксплорере по другому
	            item = item.replace(new RegExp('class=img', 'g'), "class='img' style='width:"+cartItem[property]+"px;'");
	            item = item.replace(new RegExp('width=%%productImageWidth%%', 'g'), "width="+cartItem[property]);
	        }
	      }
          item = item.replace('%%currency%%', Data.money.currency);
          item = item.replace('%%itemFirst%%', isFirst ? 'item_first' : '');
          isFirst = false;
          
          $('#cartItemsAnchor').before(item);
          if (cartItem.productStatus == '' || cartItem.productStatus == '1')
          {
            count++;
          }
        }
        this.drawDiscount();
        
        $('div.b-cart .bPlusOne').click(
          function()
          {
            var button = $(this);
            var index = button.attr('data-index'); 
			$.post('/cart/clone', {'id': index }, function(data){
				if(data == 1)
					S.Cart.clone(index);
				else
					alert('Sorry error ocured, while working with data. Try to add jeans in other way.'); 
			});
            
          }
        );
        $('div.b-cart .bRemove').click(
          function()
          {
			var button = $(this);
			var index = button.attr('data-index');
            $.post('/cart/chg', {'status': '0', 'id': index }, function(data){
				//alert('remove');
				S.Cart.remove(index);
			});
          }
        );
        $('div.b-cart .bPutBack').click(
          function()
          {
            var button = $(this);
            var index = button.attr('data-index');
			 $.post('/cart/chg', {'status': '1', 'id': index }, function(data){
				//alert('putback');
				S.Cart.putBack(index);
			});
          }
        );
      }
      
      
      $('#cartCount').text(count);
      
      var error = 0;
	  
      error = (count == 0) ? 1 : 0;
      
      if (Data.cart.delivery.enabled)
      {
        this.drawDelivery();   
      }
      if (Data.money.wallet > 0)
      {
        var container = $('#cartItemsAnchor');
        if (container.attr('data-status') != 'ready')
        {
          template = $('#t_wallet').html();
          item = template;
          for (var property in Data.money)
          {
            item = item.replace('%%' + property + '%%', Data.money[property]);
          }
          item = item.replace(/%%currency%%/g, Data.money.currency);
          $('#cartItemsAnchor').html(item);
          container.attr('data-status', 'ready'); 
        }
        else
        {
          $('.b-cart #walletMoney').text(Data.money.realWallet);
          $('.b-cart .moneyCurrency').html(Data.money.currency);
        }     
      }else	$('#cartItemsAnchor').hide();
  
      if (Data.money.walletValid)
      {
        $('.digits-wrap_credit').removeClass('error');
      }
      else
      {
        $('.digits-wrap_credit').addClass('error'); 
        if (error == 0)
        {
          error = 2;
        }  
      }
      $('.b-cart #walletWantToSpend')
		      .click(
		      function(e)
		      {
			      e.preventDefault();
			      $(this).select();
		      }
      )
		      .keyup(
						function()
						{
							var value = $(this).val();
							if (value == '')
							{
								value = 0;
							}
							$(this).stopTime('wantToSpend');
							$(this).oneTime(50, 'wantToSpend',
								function()
								{
									Data.money.wantToSpend = value;
									S.Cart.calculate();
								}
							);
						}
      );

      if (error > 0)
      {
		//alert('b-buy_disabled '+error);
        //$('div.b-buy_cart').addClass('b-buy_disabled');
      }
      else if (Data.cart.delivery.addressMode == 'view')
      {
        //$('div.b-buy_cart').removeClass('b-buy_disabled');  
      }

	    S.Rotate.initialize();
	    //this.size();

	    S.ProductSizePopover.initialize();
		  S.ProductSizePopover_two.initialize();
    },
    
    drawDelivery: function()
    {
      var container = $('#deliveryContainer');
      var addressMode = container.attr('data-addressMode');
      if (addressMode != Data.cart.delivery.addressMode)
      {
        var template = $('#t_delivery_' + Data.cart.delivery.addressMode).html();

        for (var property in Data.cart.delivery)
        {
          template = template.replace('%%' + property + '%%', Data.cart.delivery[property]);
        }

        var address = Data.cart.delivery.addresses[Data.cart.delivery.currentAddress];
        for (var property in address)
        {
          template = template.replace(new RegExp('%%' + property + '%%', 'g'), address[property]);
        }
		
		if (Data.cart.delivery.addressMode == 'edit')
        {
          var addressList = this.drawAddressList();
          template = template.replace(/%%addressList%%/g, addressList);
        }
        template = template.replace(/%%currency%%/g, Data.money.currency);
        container.html(template);
        if (Data.cart.delivery.addressMode == 'view')
        {
          S.Cart.currentAddress = $.extend({}, address); 
          $('.b-cart #bEditAddress').click(
            function()
            {
              Data.cart.delivery.addressMode = Data.cart.delivery.addressMode == 'view' ? 'edit' : 'view';
              S.Cart.draw();  
				 //$('.b-cart #bUseAddessButton').addClass('b-button_disabled');
            }
          );
          $('.b-cart #bAnotherAddress').click(
            function() 
            {
              var invalidAddressIndex = -1;
              for (var i = 0; i < Data.cart.delivery.addresses.length; ++i)
              {
                var addressValid = S.Cart.validateAddressData(i);
                if (!addressValid)
                {
                  invalidAddressIndex = i;
                  break;
                }
              }
              /*if (invalidAddressIndex == -1)
              {
                Data.cart.delivery.addresses.push({fullName : '', streetAddress : '', country : '', city : '', zip : '', phone : ''});
                Data.cart.delivery.currentAddress = Data.cart.delivery.addresses.length - 1;
              }
              else*/if (invalidAddressIndex != -1)
              {
                Data.cart.delivery.addresses[invalidAddressIndex] = {fullName : '', streetAddress : '', country : '', city : '', state: '', zip : '', phone : '', email : ''};
                Data.cart.delivery.currentAddress = invalidAddressIndex; 
              }
              Data.cart.delivery.addressMode = Data.cart.delivery.addressMode == 'view' ? 'edit' : 'view';
              S.Cart.draw();
              //$('div.b-buy_cart').addClass('b-buy_disabled');
              //$('.b-cart #bUseAddessButton').addClass('b-button_disabled');
            }
          );  
        }
        else if (Data.cart.delivery.addressMode == 'edit')
        {
		  //$('div.b-buy_cart').addClass('b-buy_disabled');
          var invalidAddressIndex = -1;
          for (var i = 0; i < Data.cart.delivery.addresses.length; ++i)
          {
            var addressValid = S.Cart.validateAddressData(i);
            if (!addressValid)
            {
              invalidAddressIndex = i;
			  //$('.b-cart #bUseAddessButton').addClass('b-button_disabled');
              break;
            }
          }
          if (invalidAddressIndex == Data.cart.delivery.currentAddress)
          {
            maxAddresses = 1;  
          }
          else
          {
            maxAddresses = (invalidAddressIndex > -1) ? 2 : 1;
          }
          if (Data.cart.delivery.addresses.length <= maxAddresses)
          {
            $('.b-cart #previous-addresses-button').css('visibility', 'hidden');
          }
          else
          {
            $('.b-cart #previous-addresses-button').css('visibility', 'visible');
          }
		  /*  ---------------------------------  */
		  var states = [];
          for (var i in Data.cart.delivery.states)
          {
            states.push(i);  
          }
          var state = $('.b-cart #form-state');
          state.autocomplete(
            {
              source: states,
              select: function(event, ui) 
              {
                address.state = ui.item.value;
              }
            } 
          );
		  
		  
		  /*  ---------------------------------  */
          var countries = [];
          for (var i in Data.cart.delivery.countries)
          {
            countries.push(i);  
          }
          var country = $('.b-cart #form-country');
          if (country.val() != '' && Data.cart.delivery.countries[country.val()])
          {
            var flagFile = site_host_static+'flags_' + Data.cart.delivery.countries[country.val()] + '.png';
            flagFile = flagFile.toLowerCase();
            $('.b-cart #countryFlag').attr('src', flagFile).show();
          }
          country.autocomplete(
            {
              source: countries,
              select: function(event, ui) 
              {
                address.country = ui.item.value;
                if (Data.cart.delivery.countries[address.country])
                {
                  if (Data.cart.delivery.countries[address.country])
                  {
                    var flagFile = site_host_static+'flags_' + Data.cart.delivery.countries[address.country] + '.png';
                    flagFile = flagFile.toLowerCase();
                    $('.b-cart #countryFlag').attr('src', flagFile).show();
                  }
                }
                else
                {
                  $('.b-cart #countryFlag').attr('src', '').hide();
                }
              }
            } 
          );
          $('.b-cart #bUseAddessButton').click(function() // click use Address button
            {
				S.Cart.addrCheckoutSub();
            }
          );
          $('.b-cart #bCancel').click(
            function()
            {
              if (S.Cart.currentAddress)
              {
                var index = S.Cart.indexOfAddress(S.Cart.currentAddress);
                
                if (index == -1)
                {
                  Data.cart.delivery.addresses.push(S.Cart.currentAddress);
                  Data.cart.delivery.currentAddress = Data.cart.delivery.addresses.length - 1;
                }
                else
                {
                  Data.cart.delivery.currentAddress = index;
                }
                Data.cart.delivery.addressMode = 'view';
                S.Cart.draw();
              }
            }
          );
          var popup = $(".b-cart #previous-addresses-popup");
            var switcher = $(".b-cart #previous-addresses-button").add(".b-cart .address", popup);
            switcher.click(function(e){
	          e.stopPropagation();
			      if (switcher.hasClass("b-button_switched")) {
				      switcher.removeClass("b-button_switched");
                      popup.hide(100);
			      } else {
                      switcher.addClass("b-button_switched");
                      popup.show(100);
                  }

	                 popup.click(function(e){
		                 e.stopPropagation();
	                 });

	                 $(document).click(function(){
		                 switcher.removeClass("b-button_switched");
		                 popup.hide(100);
	                 });

          });
          $(".b-cart .address__forget .switch", popup).click(function(e){
            e.stopPropagation();
          });
          $('.b-cart #previous-addresses-popup .address').click(S.Cart.clickAddress);
          /*
		  $('.b-cart .validated').keyup(
            function()
            {
              var addressValid = S.Cart.validateAddress();
              if (addressValid)
              {
				//alert('Addr Valid ');
                //$('div.b-buy_cart').removeClass('b-buy_disabled');
                $('.b-cart #bUseAddessButton').removeClass('b-button_disabled');
              }
              else
              {
				//alert('Addr Invalid ');
                //$('div.b-buy_cart').addClass('b-buy_disabled');
                $('.b-cart #bUseAddessButton').addClass('b-button_disabled');
              }
            }
          );//*/
          $('.b-cart .addressPart').change(
            function()
            { 
              var address = $.extend({}, Data.cart.delivery.addresses[Data.cart.delivery.currentAddress]);
              address.streetAddress = $('.b-cart #form-street-address').val();
			  address.state = $('.b-cart #form-state').val();
              address.city = $('.b-cart #form-city').val();
              address.country = $('.b-cart #form-country').val();
              if (this.id == 'form-country')
              {
                if (Data.cart.delivery.countries[address.country])
                {
                  var flagFile = site_host_static+'flags_' + Data.cart.delivery.countries[address.country] + '.png';
                  flagFile = flagFile.toLowerCase();
                  $('.b-cart #countryFlag').attr('src', flagFile).show();
                }
                else
                {
                  $('.b-cart #countryFlag').attr('src', '').hide();
                }
				S.Cart.updateAddressDelivery(address);
              }
              S.Cart.drawMap(address);
            }
          );
		  
		  
			$('.b-cart input').change(
			function()
			{	
				var id = $(this).attr('id');
				var tmp_label = $('label[for="'+id+'"]').removeClass('addr_wrong'); 
				if(getCartCount()>0) 
				{
					$('div.b-buy_cart').removeClass('b-buy_disabled'); 
					$('#addr_proceed').hide();
					$('#to_proceed').hide();
					$('.b-buy__we-accept').show();
				}
			});//*/
		
			$('.b-cart .address__forget').click(S.Cart.forgetAddress);
			
			if(unverified != false)$('#'+unverified).addClass('addr_wrong');
		}
		this.drawMap();
		
      }
      else
      {
		//alert('2 \r\n'+dump(Data.cart.delivery.price));
        $('.b-cart #deliveryContainer .moneyCurrency').text(Data.money.currency);
        $('.b-cart #deliveryContainer #deliveryPrice').text(Data.cart.delivery.price);
        $('.b-cart #deliveryContainer #deliveryFreePrice').text(Data.cart.delivery.freePrice);
		//alert('3');
      } 
      container.attr('data-addressMode', Data.cart.delivery.addressMode);  
    },
	
	addrCheckoutSub: function()
	{
		unverified = S.Cart.validateAddress();
				
		$('label').removeClass('addr_wrong');
		if(unverified != false)
		{
			//alert(' unverified id = #'+unverified);
			//$('#'+unverified).css('background-color', '#fdd'); 
			$('input #'+unverified).focus(); //delay(300).focus();
			//document.getElementById(unverified).style.backgroundColor = '#fdd';
			//$('input #'+unverified).css('border', '2px double red');
			$('#'+unverified).addClass('addr_wrong'); 
			//$('#'+unverified).val('EMPTY'); 
				
			$('label[for="'+unverified+'"]').addClass('addr_wrong'); 
			
			return false;
		}
		
		var address = {};
		//Data.cart.delivery.addressMode == 'view' ? 'edit' : 'view';
		if(Data.cart.delivery.addressMode == 'edit')
		{
			
			address.fullName = $('.b-cart #form-full-name').val();
			address.streetAddress = $('.b-cart #form-street-address').val();
			address.city = $('.b-cart #form-city').val();
			address.state = $('.b-cart #form-state').val();
			address.country = $('.b-cart #form-country').val();
			address.zip = $('.b-cart #form-zip-code').val();
			address.phone = $('.b-cart #form-telephone-no').val();
			address.email = $('.b-cart #form-email').val();
		
		
			Data.cart.delivery.addresses = {};
			Data.cart.delivery.addresses[0] = address;
			
		}
		
		address = Data.cart.delivery.addresses[0] ;
		
		//var fl = false;
		
		$.post('/cart/addrchg',{'id': 0,'addr': $.toJSON(address)}, function(data){
	//	  alert('addrchg : '+data); 
			
			Data.cart.delivery.currentAddress =0;
			Data.cart.delivery.addressMode = 'view';
			S.Cart.updateAddressDelivery(address);

			S.Cart.draw();
			if(getCartCount()>0)
			{
				$('div.b-buy_cart').removeClass('b-buy_disabled'); 
				$('#addr_proceed').hide();
				$('#to_proceed').hide();
				$('.b-buy__we-accept').show();
			}
		//fl=true;	
		});
		
		//while(! fl);
		return true;
		/*var index = S.Cart.indexOfAddress(address);
		if (index == -1) 
		{
			if(Data.cart.delivery.addresses.length == 1)
			{
				var first = Data.cart.delivery.addresses[0];
				if(	first.fullName=='' &
					first.streetAddress=='' &
					first.city=='' &
					first.state=='' &
					first.country=='' &
					first.zip=='' &
					first.phone=='' )
				{
					Data.cart.delivery.addresses.pop();
				}
			}
			Data.cart.delivery.addresses.push(address);
			Data.cart.delivery.currentAddress = Data.cart.delivery.addresses.length -1;
		  
		 // alert( $.toJSON(address));
		  $.post('/cart/addradd',{'addr': $.toJSON(address)}, function(data){
			  //alert('addradd : '+data); 
			});
		}
		else
		{
		  Data.cart.delivery.currentAddress = index; 
		  //no need for changing server data
		   $.post('/cart/addrchg',{'id': index,'addr': $.toJSON(address)}, function(data){
		//	  alert('addrchg : '+data); 
			});
		}
		//*/
		
	
		
	},
	
	updateAddressDelivery: function(address)
	{
		var total = 0;
			
		for (var item in Data.cart.items) { total += Data.cart.items[item].productPrice; }
		//alert(total);
		
		 $.post('/cart/getdelivprice',{'price': total, 'country':  address.country }, function(data){
			//$('#tmp_getdelivprice').remove();
			$('#root').after('<div id="tmp_getdelivprice" style="display:none;">'
			+data+'</div');
			var price = $('#cart_delivery_price').text();
			var free_price = $('#cart_delivery_free_price').text();
			$('#tmp_getdelivprice').remove();
			
			//alert(price+' '+free_price);
			
			  Data.cart.delivery.basePrice =price;
			  Data.cart.delivery.baseFreePrice =free_price;
			  
			S.Cart.calculate();
			
			$(".free_delivery_text").hide();
			$(".fast_delivery_text").hide();
			if(free_price > 0) {$(".free_delivery_text").show();}
			else {$(".fast_delivery_text").show();}
		});
	},
    
    forgetAddress : function() 
    {
      $('.b-cart #previous-addresses-button').removeClass('b-button_switched');
      var index = $(this).attr('data-address-id');
	  
	  while(Post_sync.post){}
	  Post_sync.post = true;
	  $.post('/cart/addrdel',{'id':index}, function(data){
			Post_sync.post = false;
	  //alert('forgetpass no: '+index+'  -> '+data); 
	  });
	  
      Data.cart.delivery.addresses.splice(index, 1);
      var hasInvalidAddress = false;
      if (index == Data.cart.delivery.currentAddress)
      {
        var invalidAddressIndex = -1;
        for (var i = 0; i < Data.cart.delivery.addresses.length; ++i)
        {
          var addressValid = S.Cart.validateAddressData(i);
          if (!addressValid)
          {
            invalidAddressIndex = i;
            break;
          }
        }
        /*if (invalidAddressIndex == -1)
        {
          Data.cart.delivery.addresses.push({fullName : '', streetAddress : '', country : '', city : '', zip : '', phone : ''});
          Data.cart.delivery.currentAddress = Data.cart.delivery.addresses.length - 1;
        }
        else*/if (invalidAddressIndex != -1)
        {
          Data.cart.delivery.addresses[invalidAddressIndex] = {fullName : '', streetAddress : '', country : '', city : '', zip : '', phone : '', email : ''};
          Data.cart.delivery.currentAddress = invalidAddressIndex; 
        }
        hasInvalidAddress = true;
      }
      if (Data.cart.delivery.currentAddress > index)
      {
        Data.cart.delivery.currentAddress--;  
      }
      $('.b-cart #previous-addresses-popup').html(S.Cart.drawAddressList());
      $('.b-cart .address__forget').click(S.Cart.forgetAddress);
      $('.b-cart #previous-addresses-popup .address').click(S.Cart.clickAddress);
      var maxAddresses = hasInvalidAddress ? 2 : 1;
      
      if (Data.cart.delivery.addresses.length <= maxAddresses)
      {
        $('.b-cart #previous-addresses-popup').hide();
        $('.b-cart #previous-addresses-button')
		        .addClass('b-button_disabled')
		        .unbind("click");
      }
    },
    
    drawAddressList: function()
    {
      var addressList = '';
      var addressTemplate = $('#t_addressItem').html();
      var addressItem = '';
      /*for (var i = 0; i < Data.cart.delivery.addresses.length; ++i)
      {
        if (Data.cart.delivery.currentAddress != i)
        {//*/
          address = Data.cart.delivery.addresses[0];
          address.index = 0;
          addressItem = addressTemplate;
          for (var property in address)
          {
            addressItem = addressItem.replace(new RegExp('%%' + property + '%%', 'g'), address[property]);
			//alert(property+' '+address[property]+' -> '+addressItem);
          }
          addressValid = S.Cart.validateAddressData(0);
          if (addressValid)
          {
            addressList += addressItem;
          }
      /*  }
      }//*/
      return addressList;
    },
    
    validateAddress: function()
    {
		
      var valid = false;
      $('.b-cart .validated').each(
        function()
        {
          var value = $(this).val();
          if (value == '')
          {
            valid = $(this).attr('id');
          }
        }
      );
      return valid;
    },
    
    validateAddressData: function(index)
    {
      var address = Data.cart.delivery.addresses[index]; 
      return !(address.fullName == '' || address.streetAddress == '' || address.city == '' || address.country == '' || address.zip == '' || address.phone == '');
    },
    
    indexOfAddress: function(address)
    {
      var item;
      var equal;
      var i, property;
      for (i in Data.cart.delivery.addresses)
      {
        item = Data.cart.delivery.addresses[i];
        equal = true;
        for (property in item)
        {
          if (property != 'index')
          {
            equal = item[property] == address[property];
          }
          if (!equal)
          {
            break;
          }
        }
        if (equal)
        {
          return i;
        }
      }
      return -1;
    },
    
    clickAddress: function()
    {
      var index = $(this).attr('data-address-id');
      S.Cart.updateAddress(index);
      $(".b-cart #previous-addresses-popup").hide();
      $('.b-cart #previous-addresses-button').removeClass('b-button_switched');
      Data.cart.delivery.currentAddress = index;
      $('.b-cart #previous-addresses-popup').html(S.Cart.drawAddressList());
      $('.b-cart .address__forget').click(S.Cart.forgetAddress);
      $('.b-cart #previous-addresses-popup .address').click(S.Cart.clickAddress);
      var invalidAddressIndex = -1;
      for (var i = 0; i < Data.cart.delivery.addresses.length; ++i)
      {
        var addressValid = S.Cart.validateAddressData(i);
        if (!addressValid)
        {
          invalidAddressIndex = i;
          break;
        }
      }
      var maxAddresses = (invalidAddressIndex > -1) ? 2 : 1;
      if (Data.cart.delivery.addresses.length <= maxAddresses)
      {
        $('.b-cart #previous-addresses-button')
            .addClass('b-button_disabled')
            .unbind("click");
      }
    },
    
    drawMap: function(address)
    {
      if (!address)
      {
        address = Data.cart.delivery.addresses[Data.cart.delivery.currentAddress];
      }
      //setTimeout, чтобы карта не тормозила интерфейс.
      setTimeout( function()
        {
          var geocoder = new google.maps.Geocoder();
          var addressString = address.country + ', ' + address.city + ', ' + address.streetAddress; 
          geocoder.geocode( { address: addressString},
            function(results, status) 
            {
            if (status == google.maps.GeocoderStatus.OK) 
            {
              var latlng = results[0].geometry.location;
              var options = {
                zoom: 13,
                disableDefaultUI: true,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
              };
              var map = new google.maps.Map($('.b-cart #map').get(0), options);
              var marker = new google.maps.Marker({
                position: latlng, 
                map: map
              });      
            }
            else
            {
              
            }
          });
        }, 10
      );
    },
    
    /*updateMarker: function()
    {
      setTimeout( function()
        {
          var geocoder = new google.maps.Geocoder();
          var address = Data.cart.delivery.addresses[Data.cart.delivery.currentAddress].country + ', ' + Data.cart.delivery.addresses[Data.cart.delivery.currentAddress].city + ', ' + Data.cart.delivery.addresses[Data.cart.delivery.currentAddress].streetAddress; 
          geocoder.geocode( { address: address},
            function(results, status) 
            {
            if (status == google.maps.GeocoderStatus.OK) 
            {
              var latlng = results[0].geometry.location;
              var options = {
                zoom: 13,
                disableDefaultUI: true,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
              };
              var map = new google.maps.Map($('.b-cart #map').get(0), options);
              var marker = new google.maps.Marker({
                position: latlng, 
                map: map
              });      
            }
            else
            {
              
            }
          });
        }, 10
      );
    }, */
    
    drawDiscount: function() 
    {
      if (Data.money.discountStatus == 'ok')
      {
        $('#discountIcon').addClass('b-state-icon_ok');
        $('.discount-col h2').removeClass('error');
      }
      else if (Data.money.discountStatus == 'error')
      {
        $('#discountIcon').removeClass('b-state-icon_ok');
        $('.discount-col h2').addClass('error');    
      }
      else
      {
        $('#discountIcon').removeClass('b-state-icon_ok');
        $('.discount-col h2').removeClass('error');
      }
      var template = $('#t_discount').html();
      template = template.replace(/%%currency%%/g, Data.money.currency);
      template = template.replace(/%%discount%%/g, Data.money.discount);
      template = template.replace(/%%totalDiscount%%/g, Data.money.total);
	  
	  
		$('#discount').html(template);
		if(Data.money.discount == 0 ) {	$('#discount').hide();} 
		else 
		{
			$('#discount').show();
			if(Data.money.discountType == 'perc')
			{$('.perc_wrap').show(); $('.abs_wrap').hide(); }
			else
			{$('.perc_wrap').hide(); $('.abs_wrap').show();	} 
		}
    },
    
    calculate: function()
    {
      Data.money.total = 0;
      for (var item in Data.cart.items)
      {
        var cartItem = Data.cart.items[item];
        cartItem.price = Math.ceil(cartItem.productPrice * Data.money.currencies[Data.money.currency]);

		if (cartItem.productStatus != 'item_deleted')
        {
		  if(!isNaN(cartItem.price))
			Data.money.total += cartItem.price;
        }
      }
      
      if (Data.cart.delivery.enabled) 
      {
        Data.cart.delivery.price = Math.ceil(Data.cart.delivery.basePrice * Data.money.currencies[Data.money.currency]);
        Data.cart.delivery.freePrice = Math.ceil(Data.cart.delivery.baseFreePrice * Data.money.currencies[Data.money.currency]);
        Data.money.realWallet = Math.ceil(Data.money.wallet * Data.money.currencies[Data.money.currency]);
		
		//alert('1 |'+Data.cart.delivery.basePrice+' | '+Data.cart.delivery.price+'|');
		
		if(Data.cart.delivery.freePrice > 0)
		{
		   if (Data.money.total < Data.cart.delivery.freePrice)
			{
			  Data.money.total += Data.cart.delivery.price;
			}
			else
			{
				//alert('no free price');
			  Data.cart.delivery.price = 0;
			} 
		}else {Data.money.total += Data.cart.delivery.price;}
      }
      Data.money.walletValid = (Data.money.wantToSpend.toString().match(/^\d+$/) != null);
      if (Data.money.walletValid)
      {
        Data.money.walletValid = Data.money.realWallet - Data.money.wantToSpend >= 0;
        if (Data.money.walletValid)
        {
				
          Data.money.total -= Data.money.wantToSpend;
        }
      }
      if (Data.money.discount)
      { 
		if(Data.money.discountType == 'perc')
		{
			Data.money.discountTotal = Math.ceil(((100 - Data.money.discount) / 100) * Data.money.total);
			 $('.perc_wrap').show(); $('.abs_wrap').hide();
		}
		else
		{
			var disc_tmp = Data.money.total - Data.money.discount;
			if(disc_tmp < 0)
			{
				Data.money.discountTotal =  0; 
				Data.money.discount = Data.money.total;
			}else
				{Data.money.discountTotal =  disc_tmp; }
			
			$('.perc_wrap').hide(); $('.abs_wrap').show(); 
		} 
      }
      else
      {

        Data.money.discountTotal = Data.money.total;
      }
      $('#cartTotal').text(Data.money.discountTotal);
      /*if (this.oncalculate != null)
      {
        this.oncalculate(total);
      }*/
	  //alert('redraw');
      this.draw();
	  if(getCartCount()>0)
		{	  
			if (Data.cart.delivery.addressMode != 'edit')
			{
				$('div.b-buy_cart').removeClass('b-buy_disabled'); 
				
				$('#addr_proceed').hide();
				$('#to_proceed').hide();
				$('.b-buy__we-accept').show();
			}
		}
		else 
		{
			$('div.b-buy_cart').addClass('b-buy_disabled'); 
			
			$('.b-buy__we-accept').hide();
			$('#addr_proceed').hide();
			$('#to_proceed').show();
		}
      
    },
     
    updateAddress : function(index)
    {
		//alert('Addr update - ');
		//alert(' update ');
      var address = Data.cart.delivery.addresses[index];
      $('.b-cart #form-full-name').val(address.fullName);
      $('.b-cart #form-street-address').val(address.streetAddress);
      $('.b-cart #form-city').val(address.city);
	  $('.b-cart #form-state').val(address.state);
      $('.b-cart #form-country').val(address.country);
      $('.b-cart #form-zip-code').val(address.zip);
      $('.b-cart #form-telephone-no').val(address.phone);
      $('.b-cart #form-email').val(address.email);
      var addressValid = this.validateAddressData(index);
      if (addressValid)
      {
       // $('div.b-buy_cart').removeClass('b-buy_disabled');
		$('.b-cart #bUseAddessButton').removeClass('b-button_disabled');
      }
      else
      {
		//alert('Addr update is invalid.');
       // $('div.b-buy_cart').addClass('b-buy_disabled');
        //$('.b-cart #bUseAddessButton').addClass('b-button_disabled');
      }
    }
  },


  /* Проверка браузера — ИЕ, Вебкит, Айось? */
  detectIE: function() {
    isIE = false;
    isIE6 = false;
    isIE7 = false;
    isWebkit = false;
    if (jQuery.browser.msie) {
      isIE = true;

      if ('6.0' == jQuery.browser.version) {
        isIE6 = true;
      }

      if ('7.0' == jQuery.browser.version) {
        isIE7 = true;
      }
    }
    if (jQuery.browser.webkit) {
      isWebkit = true;
    }


    var deviceAgent = navigator.userAgent.toLowerCase();
    isIOS = false;
    var iOSID = deviceAgent.match(/(iphone|ipod|ipad)/);
    if (iOSID) {
      isIOS = true;
      $("html").addClass(".is-ios");
    }

    isMobile = false;
    var mobileID = deviceAgent.match(/(iemobile|windows ce|netfront|playstation|midp|up\.browser|symbian|nintendo|wii)/);
    if (mobileID) {
      isMobile = true;
      $("html").addClass(".is-mobile");
    }
  },

  /* Подсветка парных ссылок (картинка + заголовок, например) */
  doubleHover: function() {
    $("a").live("mouseover",
       function() {
         $("a[href='" + $(this).attr("href") + "']").not($(this)).addClass("pseudo-hover")

       }
    );
    $("a").live("mouseout",
       function() {
         $("a").removeClass("pseudo-hover");
       }
    );
  },

	/* Проверяем обязательные поля в формах */
	/* Форме, которую хотим проверять на заполненость полей, добавляем класс js-required,
	* обязательным полям и чекбоксам тот же класс — js-required, субмиту .js-submit.
	* Клик на субмите необходимо обрабатывать только если субмит не задизейблен, проверка может быть такой:
		button.click(function(){
			if (!$(this).data("disabled")) {
			}
		});
	* */
	checkRequiredFields: function() {
	var form = $("form.js-required");
	if (form.size()) {
		this.form = form;
			this.form.each(function() {
			form = $(this);
			var submit = $(".js-submit", form);
			$(".js-required", form)
			.live("keyup", checkForEmpty)
			.live("change", checkForEmpty);
			checkForEmpty();
			function checkForEmpty() {
				var fields = $(".js-required", form).filter(":visible");
				var empty = false;
				for (i = 0; i < fields.size(); i++) {

					if (!fields.eq(i).is(":checkbox")) {
						if (/^ *$/.test(fields.eq(i).val()) || fields.eq(i).hasClass("js-error")) {
							empty = true
						}
					} else {
						if (!fields.eq(i).is(":checked")) {
							empty = true
							}
						}
					}
					if (empty) { 
						submit
						.data({"disabled": true}).addClass('b-button_disabled submit_disabled').attr("disabled", "disabled")
						.next('.js-disabled-note').css({visibility: 'visible'});
					} else {
						submit
						.data({"disabled": false}).removeClass('b-button_disabled submit_disabled').removeAttr("disabled")
						.next('.js-disabled-note').css({visibility: 'hidden'});
					}
				}
			});
		}
	},


	Rotate: {
		initialize: function() {
			var item = $(".b-matrix .item:not(.item_not-a-jeans)")
					.add(".b-cart .item_jeans .picture-col .img")
					.add(".b-product .picture .img");
			if (item.size()) {
				this.item = item;
				this.bindBacksAndHandlers();
			}
		},
		bindBacksAndHandlers: function() {
			this.item.each(function(){
				var item = $(this);
				var front, rear;
				var img = $("img", item);
				var back_tmp = img.attr("altim");
				img.removeAttr("altim");
				if (!img.next("img").size()) {
					var imgWidth = img.width();
					var imgHeight = img.height();
					var icon = $(".b-rotate", item);
					var back = new Image();
					var backStatus;
					//alert(dump(icon.attr('data-index')));
					if (Data && Data.cart ) {
						backStatus = Data.cart.items[icon.attr('data-index')].backStatus;
					} else {
						backStatus = false;
					}
					var backFirst;
					//console.log(backStatus, backFirst);
					
					// __________CANGE____________
					
					back.src = back_tmp;
					
					if (backStatus) {
						backFirst = true;
					} 
					
					/*
					if (backStatus) { 
						back.src = img.attr("src").replace("_ass.", ".");
						backFirst = true;
					} else {
						back.src = img.attr("src").replace(".", "_ass.");
					}
					//*/
					function setBackStatus() {
						item.data({"back": backStatus});
						/* 14.12.11 Поповеры */
						item[backStatus ? 'addClass' : 'removeClass']('is-back');
						/* 14.12.11 Поповеры */
						if (Data && Data.cart) {
							//console.log(backStatus);
							Data.cart.items[icon.attr('data-index')].backStatus = backStatus;
							Data.cart.items[icon.attr('data-index')].backFirst = backFirst;
						}
					}

					setBackStatus();
					
					back = $(back);
					
					
					back.css({height: imgHeight, width: 0, marginLeft: imgWidth / 2}).hide().addClass("png");
					back.attr("src", back_tmp);
					//lert(back_tmp);
					back.insertAfter(img);
					icon.unbind("click");
					icon.click(function() {
						/* 14.12.11 Поповеры */
						item.addClass('is-rotating');
						/* 14.12.11 Поповеры */
						if (backStatus) {
								front = back;
								rear = img;
								backStatus = false;
								if (backFirst) {
									front = img;
									rear = back;
									backFirst = false;
								}
						} else {
								front = img;
								rear = back;
								backStatus = true;
						}

						//console.log(backFirst);
						jTweener.removeTween(front);
						jTweener.removeTween(rear);
						jTweener.addTween(front,
								{

									time: .15, transition: "easeInQuad", width: 0, marginLeft: imgWidth / 2,
									onComplete: function() {
										front.hide();
										rear.show();
										jTweener.addTween(rear,
												{
													time: .15, transition: "easeOutQuad", width: imgWidth, marginLeft: 0,
													onComplete: function() {
														setBackStatus();
														/* 14.12.11 Поповеры */
														item.removeClass('is-rotating');
														/* 14.12.11 Поповеры */
													}
												}
										);
									}
								}
						);

					});
				}
			});
		}
	},

  /* Зачёркнутая старая цена. Например, в банере в футере на странице истории заказов (orders.shtml) */
  OldPrice: {
    initialize: function() {
      var price = $(".t-old-price");
      if (price.size()) {
        this.price = price;
        this.price.each(function(){
          S.OldPrice.strike(this);
        });
      }
    },
    strike: function(price) {
      var w = $(price).width();
      var h = $(price).height();

      var paper = Raphael(price, w, h);
      var strike = paper.path("M0,0"+"L"+w+","+h);
      strike.attr({"stroke": "#e84a1f", "stroke-width": 2});
    }
  },


  /* Cкрывание инпута для вывода заработаных денег в профиле, если сумма меньше минамально-допустимой для вывода, сейчас – 100$ (user_full.shtml, user_first-thing.shtml) */
  TakeMoney: {
    initialize: function() {
	    this.min = 100000;
		if($(".b-take-money").length > 0){

			var sum = parseInt($(".b-take-money .sum .amount").html());

			if(sum < this.min){
				this.disableAll();
			}

			S.TakeMoney.checkButton(sum);

			$(".b-take-money .sum-out input").bind('keyup change', function(){
				S.TakeMoney.checkButton(sum);
			});

			$(".b-take-money .sum-out input").click(function(){
				$(this).select();
			});
		}
    },
    disableAll: function() {
		$(".b-take-money .take-it").addClass("take-it_disabled");
    },
	checkButton: function(sum) { 
		var sumout = $(".b-take-money .sum-out input").val();

		if(sumout % 1 != 0 || sumout > sum || sumout == "" || sumout < this.min)
			$(".b-take-money .take-it .b-button").addClass("b-button_disabled ");
		else
			$(".b-take-money .take-it .b-button").removeClass("b-button_disabled ");
    }
  },

  /* Ввод своего имени в профиле (user_noname.shtml) */
	ChangeName: {
	
	change_name_placeholder: function(){
		$(".change-name-form .js-placeholder").keyup(function()
		{	var name = jQuery.trim($(".change-name-form .js-placeholder").val());
			if(name != "" && name !="Your name here" && name.length > 0){$(".user-n-cart .user").text(name);} 
			else {$(".user-n-cart .user").text("My Getwear");}
		});
	},
	
	name_change_submit: function(e){
		e.preventDefault();	//alert('submit');
		var name = jQuery.trim($(".change-name-form .js-placeholder").val());
		if(name != "" && name !="Your name here"){
			$(".b-h1").removeClass("b-h1_noname"); 	// remove class
			var form = $(".b-h1 h1").html();		// get form html
			$(".b-h1 h1").text(name);				// put the answer
			$(".b-h1 h1").attr('title','Press to change');
			$('#change-name_tmp').html(form);		// save form html
			
			$('.b-h1 h1').click(function(){				// register h1.click
				$('.b-h1 h1').unbind("click");			// remove h1.click

				$(".b-h1").addClass("b-h1_noname"); 	// add class
				var form_bak = $('#change-name_tmp').html();// save form
				$('#change-name_tmp').html('');			// clear bak up form
				var name = $(".b-h1 h1").text(); 	
				$(".b-h1 h1").html(form_bak); 			//put form form 
				$(".b-h1 h1").attr('title','');
									
				$(".change-name-form").submit(function(e){ S.ChangeName.name_change_submit(e)}); // setup form
			
				S.ChangeName.change_name_placeholder();	// placeholder register
				//$(".change-name-form .js-placeholder").attr('value',name);
				$(".change-name-form .js-placeholder").focus();
			});
			$(".user-n-cart .user").text(name);		// put name into the top-right corner
			//document.title = name+"'s department";
			$.post(site_host+'user/chg', {'user_name': name}); // save to DB
		}
	},
	
	
    initialize: function() {
		//if($(".change-name-form").length > 0){
		//	$(".change-name-form").submit(function(e){ S.ChangeName.name_change_submit(e);});
		//	S.ChangeName.change_name_placeholder();
		//}
		if($(".b-h1 h1").attr('class') =='show'){
		$(".b-h1 h1").attr('title','Press to change');
		$('.b-h1 h1').click(function(){				// register h1.click
			$('.b-h1 h1').unbind("click");			// remove h1.click

			$(".b-h1").addClass("b-h1_noname"); 	// add class
			var form_bak = $('#change-name_tmp').html();// save form
			$('#change-name_tmp').html('');			// clear bak up form
			var name = $(".b-h1 h1").text(); 	
			$(".b-h1 h1").html(form_bak); 			//put form form 
			$(".b-h1 h1").attr('title','');
								
			$(".change-name-form").submit(function(e){ S.ChangeName.name_change_submit(e)}); // setup form
		
			S.ChangeName.change_name_placeholder();	// placeholder register
			//$(".change-name-form .js-placeholder").attr('value',name);
			$(".change-name-form .js-placeholder").focus();
		});
		}
		
    }
  },

   /*Выравнивание соц. кнопок (product.shtml)*/
	AlignSocial: {
	initialize: function() {

		if (navigator.userAgent.match(/AppleWebKit/) && ! navigator.userAgent.match(/Chrome/)){
			$(".b-share-n-vote .fb-send").css({"top":"-5px","margin-right":"6px"});
			$(".b-share-n-vote .twitter-share-button").css({"margin-right":"6px"});
		}
		else if($.browser.opera){
			$(".b-share-n-vote .fb-send").css({"top":"-3px"});
		}
	}
  },

  /*Разворачивание подробностей трекинга (orders.shtml)*/
	Tracking: {
	  initialize: function() {
		  if($(".tracking .expand").length > 0){
			  $(".tracking .expand").click(function(){
				  if(!$(this).hasClass("minimize")){
					  $(this).parents(".tracking").find(".old").slideDown();
					  $(this).find("div").html("-");
					  $(this).addClass("minimize");
				  }
				  else{
					  $(this).parents(".tracking").find(".old").slideUp();
					  $(this).find("div").html("+");
					  $(this).removeClass("minimize");
				  }
			  });
		  }
	  }
  },

  /*Изменение платёжного адреса в чекауте (checkout.shtml)*/
	ChangeBillingAddress: {
	initialize: function() {
		if($(".change-address").length > 0){
			$(".change-button").click(function(){
				$(this).hide();
				$(".same-as").hide();
				$(".change-address").slideDown("slow");
				$(".address-label label").css("font-weight","bold");
				S.ChangeBillingAddress.drawMap();
			});
		}
	},
	drawMap: function()
    {
			/*alert(dump(Delivery));//*/
          var geocoder = new google.maps.Geocoder();
          var address = Delivery.country + ', ' + Delivery.city + ', ' + Delivery.streetAddress;
          geocoder.geocode( { address: address},
            function(results, status)
            {
            if (status == google.maps.GeocoderStatus.OK)
            {
              var latlng = results[0].geometry.location;
              var options = {
                zoom: 13,
                disableDefaultUI: true,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
              };
              var map = new google.maps.Map($('#map').get(0), options);
              var marker = new google.maps.Marker({
                position: latlng,
                map: map
              });
            }
            else
            {

            }
          });

    }
  },

  /*Демонстрация загрузка своих фоток (product.shtml)*/
	LoadProductPic: {
	initialize: function() {
		if($(".b-thumb.loading").length > 0){
			$(".b-thumb .delete").live("click", function(){
				var tmp = $(this).siblings(".item").attr('href');
				//alert(tmp);
				$.post(site_host+'upload/delprod', {'fname': tmp}); 
				$(this).parents(".b-thumb").remove();
			});

			$("#image-popover .upload-input").change(function(){
				S.ImagePopover.popover.hide();
				S.LoadProductPic.upload();
			});
		}
	},

    upload: function() {
        $(".b-thumb.loading").css({"display":"inline-block"});

		$('#upload_prod_img_form').submit();

    }
  },

  /*Fancybox*/
	ProductGallery: {
	initialize: function() {

		$(document).ready(function() {

			$(".b-thumb_video_wide a.video").fancybox({"showNavArrows":true});
			S.ProductGallery.setup();
		});



		/*Shadowbox.init();
		window.onload = function() {
			S.ProductGallery.setup();

			if($(".b-thumb_video .video").length > 0) {
				Shadowbox.setup(".b-thumb_video .video", {
					gallery:            "vids",
					autoplayMovies:     true
				});
			};
		};*/
	},

	setup: function() {
		$(".b-thumb a.item").fancybox({"showNavArrows":true});
	}
  },

	/*Демонстрация загрузки юзерпика (user_noname.shtml, user_full.shtml, user_first-thing.shtml, user_empty.shtml)*/
  LoadUserPic: {
	initialize: function() {
		if($(".b-thumb_userpic").length > 0){

			$(".b-thumb_userpic .upload-input").hover(function(){
				
				$(".b-thumb_userpic .switch").addClass("hovered");
			}, function(){
				$(".b-thumb_userpic .switch").removeClass("hovered");
			});

			$(".b-thumb_userpic .upload-input").change(function(){
				S.LoadUserPic.upload();
			});
			
		}
	},

	
	upload: function() {
		$(".b-thumb .loading").show();

		$(".b-thumb .img").remove();

		$('#upload_ava_form').submit();

	}
  },

  /*Изменение текста о себе в профиле (user_noname.shtml, user_full.shtml, user_first-thing.shtml, user_empty.shtml)*/
	ChangeUserText: {
	initialize: function() {
		if($(".b-about-user").length > 0){
			var text = "";
			
			//   -------------------   text edit click    ----------------------- 
			$(".b-about-user .edit-text").live("click", function(){
			
				text = $(".b-about-user .text .about").text().trim();
				
				if(text.length > 0 ){      //&& $(".b-about-user .text .about").is(":visible")){
					
					$(".b-about-user .text .about").hide();
					$(".b-about-user .text .add-text .b-button__text").html("Save text");
				}
				else{
					$(".b-about-user .text .add-text .b-button__text").html("Add text");
				}
				
				$(".b-about-user .edit-text").hide();
				$(".b-about-user .text .about-textarea").val(text);
				$(".b-about-user .text .about-textarea").show();
				$(".b-about-user .text .add-text").show();
				//console.log( text);
			});
			
			//   -------------------  Cencel about text edit  -----------------
			$(".b-about-user .or-cancel .switch").live("click", function(){
			
				//var text = $(".b-about-user .text .about-textarea").val();
				$(".b-about-user .edit-text").show();
				$(".b-about-user .text .about").show();
				$(".b-about-user .text .about-textarea").hide().text(text);
				$(".b-about-user .text .add-text").hide();
				if( text.length > 0 ){
					$(".b-about-user .text .edit-text").html("Edit");
				}else
				{
					$(".b-about-user .text .edit-text").html("Add text about me");
				}
				//console.log( text);
			});
			
			// Apply about text editing
			$(".b-about-user .text .add-text .b-button").live("click", function(){ 
				
				text = $(".b-about-user .text .about-textarea").val().trim();
			
				$(".b-about-user .edit-text").show();
				$(".b-about-user .text .about").show().html(text);
				$(".b-about-user .text .about-textarea").hide().val(text);
				$(".b-about-user .text .add-text").hide();
				if( text.length > 0 ){
					$(".b-about-user .text .edit-text").html("Edit");
					
				}else
				{
					$(".b-about-user .text .edit-text").html("Add text about me");
					
				}
				//console.log( text);
				$.post(site_host+'user/chg', {'about_me': text}); 
			});
			
			

		}
	}
  },

  /* Поворачивалка иллюстрации кредитной карты в чекауте (checkout.shtml) */
	CardRotation: {
	initialize: function() {
		if($(".card-illustration").length > 0){

			if(isIE){
				$(".card-illustration").attr("src", site_host_static+"b-form_card.png");
				$(".card-illustration").css({"width":"256px", "height":"231px", "top":"-60px"});
				$(".helper-img").css({"top":"-17px", "left":"272px"});
				$(".helper-text").css({"top":"-13px", "left":"341px"});
			}

			$(".cvc-button .b-button").click(function() {

				if($(this).hasClass("disabled"))
					return;

				if($(this).hasClass("b-button_switched")){
					$(this).removeClass("b-button_switched");

					$(".helper-img").fadeOut("fast");
					$(".helper-text").fadeOut("fast");

					if(isIE){
						S.CardRotation.rotateIE(site_host_static+"b-form_card.png");
					}
					else {
						$(this).addClass("disabled");
						S.CardRotation.rotate(site_host_static+"b-form_card-n2.png");
					}
				}
				else{
					$(this).addClass("b-button_switched");

					if(isIE){
						S.CardRotation.rotateIE(site_host_static+"b-form_card2.png");
					}
					else {
						$(this).addClass("disabled");
						S.CardRotation.rotate(site_host_static+"b-form_card-n1.png");
					}
				}
			});

			$("#form-security-code").focus(function() {
				var $button = $(".cvc-button .b-button");
				if(!$button.hasClass("b-button_switched")){
					$button.trigger("click");
				}
			}).focusout(function(){
				var $button = $(".cvc-button .b-button");
				if($button.hasClass("b-button_switched")){
					$button.trigger("click");
				}
			});
		}
	},

	rotate: function(img) {
		var $card = $(".card-illustration");
		var width = $card.width();

		jTweener.removeTween($card);
		jTweener.addTween($card,{
			time: 0.1, transition: "easeOutQuad", width: 0, marginLeft: width/2,
			onComplete: function() {
				$card.attr("src", img);

				$card.load(function(){
					jTweener.addTween($card, {

						time: 0.1, transition: "easeOutQuad", width: width, marginLeft: 0,
						onComplete: function() {

							if($(".cvc-button .b-button").hasClass("b-button_switched")){
								$(".helper-img").fadeIn();
								$(".helper-text").fadeIn();
							}
							$(".cvc-button .b-button").removeClass("disabled");
						}
					});
				});
			}
		});
	},

	rotateIE: function(img) {
		var $card = $(".card-illustration");
		$card.attr("src", img);
		$(".helper-img").toggle();
		$(".helper-text").toggle();
	}
  },

  /* Позиционирование джинс в «Browsing history» в футере */
	History: {
    initialize: function() {
      var history = $(".b-footer .history");
      if (history.size()) {
        this.history = history;
        this.item = $(".item", history);
        this.itemWidth = this.item.eq(0).width();
        this.itemSize = this.item.size();
        this.footer = $(".b-footer");

        this.cut("initialize");

        $(window).resize($.proxy(function(){
          clearTimeout(this.resizeTimeout);
          this.resizeTimeout = setTimeout($.proxy(function(){
            S.History.cut("resize");
          },this),100);
        },this));
      }
    },
    cut: function(event) {
      var historyLeft = this.history.position().left;
      var footerWidth = this.footer.width();
      var historyWidth = footerWidth - historyLeft; 
	  
	  //alert(historyLeft+' '+historyWidth+' '+footerWidth);
	  
      var itemsToShow = Math.floor(historyWidth / this.itemWidth);
      if (itemsToShow > this.itemSize) itemsToShow = this.itemSize;
      var itemMargin = (historyWidth - (this.itemWidth*itemsToShow))/(itemsToShow-1);
      if (itemMargin > this.itemWidth) itemMargin = this.itemWidth;
	  
	  
	  this.item.each(function(index) {
			var tmp = $(this);
			if((tmp.position().left + tmp.width()) > footerWidth )
			{
				$(this).css({ opacity: 0 });
				//alert(index+': '+$(this).position().left);
			}
			
		});
      /*if (event == "initialize") {
        this.item.slice(0, itemsToShow).css({marginRight: itemMargin});
        this.item.slice(itemsToShow).css({marginRight: itemMargin});
      }
      jTweener.removeTween(this.item);
      jTweener.addTween(
        this.item.slice(0, itemsToShow),
        {
          transition: "easeOutQuad",
          time: .25,
          marginRight: itemMargin,
          opacity: 1
        }
      );
      jTweener.addTween(
        this.item.slice(itemsToShow),
        {
          transition: "easeOutQuad",
          time: .25,
          marginRight: itemMargin,
          opacity: 0
        }
      );//*/
    }
  },

  /* Пласехолдеры из тайтлов в инпутах и текстариях */
  Placeholder: {
    initialize: function() {
	
      var inputPlaceholder = $("input.js-placeholder");
      var textareaPlaceholder = $("textarea.js-placeholder");
	  
      inputPlaceholder
        .each(function() {
			
			S.Placeholder.showInputPlaceholder($(this));
        })
        .blur(function() {
          S.Placeholder.showInputPlaceholder($(this));
		  
        })
        .focus(function() {
          var $input = $(this);
          if ($input.val() === $input.attr("title")) {
            $input
              .css({color: "#000"})
              .val("");
          }
		   $input
              .css({color: "#000"});
			//console.log('focus');
        });
      textareaPlaceholder
        .each(function() {
          S.Placeholder.showTextareaPlaceholder($(this));
        })
        .blur(function() {
          S.Placeholder.showTextareaPlaceholder($(this));
        })
        .focus(function() {
          var $textarea = $(this);
          if ($textarea.html() === $textarea.attr("title")) {
            $textarea 
              .css({color: "#000"})
              .html("");
          }
        });
	
    },
    showInputPlaceholder: function($input) {
		//alert('before webkit ');
      
        var placeholderText = $input.attr("title");
		if ($input.val() === "" || $input.val() === placeholderText) {
			
			if(!isWebkit) {$input.val(placeholderText); if(!isIE){$input.trigger('focus');}}
			if(isWebkit) {$input.val("");}
			if($input.hasClass('error'))
			{
				$input.css({color: "#9B0415"});
			}else
			{
				$input.css({color: "#aaa"}); 
			}
        }else
		{
			$input.css({color: "#222"}); 
		}
 	},
    showTextareaPlaceholder: function($textarea) {
      var placeholderText = $textarea.attr("title");
      if ($textarea.val() === "" || $textarea.val() === placeholderText) {
        $textarea
          .css({color: "#aaa"})
          .html(placeholderText);
      }
    }
  },

	/*Запрет выделения мышкой указанного элемента*/
  disableSelection: function (target) {
    target
        .mousemove(function(event){
          event.preventDefault();
        })
        .mousedown(function(event){
          event.preventDefault();
        });
  },

  /*Переключение видимости указанного блока указанной переключалкой */
	toggleBlock: function(switcher, block, callback) {
    switcher.click(function(){
			if (switcher.hasClass("switch")) {
				switcher.toggleClass("switch_switched");
			} else if (switcher.hasClass("b-button")) {
				switcher.toggleClass("b-button_switched");
			}
			block.toggle();

	    if (callback) {
				callback();
			}
    });
  },

  /*Переключение видимости указанных блоков указанными переключалками
  * Отличие от S.toggleBlock() в том, что тут много переключается не один блок, а несколько, при этом один из них всегда виден.*/
	switchBlocks: function(switchers, blocks) {
    switchers.click(function(){
      var thisSwitcher = $(this);
      var thisBlock = blocks.eq(switchers.index(thisSwitcher));
	    if (thisSwitcher.hasClass("switch")) {
				thisSwitcher.addClass("switch_selected switch_icon_selected");
				switchers.not(thisSwitcher).removeClass("switch_selected switch_icon_selected");
	    } else if (thisSwitcher.hasClass("b-button")) {
		    thisSwitcher.addClass("b-button_checked");
				switchers.not(thisSwitcher).removeClass("b-button_checked");
	    }
      thisBlock.show();
      blocks.not(thisBlock).hide();
    });

  },

	/*Поповер пользователя (на всех страницах в хедере),
	и у заголовка на тех страницах, вход на которые не возможен без логина (orders_logged-out.shtml, user_logged-out.shtml)
	Использует S.Popover. */
	UserPopover: {
		initialize: function() {
			var switcher = $(".b-header .switch.user");
			if (switcher.size()) {
				this.switcher = switcher;
				this.popover = $("#user-popover");

				//console.log(this.popover);
				
				this.userMenu = $(".user-menu", this.popover);
				this.hr = $(".hr", this.popover);

				S.Popover.set(this.popover, this.switcher, "bottom");

				this.loginNeeded();

				switcher.click(function(){
					S.UserPopover.popover.data({'switcher': S.UserPopover.switcher, 'close': false});
					if (switcher.hasClass("switch_switched")) {
						S.Popover.hide(S.UserPopover.popover);
					} else {
						S.UserPopover.userMenu.add(S.UserPopover.hr).show();
						S.Popover.show(S.UserPopover.popover);
					}
				});
				//console.log('switcher');
			}
		},
		loginNeeded: function() {
			// H1
			this.needed = $(".js-login-needed");

			if (this.needed.size()) { // Настраиваем связь между ошибочным поповером и инпутом.
				// Для других инпутов анологично будет
				this.popover.data({"switcher": this.needed});
				this.popover.data({"close": true});

				// Скрываем лишнее
				this.userMenu.add(this.hr).hide();

				// Cрабатывание поповера у заголовка
				setTimeout(function() {
					S.Popover.show(S.UserPopover.popover);
				}, 500);
			}
		}
	},

	/*Поповер смены эл. почты в профиле (user_noname.shtml, user_full.shtml, user_first-thing.shtml, user_empty.shtml). Использует S.Popover. */
	MailPopover: {
		initialize: function() {
			var switcher = $("#mail-switcher");
			if (switcher.size()) {
				this.switcher = switcher;
				this.popover = $("#mail-popover");
				this.mail = $("#mail");
				this.form = $("form", this.popover);
				this.formMail = $("#mail-popover-mail");

				S.Popover.set(this.popover, this.switcher, "right");

				switcher.click(function(){
					if (switcher.hasClass("switch_switched")) {
						S.Popover.hide(S.MailPopover.popover);
					} else {
						S.Popover.show(S.MailPopover.popover);

						/*if(isIE){
							height = S.MailPopover.popover.find("div").not(".b-popover__content").height() - 20;
							S.MailPopover.popover.find(".b-popover__content").css({"margin-top":"-"+height});
	                    }*/
					}
				});

				this.formMail.val(this.mail.text());
				this.form.submit(function(e){
					
					if(e.target.id == 'mail_chg_user_form')
					{
						var newMail = $("#mail-popover-mail").val();
						var newPrivate = $("#mail-popover-private{type=checkbox]:checked").val();
						
						var newPr = 0;
						
						if(newPrivate != undefined)
							newPr = 1;

						
						$.post(site_host+'user/chg', {'email': newMail, 'show_email':newPr}, 
						function(data){}); 
					}
					
					
					e.preventDefault();
					var val = S.MailPopover.formMail.val();
					S.MailPopover.mail.attr("href", "mailto:" + val);
					S.MailPopover.mail.text(val);
					S.Popover.hide(S.MailPopover.popover);
				});
			}
		}
	},

	/*Поповер, предшествующий загрузке своих фоток на странице продукта, использует S.Popover.*/
    ImagePopover: {
        initialize: function() {
	        var switcher = $("#upload-mine");
	        if (switcher.size()) {
		        this.switcher = switcher;
		        this.popover = $("#image-popover");
		        this.form = this.popover.find("form");
		        this.checkBox = this.form.find(".check");

		        S.Popover.set(this.popover, this.switcher, "right");

		        switcher.click(function() {
			        if (S.ImagePopover.popover.is(":visible")) {
				        S.Popover.hide(S.ImagePopover.popover);

			        } else {
				        S.Popover.show(S.ImagePopover.popover);

				         /*if(isIE){
							height = S.ImagePopover.popover.find("div").not(".b-popover__content").height() - 20;
							S.ImagePopover.popover.find(".b-popover__content").css({"margin-top":"-"+height});
	                    }*/
			        }
		        });

		        if(isIE){
			        $("#image-popover .submit").hide();
			        $("#image-popover .upload-input").css({"margin-left":0,"width":"170px","top":"0"});
			        $("#image-popover form").css({"margin-bottom":"0"});
		        }

		        $("#check-popover").change(function(){
					if($("#check-popover").prop("checked")){
						$("#image-popover .upload-input").removeAttr('disabled');
					}
			        else{
						$("#image-popover .upload-input").attr('disabled','disabled');
					}
		        });

		        $("#image-popover .upload-input").click(function(){
			        if(!$("#image-popover .upload-input").prop("disabled")){
				       //S.ImagePopover.popover.hide();
			        }
		        });
	        }

        }
    },

	/*Поповер смены аккаунта MoneyBookers для вывода денег в профиле (user_noname.shtml, user_full.shtml, user_first-thing.shtml, user_empty.shtml). Использует S.Popover. */
	PayPopover: {
		initialize: function() {
			var switcher = $("#pay-switcher");
			if (switcher.size()) {
				this.switcher = switcher;
				this.popover = $("#pay-popover");
				this.mail = $("#pay-mail");
				this.form = $("form", this.popover);
				this.formMail = $("#pay-popover-mail");

				S.Popover.set(this.popover, this.switcher, "left");

				switcher.click(function(){
					if (switcher.hasClass("switch_switched")) {
						S.Popover.hide(S.PayPopover.popover);
					} else {
						S.Popover.show(S.PayPopover.popover);
					}
				});

				this.formMail.val(this.mail.text());
				this.form.submit(function(e){
					e.preventDefault();
					var val = S.PayPopover.formMail.val();
					S.PayPopover.mail.text(val);
					S.Popover.hide(S.PayPopover.popover);
				});
			}
		}
	},

	/*Менялка размеров брюк на странице отдельных брюк и массово в корзине (product.shtml, cart_full.shtml). Использует S.Popover.*/
	ProductSizePopover: {
		initialize: function() {
			var switcher = $(".bChangeSize");
			if (switcher.size()) {
				this.switcher = switcher;
				this.switcher.each(function(){
					$(this).data({
						system: $(this).attr("data-sizeSystem"),
						size: $(this).attr("data-size"),
						index: $(this).attr("data-index")
						
					});
					//alert($(this).attr("data-size"));
				});
				this.popover = $("#product-size-popover");
				this.systemSwitcher = $(".switchers .switch", this.popover);
				this.systemSwitcher.each(function(){
					$(this).data({
						system: $(this).attr("data-sizeSystem")
					});
				});
				this.sizeTable = $(".size-table", this.popover);
				this.sizeTable.each(function(){
					var size = "";
					$(".select_active", this).each(function(i){
						var thisSize = $(".dim", this).text() + $(".value", this).text();
						if (i != 0) thisSize = " " + thisSize;
						size = size + thisSize;
					});
					$(this).data({
						system: $(this).attr("data-sizeSystem"),
						size: size
					});
				});
				this.select = $(".select", this.popover);
				this.select.each(function(){
					var dim = $(".dim", this).text();
					var size = dim + $(".value", this).text();
					$(this).data({
						dim: dim,
						size: size
					});
				});
				S.Popover.set(this.popover, this.switcher, "left");


				this.switcher.click(function(){
					S.ProductSizePopover.popover.data({"switcher": $(this)});
					if ($(this).hasClass("b-button_checked") || $(this).hasClass("switch_switched")) {
						S.Popover.hide(S.ProductSizePopover.popover);
					} else {
						var system = $(this).data("system");
						var size = $(this).data("size");
						//console.log(system, size);
						if(system == 'custom')
						{
							var sys_index = $(this).data("index");
							
							var p_id = Data.cart.items[sys_index]['productId'];
							
							__redirect("/size/", {id:p_id, cart:sys_index});
							//window.location = "/size/"+p_id+'/'+sys_index.'/';
							
						}else
						{
						S.ProductSizePopover.setSizeInPopover(system, size);
						S.Popover.show(S.ProductSizePopover.popover);
						S.ProductSizePopover.switcher.not(this).removeClass("b-button_checked switch_switched");
						}
					}
				});

				this.changeSize();
				this.changeSystem();
			}
		},
    
    setSizeInPopover: function(system, size) {
	    var activeSwitcher = this.systemSwitcher.filter(function(){
				return $(this).data("system") == system;
			});
	    var activeTable = this.sizeTable.filter(function(){
				return $(this).data("system") == system;
			});
	    activeSwitcher.addClass("switch_selected");
	    this.systemSwitcher.not(activeSwitcher).removeClass("switch_selected");
			activeTable.show();
	    this.sizeTable.not(activeTable).hide();
			var activeSelect = $();
			var $size = $(size.split(" "));
			$size.each(function() {
				var thisSize = this;
				activeSelect = activeSelect.add(S.ProductSizePopover.select.filter(
						function() {
							return $(this).data("size") == thisSize;
						}
				));
			});
			
			

			activeSelect.addClass("select_active");
			activeSelect.parents('tr').addClass("select_active");
			$(".select", activeTable).not(activeSelect).removeClass("select_active");
			$(".select", activeTable).not(activeSelect).parents('tr').removeClass("select_active");
			activeTable.data({"activeSelect": activeSelect, "size": size});

		this.popover.data({
		    system: system,
			size: size
	    });
		
			
	    this.returnToSwitcher(); //alert('sizeCange: '+$(this).html());
    },
	
		updateSizeDate: function(size)
		{
			var str_arr = size.split(' ');
			var m_str='';
			for (var key in str_arr) 
			{
				var val = str_arr[key];
				m_str +=('|'+val.substr(0,1)+'='+val.substr(1));
			}
			m_str = m_str.substr(1);
			$('#data_measures').attr('str', m_str);
			$('#data_measures').attr('txt', size);
		},
    
		changeSize: function() {
			this.select.click(function(){
				var thisSelect = $(this);
				var system = S.ProductSizePopover.popover.data("system");
				var activeSelect = S.ProductSizePopover.sizeTable.filter(function(){
					return $(this).data("system") == system;
				}).data("activeSelect");

				var dim = thisSelect.data("dim");
				var siblingsSelect = activeSelect.filter(
					function() {
						return $(this).data("dim") != dim;
					}
				);
				var size = thisSelect.data("size");
				
				if (siblingsSelect.size()) {
					var index = activeSelect.index(siblingsSelect);
					if (thisSelect.data("dim") == thisSelect.parents().find('[data-sizesystem="'+system+'"]').find(".dim:first").html()) {
						size = size + " " + siblingsSelect.data("size");
					} else {
						size = siblingsSelect.data("size") + " " + size;
					}
				}
				S.ProductSizePopover.setSizeInPopover(system, size);
				
				//alert('sizeCange: '+thisSelect.html()); 
				//----------------------------------- Size change -------------------
				S.ProductSizePopover.updateSizeDate(size);
				
			});
			
		},

		changeSystem: function() {
			this.systemSwitcher.click(function(){
				var system = $(this).data("system");
				var activeTable = S.ProductSizePopover.sizeTable.filter(function(){
					return $(this).data("system") == system;
				});
				var size = activeTable.data("size");
				S.ProductSizePopover.setSizeInPopover(system, size);
				S.Popover.reDraw(S.ProductSizePopover.popover);
				//----------------------------------- System change -------------------
				$('#data_measures').attr('type', system);
				S.ProductSizePopover.updateSizeDate(size);
				//alert('systemChange '+system);
			});
		},

		returnToSwitcher: function() {
			var currentSwitcher = this.popover.data("switcher");
			var size = this.popover.data("size");
			var system = this.popover.data("system");

			if (currentSwitcher.hasClass("b-button")) {
				var $size = $(size.split(" "));
				var text = "";
				$size.each(function(i) {
					if (i == 0) {
						text = text + this;
					} else {
						text = text + ' <span class="dot">&middot;</span> ' + this;
					}
				});
				$(".b-button__text", currentSwitcher).html(text);
			} else if (currentSwitcher.parents(".b-cart").size()) {
				var p = currentSwitcher.parents("p").prev(".size");
				var index = Math.ceil(p.attr("data-index"));
				Data.cart.items[index].productSize = size;
				Data.cart.items[index].productSizeSystem = system;
				p.text(size);
				
				var str_arr = size.split(' ');
				var m_str='';
				for (var key in str_arr) 
				{
					var val = str_arr[key];
					m_str +=('|'+val.substr(0,1)+'='+val.substr(1));
				}
				m_str = m_str.substr(1);
				
				$.post('/cart/chg', {'id': index, 'str': m_str, 'txt':size, 'type':system}); 
				
				
				//alert('Size cange:'+size+' '+index+' '+m_str); 
			}

			currentSwitcher.data({size: size, system: system});
		}
	},
	
	//  --------------------  double the popover for Cart Page  --------------------------
	
	ProductSizePopover_two: {
		initialize: function() {
			var switcher = $(".bChangeSize_two");
			if (switcher.size()) {
				this.switcher = switcher;
				this.switcher.each(function(){
					$(this).data({
						system: $(this).attr("data-sizeSystem"),
						size: $(this).attr("data-size"),
						index: $(this).attr("data-index")
						
					});
				});
				this.popover = $("#product-size-popover_two");
				this.systemSwitcher = $(".switchers .switch", this.popover);
				this.systemSwitcher.each(function(){
					$(this).data({
						system: $(this).attr("data-sizeSystem")
					});
				});
				this.sizeTable = $(".size-table", this.popover);
				this.sizeTable.each(function(){
					var size = "";
					$(".select_active", this).each(function(i){
						var alt_val = $(".value", this).attr('alt_val');
						var thisSize = alt_val;
											
						if(alt_val == undefined)
							thisSize = $(".dim", this).text() + $(".value", this).text();
						//else	alert(alt_val);
						
						if (i != 0) thisSize = " " + thisSize;
						size = size + thisSize;
					});
					$(this).data({
						system: $(this).attr("data-sizeSystem"),
						size: size
					});
				});
				this.select = $(".select", this.popover);
				this.select.each(function(){
					var dim = $(".dim", this).text();
					var alt_val = $(".value", this).attr('alt_val');
					var size = dim + $(".value", this).text();
					if(alt_val != undefined) {size = alt_val;} 
					$(this).data({
						dim: dim,
						size: size
					});
				});
				S.Popover.set(this.popover, this.switcher, "left");


				this.switcher.click(function(){
					S.ProductSizePopover_two.popover.data({"switcher": $(this)});
					if ($(this).hasClass("b-button_checked") || $(this).hasClass("switch_switched")) {
						S.Popover.hide(S.ProductSizePopover_two.popover);
					} else {
						var system = $(this).data("system");
						var size = $(this).data("size");
						//console.log(system, size);
						if(system == 'custom')
						{
							var sys_index = $(this).data("index");
							
							var p_id = Data.cart.items[sys_index]['productId'];
							
							__redirect("/size/", {id:p_id, cart:sys_index});
							//window.location = "/size/"+p_id+'/0/'+sys_index;
							
						}else
						{
						S.ProductSizePopover_two.setSizeInPopover(system, size);
						S.Popover.show(S.ProductSizePopover_two.popover);
						S.ProductSizePopover_two.switcher.not(this).removeClass("b-button_checked switch_switched");
						}
					}
				});

				this.changeSize();
				this.changeSystem();
			}

		},
    
    setSizeInPopover: function(system, size) {
	    var activeSwitcher = this.systemSwitcher.filter(function(){
				return $(this).data("system") == system;
			});
	    var activeTable = this.sizeTable.filter(function(){
				return $(this).data("system") == system;
			});
	    activeSwitcher.addClass("switch_selected");
	    this.systemSwitcher.not(activeSwitcher).removeClass("switch_selected");
			activeTable.show();
	    this.sizeTable.not(activeTable).hide();
			var activeSelect = $();
			var $size = $(size.split(" "));
			
			$size.each(function() {
				var thisSize = this;
				activeSelect = activeSelect.add(S.ProductSizePopover_two.select.filter(
						function() {
							return $(this).data("size") == thisSize;
						}
				));
			});
			
			

			activeSelect.addClass("select_active");
			activeSelect.parents('tr').addClass("select_active");
			$(".select", activeTable).not(activeSelect).removeClass("select_active");
			$(".select", activeTable).not(activeSelect).parents('tr').removeClass("select_active");
			activeTable.data({"activeSelect": activeSelect, "size": size});
			
			//alert(dump(size));
		this.popover.data({
		    system: system,
			size: size
	    });
		
			
	    this.returnToSwitcher(); //alert('sizeCange: '+$(this).html());
    },
	
		updateSizeDate: function(size)
		{
			var str_arr = size.split(' ');
			var m_str='';
			for (var key in str_arr) 
			{
				var val = str_arr[key];
				var tmp = val.substr(0,1);
				if(tmp =='W' || tmp =='L' )
					m_str +=('|'+tmp+'='+val.substr(1));
				else
					m_str +=('|'+key+'='+val);
				//alert(tmp+' * '+(tmp in ['W','L']));
				//alert(tmp+' * '+!isNaN(tmp)+' * '+val+' * '+m_str);
				
			}
			m_str = m_str.substr(1);
			$('#data_measures_two').attr('str', m_str);
			$('#data_measures_two').attr('txt', size);
		},
    
		changeSize: function() {
			this.select.click(function(){
				var thisSelect = $(this);
				var system = S.ProductSizePopover_two.popover.data("system");
				var activeSelect = S.ProductSizePopover_two.sizeTable.filter(function(){
					return $(this).data("system") == system;
				}).data("activeSelect");

				var dim = thisSelect.data("dim");
				var siblingsSelect = activeSelect.filter(
					function() {
						return $(this).data("dim") != dim;
					}
				);
				var size = thisSelect.data("size");
				
				//console.log(size);
				//console.log(thisSelect.parents().find('[data-sizesystem="'+system+'"]').find(".dim:first").html());
				//console.log(thisSelect.find(".dim:first").html());
				
				if (siblingsSelect.size()) {
					var index = activeSelect.index(siblingsSelect);
					if (thisSelect.data("dim") == thisSelect.parents().find('[data-sizesystem="'+system+'"]').find(".dim:first").html()) {
						size = size + " " + siblingsSelect.data("size");
					} else {
						size = siblingsSelect.data("size") + " " + size;
					}
				}
				S.ProductSizePopover_two.setSizeInPopover(system, size);
				
				//console.log(size);
				//alert('sizeCange: '+thisSelect.html()); 
				//----------------------------------- Size change -------------------
				S.ProductSizePopover_two.updateSizeDate(size);
				
			});
			
		},

		changeSystem: function() {
			this.systemSwitcher.click(function(){
				var system = $(this).data("system");
				var activeTable = S.ProductSizePopover_two.sizeTable.filter(function(){
					return $(this).data("system") == system;
				});
				var size = activeTable.data("size");
				S.ProductSizePopover_two.setSizeInPopover(system, size);
				S.Popover.reDraw(S.ProductSizePopover_two.popover);
				//----------------------------------- System change -------------------
				$('#data_measures_two').attr('type', system);
				S.ProductSizePopover_two.updateSizeDate(size);
				//alert('systemChange '+system);
			});
		},

		returnToSwitcher: function() {
			var currentSwitcher = this.popover.data("switcher");
			var size = this.popover.data("size");
			var system = this.popover.data("system");

			if (currentSwitcher.hasClass("b-button")) {
				var $size = $(size.split(" "));
				var text = "";
				$size.each(function(i) {
					if (i == 0) {
						text = text + this;
					} else {
						text = text + ' <span class="dot">&middot;</span> ' + this;
					}
				});
				$(".b-button__text", currentSwitcher).html(text);
			} else if (currentSwitcher.parents(".b-cart").size()) {
				var p = currentSwitcher.parents("p").prev(".size");
				var index = Math.ceil(p.attr("data-index"));
				Data.cart.items[index].productSize = size;
				Data.cart.items[index].productSizeSystem = system;
				p.text(size);
				
				var str_arr = size.split(' ');
				var m_str='';
				for (var key in str_arr) 
				{
					var val = str_arr[key];
					if(val.substr(0,1) in ['W','L'])
						m_str +=('|'+val.substr(0,1)+'='+val.substr(1));
					else
						m_str +=('|'+key+'='+val);
				}
				m_str = m_str.substr(1);
				
				$.post('/cart/chg', {'id': index, 'str': m_str, 'txt':size, 'type':system}); 
				
				
				//alert('Size cange:'+size+' '+index+' '+m_str); 
			}

			currentSwitcher.data({size: size, system: system});
		}
	},

	
	//   -------------------  END DOUBLE POPOVER FOR CART PAGE  ----------------------------  
	

  /*Класс для вызова и рисования поповеров, можно настроить связь между переключалкой и поповером,
  задать позиционирование поповера, относительно переключалки, скрывать показывать поповер, перерисовывать при изменении хтмл внутри */
	Popover: {
	  container: $(),
	  switcher: $(),
	  initialize: function() {
		  $(document).click(function(){
					S.Popover.hide(S.Popover.container);
		  });
		  var close = $(".b-popover__close");
		  close.click(function(){
			  //console.log("close click");
			  //console.log($(this).parents(".b-popover"));
			  S.Popover.hide($(this).parents(".b-popover"), true);
		  });
	  },
	  set: function(container, switcher, position, point) { /* 14.12.11 Поповеры (добавился параметр point) */
		  var containerById = document.getElementById(container.attr("id"));

		  container.data({"switcher": switcher, "close": $(".b-popover__close", container).size() ? true : false, "position": position, "style": container.attr("data-popoverStyle"), "cropImg": $('.crop-img', container), "point": point}); /* 14.12.11 Поповеры (добавился параметр point) */
		  this.container = this.container.add(container);

		  container.add(switcher).click(function(e){
			  e.stopPropagation();
			  S.Popover.hide(S.Popover.container.not(container));
		  });

			this.time = 100;

			$(window).resize($.proxy(function(){
			clearTimeout(this.resizeTimeout);
			this.resizeTimeout = setTimeout($.proxy(function(){
            S.Popover.onResize();
          },this),100);
        },this));
	  },
	  onResize: function() {

			for(var i=0;i<this.container.size();i++) {
				var container = this.container.eq(i);
				if (container.data("isVisible")) {
					this.reDraw(this.container.eq(i));
				}
			}
	  },
	 draw: function(container, switcher, position, style, animate, point) { /* 14.12.11 Поповеры (добавился параметр point) */
			var $container = $(container);
		  var content = $(".b-popover__content", container);

		  var rootWidth = S.root.width() + 50;
		  var rootHeight = S.root.height();
		  var rootLeft = S.root.offset().left;
		  var scrollTop = $(window).scrollTop();

		  /* 14.12.11 Поповеры */
		  if (!point) {
			  point = switcher;
		  }

		  var pointPosition = point.offset();
		  var pointTop = pointPosition.top;
		  var pointLeft = pointPosition.left - rootLeft;
		  var pointLeftRight = pointPosition.left;
		  var pointHeight = point.height();
		  var pointWidth = point.width();
		  
		  var contWidth = $(container).width();
		  
		  
		  /* / 14.12.11 Поповеры */




			var br = 5;
			var ts = 10;
			var tc = 0;

		  var withShadow = true;
		  var levitate = false;

		  /*
	    switch (position) {
		    case "top":
				    content.css({"padding-bottom": ts});
		    break;
		    case "right":
				    content.css({"padding-left": ts});
		    break;
		    case "bottom":
				    content.css({"padding-top": ts});
		    break;
		    case "left":
				    content.css({"padding-right": ts});
		    break;
	    }
		*/
		
		content.attr({'class': 'b-popover__content b-popover__content_'+position});
		 
			var strokeColor, backgroundColor;
			switch (style) {
		    case "size":
					strokeColor = "90-#74461c-#fce5ad:5-#fce5ad:95-#fff";
			    backgroundColor = "#f7f0e2";
		    break;
				case "userOut":
					strokeColor = "#193788";
					backgroundColor = "90-#f1f8f0-#ffffff";
				break;
				case "userIn":
					strokeColor = "#127238";
					backgroundColor = "#f0f7ef";
				break;
				case "new":
					strokeColor = "#fff";
					backgroundColor = "90-#c64f01-#dd8301";
					levitate = true;
				break;
				case "error":
					strokeColor, backgroundColor = "#f7bcbc";
					withShadow = false;
				break;
				case "white":
					strokeColor = "90-#000-#777:5-#777:95-#fff";
			    backgroundColor = "#fff";
				break;
	    }

      /* 14.12.11 Поповеры */
		  var cropImg = $container.data('cropImg');
		  var cropImgHeight = 0, cropImgWidth = 0;
		  if (cropImg.length) {
			  cropImgWidth = Number(cropImg.attr('width'));
			  cropImgHeight = Number(cropImg.attr('height'));
		  }

      var w = cropImgWidth ? cropImgWidth : $container.width();
      var h = cropImgHeight ? cropImgHeight : $container.height();
	  
	 

		  if (cropImgWidth && cropImgHeight) {
			  $container.css({width: cropImgWidth});
		  }
		  /* / 14.12.11 Поповеры */

		  if (levitate) {
			  var containerCircle = {
						obj: $container,
						r: 3, //радиус окружности
						a: 0, // текущий угол
						/* угловая скорость */
						angle: function(){
							if (!arguments.length) {
									// нет аргументов — работаем как getter
									return this.a;
							} else {
									// есть аргумент — работаем как setter
									this.a = arguments[0];

									// переводим угол из градусов в радианы
									var a = this.a / 180 * Math.PI;

									// считаем новые координаты
									this.obj.css("margin-left", (Math.sin(a) * this.r));
									this.obj.css("margin-top", (Math.cos(a) * this.r)-this.r);
							}
						}
				};

			  $container.data({"circle": containerCircle});

			  $container.mouseenter(function(){
				  jTweener.removeTween(containerCircle);
			  });
			  $container.mouseleave(function(){
				  startLevitate(containerCircle.angle());
			  });

			  setTimeout(function(){
				  startLevitate(0);
			  }, 500);

			  function startLevitate(angle) {
				  jTweener.addTween(containerCircle, {
						time: 1.5, // время круга
						transition: "easenone",
						angle: angle-360, // полный оборот по часовой стрелке
					  onComplete: function() {
						  containerCircle.angle(angle);
						  startLevitate(angle);
					  }
					});
			  }
		  }

		  var popoverLeft, popoverLeftStart, popoverTop, popoverTopStart;

		  //alert(pointLeft+' '+ pointLeftRight+ ' '+pointWidth ); 
			switch (position) {
		    case "top":
				    popoverTop = pointTop - pointHeight;
				    //popoverTopStart = popoverTop + h/2;
		    break;
		    case "right":
				    popoverLeft = pointLeft +pointWidth ;
				    //popoverLeftStart = popoverLeft - w/2;
		    break;
		    case "bottom":
				    popoverTop = pointTop + pointHeight;
				    //popoverTopStart = popoverTop - h/2;
		    break;
		    case "left":
				    popoverLeft = pointLeft - w;
				    //popoverLeftStart = popoverLeft + w/2;
			break;
			case "checkout":
				    popoverLeft = pointLeftRight + pointWidth ;
				    //popoverLeftStart = popoverLeft + w/2; 
				position ="right";
		    break;
	    }
			
		

		 if (position == "top" || position == "bottom") {
			  popoverLeft = pointLeft + pointWidth/2 - w/2;
			  var popoverRight = rootWidth - (popoverLeft + w);
			  if (popoverLeft < 10 && !cropImg.length) {
				  tc = popoverLeft - 10;
				  popoverLeft = 10;
			  } else if (popoverRight < 10 && !cropImg.length) {
					tc = -popoverRight + 10;
				  popoverLeft = popoverLeft + (popoverRight - 10);
			  }
				popoverLeftStart = popoverLeft;
		  }

		  if (position == "right" || position == "left") {
			  popoverTop = pointTop + pointHeight/2 - h/2;
			  var popoverBottom = rootHeight - (popoverTop + h);
			  if (!levitate) {
				  if (popoverTop - scrollTop < 10 && !cropImg.length) {
					  tc = popoverTop - scrollTop - 10;
					  popoverTop = scrollTop + 10;
				  } else if (popoverBottom < 10 && !cropImg.length) {
					  tc = -popoverBottom + 10;
					  popoverTop = popoverTop + (popoverBottom - 10);
				  }
			  }
			  popoverTopStart = popoverTop;
		  }
					  
		  if (position == "checkout") {
			  popoverTop = pointTop + pointHeight/2 - h/2;
			  var popoverBottom = rootHeight - (popoverTop + h);
			  if (popoverTop - scrollTop < 10) {
					tc = popoverTop - scrollTop - 10;
					popoverTop = scrollTop + 10;
				} else if (popoverBottom < 10) {
					tc = -popoverBottom + 10;
					popoverTop = popoverTop + (popoverBottom - 10);
				}
			  popoverTopStart = popoverTop;
		  }
		  
			if (animate != "position") {
		    $container.css({"left": popoverLeft, "top": popoverTop});
			} else {
				$container.animate({"left": popoverLeft, "top": popoverTop}, 250);
			}
		  //$container.css({"left": popoverLeftStart, "top": popoverTopStart});
		  //$container.animate({"left": popoverLeft, "top": popoverTop}, S.Popover.time*2);

    	  /* 14.12.11 Поповеры*/
      function path(w, h, brPlus, crop) {
        var t = 0;
        var r = crop ? Math.min(cropImgWidth, w) : w;
        var b = h;
        var l = 0;

	      if (brPlus) {
		      br = br + brPlus;
	      }

	      var topTail, rightTail, bottomTail, leftTail;

	      switch (position) {
					case "top":
						b = b - ts;
	          bottomTail = ("L"+(w/2+tc+ts)+","+b) + ("L"+(w/2+tc)+","+(b+ts)) + ("L"+(w/2+tc-ts)+","+b);
					break;

		      case "right":
						l = l + ts;
	          leftTail = ("L"+l+","+(h/2+tc+ts)) + ("L"+(l-ts)+","+(h/2+tc)) + ("L"+l+","+(h/2+tc-ts));
					break;

		      case "bottom":
						t = t + ts;
	          topTail = ("L"+(w/2+tc-ts)+","+t) + ("L"+(w/2+tc)+","+(t-ts)) + ("L"+(w/2+tc+ts)+","+t);
					break;

		      case "left":
				    r = r - ts;
	          rightTail = ("L"+r+","+(h/2+tc-ts)) + ("L"+(r+ts)+","+(h/2+tc)) + ("L"+r+","+(h/2+tc+ts));
					break
				}

        var path = ("M"+(l+br)+","+t) + topTail + ("L"+(r-br)+","+t) + ("S"+r+","+t+","+r+","+(t+br)) + rightTail + ("L"+r+","+(b-br)) + ("S"+r+","+b+","+(r-br)+","+b) + bottomTail + ("L"+(l+br)+","+b) + ("S"+l+","+b+","+l+","+(b-br)) + leftTail + ("L"+l+","+(t+br)) + ("S"+l+","+t+","+(l+br)+","+t);
        ////console.log(path);
        return path;

      }
		  /* / 14.12.11 Поповеры*/

      var shadowBlur = 3;
      var shadowPadding = 10;

      var shadowPath = path(w - (shadowPadding + 1), h - (shadowPadding + 1));
      var shadowTranslation = ((shadowPadding + 1) / 2) + "," + (((shadowPadding + 1) / 2)+1);
      var strokePath = path(w - shadowPadding, h - shadowPadding);
      var strokeTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
      var backgroundPath = path(w - (shadowPadding + 1), h - (shadowPadding + 1), -1);
      var backgroundTranslation = ((shadowPadding + 1) / 2) + "," + ((shadowPadding + 1) / 2);

		 /* 14.12.11 Поповеры*/
		  if (cropImg.length) {
		    var cropImgPath = path(w - (shadowPadding + 2), h - (shadowPadding + 2), -1, 'crop');
		    var cropImgTranslation = ((shadowPadding + 2) / 2) + (position == 'left' && w - cropImgWidth - shadowPadding - 2 > 0 ? w - cropImgWidth - shadowPadding - 2 : 0) + "," + ((shadowPadding + 2) / 2);
			}
		  /* / 14.12.11 Поповеры*/
			
		  var paper = $container.data("paper");
			if (paper) {
				paper.remove();
			}

		  paper = Raphael(container, w, h);
			$container.data({"paper": paper});
			var shadow = paper.path(shadowPath);
			$container.data({"shadow": shadow});
		  var stroke = paper.path(strokePath);
			$container.data({"stroke": stroke});
			var background = paper.path(backgroundPath);
			$container.data({"background": background});
		  if (withShadow) {
				shadow.attr({fill: "#000", opacity: 0.75, "stroke": "transparent", "stroke-width": 0, translation: shadowTranslation});
				if (!isIE) shadow.blur(shadowBlur);
		  } else {
			  shadow.attr({opacity: 0});
		  }
			stroke.attr({fill: strokeColor, "stroke": "transparent", "stroke-width": 0, translation: strokeTranslation});
      background.attr({fill: backgroundColor, "stroke": "transparent", "stroke-width": 0, translation: backgroundTranslation});
	  
			/* 14.12.11 Поповеры*/
		  if (cropImg.length) {
				var cropImgCanvas = paper.path(cropImgPath);
				cropImgCanvas.attr({translation: cropImgTranslation, fill: 'url('+ cropImg.attr("src") +')', "stroke": "transparent", "stroke-width": 0});
				//cr
			}
		  /* / 14.12.11 Поповеры*/

	    if (animate == "full") {
		    var startFrame = {scale: "0.1"};
		    var endFrame = {scale: "1"};
		    var easing = ">";

		    shadow.attr(startFrame);
		    stroke.attr(startFrame);
		    background.attr(startFrame);
			/* 14.12.11 Поповеры*/
		    if (cropImg.length && !isIE) {
			    //cropImgCanvas.attr({opacity: 0});
		    }
		    /* / 14.12.11 Поповеры*/
		    shadow.animate(endFrame, this.time, easing, function() {
			    $container.addClass("b-popover_visible-content");
			    S.checkRequiredFields()
		    });
		    stroke.animateWith(shadow, endFrame, this.time, easing);
		    background.animateWith(shadow, endFrame, this.time, easing);
			/* 14.12.11 Поповеры*/
		    if (cropImg.length && !isIE) {
			    /*setTimeout(function(){
				    cropImgCanvas.attr({opacity: 1});
			    }, this.time + 10);*/
			    //cropImgCanvas.animate({opacity: 1}, this.time*5, easing);
		    }
		    setTimeout(function(){
			    paper.safari();
		    },this.time*5);
		    /* / 14.12.11 Поповеры*/
	    }
	  },
    show: function(container) {
	    var animate = "full";

	    if (container.data("isVisible")) animate = "position";
	    container.show().data({"isVisible": true});
	    S.Popover.hide(S.Popover.container.not(container));
	    var containerById = document.getElementById(container.attr("id"));
	    var switcher = container.data("switcher");
		//if(switcher != undefined)	{
			if (switcher.hasClass("switch")) {
				switcher.addClass("switch_switched");
			} else if (switcher.hasClass("b-button")) {
				switcher.addClass("b-button_checked");
			}
		//}

	    this.draw(containerById, switcher, container.data("position"), container.data("style"), animate, container.data("point"));

	    //фикс поповеров для ИЕ
	    /*if(isIE){
		    height = container.find("> div").not(".b-popover__content").height();
			container.find(".b-popover__content").css({"margin-top":-height});
	    }
		//*/
		var user = container.attr("id");
		
		if(user == 'user-popover' && !isIE)// && isWebkit)
		{
			$('#user-popover').find('input').each(function(index) {
				$(this).trigger('focus').css({color: "#aaa"});
				
				//console.log($(this).attr('name'));
			});
		}//*/
  

    },
	  hide: function(container, force) {
		  var time = this.time;
		  container.each(function(){
			  var container = $(this);
			  var close = container.data("close");
				if (!close || force) {
					// Закрываем поповер, по клику мимо, если у него нет иконки «?», или по клику на эту иконку
					jTweener.removeTween(container.data("circle"));
					var content = $(".b-popover__content", container);
					var paper = container.data("paper");
					var shadow = container.data("shadow");
					var stroke = container.data("stroke");
					var background = container.data("background");

					var switcher = container.data("switcher");
					//if(switcher != undefined)		{
						if (switcher.hasClass("switch")) {
							switcher.removeClass("switch_switched");
						} else if (switcher.hasClass("b-button")) {
							switcher.removeClass("b-button_checked");
						}
					//}

					if (shadow && stroke && background) {
						var endFrame = {opacity: "0"};
						var easing = "<";

						container
								.data({"isVisible": false})
								.removeClass("b-popover_visible-content");

						shadow.animate(endFrame, time, easing, function(){
							shadow.remove();
						});
						stroke.animate(endFrame, time, easing, function(){
							stroke.remove();
							background.remove();
							container
								.attr({"style": ""})
								.hide();
						});
					}
				}
		  });
	  },
	  reDraw: function(container) {
		  var containerById = document.getElementById(container.attr("id"));
	    this.draw(containerById, container.data("switcher"), container.data("position"), container.data("style"), false);
	  }
  },

  /*Рисуем красивые специально-градиентные кнопочки, даже со стрелкой справа. Внешний вид кнопки настраивается через атрибут data-buttonStyle */
	Button: {
    initialize: function() {
      var button = $(".b-button");
      if (button.size()) {
        this.button = button;
        this.button.each(function(){
          var attr = $(this).attr("data-buttonStyle");
          if (attr) {
            var style = attr.split(" ");
            $(this).addClass("b-button_raphael");
	          if (style[2] != "deferred") {
              S.Button.makeButton(this, style[0], style[1]);
	          }
          }
        });

	      //Запрещаем клик на активных кнопках-ссылках
	      this.button.filter(function(){
		      return $(this).is("a") && ($(this).is(".b-button_switched") || $(this).is(".b-button_checked"))
	      }).removeAttr("href");
      }
    },
	  initializeDeferred: function(parent) {
      var button = $(".b-button", parent);
			button.each(function(){
				var attr = $(this).attr("data-buttonStyle");
				if (attr) {
					var style = attr.split(" ");
					$(this).addClass("b-button_raphael");
					S.Button.makeButton(this, style[0], style[1]);
				}
			});
    },
    makeButton: function(button, name, arrow) {
      var w,h,text,textMargin,br,shadowBlur,shadowPadding,shadowPath,shadowTranslation,strokePath,strokeTranslation,strokeColor,backgroundPath,backgroundTranslation,backgroundColor,background2,background2Color,background2Opacity,ar;

      background2 = false;

      function setVars() {
        if (arrow == "arrow") {
          text = $(".b-button__text", $(button));
          text.css({"margin-right": textMargin});
        }
        w = $(button).width();
        h = $(button).height();
      }

      function path(w, h, brPlus) {
	      if (brPlus) {
		      br = br + brPlus;
	      }

        var leftCorner = ("M"+w/3+","+h) + ("L"+(0+br)+","+h) + ("S"+0+","+h+","+0+","+(h-br)) + ("L"+0+","+(0+br)) + ("S"+0+","+0+","+(0+br)+","+0);
        var rightCorner;
        if (arrow != "arrow") {
          rightCorner = ("L"+(w-br)+","+0) + ("S"+w+","+0+","+w+","+0+br) + ("L"+w+","+(h-br)) + ("S"+w+","+h+","+(w-br)+","+h);
        } else {
          rightCorner = ("L"+(w-ar)+","+0) + ("L"+w+","+(h/2)) + ("L"+(w-ar)+","+(h));
        }
        var path = leftCorner + rightCorner + "z";
        return path;
      }

      if (name == "copper") {
        // Border radius
        br = 5;
        if (arrow == "arrow") {
          // Arrow size
          ar = 18;
          textMargin = 5;
        }
        setVars();
        shadowBlur = 1;
        shadowPadding = 3;
        shadowPath = path(w - shadowPadding, h - shadowPadding);
        shadowTranslation = (shadowPadding / 2 + 1) + "," + (shadowPadding / 2 + 1);
        strokePath = shadowPath;
        strokeTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
        backgroundPath = path(w - shadowPadding - 1, h - shadowPadding - 1);
        backgroundTranslation = ((shadowPadding + 1) / 2) + "," + ((shadowPadding + 1) / 2);
        strokeColor = "90-#7d350d-#944721:20-#d9a56c:80-#fff";
        backgroundColor = "90-#e6b169-#a3582f:15-#d58245:50-#f19b54:51-#f5cd7d:90-#f5c476";

      } else if (name == "red-price") {

        br = 5;
        if (arrow == "arrow") {
          // Arrow size
          ar = 12;
          textMargin = 10;
        }
        setVars();
        shadowBlur = 1;
        shadowPadding = 3;
//        shadowPath = path(w - shadowPadding, h - shadowPadding);
//        shadowTranslation = (shadowPadding / 2 + 1) + "," + (shadowPadding / 2 + 1);
//        backgroundPath = shadowPath;
//        backgroundTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
//        backgroundColor = "90-#890411-#ae0418";
	      shadowPath = path(w - shadowPadding, h - shadowPadding);
        shadowTranslation = (shadowPadding / 2 + 1) + "," + (shadowPadding / 2 + 1);
        strokePath = shadowPath;
        strokeTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
        backgroundPath = path(w - shadowPadding - 1, h - shadowPadding - 1);
        backgroundTranslation = ((shadowPadding + 1) / 2) + "," + ((shadowPadding + 1) / 2);
        strokeColor = "90-#7b3412-#944721:12-#d9a56c:88-#f9e9c1";
        backgroundColor = "90-#e6b169-#a3582f:15-#d58245:50-#f19b54:51-#f5cd7d:90-#f5c476";
        background2Color = "#b5041a";
        background2Opacity = .5;

      } else if (name == "buy") {

        br = 10;
        if (arrow == "arrow") {
          // Arrow size
          ar = 28;
          textMargin = 15;
        }
        setVars();
        shadowBlur = 1;
        shadowPadding = 3;
        shadowPath = path(w - shadowPadding, h - shadowPadding);
        shadowTranslation = (shadowPadding / 2 + 1) + "," + (shadowPadding / 2 + 1);
        strokePath = shadowPath;
        strokeTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
        backgroundPath = path(w - shadowPadding - 1, h - shadowPadding - 1);
        backgroundTranslation = ((shadowPadding + 1) / 2) + "," + ((shadowPadding + 1) / 2);
        strokeColor = "90-#7b3412-#944721:12-#d9a56c:88-#f9e9c1";
        backgroundColor = "90-#e6b169-#a3582f:15-#d58245:50-#f19b54:51-#f5cd7d:90-#f5c476";
        background2Color = "#b5041a";
        background2Opacity = .5;

      } else if (name == "checkout") {

        br = 5;
        if (arrow == "arrow") {
          // Arrow size
          ar = 20;
          textMargin = 12;
        }

        setVars();
        shadowBlur = 1;
        shadowPadding = 3;
        shadowPath = path(w - shadowPadding, h - shadowPadding);
        shadowTranslation = (shadowPadding / 2 + 1) + "," + (shadowPadding / 2 + 1);
        strokePath = shadowPath;
        strokeTranslation = (shadowPadding / 2) + "," + (shadowPadding / 2);
        backgroundPath = path(w - shadowPadding - 1, h - shadowPadding - 1);
        backgroundTranslation = ((shadowPadding + 1) / 2) + "," + ((shadowPadding + 1) / 2);
        strokeColor = "90-#7b3412-#944721:12-#d9a56c:88-#f9e9c1";
        backgroundColor = "90-#e6b169-#a3582f:15-#d58245:50-#f19b54:51-#f5cd7d:90-#f5c476";
        background2Color = "#b5041a";
        background2Opacity = .5;
      }

	    var paper = Raphael(button, w, h);
      if (shadowPath) {
        var shadow = paper.path(shadowPath);
        shadow.attr({fill: "#000", opacity: 0.25, stroke: "transparent", "stroke-width": 0, translation: shadowTranslation});
        if (!isIE) {
          shadow.blur(shadowBlur);
        }
      }
      if (strokePath) {
        var stroke = paper.path(strokePath);
        stroke.attr({fill: strokeColor, stroke: "transparent", "stroke-width": 0, translation: strokeTranslation});
      }
      var background = paper.path(backgroundPath);
      background.attr({fill: backgroundColor, stroke: "transparent", "stroke-width": 0, translation: backgroundTranslation});

      if (background2Color) {
        background2 = paper.path(backgroundPath);
        background2.attr({fill: background2Color, opacity: background2Opacity, stroke: "transparent", "stroke-width": 0, translation: backgroundTranslation});

      }

      /*$(button).hover(
          function () {
            shadow.animate({opacity: 0.75}, 150);
          },
          function () {
            shadow.animate({"opacity": 0.25}, 150);
          }
      );*/

    }
  },
  
	/* 14.12.11 Поповеры*/
	Zoom: {
		initialize: function() {
			var switchers = $('.js-zoom-switch');
			if (switchers.size() && !isIOS && !isMobile) {
				this.switchers = switchers;
				this.switchers.each(function(){
					var $this = $(this);
					var popover = $('#' + $this.attr('id').replace('switch', 'popover'));
					var position = $this.attr('data-popoverPosition');

					S.Zoom.drawLine($this); 

					S.Popover.set(popover, $this, position, $this.data('point'));
					$this.click(function(){
						if ($this.hasClass("switch_switched")) {
							//popover.data({switcher: $this});
							S.Popover.hide(popover);
						} else {
							//popover.data({switcher: $this.data('point')});
							S.Popover.show(popover);
						}
					});
				});
			} else {
				switchers.hide();
			}
		},
		drawLine: function(switcher) {
			var line = $('<span></span>').appendTo(switcher).css({position: 'absolute'});

			var margin = 5;
			var switcherPos = switcher.position();
			var switcherHeight = switcher.height();
			var switcherX = switcherPos.left - margin;
			var switcherY = switcherPos.top + switcherHeight/2;
			var switcherWidth = switcher.width() + margin;
			var pointPos = switcher.attr('data-pointTo').split(', ');
			var pointX = Number(pointPos[0]);
			var pointY = Number(pointPos[1]);

			var point = $('<span></span>').insertAfter(switcher).css({position: 'absolute', width: 10, height: 10, top: pointY - 5, left: pointX - 5});
			switcher.data({point: point});


			var yFLAG = switcherY > pointY;
			var xFLAG = switcherX > pointX;
			var xwFLAG = pointX >= switcherX + switcherWidth/2;
			var xWFLAG = pointX >= switcherX + switcherWidth;

			var lineY = yFLAG ? pointY : switcherY;
			var lineX = (xFLAG ? pointX : (xwFLAG ? (!xWFLAG ? pointX : switcherWidth + switcherX) : switcherX));
			var lineHeight = Math.abs(switcherY - pointY);
			var lineWidth = Math.abs((switcherX + (xwFLAG ? switcherWidth : 0)) - pointX);

			//console.log(lineX);
			////console.log(switcherX, pointX, lineX, lineWidth);
			//switcher.css({top: switcherPos.top - switcherHeight/2});

			var topShift = lineY - switcherY + switcherHeight/2;
			var leftShift = lineX - (switcherX + (xwFLAG ? 0 : margin));

			line.css({height: lineHeight, width: lineWidth, top: topShift, left: leftShift});

			var paper = Raphael(line[0], lineWidth, lineHeight);
			var x0, y0, x2, y2, x, y;
			// from right to left
			var rlFLAG = xFLAG || xwFLAG && !xWFLAG;
			// from bottom to top
			//var btFLAG = yFLAG;
			// same x for control point
			var sxFLAG = !xwFLAG;
			x0 = 0;
			y0 = yFLAG && rlFLAG || !yFLAG && !rlFLAG ? 0 : lineHeight;
			x = lineWidth;
			y = y0 == 0 ? lineHeight : 0;
			x2 = sxFLAG ? x0 : x;
			y2 = sxFLAG ? y : y0;
			//console.log('rlFLAG: ' + rlFLAG, 'btFLAG: ' + yFLAG, 'sxFLAG: ' + sxFLAG);
			//if ()

			//console.log(x0, y0, x2, y2, x, y);

     var strike = paper.path("M"+x0+","+y0+"S"+x2+","+y2+","+x+","+y);
	 
		if(switcher.hasClass('switch_white'))
			strike.attr({"stroke": "white", "stroke-width": 1});
		else if(switcher.hasClass('switch_color'))
			strike.attr({"stroke": "#b66837", "stroke-width": 1});
		else//*/
			strike.attr({"stroke": "#2f4f94", "stroke-width": 1});
		
		}
	}
	/* / 14.12.11 Поповеры*/
}

$($.proxy(S.initialize, S));


function check_feild(name, email)
{
	var flag= true;
	name.addClass("error");
	var ei = name.next("i");
	if(name.val() == name.attr('title'))
	{
		if (!ei.size()) {
			ei = $("<i class='error-dot'></i>").css("opacity", 1);
			name.after(ei);
			ei.animate({opacity: 1}, 200);
		} else {
			// ещё раз кликнули
			ei.animate({opacity: 0}, 200, function(){
			ei.animate({opacity: 1}, 200);
			});
		}
		flag = false;
	}else 
	{
		if(email)
		{
			if(isValidEmail(name.val()))
			{
				if (ei.size())	ei.animate({opacity: 0}, 200);
				name.removeClass("error");
			}else
			{
				if (!ei.size() || !email) {
					ei = $("<i class='error-dot'></i>").css("opacity", 0);
					name.after(ei);
					ei.animate({opacity: 1}, 200);
				} else {
					// ещё раз кликнули
					ei.animate({opacity: 0}, 200, function(){
						ei.animate({opacity: 1}, 200);
			});
				}
				flag = false;
			}
		}else
		{
			if (ei.size()) ei.animate({opacity: 0}, 200);
			name.removeClass("error");
		}
	}
	return flag;
}


var email_regex = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/;

function isValidEmail($email){
 return email_regex.test($email);
}

// Демонстрация разных состояний формы входа в пользовательском поповере (S.UserPopover). Должно быть сделано с реальными аякс-запросами.
function demoPassForget() {
	var button = $("#sign-button");
	var off_button = $("#signOff-button");
	
	var email = $("#email");
	var pass = $("#sign-form-password");
	var forgotSwitch = $("#forgot-switch");
	// Заполнили почту и пароль, кликаем субмит
	button.click(function(){
		var tmp = email.val();
		email.val(tmp.toLowerCase());
		if (!$(this).data("disabled")) {
			if (!$(this).data("forgot")) {
				var f1 = check_feild(email, 1);
				var f2 = check_feild(pass);
				var flag = f1*f2;
				
				//alert(flag+' '+f1+' '+f2+' '+(flag == true));
				//$("i.error-dot").css("float", "right");
				//$("i.error-dot").css("display", "in-line");
				if(flag)
				{
					$.post('/user/check', { 'email': email.val(), 'pass': pass.val() } , function(data) {
					$('#tmp').html(data);
					var error = $('error').html();
					var error_txt = $('error_txt').html();
					var status = $('status').html();
					var id = $('id').html();
					$('#tmp').html("");
					//return;
					if(error == 0 && status == 0)//not found no error
					{ 
						shift_user_popup();
					}else if(status == 1 && error == 0)//found no error 
					{ 
						//return; 
						$("#load_proc").trigger("click");	
						$.post('/user/login', { 'email': email.val(), 'pass': pass.val() },
								function(data){  
								
					//
					/*S.Popover.hide(S.UserPopover.popover);
					$.post(site_host+'user/getpopup', function(data){$("#user-popover").replaceWith(data)});
					S.UserPopover.initialize();
					var res = getSimpleXMLparams(data);
					$(".user-n-cart .user").text(res['name']);
					
					
					//alert(data +' '+ dump(res));
					//S.Popover.show(S.UserPopover.popover);
					//$.fancybox.close(); //*/
											 
									location.reload(); 
								}); 
					}else if(error == 1)	
					{
						//alert("The password is not correct."); 
						
						shift_user_popup();
						//alert(str_x);
						
						//$('#user-popover').animate
						
					}					

					//alert (" error:"+error+"  -> status:"+status);
					});

				}else  
				{
					tmp = email.attr("title");
					if(email.val() == tmp.toLowerCase())
					{
						email.val(email.attr("title"));
					}
					
					shift_user_popup();
					//alert(str_x);
				}
				//*/
			} else 
			{	// Клик, на субмите, после того, как сказали, что забыли пароль (отправляем письмо со ссылкой).
				var flag = check_feild(email, 1);
				if(flag)  // if email of right form
				{
					var form = button.parents(".login-form");
					var h2 = form.find("#tmp"); 
					var tr = form.find(".tr");
					
					$.post('/user/check', { 'email': email.val(), 'pass': pass.val() } , function(data) 
					{
						$('#tmp').html(data);
						var error = $('error').html();
						var error_txt = $('error_txt').html();
						var status = $('status').html();
						var id = $('id').html();
						$('#tmp').html("");
						//return;
						if(status == 1)//found 
						{
							button.attr('disabled', 'disabled');
							button.addClass("b-button_disabled submit_disabled");
							$.post('/user/forgot', { 'email': email.val() } , function(data) {
								$(this).attr('disabled', '');
								$(this).removeClass("b-button_disabled submit_disabled");
							
								//alert(data); 
								
								var res = getSimpleXMLparams(data);
								var status = res['status'];
								var h2_txt = res['h2_txt'];
								var mess = res['mess'];
							
								h2.show();
								h2.text(h2_txt).animate({"marginTop": 20}, "fast");
								tr.slideUp("fast");
								var note = $('<p id="forgot_note">'+mess+"</p>").hide();
								h2.after(note);
								note.css({"marginBottom": 40}).show("fast", function(){
									// Перерисовыем попап, т. к. изменилось содержимое
									
								});
							});
							S.Popover.reDraw(S.UserPopover.popover);
						}else
						{
							shift_user_popup();
						}
						
					});
						
				}else
				{
					tmp = email.attr("title");
					if(email.val() == tmp.toLowerCase())
					{
						email.val(email.attr("title"));
					} 
					shift_user_popup();
				}
				 
				S.UserPopover.switcher.add(document).one("click", function(){
				//При выходе их поповера, возвращаем всё в исходное состояние.
				//var form = $(this).parents(".login-form");
				//var h2 = form.find("h2"); 
				//var tr = form.find(".tr");
				var h2 = form.find("#tmp"); 
				
				var note = $("#forgot_note")
				h2.hide();
				//h2Clone.remove(); 
				note.remove();
				button.data({"forgot": false}).find(".b-button__text b").remove();
				button.find(".b-button__text").html("Sign in");
				tr.slideDown("fast");
				//tr.show();
				forgotSwitch.show();
				forgotSwitch.next("p").remove();
				pass.val("");
				pass.next("i").remove();
				//S.Popover.reDraw(S.UserPopover.popover);
				});
				
			}
		}
	});
	
	// Sign Off 
	off_button.click(function(){
	
		$.post('/user/login', function(data){
			$("#root").fadeOut(2000, function(){ 
				location.reload();  
			}); 
		});
		
		//location.href = site_host;     
	});
 
	// Кликаем, что забыли пароль.
	forgotSwitch.click(function(){
		// Изменяем данные кнопки и её действие, косвенно, чере data, который проверяем по клику на ней.
		button.data({"forgot": true}).find(".b-button__text").html("Sign in<b>...</b>");
		// Скрываем и удаляем поле с паролем
		pass.parents(".tr").slideUp("fast");
		$('#user_popup_sign_in_h2').slideUp("fast");
		
		// Скрываем переключалку забытости пароля
		$(this).hide();
		// Пишем текстом, что будет дальше.
		var note = $("<p>Enter your e-mail, a sign-in link will be sent to your address.</p>").hide();
		$(this).parents(".tr").append(note);
		note.show("fast", function(){
			// Перерисовыем попап, т. к. изменилось содержимое
			S.Popover.reDraw($("#user-popover"));

			// Перепроверям заполненость формы, т. к. одного поля не стало
			S.checkRequiredFields();
		});
	});
	
	$("div.login-form input").keypress(function (e) {
      if (e.keyCode == 13) 
	  {
        $("#sign-button").trigger('click');
		$("#pass-button").trigger('click');
      }  
    }); 
};

//    -------------------------    
var fb_flag =false;
 
function fb_page_reload(){$("#root").fadeToggle("slow", function(){
	if(fb_flag == false) { setTimeout(fb_page_reload, 100);};
 });};

$(document).ready(function(){

	// ----------------------  size popups setup
	$('.size_chart_text').click(function() 
	{
		var td = $(this).attr('toID');
		var t = td.split('_'); 
		t.splice(0,1);
		var id = t.join('_');
		$('#'+id).trigger('click');
	});
	// --------------------------  end size popups setup

	$("#facebook-sign-button").click(function(){
		//fb_page_reload();
		$("#load_proc").trigger("click");
		$.post(site_host+'index/setfbpage');
		
			/*	function(data){
				S.Popover.hide(S.UserPopover.popover);
				$.post(site_host+'user/getpopup', function(data){$("#user-popover").replaceWith(data)});
				$.fancybox.close(); 
				});//fb_flag = true;});//*/
				
		var tmp = $(this).attr('goto_url');
		//alert(tmp);
		//console.log(tmp);
		window.location = tmp;
		//$.fancybox.close(); 

	});
	
	$("#pick-n-measure-switch div:nth-child(1)").click(function(){

		$("#data_measures").attr("type", $("#data_measures").attr("last_type")); 
		$("#data_measures_two").attr("type", $("#data_measures_two").attr("last_type")); 
		
	}); 

	$("#pick-n-measure-switch div:nth-child(2)").click(function(){

		$("#data_measures").attr("last_type", $("#data_measures").attr("type"));
		$("#data_measures").attr("type", 0);
		$("#data_measures_two").attr("last_type", $("#data_measures_two").attr("type"));
		$("#data_measures_two").attr("type", 0);
	});
 
	//function buyButtonAction(){
	$("#buy_button").click(function(){ 
		//var button = $("#buy_button");
		//var measures_data = $("#measures_data"); 
		//var measures_type = $("#measures_type");
		var str = $("#data_measures").attr("str");
		var type = $("#data_measures").attr("type");
		var txt = $("#data_measures").attr("txt");
		var id = $("#data_measures").attr("prod_id"); 
		var form = '<form id="buy_prod_Form" action="/cart/add" method="post">'+
						'<input type="hidden" name="type" value="'+type+'" /><input type="hidden" name="str" value="'+str+'" /><input type="hidden" name="txt" value="'+txt+'" /><input type="hidden" name="id" value="'+id+'" /></form>';
						$("html").append(form); 
						$("#buy_prod_Form").trigger('submit'); 
			
		//alert('BUY '+type+' '+str+' '+txt+' '+id); 
		//return false;

	});  
	
	$("#buy_button_two").click(function(){ 
		//var button = $("#buy_button");
		//var measures_data = $("#measures_data"); 
		//var measures_type = $("#measures_type");
		var str = $("#data_measures_two").attr("str");
		var type = $("#data_measures_two").attr("type");
		var txt = $("#data_measures_two").attr("txt");
		var id = $("#data_measures_two").attr("prod_id"); 
		var form = '<form id="buy_prod_Form" action="/cart/add" method="post">'+
						'<input type="hidden" name="type" value="'+type+'" /><input type="hidden" name="str" value="'+str+'" /><input type="hidden" name="txt" value="'+txt+'" /><input type="hidden" name="id" value="'+id+'" /></form>';
						$("html").append(form); 
						$("#buy_prod_Form").trigger('submit'); 
			
		//alert('BUY '+type+' '+str+' '+txt+' '+id); 
		//return false;
	});  
	
	//   ----  for testing purpose   need to take out  -----------------------
	$(".discount-col h2 strong").click(function()
	{
		//var address = {};	address.country = $('#form-country').val();
		//S.Cart.updateAddressDelivery(address);
		alert(Data.cart.delivery.currentAddress +'\n'+dump(Data.cart.delivery.addresses)); 	return false;
		
	});
	//  ----------------------------------------------------------------------
	
	$("#check_out_button").click(function(){
		//var out = dump(Data.cart.delivery.currentAddress)+' \n-----\n'+dump(Data.cart);
		//alert('cur addr '+dump(Data.cart.delivery.currentAddress)+' '+typeof(Data.cart.delivery.addresses));
		//alert(Data.cart.delivery.currentAddress +'\n'+dump(Data.cart.delivery.addresses)); 
		//alert(dump(Post_sync));
		
		var tmp = S.Cart.addrCheckoutSub();
		if(!tmp)
		{
			var unverified = S.Cart.validateAddress();
			$('input #'+unverified+' :parent td').css('border', '2px double #fdd');
			$('input #'+unverified).focus();
			
			var tmp_label = $('label[for="'+unverified+'"]').html(); 
			
			//alert(tmp_label);
			
			$('.b-buy__we-accept').hide();
			$('#to_proceed').hide();
			$('#addr_proceed').show();
			$('#addr_proceed').text('Please fill "'+strip_tags(tmp_label)+'" field');
			return false;
		}
		$('#addr_proceed').hide();
		
		var fl = 0;
		for(var item in Data.cart.items)
		{ 	var val = Data.cart.items[item];
			if(val.productMeasureState == '0') fl++; 
		}
		
		if(fl>0)
		{
			alert('You have not yet took measurments for all "Custom fit" jeans.');
			//alert(dump(Data.cart.items));		
			return false;
		}
		//alert(fl);
		
		var addr_num = Data.cart.delivery.currentAddress;
		if(addr_num<0) addr_num = 0;
		var addr = $.toJSON(Data.cart.delivery.addresses[0]);
		var coupon = $("#tDiscountCode").val().replace('#','|');
		var pay = Data.money.wantToSpend;
		//alert('addr: '+addr_num+'  coupon:'+coupon+'  pay:'+pay);
		//$.post(site_host+'checkout');
		//alert(addr);
		addr = addr.replace(/"/g,'-|');
		addr = addr.replace(/'/g,'*|');//alert(addr);
		
		var form = '<form id="check_out_Form" action="'+site_host+'checkout/" method="post">'+
						'<input type="hidden" name="addr_num" value="'+addr_num+'" /><input type="hidden" name="addr" value="'+addr+'" /><input type="hidden" name="coupon" value="'+coupon+'" /><input type="hidden" name="pay" value="'+pay+'" /></form>';
						$("html").append(form); 
						$("#check_out_Form").trigger('submit'); 
		return false;
	}); 
	
	$("#b-button_checkout").click(function(){
		//alert(dump(Data.cart.items));
		 $("#checkout_form").trigger('submit'); 
		return false; 
	});
	
	//alert(dump(Data.cart.delivery.addresses));
	
	if (Data.cart !== undefined &&
		Data.cart.delivery !== undefined &&
		Data.cart.delivery.currentAddress !== undefined &&
		Data.cart.delivery.addresses[Data.cart.delivery.currentAddress] !== undefined){
		S.Cart.updateAddressDelivery(Data.cart.delivery.addresses[Data.cart.delivery.currentAddress]);
	}
	
	
	
	
});


/*---------------------------------------------------------------------------*/

function dump(obj, num) {
    var out = '';  var tab = '';  if(typeof(num)=='undefined') tab=''; else tab = num;
	if(typeof(obj) == 'object' || typeof(obj) == 'array')
		//{ out += 'obj: ';for (var i in obj) {out += ' '+ i; } }
		{out +='\n'; for (var i in obj) {out += tab + i + " : " + dump(obj[i], tab+'\t');}}
	else if(typeof(obj) != 'function') out+= obj + "\n";
    return(out);
}

function getCartCount()
{	var count = 0;
	if (Data.cart.items.length > 0)
    {   for (var i = 0; i < Data.cart.items.length; ++i) 
        { var cartItem = Data.cart.items[i];
          if (cartItem.productStatus == '' || cartItem.productStatus == '1'){ count++; }
        }
	}else count = 0;
	return count;
}

//  --------------------------   HTTP REQUESTS   ----------------------------------

function httpPostRedirectToPage(addr, params)
{
	var form_id = '__http_post_redirect';
	var form = '<form id="'+form_id+'" action="'+addr+'" method="post">';
	for(var par in params) {form += '<input type="hidden" name="'+par+'" value="'+params[par]+'" />';}
	form += '</form>'; $("html").append(form); $('#'+form_id+'').trigger('submit'); 	
	//alert(dump(params));
}

function __redirect(addr, post)
{
	if(post == undefined) window.location= addr;
	else httpPostRedirectToPage(addr, post);
}

function getSimpleXMLparams(data)
{
var tmp = data.split('>'); tmp = tmp.slice(1, (tmp.length - 1));
var td = {} ; for(var i in tmp){var tt = tmp[i].split('</'); if(tt.length == 2) td[tt[1]]=tt[0]; } 
var res = td; return res;
}
 


//----  file upload

function stopLoadingUser(res)
{
	//alert(res);
	$(".b-thumb .loading").hide();
	var img = '<div class="img" style="display: none; background-image: url(\''+res+'\')"></div>';
	$(".b-thumb .loading").before(img);
	$(".b-thumb .img").fadeIn();
}

function stopLoadingUserProduct(res)
{
	if(res == undefined) 
	{
		$(".b-thumb.loading").hide(); 
		alert('An error occured.');
		//S.ProductGallery.setup();
	}else
	{
		data = getSimpleXMLparams(res);
		
		$(".b-thumb.loading").hide(); 
		//return;
		
		var img = '<div class="b-thumb new" style="display:none"><div class="delete"></div><a class="item" href="'+data['big']+'" rel="group" style="background-image: url(\''+data['small']+'\')"></a></div>';
		$(".b-thumb.loading").before(img);
		$(".b-thumb.new").fadeIn().removeClass("new");
		S.ProductGallery.setup();
	}
}

function strip_tags( str ){ // Strip HTML and PHP tags from a string
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    return str.replace(/<\/?[^>]+>/gi, '');
}


