$(document).ready(function(){
	$('#cart_delSelected').click(cart_delSelected);
	$('.to_cart').click(to_cart);
	$('.b_cart').click(cart_loading);
	$('.b_close').click(function(){$('.cart_block').fadeOut(200);$('#cart_iBlackBlock').remove()});
});

function cart_selectMeasure()
{
	var i = $(this).attr('id').replace('measure_','');
	var id = $(this).find('option:selected').val();
	$('#price_'+i).html(mp[i][id]['p']);
	$('#measure_price_'+i).html(mp[i][id]['m']);
	cart_summ();
}

function cart_selectMod()
{
	var parent = $(this).attr('id').replace('selectMe_', '');
	var id = $(this).find('option:selected').val();
	cart_loadingShow();
	$.post('/cart/', {'a':'reselect', 'id':id, 'parent' : parent}, cart_setContent);
}

function cart_delSelected()
{
	var r = '-1';
	$('#iCartForm').find('.delMe:checked').each(function() {
		r +=','+$(this).attr('id').replace('delMe_','');
	});
	cart_loadingShow();
	$.post('/cart/', {'a':'del', 'id':r}, cart_setContent);
	
	return false;
}

function cart_loadingShow()
{
	t = $('#dinamycCartContent').find('.cartItemList').height()
	$('#dinamycCartContent').html('<div style="text-align:center;"><img height="'+t+'" src="/i/loading.gif" alt=""/></div>');
	$('#dinamycCartContent img').css({opacity:0.3});
	cart_disable();
}

function cart_setContent(data)
{
		if(data)
		{	
			cart_enable();
			//alert(1);
			$('#dinamycCartContent').html('' + data);
			//alert(2);
			$('.cartSelectMod').change(cart_selectMod);
			$('.cart_item_sum').format({precision: 0, allow_negative: false, autofix: true}).keyup(cart_summ);
			cart_summ();
			$('.cart_selectMeasure').change(cart_selectMeasure);
		}
		else
		{
			$('#dinamycCartContent').html('Для выбора товаров, воспользуйстесь кнопкой "Добавить в корзину" в карточке товара');
		}
}

function cart_loading()
{
	cart_BlackBlock(true);
	cart_loadingShow();
	$('.cart_block').fadeIn(200);$.post('/cart/', {'a': 'list'}, cart_setContent); 
}

//Расчет суммы заказа (и каждого товара в отдельности)
function cart_summ(){
	var s = new Array();
	var m = new Array();
	
	//Флаг, указывающий на то, что необходимо расчитывать цену с общей скидкой
	var globalDiscountFlag = 0;
	
	//Глобальные скидки
	var globalDiscount = new Array();
	globalDiscount.push({'min':1700000,'percent':10});
	globalDiscount.push({'min':800000,'percent':7});
	globalDiscount.push({'min':400000,'percent':5});
	globalDiscount.push({'min':150000,'percent':3});
	
	var sum = 0;

	//Проходим по всем товарам
	$('.cartItemList .price2').each(function(){
		//Вычисляем общую сумму
		sum = parseFloat(parseFloat(sum)+ (parseFloat($(this).html())*parseFloat($('#'+$(this).attr('id')+'_count').val())));
	});
	
	//Проходим по глобальным скидам
	for(v in globalDiscount){
		//Если общая сумма товаров больше чем какая-либо скидка (глобальная)
		if(sum >= globalDiscount[v].min){
			//Устанавливаем globalDiscountFlag равной величине скидки в %
			globalDiscountFlag = globalDiscount[v].percent;
			break;
		}
	}
	
	//Проходим по всем группам товаров в таблице товаров
	$('#dinamycCartContent .cartItemList').each(function(){
		
		//ID группы товаров
		var t = $(this).attr('id').replace('cart_il_','');
		
		//Удаляем сумму для группы товара
		$('#cart_catSumm_'+t).find('span').remove();
		
		s[t] = 0;
		m[t] = 0;
		
		//Проходим по всем ценам за единицу товара в группе
		$(this).find('.price2').each(function(){
			
			//Вычисляем сумму для товара
			var localSum = parseFloat($(this).html())*parseFloat($('#'+$(this).attr('id')+'_count').val());
			var si = localSum; //Цена на товар
			var mi = 0; //Скидка для товара

			//Если включена глобальная система скидок
			if(globalDiscountFlag && localSum > 0){
				if(mp[$(this).attr('id').replace('price_','')][3][0].percent == 0){
					//Не применяем скидку к товарам, у которых это установлено.
				}
				//Применяем глобальную скидку к товару
				else{
					//Цена товара
					si = Math.round( localSum - ((localSum*globalDiscountFlag)/100));
					//Скидка для товара
					mi = Math.round((localSum*globalDiscountFlag)/100);
				}
			}
			//Если глобальная ссылка не включена
			else if(localSum > 0){
				//sd - массив, содержащий информацию о скидках для товара
				var sd = mp[$(this).attr('id').replace('price_','')][3];
				//Проходим по массиву со скидками для каждого товара
				for (v in sd){
					//Если сумма товара подходит под порог определенной скидки
					if(localSum >= sd[v].min){
						//Цена товара
						si = Math.round( localSum - ((localSum*sd[v].percent)/100));
						//Скидка для товара
						mi = Math.round((localSum*sd[v].percent)/100);
						break;
					}
				}
			}
			//Вычисляем общую сумму для группы товаров
			s[t] = s[t] + si;
			//Вычисляем общую скидку для группы товаров
			m[t] = m[t] + mi;
			
			//Запоминаем сумму для товара
			$('#cart_itemSum_'+$(this).attr('id').replace('price_','')).val(si);

		});

		$('#cart_catSumm_'+t).html($('#cart_catSumm_'+t).html()+'<span> : '+round_float(s[t],2)+' руб.</span>');
		if(m[t]) $('#cart_catSumm_'+t).html($('#cart_catSumm_'+t).html()+'<span style="display:none"> (Скидка '+round_float(m[t],2)+' руб.)</span>');
	});
	
	var sum = 0;
	var sumM = 0;
	for(p in s)
	{
		sum +=s[p];
		sumM +=m[p];
	}
	$('#cart_allSumm').find('span').remove();
	$('#cart_allSumm').html($('#cart_allSumm').html()+'<span> : '+round_float(sum,2)+' руб.</span>');
	$('#cart_allSumVal').val(sum);
	$('#cart_allSumm').html($('#cart_allSumm').html()+'<span style="font-size:15px;display:none"><br/>Скидка '+round_float(sumM,2)+' руб.</span>');
	return false;
}

