// Глобальные переменные
// назначение обработчика события для инициализации API


var isCSS, isW3C, isIE4, isNN4;
function initDHTMLAPI() {
    if (document.images) {
        isCSS = (document.body && document.body.style) ? true : false;
        isW3C = (isCSS && document.getElementById) ? true : false;
        isIE4 = (isCSS && document.all) ? true : false;
        isNN4 = (document.layers) ? true : false;
        isIE6CSS = (document.compatMode && 
			document.compatMode.indexOf("CSS1") >= 0) ? true : false;
    }
}

window.onload = initDHTMLAPI;

function ShowBigPic(ThisPic, PicId_cur) {
  if (document.images) {
      document.nowshowing.src = ThisPic;
			// снимаем рамку с предыдущей фотографии
			var prev_photo_id = document.getElementById('pic_before').value;
			document.getElementById('attr_pic_'+prev_photo_id).className='g_icon';
			// добавляем рамку выбранной фотографии
			document.getElementById('attr_pic_'+PicId_cur).className='g_icon_cur';
			document.getElementById('pic_before').value=PicId_cur;
	  }
}
function open_div(id) 
{
	document.getElementById('cat'+id).style.display ='inline';
	document.getElementById('icon'+id).src = '/images/catalog_minus.gif';
	document.getElementById('href'+id).href = 'javascript:hide_div(\''+id+'\')';
	document.getElementById('href_cat_'+id).href = 'javascript:hide_div(\''+id+'\')';
}
function hide_div(id) 
{
	document.getElementById('cat'+id).style.display ='none';
	document.getElementById('icon'+id).src = '/images/catalog_plus.gif';
	document.getElementById('href'+id).href = 'javascript:open_div(\''+id+'\')';
	document.getElementById('href_cat_'+id).href = 'javascript:open_div(\''+id+'\')';
}

function open_div_old(show_div, hide_div) 
{
	document.getElementById(show_div).style.display ='inline';
	document.getElementById(hide_div).style.display = 'none';
}

function checkInt(obj_id)
{ 
	var num = document.getElementById(obj_id).value;
	var numStr="0123456789"; 
	var i=0;
	while (i<num.length)
	{
		if (numStr.indexOf(num.substring(i, i+1)) == -1)
		{
			alert('Это не целое число!');
			document.getElementById(obj_id).value=1;
			return 0;
		}
		i++;
	}
}

function input_plus(obj_id)
{ 
	var count = parseInt(document.getElementById(obj_id).value);
	document.getElementById(obj_id).value = count + 1;
}
function input_minus(obj_id)
{ 
	var count = parseInt(document.getElementById(obj_id).value);
	if(count > 1)
	{
		document.getElementById(obj_id).value = count - 1;
	}
}

function form_color_select(str_id)
{
	
	var sizes = new Array(); 
	sizes = eval('g_sizes_'+str_id);
	var select_size = document.getElementById('select_size'+str_id);
	var id=select_size.options[select_size.selectedIndex].value;
	if(id != 0)
	{
		//берем из главного массива sizes строку цветов для выбранного размера
		var colors = sizes[id].split("$$");
		var select_color = document.getElementById('select_color'+str_id);
		// удаляем содержимое списка для цвета
		for (i = select_color.length - 1; i>0; i--) 
		{
			select_color.remove(i);
		}
		// добавляем содержимое списка цвета для данного размера
		for(var i=0;i<colors.length; i++)
		{
			var color = colors[i].split("~");
			var elOptNew = document.createElement("OPTION");
			elOptNew.text = color[1];// название цвета
			elOptNew.value = color[0];// id цвета
			// добавляем цвет
			try {
				document.getElementById("select_color"+str_id).options.add(elOptNew);
				//select_color.add(elOptNew, null); // standards compliant; doesn't work in IE
			}
			catch(ex) {
				select_color.add(elOptNew); // IE only
			}
		}
		show_error.innerHTML='';
		document.getElementById('disabled_color'+str_id).style.display='none';
		document.getElementById('select_color'+str_id).disabled = false;
	}
	
	else// закрываем на доступ список цветов
	{
		
		var select_color = document.getElementById('select_color'+str_id);
		// удаляем содержимое списка для цвета
		for (i = select_color.length - 1; i>0; i--) 
		{
			select_color.remove(i);
		}
		document.getElementById('select_color'+str_id).disabled = true;
		document.getElementById('disabled_color'+str_id).style.display='block';
	}
}

