/**
 * @author iPrior
 */
var ADDITIONAL_FIELDS_ADD2CART = new Hash();
var SHOPCART = {
    ajaxURL: '/AJAX/ShopCart.ajax.php',
    addProduct: function(id){
        new Ajax.Request(this.ajaxURL, {
            method: 'post',
            parameters: 'action=getAddProductForm&id=' + id,
            onCreate: function(){
                SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>')
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
                SHOPCART.display(transport.responseText);
            }
        });
    },
	Delete_Product:function(index) {
		new Ajax.Request(this.ajaxURL,{
			method:'post',
			parameters:'action=Delete_Product&index=' + index,
			onComplete:function(transport) {
				SHOPCART.getProducts();
				SHOPCART.updateCart();
			}
		});
	},
	Clear_Shopcart:function() {
		if(!confirm('Очистить корзину?')) return;
		new Ajax.Request(this.ajaxURL,{
			method:'post',
			parameters:'action=Clear_Shopcart',
			onComplete:function(transport) {
				SHOPCART.updateCart();
				SHOPCART.Close();
			}
		});
	},
	submitAddProduct:function() {
		var params = 'action=addProduct&id=' + $F('product_id');
		var keys = ADDITIONAL_FIELDS_ADD2CART.keys();
		if(keys.size()) {
			for(var i=0; i<keys.size(); i++) {
				switch(ADDITIONAL_FIELDS_ADD2CART.get(keys[i])) {
					case 'checkbox':
					case 'radio':
					var lsr = returnParams2RadioAndCheckbox(keys[i]);
					if(!lsr) return false;
					else params += lsr;
					break;
					case 'multiline':
					case 'list':
					var lsr = returnParams2List(keys[i]);
					if(!lsr) return false;
					else params += lsr;
					break;
					case 'text':
					params += '&af_' + keys[i] + '[]=' + $F(keys[i]);
					break;
				}
			}
		}
		params += '&count=' + $F('product_count') + '&price=' + $F('price');
		new Ajax.Request(this.ajaxURL, {
            method: 'post',
            parameters: params,
            onCreate: function(){
                $('SHOPCART_CNT').update('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>')
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.updateCart();
                SHOPCART.Close();
            }
        });
	},
	updateCart:function() {
		new Ajax.Updater('cart',this.ajaxURL,{
			method:'post',
			parameters:'action=updateCart'
		});
	},
	getProducts:function() {
		new Ajax.Request('/AJAX/getMyShopCart.ajax.php', {
			method:'post',
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText + '<br />');
            }
		});
	},
	observeIndex:false,
	startObserve:function(index) {
		if(this.observeIndex) {
			$('count_'+this.observeIndex).stopObserving();
		}
		this.observeIndex = index;
		Event.observe('count_'+index, 'keyup', function(index) {
			var index = SHOPCART.observeIndex;
			SHOPCART.updateCount(index);
		});
	},
	updateCount:function(index) {
		if($F('count_'+index)==0) {
			this.Delete_Product(index);
			return;
		}
		$('ref_'+index).style.visibility = 'visible'
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:'step=update_count&index=' + index + '&count=' + $F('count_'+index),
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            }
		});
	},
	refreshShopCart:function() {
//		SHOPCART.Close(); 
		SHOPCART.getProducts();
	},
	getListPayments:function() {
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:'step=payment',
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText);
            }
		});
	},
	getListDelivery:function() {
		var params = 'step=delivery';
		var tmp = document.getElementsByName('payment');
		if(tmp.length) {
			var lsr = false;
			for(var i=0; i<tmp.length; i++) {
				if(tmp[i].checked) {
					lsr = true;
					params  += '&payment=' + tmp[i].value;
					break;
				}
			}
			if(!lsr) {
				alert('Выберите способ оплаты.');
				return;
			}
		}
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:params,
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText);
            }
		});
	},
	getUserInfo:function() {
		var params = 'step=userinfo';
		var tmp = document.getElementsByName('delivery');
		if(tmp.length) {
			var lsr = false;
			for(var i=0; i<tmp.length; i++) {
				if(tmp[i].checked) {
					lsr = true;
					params  += '&delivery=' + tmp[i].value;
					break;
				}
			}
			if(!lsr) {
				alert('Выберите способ доставки.');
				return;
			}
		}
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:params,
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText);
            }
		});
	},
	confirmOrder:function() {
		var params = 'step=confirm';
		if(!$F('email')) {
			alert('Введите Ваш адрес электронной почты.');
			$('email').focus();
			return;
		}
		var reg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if(!reg.test($F('email'))) {
			alert('Введите корректный адрес электронной почты.')
			$('email').focus();
			return;
		}
		params += '&email=' + $F('email');
		if(!$F('telephone')) {
			alert('Введите Ваш контактный телефон.');
			$('telephone').focus();
			return;
		}
		params += '&telephone=' + $F('telephone');
		if(!$F('country')) {
			alert('Укажите страну.');
			$('country').focus();
			return;
		}
		params += '&country=' + $F('country');
		if(!$F('city')) {
			alert('Укажите город.');
			$('city').focus();
			return;
		}
		params += '&city=' + $F('city');
		if(!$F('address')) {
			alert('Укажите адрес.');
			$('address').focus();
			return;
		}
		params += '&address=' + $F('address');
		if(!$F('name')) {
			alert('Представьтесь пожалуйста.');
			$('name').focus();
			return;
		}
		params += '&name=' + $('name').value;
		params += '&zipcode=' + $F('zipcode');
		params += '&comment_order=' + $F('comment_order');
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:params,
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText);
            }
		});
	},
	SendOrder:function() {
		new Ajax.Request('/AJAX/confirmOrder.ajax.php', {
			method:'post',
			parameters:'step=sendOrder&summ=' + $F('order_summ'),
            onCreate: function(){
				SHOPCART.display('<div align="center">загрузка данных<br /><img src="/images/ajax-loader_line.gif" /><br />пожалуйста подождите</div>');
            },
            onFailure: function(){
                alert('Произошла ошибка. Пожалуйста, попробуйте повторить попытку\nчуть позже.');
                SHOPCART.Close();
            },
            onComplete: function(transport){
				SHOPCART.display(transport.responseText);
				SHOPCART.updateCart();
            }
		});
	},
    display: function(str){
        this._background();
        this._content();
        var winW = 1024, winH = 768;
        if (parseInt(navigator.appVersion) > 3) {
            if (navigator.appName == "Netscape") {
                winW = window.innerWidth;
                winH = window.innerHeight;
            }
            if (navigator.appName.indexOf("Microsoft") != -1) {
                winW = document.documentElement.clientWidth;
                winH = document.documentElement.clientHeight;
            }
			if(navigator.appName == "Opera") {
                winW = window.innerWidth;
                winH = window.innerHeight;
			}
        }
		
        $('SHOPCART_CNT').update(str);
        var divH = $('SHOPCART_CNT').getHeight();
        var divW = $('SHOPCART_CNT').getWidth();
        
		if(divH>500) $('SHOPCART_CNT').style.height = '500px';
		$('SHOPCART_CNT').style.width = '1030px';
		
		var divH = $('SHOPCART_CNT').getHeight();
        var divW = $('SHOPCART_CNT').getWidth();
		
        var divTop = (winH - divH) / 2;
        var divLeft = (winW - divW) / 2;
        
		
        if (divTop>=0) $('SHOPCART_CNT').style.top = divTop + 'px';
		else $('SHOPCART_CNT').style.top = '0px';
        if (divLeft>=0) $('SHOPCART_CNT').style.left = divLeft + 'px';
		else $('SHOPCART_CNT').style.left = '0px';
        Effect.Appear('SHOPCART_CNT');
    },
    _background: function(){
        if (!$('SHOPCART_BG')) {
            var DIV = new Element('div', {
                'style': 'position:fixed; z-index:1; background-color:black;',
                'id': 'SHOPCART_BG',
                'onclick': 'javascript:SHOPCART.Close();'
            }).update();
            document.getElementsByTagName('body')[0].appendChild(DIV);
        }
        $('SHOPCART_BG').show();
        $('SHOPCART_BG').setOpacity(0.5);
        $('SHOPCART_BG').style.width = '100%';
        $('SHOPCART_BG').style.height = '100%';
        $('SHOPCART_BG').style.top = '0px';
        $('SHOPCART_BG').style.left = '0px';
        $('SHOPCART_BG').setAttribute('onclick', 'javascript:SHOPCART.Close();');
    },
    _content: function(){
        if (!$('SHOPCART_CNT')) {
            var DIV = new Element('div', {
                'style': 'position:fixed; z-index:2; background-color:white; overflow-y: auto;',
                'id': 'SHOPCART_CNT'
            }).update();
            document.getElementsByTagName('body')[0].appendChild(DIV);
        }
        $('SHOPCART_CNT').update();
        $('SHOPCART_CNT').hide();
        $('SHOPCART_CNT').style.top = '0px';
        $('SHOPCART_CNT').style.left = '0px';
    },
    Close: function(){
        Effect.Fade('SHOPCART_BG');
        Effect.Fade('SHOPCART_CNT');
        ADDITIONAL_FIELDS_ADD2CART = new Hash();
    }
};


