// Глобальные переменные
// назначение обработчика события для инициализации 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;
    }
}

function add_to_basket(id)
{
//	sLet = theForm.elements[sField].value;
	var price;
	var cmd = "price=document.AddToBasket"+id+".price.value"; eval(cmd);
	W = 	window.open('/cgi-bin/basket_resume.pl?id='+id+'&price='+price,'basket', 'width=210,height=200,toolbar=0,menubar=0,status=0,resizable=1,scrollbars=1');
	W.focus();
}

//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!");
  }
 
}
function hide(obj)
{
	var cur_style = 	obj.style.visibility;
	if(cur_style != "hidden")		{
		obj.style.visibility = "hidden";
	}
	black_bg.style.display='none';	
}
function show_call_form(goods_id)
{	
	initDHTMLAPI();
	var AJAX_CHAIN1 =  new AjaxChain;
	
	if(!goods_id){ goods_id = 0 }
	
	AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=feedback&event=show_call_form&goods_id='+goods_id,call_form_handler);	
}
function call_form_handler(string)
{ 	
	added_msg.style.visibility = "visible";
	added_msg.innerHTML = string;
	
	centerOnWindow(added_msg);
	
	black_bg.style.display='block';	
	black_bg.style.height=getDocumentHeight();
	black_bg.style.width=getDocumentWidth();

}
function getDocumentHeight()
{
	return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
}
function getDocumentWidth()
{
	return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;
}


function add_phone(g_id)
{	

	var fio = document.getElementById('fio') ? document.getElementById('fio').value : '';
	
	var phone_code = $('#phone_code').val() || ''; 
	var main_phone = $('#main_phone').val() || '';
	var additional_phone = $('#additional_phone').val() || '';

	var phone = phone_code;
	if(main_phone != '')
	{
		phone += '~' + main_phone;
	}
	if(additional_phone != '')
	{
		phone += '~' + additional_phone;
	}

	var goods_id = g_id;
	
	if(fio !='' && main_phone != '')
	{
		var AJAX_CHAIN2 =  new AjaxChain;
		var link='/cgi-bin/dsp.pl?cl=feedback&event=add_phone_back&goods_id='+goods_id+'&fio='+encodeURIComponent(fio)+'&phone='+encodeURIComponent(phone);
		AJAX_CHAIN2.getAjax(link,add_phone_handler);	
	}
	else
	{
		document.getElementById('call_error_msg').innerHTML='Заполните, пожалуйста, указанные поля формы!';
	}
}
function add_phone_handler(string)
{ 	
	added_msg.innerHTML = string;
	setTimeout(function() {hide(added_msg)}, 2000);
}

function hidePopUps(){
black_bg.style.display='none';	
added_msg.style.display='none';	
}
// добавление в избранное
function getBrowserInfo() {
 var t,v = undefined;
 if (window.opera) t = 'Opera';
 else if (document.all) {
  t = 'IE';
  var nv = navigator.appVersion;
  var s = nv.indexOf('MSIE')+5;
  v = nv.substring(s,s+1);
 }
 else if (navigator.appName) t = 'Netscape';
 return {type:t,version:v};
}
 
function bookmark(a){
 var url = window.document.location;
 var title = window.document.title;
 var b = getBrowserInfo();
 if (b.type == 'IE' && b.version >= 4) window.external.AddFavorite(String(url),title);
 else if (b.type == 'Opera') {
  a.href = url;
  a.rel = "sidebar";
  a.title = url+','+title;
  return true;
 }
 else if (b.type == "Netscape") window.sidebar.addPanel(title,url,"");
 else alert("Нажмите CTRL-D, чтобы добавить страницу в закладки.");
 return false;
}

function print_scheme(obj)
{
	nw = window.open("","nw"); 
	var sch = document.getElementById("scheme").innerHTML;
	nw.document.write("<html><head></head><body>"+sch+"</body></html>");
  nw.onload = print(); 
	nw.document.close();
}

function form_select_data_result(string)
{
	document.getElementById('model_loop').innerHTML = string;
	// submit_form('search', 'search_cat');
}

function submit_form(cl, ev)
{ 
	document.getElementById('catsearch').event.value = ev;
	document.getElementById('catsearch').cl.value = cl;
	document.getElementById('catsearch').submit(); 
}


function form_select_data(goods_id)
{
	var fabric_id = document.getElementById('fabric_id').value;
	var AJAX_CHAIN =  new AjaxChain; 
	var rnd = Math.random();
	var link='/cgi-bin/dsp.pl?cl=search&event=search_form&fabric_id='+fabric_id+'&goods_id='+goods_id+'&rnd='+rnd;
	AJAX_CHAIN.getAjax(link, form_select_data_result);
}
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-220;//-220
    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 goods_feedback_result(string)
{
	$('#feedback_for_item').html(string);
}