//class AjaxChain
GLOBAL_CHAIN_STACK       = new Array; // массив цепей
var GLOBAL_CHAIN_COUNTER = 0;   // c самого начала цепей вообще нету.

//===================================================================================
//
//===================================================================================
function AjaxChain()
{
 this.chain_number = GLOBAL_CHAIN_COUNTER;
 GLOBAL_CHAIN_COUNTER++;

 try {
 GLOBAL_CHAIN_STACK[this.chain_number]   =  false;  
 if  (window.XMLHttpRequest)  
   GLOBAL_CHAIN_STACK[this.chain_number] =  new  XMLHttpRequest();  
 else  if  (window.ActiveXObject)  
   GLOBAL_CHAIN_STACK[this.chain_number] =  new  ActiveXObject("Microsoft.XMLHTTP");  
}
catch(e) {alert("ERROR IN AjaxChain CONSTRUCTOR (XMLHttpRequestObj was not created) " +  e);}

this.stack         = new Array; // стек возвращаемых getAjax значений. (на самом деле это не стеки, а очереди) !
this.string_stack  = new Array; // стек передаваемых на сервер строк.
this.func_stack    = new Array; // стек функций обработчиков.
this.arg_stack     = new Array; // стек аргументов ф-ий обработчиков.
                             

//this.getAjax  = AjaxChain__getAjax;  // сразу на страницу
this.getAjax = AjaxChain__getAjax;  // только в переменную
}


function AjaxChain__getAjax(string,func_handler)
{
 var tosR = this.stack.length;
 var chain_number = this.chain_number;
 
 var arg = new Array;
 var i; 

  for(i=2;i<arguments.length;i++)
   arg[i-2] = arguments[i]; 

 if(tosR!=0 && this.stack[tosR-1] == 'wait')
 {
  this.string_stack.push(string);
  this.func_stack.push(func_handler);
  this.arg_stack.push(arg);
 }
 else
 {
		this.stack[tosR] = 'wait';
		if(GLOBAL_CHAIN_STACK[chain_number])  
		{  
			GLOBAL_CHAIN_STACK[chain_number].open("GET", string);
			var self = this;
			GLOBAL_CHAIN_STACK[chain_number].onreadystatechange  =  function()  
			{  
				if  (GLOBAL_CHAIN_STACK[chain_number].readyState  ==  4  &&  GLOBAL_CHAIN_STACK[chain_number].status  ==  200)  
				{
					self.stack[tosR]  =  GLOBAL_CHAIN_STACK[chain_number].responseText; // Получить данные с сервера
					//alert(self.stack[tosR]);
					if(tosR!=0)
					 func_handler(self.stack[tosR],arg[0]);                           // вызвать ф-ю обработчик.
					else
					 func_handler(self.stack[tosR],arg);                              // вызвать ф-ю обработчик.
					  
					if(self.string_stack.length!=0)
					 self.getAjax(self.string_stack.shift(),self.func_stack.shift(),self.arg_stack.shift());
					else
					 self.stack = new Array;
					
				}  
				else {}
					//this.stack[tosR]  = 'wait';
			}  
			GLOBAL_CHAIN_STACK[chain_number].send(null);  
		} 
		else
		 alert( "GLOBAL_CHAIN_STACK[" + chain_number + "] has not created! Error in AjaxChain__getAjax2!");
  }
 
}

var added_goods_id=0;
var added_price_id=0;
function hide(obj)
{
	var cur_style = 	obj.style.visibility;
	if(cur_style != "hidden")		{
		obj.style.visibility = "hidden";
	}
}