function round_float(x,n)
{
  if(!parseInt(n)) var n=0;
  var t = (!parseFloat(x)) ? 0 : Math.round(x*Math.pow(10,n))/Math.pow(10,n);
  return parseInt(t) == 0 ? 0 : (parseInt(t) == t ? t+'.00' : t);
}

function cart_disable()
{
	$('#cart_actionButton').css({'display':'none'});
	
}

function cart_enable()
{
	$('#cart_actionButton').css({'display':'block'});
}

function cart_BlackBlock()
{
	$('body').append('<div id ="cart_iBlackBlock" style="background-color:#000000;left:0;position:absolute;top:0;"></div>');
	$('#cart_iBlackBlock').css({opacity:0.3,height:$('body').height(),width:$('body').width()});
}


/*
 *
 * Copyright (c) 2011 Cloudgen Wong (<a href="http://www.cloudgen.w0ng.hk">Cloudgen Wong</a>)
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
// version 1.05 
// fix the problem of jQuery 1.5 when using .val() 
// fix the problem when precision has been set and the input start with decimal dot or comma ,e.g. precision set to 3 and input with ".1234"
var email={tldn:new RegExp("^[^\@]+\@[^\@]+\.(A[C-GL-OQ-UWXZ]|B[ABD-JM-OR-TVWYZ]|C[ACDF-IK-ORUVX-Z]|D[EJKMOZ]|E[CEGR-U]|F[I-KMOR]|G[ABD-IL-NP-UWY]|H[KMNRTU]|I[DEL-OQ-T]|J[EMOP]|K[EG-IMNPRWYZ]|L[A-CIKR-VY]|M[AC-EGHK-Z]|N[ACE-GILOPRUZ]|OM|P[AE-HKL-NR-TWY]|QA|R[EOSUW]|S[A-EG-ORT-VYZ]|T[CDF-HJ-PRTVWZ]|U[AGKMSYZ]|V[ACEGINU]|W[FS]|XN|Y[ETU]|Z[AMW]|AERO|ARPA|ASIA|BIZ|CAT|COM|COOP|EDU|GOV|INFO|INT|JOBS|MIL|MOBI|MUSEUM|NAME|NET|ORG|PRO|TEL|TRAVEL)$","i")};
(function($){
  $.extend($.expr[":"],{
    regex:function(d,a,c){
      var e=new RegExp(c[3],"g");
      var b=("text"===d.type)?d.value:d.innerHTML;
      return(b=="")?true:(e.exec(b))
    }
  });
  $.fn.output=function(d){
    if(typeof d=="undefined")
      return (this.is(":text"))?this.val():this.html();
    else
      return (this.is(":text"))?this.val(d):this.html(d);
  };
  formatter={
    getRegex:function(settings){
      var settings=$.extend({type:"decimal",precision:5,decimal:'.',allow_negative:true},settings);
      var result="";
      if(settings.type=="decimal"){
        var e=(settings.allow_negative)?"-?":"";
        if(settings.precision>0)
          result="^"+e+"\\d+$|^"+e+"\\d*"+settings.decimal+"\\d{1,"+settings.precision+"}$";
        else result="^"+e+"\\d+$"
      }else if(settings.type=="phone-number"){
        result="^\\d[\\d\\-]*\\d$"
      }else if(settings.type=="alphabet"){
        result="^[A-Za-z]+$"
      }
      return result
    },
    isEmail:function(d){
      var a=$(d).output();
      var c=false;
      var e=true;
      var e=new RegExp("[\s\~\!\#\$\%\^\&\*\+\=\(\)\[\]\{\}\<\>\\\/\;\:\,\?\|]+");
      if(a.match(e)!=null){
        return c
      }
      if(a.match(/((\.\.)|(\.\-)|(\.\@)|(\-\.)|(\-\-)|(\-\@)|(\@\.)|(\@\-)|(\@\@))+/)!=null){
        return c
      }
      if(a.indexOf("\'")!=-1){
        return c
      }
      if(a.indexOf("\"")!=-1){
        return c
      }
      if(email.tldn&&a.match(email.tldn)==null){
        return c
      }
      return e
    },
    formatString:function(target,settings){
      var settings=$.extend({type:"decimal",precision:5,decimal:'.',allow_negative:true},settings);
      var oldText=$(target).output();
      var newText=oldText;
      if(settings.type=="decimal"){
        if(newText!=""){
          var g;
          var h=(settings.allow_negative)?"\\-":"";
          var i="\\"+settings.decimal;
          g=new RegExp("[^\\d"+h+i+"]+","g");
          newText=newText.replace(g,"");
          var h=(settings.allow_negative)?"\\-?":"";
          if(settings.precision>0)
            g=new RegExp("^("+h+"\\d*"+i+"\\d{1,"+settings.precision+"}).*");
          else g=new RegExp("^("+h+"\\d+).*");
          newText=newText.replace(g,"$1")
        }
      }else if(settings.type=="phone-number"){
        newText=newText.replace(/[^\-\d]+/g,"").replace(/^\-+/,"").replace(/\-+/,"-")
      }else if(settings.type=="alphabet"){
        newText=newText.replace(/[^A-Za-z]+/g,"")
      }
      if(newText!=oldText)
        $(target).output(newText)
    }
  };
  $.fn.format=function(settings,wrongFormatHandler){
    var settings=$.extend({type:"decimal",precision:5,decimal:".",allow_negative:true,autofix:false},settings);
    var decimal=settings.decimal;
    wrongFormatHandler=typeof wrongFormatHandler=="function"?wrongFormatHandler:function(){};
    this.keypress(function(d){
      $(this).data("old-value",$(this).val());
      var a=d.charCode?d.charCode:d.keyCode?d.keyCode:0;
      if(a==13&&this.nodeName.toLowerCase()!="input"){return false}
      if((d.ctrlKey&&(a==97||a==65||a==120||a==88||a==99||a==67||a==122||a==90||a==118||a==86||a==45))||(a==46&&d.which!=null&&d.which==0))
        return true;
      if(a<48||a>57){
        if(settings.type=="decimal"){
          if(settings.allow_negative&&a==45&&this.value.length==0)return true;
          if(a==decimal.charCodeAt(0)){
            if(settings.precision>0&&this.value.indexOf(decimal)==-1)return true;
            else return false
          }
          if(a!=8&&a!=9&&a!=13&&a!=35&&a!=36&&a!=37&&a!=39){return false}
          return true
        }else if(settings.type=="email"){
          if(a==8||a==9||a==13||(a>34&&a<38)||a==39||a==45||a==46||(a>64&&a<91)||(a>96&&a<123)||a==95){return true}
          if(a==64&&this.value.indexOf("@")==-1)return true;
          return false
        }else if(settings.type=="phone-number"){
          if(a==45&&this.value.length==0)return false;
          if(a==8||a==9||a==13||(a>34&&a<38)||a==39||a==45){return true}
          return false
        }else if(settings.type=="alphabet"){
          if(a==8||a==9||a==13||(a>34&&a<38)||a==39||(a>64&&a<91)||(a>96&&a<123))
          return true
        }else return false
      }else{
        if(settings.type=="alphabet"){
          return false
        }else return true
      }
    })
    .blur(function(){
      if(settings.type=="email"){
        if(!formatter.isEmail(this)){
          wrongFormatHandler.apply(this)
        }
      }else{
        if(!$(this).is(":regex("+formatter.getRegex(settings)+")")){
          wrongFormatHandler.apply(this)
        }
      }
    })
    .focus(function(){
      $(this).select()
    });
    if(settings.autofix){
      this.keyup(function(d){
        if($(this).data("old-value")!=$(this).val())
          formatter.formatString(this,settings)
        }
      )
    }
    return this
  }
})(jQuery);