// добавление отзыва к товару
function add_feedback_for_goods(goods_id, form_id)
{
	var captcha = document.getElementById('captcha').value;
	var user_name = document.getElementById('user_name').value;
	var user_comment = document.getElementById('user_comment').value;

	var AJAX_CHAIN1 =  new AjaxChain; 
	AJAX_CHAIN1.getAjax('/cgi-bin/dsp.pl?cl=goods_feedback&event=add_feedback_for_goods&captcha='+captcha+
											'&goods_id='+goods_id+'&form_id='+form_id+'&user_name='+encodeURIComponent(user_name)+'&user_comment='+encodeURIComponent(user_comment), goods_feedback_result);	
}

function set_ems_delivery_price()
{
	var ems_cities_id = $('select[name="varems_cities_id"]').val()
											|| $('input[name="user_ems_cities_id"]').val() || 0;
											
	var total_weight = $('input[name="total_weight"]').val() || 0;

	if(ems_cities_id != 0 && total_weight != 0){
	$.post("/cgi-bin/dsp.pl", { cl: "order", event: "calculation_ems_delivery_price",
															total_weight: total_weight, ems_cities_id: ems_cities_id, 
															rnd: Math.random(), utf8: 1 }, 
		function(data){
			var result_array = new Array;
			result_array = data.split('&');
			$('.ems_delivery_price').show();
			$('.ems_delivery_price').html(result_array[0]);
			$("input[name='calculated_ems_delivery_price']").val(result_array[1]);
		});
	}
	else{
		$('.ems_delivery_price').hide();
		$("input[name='calculated_ems_delivery_price']").val(0);
	}
}

function show_phone_format_from_city()
{
	var ems_cities_id = $('select[name="varems_cities_id"]').val() || 0;

	if(ems_cities_id == 0 || ems_cities_id == 47){
		$('.moscow_phone').show();
		$('.simple_phone').hide();
		$("input[name='simple_format_phone']").val(0);
	}
	else{
		$('.moscow_phone').hide();
		$('.simple_phone').show();
		$("input[name='simple_format_phone']").val(1);
	} 
}

function show_need_user_fields_from_delivery(current_delivery_id){
	
	// Выбор элемента с атрибутом значение которого начинается с определенной подстроки:
	$("[class^='user_fieds_delivery']").html(''); 
	$("[class^='user_fieds_delivery']").hide();

	$('input[name="delivery_method"]').each(function(){
	
		var delivery_method_value = $(this).val() || 0;
		var user_fields_class = '.user_fieds_delivery' + delivery_method_value;

		
		// if(delivery_method_value != current_delivery_id){
			// $(user_fields_class).html('');
			// $(user_fields_class).hide();
		// }
		// else{
		if(delivery_method_value == current_delivery_id){
			$(user_fields_class).show();
			$(user_fields_class).html('<img src="/images/loading3.gif" width="35" height="35" style="margin:0px 50px;">');
			$.post("/cgi-bin/dsp.pl", { cl: "order", event: "get_user_fields_for_delivery",
						current_delivery_id: current_delivery_id, rnd: Math.random(), utf8: 1 }, 
			function(data) {
				$(user_fields_class).html(data);
			});	
		}
		// }
	});
}

function center_on_window(obj)
{
	var w = obj.outerWidth();
	var h = obj.outerHeight()
	obj.css({
		position:'absolute',
		top: parseInt($(window).scrollTop() + ($(window).height() - h) / 2 - 100),
		left: parseInt($(window).scrollLeft() +($(window).width() - w) / 2)
	});
}

function create_floating_msg(msg_data)
{
	if($('.floating_msg').length) {$('.floating_msg').remove();}
	$('<div class="floating_msg"></div>').appendTo("body");
	var obj = $('.floating_msg');
	if(msg_data.width) { obj.width(msg_data.width); }
	if(msg_data.height) { obj.height(msg_data.height); }
	center_on_window(obj);
	obj.html('<img src="/js/loading1.gif" width="16" height="16" vspace="50">');
	return obj;
}
function get_form_params(form)
{
	var form_params={};	
	$('input, textarea', form).each(function() {
			if($(this).attr('name'))
			{
				var value = $(this).attr('value');
				if($("input[name='"+$(this).attr('name')+"']", form).is(':radio')) 
				{ 
					value = $("input[name='"+$(this).attr('name')+"']:checked", form).val();
				}
				form_params[$(this).attr('name')] = value;
			}
		})
	form_params['rnd'] = Math.random();
	form_params['utf8'] = 1;		
	return form_params;
}