function refreshProductSum(e){
    var keychar = onKeyDown(e);
    numcheck = /\d/;
    if (numcheck.test(keychar)) {
        var price = parseFloat($('product_price').innerHTML);
        var count = parseInt($F('product_count'));
        var summ = parseFloat(price * count);
        var tmp = new String(summ);
        tmp = tmp.split('.');
        if (tmp[1] && tmp[1].length > 2) 
            summ = new String(tmp[0] + '.' + tmp[1][0] + tmp[1][1])
        $('product_summ').update(summ + ' руб.');
        
    }
}

function onKeyDown(e){
    var keynum;
    var keychar;
    var numcheck;
    
    if (window.event) // IE
    {
        keynum = e.keyCode;
    }
    else 
        if (e.which) // Netscape/Firefox/Opera
        {
            keynum = e.which;
        }
    keychar = String.fromCharCode(keynum);
    return keychar;
}


function returnParams2List(id) {
	var tmp = '';
	for(var i=0; i<$(id).options.length; i++) {
		if($(id).options[i].selected) {
			tmp += '&af_' + id + '[]=' + $(id).options[i].value;
		}
	}
	if(tmp == '') {
		alert('Укажите пожалуйста дополнительные характеристики.');
		$(id+'_1').focus();
		return false;
	}
	return tmp;
}