// проверяем выбран ли размер и цвет
function check_select(price_id, goods_id, is_radio)
{
	var size_id = document.getElementById('select_size'+goods_id).value;
	var color_id = document.getElementById('select_color'+goods_id).value;
	if(size_id==0 || color_id==0)
	{
		alert("Необходимо выбрать размер и цвет для заказываемого товара.");
	}
	else
	{
		added_goods_id = goods_id;
		added_price_id = price_id;
		if(is_radio == 1)	{
			price_id= getRadioGroupValue(document.forms['AddToBasket'+goods_id+'_'+price_id].price_id);
		}
		
		var count =  document.getElementById('quantity').value;
		if(!count){ count=1;} 
		
		var AJAX_CHAIN =  new AjaxChain; 
		var rnd = Math.random();
		
		AJAX_CHAIN.getAjax('/cgi-bin/dsp.pl?cl=order&event=add_to_basket_short&price_id='+price_id+'&goods_id='+goods_id+'&quantity='+count+'&select_size='+size_id+'&select_color='+color_id, add_goods_result);
	
	}
	return true;
}
function add_goods_result(string)
{
	var obj = document.getElementById('added_msg');
		
	centerOnWindow(added_msg);
	obj.innerHTML = string;
  setTimeout(function() {hide(obj)}, 20000);	
	added_goods_id=0;
	added_price_id=0;

	show_bask_content();
}

function set_allshops_email()
{
	var check = document.getElementById('set_allshops_email_check').checked;
	if(check == 1) 
	{
//	alert(check);
		document.getElementById('varallshops_email').value = document.getElementById('varemail').value;
	}
}
function show_bask_content()
{
	basket_count.innerHTML = "<br><br>";
	var rnd = Math.random();
	var AJAX_CHAIN1 =  new AjaxChain;
	AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=order&event=get_count_goods&rnd='+rnd,basket_count_handler);
}
function show_delivery_price()
{
	delivery_price.innerHTML = "0";
	var rnd = Math.random();
	var summa_rub = $('#summa_rub').val()-0;
	var to_city = $('#to_city').val();
	var strah = $('#summa_rub').val()-0;
	sWaitLoad = '...';
	$("#delivery_price").html(sWaitLoad);
	//$.ajax({url:'http://www.edost.ru/edost_calc_kln.php', dataType:"xml", type : "POST",  data: "to_city=Гаврилов-Ям&id=167&p=hz6hwuuNZK2ikzYgG0jNgZX1C1mS1C9O&weight=weight&strah=12&ln=12&wd=12&hg=12", success: function(rsp){alert(rsp );}, error: function(rsp){alert(123 );}});
	$.post("/cgi-bin/dsp.pl", {cl: 'order', event: 'get_delivery_price', to_city: to_city,strah: strah, rnd: Math.random(), utf8: 1}, function(data) {
	if (data!=0){
		var str_company_price = data.split("//");
		$("#company_price").attr("disabled","");
		$('#company_price option').each(function(){ 
			if($(this).val() != 0){ $(this).remove(); }
		});
		$("#delivery_country_id").val(to_city);
		for(var i=0; i<str_company_price.length; i++) {  
			var company_price=str_company_price[i].split("~");	
			$("#company_price").append( $('<option value="'+company_price[2]+'" price="'+company_price[1]+'">'+company_price[0]+': '+company_price[1]+' руб.</option>'));	
			if (i==0){
			$("#delivery_price").html(company_price[1]);
			company_price[1]=company_price[1]-0;
			$("#company_delivery_price").val(company_price[1]);
			var total_summa = company_price[1] + summa_rub;
			$("#total_summa_rub").html(total_summa);			
			}
		}
		
		document.getElementById('delivery_error').style.display = "none";
		var delivery_error = "";
		$("#delivery_error").html(delivery_error);
			
		}		
	else{
		$("#company_price").attr("disabled","disabled");
		$("#delivery_price").html("0");
		$("#delivery_country_id").val('');
		$("#total_summa_rub").html(summa_rub);
		document.getElementById('delivery_error').style.display = "block";
		var delivery_error = "Некорректно введены данные";
		$("#delivery_error").html(delivery_error);
	}
	});
}

// $('#company_price').change(function get_company_delivery_price()
// {
	// var data = $(this).attr("price");
	// alert (data)
	// $("#delivery_price").html(data);
	// data=data-0;
	// var total_summa = data + summa_rub;
	// $("#total_summa_rub").html(total_summa);
	// return false;
// });