$(document).ready(function() {

	hs.graphicsDir = '../highslide/graphics/';
	hs.align = 'center';
	hs.transitions = ['expand', 'crossfade'];
	hs.outlineType = 'glossy-dark';//'rounded-white';
	hs.wrapperClassName = 'dark';
	hs.fadeInOut = true;
	hs.dimmingOpacity = 0.75;
	hs.useBox = true;
	hs.width = 640;
	hs.height = 480;

	$('.show_recom_goods').click(function (){
		var goods_type_id = $(this).attr('goods_type_id');
		var current = $(this);
		
		if($('#show_'+goods_type_id).is(':visible')){
			$('#show_'+goods_type_id).hide();
			$(this).find("a").attr("title", "Развернуть");
			$(this).find("img").attr({'title': 'Развернуть', 'alt': 'Развернуть', 'src':"/images/recom_plus.png"});
		}
		else{
			$('#show_'+goods_type_id).show();
			$(this).find("a").attr("title", "Свернуть");
			$(this).find("img").attr({'title': 'Свернуть', 'alt': 'Свернуть', 'src':"/images/recom_minus.png"});
		}		
	});	

	//show_phone_format_from_city();
	set_ems_delivery_price();
	show_need_user_fields_from_delivery($("input[name='check_delivery_method_id']").val());

	$('input[name="delivery_method"]').change(function(){
		var current_delivery_id = $(this).val() || 0;
		show_need_user_fields_from_delivery(current_delivery_id);
		set_ems_delivery_price();
	});
	
	$('select[name="varems_cities_id"]').live("change", function(){	
		set_ems_delivery_price();
	});

 	$('.save_instruction_click').click(function show_save_instruction_form()
	{		
		$.post("/cgi-bin/dsp.pl", { cl: "register", event: "show_save_instruction_form", rnd: Math.random(), utf8: 1 }, 
		function(data) {
			$('.save_instruction').html(data);
			$('.save_instruction').toggle("fast");
		});	
		return false;
	});		
	
	$('.close_instruction').live("click", function(){	
		$(this).closest('.save_instruction').hide();
	});
	
	$('#save_instruction_submit').live("click", function()
	{
		var captcha = $('#captcha_save').val() || '';
		var goods_id = $('#goods_id').val() || '';
		var form_id = $('#form_id_save').val() || '';

		$.post("/cgi-bin/dsp.pl", { cl: "register", event: "validate_captcha", captcha:captcha, form_id:form_id, goods_id:goods_id, rnd: Math.random(), utf8: 1 }, 
		function(data) {
		
		var pattern = new RegExp(/^\/upload/);
		
		if(pattern.test(data)){
			nw = window.open("", "nw");
			nw.document.location = data;
			$('.save_instruction').hide('fast');
		}
		else{
			$('.save_instruction').html(data);
		}
		});	
	});
	
	$('.subscribe_close').live("click", function(){	
		$(this).closest('.subscribe').hide();
	}); 
	
	
	$('.check_code').live('keyup', function(){
		var code_val = $(this).val();
		var code_len = $(this).val().length;
		var reg_exp_code = [0, /^\d/,  /^\d{2}/, /^\d{3}/];
		if(code_len != 0)
		{
			if(code_val.search(reg_exp_code[code_len]) == 0)
			{	
				if(code_len == 3)
				{
					$(this).css("border", "#2ea447 2px solid")
					$(this).next('input').focus(); 
				}
				
			}
			else
			{
				$(this).css("border", "red 2px solid")
			}
		}
	});
				
	$('.check_phone').each(function(){ $(this).data('phone_length', $(this).val().length) });
	$('.check_phone').live('keyup', function(){
		var phone= $(this).val();
		var len = $(this).val().length;
		var prev_phone_length = Number($(this).data('phone_length')) || 0;
		if(len > prev_phone_length)
		{
			var reg_exp_arr = [0, /^\d/,  /^\d{2}/, /^\d{3}/,/^\d{3}-/, /^\d{3}-\d{1}/, /^\d{3}-\d{2}/, /^\d{3}-\d{2}-/, /^\d{3}-\d{2}-\d{1}/, /^\d{3}-\d{2}-\d{2}/];
			if(len != 0)
			{
				if(phone.search(reg_exp_arr[len]) == 0)
				{
					if(len == 3 || len == 6) $(this).val(phone+"-");
					if(len == 9)
					{
						$(this).css("border", "#2ea447 2px solid")
						$(this).next('input').focus();
					}
				}
				else
				{
					$(this).css("border", "red 2px solid")
				}
			}
		}
		$(this).data('phone_length', len);
	});
});	