function returnParams2RadioAndCheckbox(id) {
	var tmp = '';
	for(var i=1; true; i++) {
		if(!$(id+'_'+i)) break;
		if($(id+'_'+i).checked) tmp += '&af_' + id + '[]=' + $F(id+'_'+i);
	}
	if(tmp == '') {
		alert('Укажите пожалуйста дополнительные характеристики.');
		$(id+'_1').focus();
		return false;
	}
	return tmp;
}

function getMyShopCart() {
	var winW = 1024, winH = 768;
    if (parseInt(navigator.appVersion) > 3) {
        if (navigator.appName == "Netscape") {
            winW = window.innerWidth;
            winH = window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft") != -1) {
            winW = document.body.offsetWidth;
            winH = document.body.offsetHeight;
        }
    }
    var ScrollTop = document.body.scrollTop;
    if (ScrollTop == 0) {
        if (window.pageYOffset) 
            ScrollTop = window.pageYOffset;
        else 
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    $('SHOPCART_CNT').style.marginTop = 0 + 'px';
    $('SHOPCART_CNT').style.marginLeft = 0 + 'px';
    $('SHOPCART_CNT').style.width = winW + 'px';
    $('SHOPCART_CNT').style.height = winH + 'px';
    Effect.DropOut('PAGE_BODY');
    Effect.BlindDown('SHOPCART_CNT');
	
	new Ajax.Updater('ADD2CART','/AJAX/getMyShopCart.ajax.php', {
		method:'post',
		evalScripts:true
	});
}