function get_company_delivery_price() {
		var summa_rub = $('#summa_rub').val()-0;
		var to_city = $('#to_city').val();
		var data=$("#company_price  option:selected").attr("price");
		if (data){
			$("#delivery_price").html(data);
			$("#company_delivery_price").val(data);
			$("#delivery_country_id").val(to_city);
			data = data-0;
			var total_summa = data + summa_rub;
			$("#total_summa_rub").html(total_summa);
		}
		else{
			$("#delivery_country_id").val('');
			$("#delivery_price").html('...');
			$("#total_summa_rub").html(summa_rub);
		}
}

function basket_delivery_price(string) {
	alert (string);
	//document.getElementById("delivery_price").innerHTML = string;
}

function basket_count_handler(string) {
		basket_count.innerHTML = string;
}

function auth_form_handler(string) {
//alert(string);
		//document.getElementById('auth_form').innerHTML = string;
		document.getElementById('auth_form').innerHTML = '<FORM action="/cgi-bin/dsp.pl" method="post" name="loginfrm" >'+string+'</form>';
}

function show_auth_div()
{
	//auth_form.innerHTML = "<br><br>";
	var rnd = Math.random();
	var AJAX_CHAIN1 =  new AjaxChain;
	AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=register&event=show_auth_form&rnd='+rnd,auth_form_handler);
}


function form_select_data_result(string)
{
	var obj = document.getElementById('ext_search_form');
	obj.innerHTML = string;
}

function form_select_data()
{
	var catalog_id = document.getElementById('search_catalog_id').value;
	var fabric_id = document.getElementById('search_fabric_id').value;
	var size_id = document.getElementById('search_size_id').value;
	var color_id = document.getElementById('search_color_id').value;
	var price_id = document.getElementById('search_price_id').value;
	//var material_id = document.getElementById('search_material_id').value;
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	var link='/cgi-bin/dsp.pl?cl=search&event=ext_search_right&size_id='+size_id+'&catalog_id='+catalog_id+
			'&fabric_id='+fabric_id+'&color_id='+color_id+'&price_id='+price_id+'&rnd='+rnd; // +'&material_id='+material_id
	document.getElementById('ext_search_form').innerHTML='<table height=210 width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td valign="top"><h5>Подбор модели</h5></td></tr><tr><td height="100%">Загрузка...<br><br><br></td></tr></table>';
	AJAX_CHAIN.getAjax(link, form_select_data_result);
}

function submit_search_form()
{
	var catalog_id = document.getElementById('search_catalog_id').value;
	var fabric_id = document.getElementById('search_fabric_id').value;
	var size_id = document.getElementById('search_size_id').value;
	var color_id = document.getElementById('search_color_id').value;
	var price_id = document.getElementById('search_price_id').value;
	//var material_id = document.getElementById('material_id').value;
	var rnd = Math.random();
	location.href = '/cgi-bin/dsp.pl?cl=search&event=search_right&size_id='+size_id+'&catalog_id='+catalog_id+
			'&fabric_id='+fabric_id+'&color_id='+color_id+'&price_id='+price_id+'&rnd='+rnd; // +'&material_id='+material_id
}

function show_order_step(step_n, steps) {
		document.getElementById('order_step').innerHTML = "Оформление заказа<br>Этап <b>"+step_n+"</b> из <b>"+steps+"</b>";
		document.getElementById('order_step').style.display = "block";
}

function show_free_delivery_text(free_delivery_ex, free_delivery_order_sum) {
	if(free_delivery_ex == '1')
	{
		document.getElementById('info_bask_header_top').innerHTML = "<div class=free_delivery><div class=title><small>Бесплатная</small><br>доставка</div> при заказе<br>от <b>"+free_delivery_order_sum+"</b> руб.</div>";
	}
}

function getRadioGroupValue(radioGroupObj)
{
  for (var i=0; i < radioGroupObj.length; i++)
    if (radioGroupObj[i].checked) return radioGroupObj[i].value;

  return null;
}


