// JavaScript Document
$(window).load(function(){
	$('table.productInfo input, table.order_1 input').each(function(){
		$(this).attr('def', $(this).val());
	});
	$('table.productInfo input, table.order_1 input').keyup(function(){
		if(is_numeric($(this).val()) && $(this).val() != '0')
			$(this).attr('def', $(this).val());
		else
			$(this).val($(this).attr('def'));
		updatePriceRows();
	});
	$('table.order_1 input').change(function(){
		$.post(
			ROOT + 'basket.php',
			{
					action:'set',
					article:$('span#article_'+$(this).parent('td').parent('tr').attr('lang')).text(),
					id:$(this).attr('lang'),
					hm:$(this).val()
			},
			function(xml){
				$('span#basket_hm').text($(xml).children('channel').children('inf').attr('hm'));
				$('span#basket_price').text($(xml).children('channel').children('inf').attr('price'));
				updateBasketInfo();
			},
			'xml'
		);
	});
	
	$("a#login").click(function(){
		$("#winBg").show();
		$(".mainCont","#loginWin").show();
		$(".winBox").css("top",($(window).scrollTop()+50)+"px");
		$("#loginWin").show();
		return false;
	});
	$('a.add_product_to_basket').click(function(){
		if(!$('span#price_'+$(this).attr('href')).text()){
			alert('Этого товара пока нет в продаже.');
			return false;
		}
		$.post(
			ROOT + 'basket.php',
			{
				action:'add',
				article:$('span#article_'+$(this).attr('href')).text(),
				price:$('span#price_'+$(this).attr('href')).text(),
				hm:$('input#count_'+$(this).attr('href')).val(),
				id:$('input#count_'+$(this).attr('href')).attr('class')
			},
			function(xml){
				$('span#basket_hm').text($(xml).children('channel').children('inf').attr('hm'));
				$('span#basket_price').text($(xml).children('channel').children('inf').attr('price'));
				updateBasketInfo();
				alert('Товар добавлен в корзину.\nТеперь у вас товаров: ' + $(xml).children('channel').children('inf').attr('hm') + ' на общую сумму ' + $(xml).children('channel').children('inf').attr('price') + ' р.\nДля оформления заказа нажмите на корзину.');
			},
			'xml'
		);
		return false;
	});
	$('a.item_to_basket').click(function(){
		var price = $(this).parent('p').children('span[class="sh_pr_price"]').text();
		price = price.split(',');
		for(var i = 0; i < price.length; i++){
			price[i] = price[i].substr(0, price[i].length - 3);
			price[i] = parseInt(price[i]);
			if(!price[i]){
				alert('Этого товара пока нет в продаже.');
				return false;
			}
		}
		var article = $(this).parent('p').children('span[class="sh_pr_article"]').text();
		article = article.split(',');

		var size = $(this).parent('p').children('span[class="sh_pr_size"]').text();
		size = size.split(',');
		
		if(price.length == article.length && article.length == 1)
			var num = 0;
		else{
			$('span.sh_pr_sub').hide();
			$(this).parent('p').children('span[class="sh_pr_sub"]').show();
			var txt = 'Выберите объем:<br />';
			for(var i = 0; i < size.length; i++)
				txt += '<a href="#" class="'+price[i]+'" name="'+article[i]+'">'+size[i]+'</a>' + (i+1 < size.length ? ' | ' : '');
			$(this).parent('p').children('span[class="sh_pr_sub"]').html(txt);

			$('span.sh_pr_sub a').click(function(){
				$.post(
					ROOT + 'basket.php',
					{
						action:'add',
						article:trim($(this).attr('name')),
						price:trim($(this).attr('class')),
						hm:1,
						id:$(this).parent('span').parent('p').children('a[class="item_to_basket"]').attr('name')
					},
					function(xml){
						$('span#basket_hm').text($(xml).children('channel').children('inf').attr('hm'));
						$('span#basket_price').text($(xml).children('channel').children('inf').attr('price'));
						updateBasketInfo();
						alert('Товар добавлен в корзину.\nТеперь у вас товаров: ' + $(xml).children('channel').children('inf').attr('hm') + ' на общую сумму ' + $(xml).children('channel').children('inf').attr('price') + ' р.\nДля оформления заказа нажмите на корзину.');
					},
					'xml'
				);
				$('span.sh_pr_sub').hide();
				return false;
			});

			return false;
		}

		$.post(
			ROOT + 'basket.php',
			{
				action:'add',
				article:article[num],
				price:price[num],
				hm:1,
				id:$(this).attr('name')
			},
			function(xml){
				$('span#basket_hm').text($(xml).children('channel').children('inf').attr('hm'));
				$('span#basket_price').text($(xml).children('channel').children('inf').attr('price'));
				updateBasketInfo();
				alert('Товар добавлен в корзину.\nТеперь у вас товаров: ' + $(xml).children('channel').children('inf').attr('hm') + ' на общую сумму ' + $(xml).children('channel').children('inf').attr('price') + ' р.\nДля оформления заказа нажмите на корзину.');
			},
			'xml'
		);
		return false;
	});

	updateBasketInfo();
	
	updatePriceRows();
	
	$('a.remove').click(function(){
		$('tr[lang='+$(this).attr('href')+']').hide();
		$.post(
			ROOT + 'basket.php',
			{
				action:'remove',
				article:$('span#article_'+$(this).attr('href')).text(),
				id:$(this).attr('id')
			},
			function(xml){
				$('span#basket_hm').text($(xml).children('channel').children('inf').attr('hm'));
				$('span#basket_price').text($(xml).children('channel').children('inf').attr('price'));
				updateBasketInfo();
				updatePriceRows();
			},
			'xml'
		);
		return false;
	});
	
	if (!$.browser.msie) {
		$('.radiobutton input.orderRadio').addClass('nie');
	}else{
		$('.radiobutton').addClass('ie');
	}
	
	$('.orderRadio').change(function(){
		$('.radiobutton').removeClass('active');
		$(this).parent('label').addClass('active');
		$(this).parent('label').children('input[type="text"]').focus();
		$(this).parent('label').children('input[type="password"]').focus();
	});
	
	$('a#email_recovery_link').click(function(){
		$('div#email_error').hide();
		$('div#email1_error').hide();
		$('div#password_error').hide();
		$('div#email_recovery_err').hide();
		$('div#email_recovery').hide();
		var re = /^[0-9a-z_\.-]+@[0-9a-z-_^\.]+\.[a-z]{2,4}$/i;
		var str = $('input#auth_email').val();
		if(!re.test(str)){
			$('div#email_error').show();
			$('a#order_2_next').attr('sending', '0');
			return false;
		}

		$.post(
			ROOT + 'basket.php',
			{
				action:'password_recovery',
				email:$('input#auth_email').val()
			},
			function(xml){
				if($(xml).children('channel').children('inf').attr('tf')){
					$('div#email_recovery').show();
				}else{
					$('div#email_recovery_err').show();
				}
				$('a#email_recovery_link').show();
			},
			'xml'
		);
	});
	
	$('a#order_2_next').click(function(){
		$('div#email_error').hide();
		$('div#email1_error').hide();
		$('div#password_error').hide();
		$('div#email_recovery_err').hide();
		$('div#email_recovery').hide();
		if($(this).attr('sending') != '1'){
			$(this).attr('sending', '1');
			var re = /^[0-9a-z_\.-]+@[0-9a-z-_^\.]+\.[a-z]{2,4}$/i;
			var str = $('input#auth_email').val();
			if(!re.test(str)){
				$('div#email_error').show();
				$('a#order_2_next').attr('sending', '0');
				return false;
			}
			if($('input[name="auth_reg"]:checked').val() == '1')
				$.post(
					ROOT + 'basket.php',
					{
						action:'check_email',
						email:$('input#auth_email').val()
					},
					function(xml){
						if(!$(xml).children('channel').children('inf').attr('tf')){
							$('a#order_2_next').attr('sending', '0');
							$('div#email1_error').show();
						}else
							document.location = ROOT + 'shop/order_3/';
					},
					'xml'
				);
			else
				$.post(
					ROOT + 'basket.php',
					{
						action:'login',
						email:$('input#auth_email').val(),
						password:$('input#auth_password').val()
					},
					function(xml){
						if(!$(xml).children('channel').children('inf').attr('tf')){
							$('a#order_2_next').attr('sending', '0');
							$('div#password_error').show();
						}else
							document.location = ROOT + 'shop/order_3/';
					},
					'xml'
				);
		}
		return false;
	});
	
	$('a#order_3_next').click(function(){
		$('div#error').hide();
		res = '';
		del = '';
		del += 'Тип доставки: ';
		switch($('input[name="delivery_type"]:checked').val()){
			case '1':
				del += 'по Москве в пределах МКАД';
				price = '400';
				break;
			case '2':
				del += 'в районы Москвы за МКАД';
				price = '600';
				break;
			case '3':
				if(!$('input[name="delivery_add"]').val()){
					$('div#error').show();
					return false;
				}
				del += 'область, удаленность от Москвы - ' + $('input[name="delivery_add"]').val() + ' км';
				price = 400 + 25 * Number($('input[name="delivery_add"]').val());
				break;
			case '4':
				del += 'самовывоз из офиса в Москве';
				price = '0';
				break;
			case '5':
				del += 'по Санкт-Петербургу';
				price = '300';
				break;
			case '6':
				del += 'самовывоз из офиса в Санкт-Петербурге';
				price = '0';
				break;
			case '7':
				del += 'самовывоз из офиса в Магнитогорске';
				price = '0';
				break;
			case '8':
				del += 'по Королеву';
				price = '100';
				break;
			case '9':
				del += 'самовывоз из офиса в Королеве';
				price = '0';
				break;
			case '10':
				del += 'самовывоз из офиса в Нижнем Новгороде';
				price = '0';
				break;
		}
						
		res += '\n';
		if(!$('input[name="lname"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Фамилия: ' + $('input[name="lname"]').val() + '\n';
		if(!$('input[name="fname"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Имя: ' + $('input[name="fname"]').val() + '\n';
		res += 'Отчество: ' + $('input[name="name"]').val() + '\n';
		res += 'Дисконтная карта: ' + $('input[name="card"]').val() + '\n';
		if(!$('input[name="phone"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Телефон: ' + $('input[name="phone"]').val() + '\n';
		res += 'Доп. телефон: ' + $('input[name="phone_"]').val() + '\n';
		res += 'Индекс: ' + $('input[name="zipcode"]').val() + '\n';
		if(!$('input[name="city"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Город: ' + $('input[name="city"]').val() + '\n';
		if(!$('input[name="street"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Улица: ' + $('input[name="street"]').val() + '\n';
		if(!$('input[name="house"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Дом: ' + $('input[name="house"]').val() + '\n';
		if(!$('input[name="officce"]').val()){
			$('div#error').show();
			return false;
		}
		res += 'Квартира (офис): ' + $('input[name="officce"]').val() + '\n';
		res += 'Доп. информация: ' + $('textarea[name="add"]').val() + '\n';
		$.post(
			ROOT + 'basket.php',
			{
				action:'delivery',
				delivery:del,
				price:price,
				about:res,
				lname:$('input[name="lname"]').val(),
				fname:$('input[name="fname"]').val(),
				name:$('input[name="name"]').val(),
				card:$('input[name="card"]').val(),
				phone:$('input[name="phone"]').val(),
				phone_:$('input[name="phone_"]').val(),
				zipcode:$('input[name="zipcode"]').val(),
				city:$('input[name="city"]').val(),
				street:$('input[name="street"]').val(),
				house:$('input[name="house"]').val(),
				officce:$('input[name="officce"]').val()
			},
			function(xml){
				document.location = ROOT + 'shop/order_4/';
			},
			'xml'
		);
		return false;
	});
	$('a#order_4_next').click(function(){
		res = 'Способ оплаты: ';
		switch($('input[name="pay_type"]:checked').val()){
			case '1':
				res += 'Наличными при доставке';
				break;
			case '2':
				res += 'В Сбербанке';
				break;
			case '3':
				res += 'По безналичному рассчету (для юр. лиц)';
				break;
		}
		
		$.post(
			ROOT + 'basket.php',
			{
				action:'pay',
				pay:res
			},
			function(xml){
				document.location = ROOT + 'shop/order_5/';
			},
			'xml'
		);
		return false;
	});

	$('a#order_5_next').click(function(){
		$.post(
			ROOT + 'basket.php',
			{
				action:'submit'
			},
			function(xml){
				document.location = ROOT + 'shop/order_6/';
			},
			'xml'
		);
		return false;
	});

	$('tr.calculate_row_').each(function(){
		var key = $(this).attr('lang');
		var price = Number($('span#price_'+key).text()) * Number($('span#hm_'+key).text());
		$('span#price_all_'+key).text(price);
		$('span#price_all').text(Number($('span#price_all').text()) + price);
	});
	if($('#delivery_price').text())
		$('span#price_all').text(Number($('span#price_all').text()) + Number($('#delivery_price').text()));
});

function updatePriceRows(){
	$('span#price_all').text(0);
	$('tr.calculate_row:visible').each(function(){
		var key = $(this).attr('lang');
		var price = Number($('span#price_'+key).text()) * Number($('input#hm_'+key).val());
		$('span#price_all_'+key).text(price);
		$('span#price_all').text(Number($('span#price_all').text()) + price);
	});
}

function updateBasketInfo(){
	var hm = Number($('span#basket_hm').text());
	var price = Number($('span#basket_price').text());

	if(hm == 0){
		hm = 'Нет товаров';
		price = '';
	}else{
		var tmp = hm % 10;
		if(hm < 11 && hm > 20 && tmp == 1)
			hm = hm + ' товар';
		else if(hm < 11 && hm > 20 && tmp >= 2 && tmp <= 4)
			hm = hm + ' товара';
		else
			hm = hm + ' товаров';
		price = price + ' р.';
	}
	
	$('span#basket_hm').text(hm);
	$('span#basket_price').text(price);
}

function getCookieOptions(){
	return {path:'/', expires:getDays(10)}
}

function getDays(days){
	var date = new Date();
	date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
	return date;
}

function is_numeric(num){
	if (isNaN(num) || num.length == 0)
		return false
	else
		return true;
}
/*
 * Converts the given data structure to a JSON string.
 * Argument: arr - The data structure that must be converted to JSON
 * Example: var json_string = array2json(['e', {pluribus: 'unum'}]);
 * 			var json = array2json({"success":"Sweet","failure":false,"empty_array":[],"numbers":[1,2,3],"info":{"name":"Binny","site":"http:\/\/www.openjs.com\/"}});
 * http://www.openjs.com/scripts/data/json_encode.php
 */
function array2json(arr) {
    var parts = [];
    var is_list = (Object.prototype.toString.apply(arr) === '[object Array]');

    for(var key in arr) {
    	var value = arr[key];
        if(typeof value == "object") { //Custom handling for arrays
            if(is_list) parts.push(array2json(value)); /* :RECURSION: */
            else parts[key] = array2json(value); /* :RECURSION: */
        } else {
            var str = "";
            if(!is_list) str = '"' + key + '":';

            //Custom handling for multiple data types
            if(typeof value == "number") str += value; //Numbers
            else if(value === false) str += 'false'; //The booleans
            else if(value === true) str += 'true';
            else str += '"' + value + '"'; //All other things
            // :TODO: Is there any more datatype we should be in the lookout for? (Functions?)

            parts.push(str);
        }
    }
    var json = parts.join(",");
    
    if(is_list) return '[' + json + ']';//Return numerical JSON
    return '{' + json + '}';//Return associative JSON
}

function trim(string){
	return string.replace(/(^\s+)|(\s+$)/g, "");
}