function centerOnWindow(added_msg) {
    // 'obj' является перемещаемым элементом
   
		var obj = getRawObject(added_msg);
	
    // параметры прокрутки окна
    var scrollX = 0, scrollY = 0;
    if (document.body && typeof document.body.scrollTop != "undefined") {
        scrollX += document.body.scrollLeft;
        scrollY += document.body.scrollTop;
        if (document.body.parentNode && 
            typeof document.body.parentNode.scrollTop != "undefined") {
            scrollX += document.body.parentNode.scrollLeft;
            scrollY += document.body.parentNode.scrollTop
        }
    } else if (typeof window.pageXOffset != "undefined") {
        scrollX += window.pageXOffset;
        scrollY += window.pageYOffset;
    }
	
    var x = Math.round((getInsideWindowWidth()/2) - 
        (getObjectWidth(obj)/2)) + scrollX;	
		
    var y = Math.round((getInsideWindowHeight()/2) - 
        (getObjectHeight(obj)/2)) + scrollY-80;
    shiftTo(obj, x, y);
		show(obj);
		
}

// располагаем объект по определенным пиксельным координатам
function shiftTo(obj, x, y) {
    var theObj = getObject(obj);
		
    if (theObj) {
        if (isCSS) {
			// Преобразуем некорректные числовые значения
            var units = (typeof theObj.left == "string") ? "px" : 0;
            theObj.left = x + units;
            theObj.top = y + units;
        } else if (isNN4) {
            theObj.moveTo(x,y)
        }
    }
}

function getRawObject(obj) {
    var theObj;
    if (typeof obj == "string") {
        if (isW3C) {
            theObj = document.getElementById(obj);
        } else if (isIE4) {
            theObj = document.all(obj);
        } else if (isNN4) {
            theObj = seekLayer(document, obj);
        }
    } else {
		// Пропучкаем ссылку на объект
        theObj = obj;
    }
    return theObj;
}
// Возвращает ширину доступного в окне браузера пространства 
function getInsideWindowWidth() {	

    if (window.innerWidth) {
        return window.innerWidth;
    } else if (isIE6CSS) {
		// измеряем clientWidth элемента html 
        return document.body.parentElement.clientWidth;
    } else if (document.body && document.body.clientWidth) {
        return document.body.clientWidth;
    }
	
    return 0;
}
// Возвращает высоту доступного в окне браузера пространства 
function getInsideWindowHeight() {
    if (window.innerHeight) {
        return window.innerHeight;
    } else if (isIE6CSS) {
		// измеряем clientHeight элемента html
        return document.body.parentElement.clientHeight;
    } else if (document.body && document.body.clientHeight) {
        return document.body.clientHeight;
    }
    return 0;
}

// Определение ширины отображенного на экран объекта
function getObjectWidth(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetWidth) {
        result = elem.offsetWidth;
    } else if (elem.clip && elem.clip.width) {
        result = elem.clip.width;
    } else if (elem.style && elem.style.pixelWidth) {
        result = elem.style.pixelWidth;
    }
    return parseInt(result);
}

// Определение высоты отображенного на экран объекта
function getObjectHeight(obj)  {
    var elem = getRawObject(obj);
    var result = 0;
    if (elem.offsetHeight) {
        result = elem.offsetHeight;
    } else if (elem.clip && elem.clip.height) {
        result = elem.clip.height;
    } else if (elem.style && elem.style.pixelHeight) {
        result = elem.style.pixelHeight;
    }
    return parseInt(result);
}


// Делаем объект видимым
function show(obj) {
    var theObj = getObject(obj);
    if (theObj) {
        theObj.visibility = "visible";
    }
}

// Перобразуем строку с именем объекта или ссылку на объект
// в ссылку на объект стиля (или в ссылку на слой NN 4)
function getObject(obj) {
    var theObj = getRawObject(obj);
    if (theObj && isCSS) {
        theObj = theObj.style;
    }
    return theObj;
}

	function not_select_size(str_id)
	{
		var sizes = new Array(); 
		sizes = eval('g_sizes_'+str_id);
		var select_size = document.getElementById('select_size'+str_id);
		
		var id=select_size.options[select_size.selectedIndex].value;
	
		if(id == 0)
		{
			show_error.innerHTML="Выберите сначала нужный Вам размер!";
		}
		
	}
	
	function check_promocode(promocode)
	{
			if(!promocode) { promocode = document.getElementById('promocode').value; }
			$.post("/cgi-bin/dsp.pl", {cl: 'order', event: 'get_bonus_div', promocode: promocode, rnd: Math.random(), utf8: 1}, function(data) { $("#basket_bonus_tr").html(data)});
	}
