var zoomer_url	= '/fomalg/inc/ZoomImage/ZoomImage.php';
var ZoomedImageWindow;
function zoomImage(image_url, title)
{
//	zoomImageClose();
	var url				= zoomer_url+'?image='+escape(image_url);
	ZoomedImageWindow	= window.open(url, "ZoomImage", "toolbar=no, location=no, scrollbars=no, resizable=yes, directories=no, status=no, top=0, left=0, width=200, height=200");
	ZoomedImageWindow.focus();
	
	event.returnValue=false;
	return false;
}

function zoomImageClose() {try{if (ZoomedImageWindow) ZoomedImageWindow.close();} catch(e){}}
window.attachEvent('onunload', zoomImageClose);
var CalculatorTable = new Array();

function Calculator_groupChosen(selectbox)
{
	var ProductExpenceNode	= document.getElementById(selectbox.name+'_expence');
	var ProductPriceNode 	= document.getElementById(selectbox.name+'_specific_price');
	var expence = '&#160;';
	var price   = '&#160;';
	if (selectbox.value != '0') //Not choosen
	{
		var group_product		= CalculatorTable[selectbox.name][selectbox.value];
		expence = group_product['expence'];
		price   = group_product['specific_price']+' грн';
	}
	ProductExpenceNode.innerHTML	= expence;
	ProductPriceNode.innerHTML		= price;
	var ProductSumNode 	= document.getElementById('CalculatorSum');
	setInnerText(ProductSumNode, Calculator_totalSum()+' грн');
}

function Calculator_totalSum()
{
	var selects	= document.getElementsByTagName('select');
	var sum = 0;
	for (var select_no=0; select_no < selects.length; select_no++)
	{
		var selectbox			= selects[select_no];
		if (selectbox.value == '0') continue;
		var group_product		= CalculatorTable[selectbox.name][selectbox.value];
		sum+= parseFloat(group_product['specific_price'].replace(/,/, '.'));
	}
	sum		= sum.toFixed(2);
	var sum_string		= sum.replace(/\./, ',');
	return sum_string;
}

function getInnerText(element)
{
	if (!element) return false;
	if (typeof(element.innerText)	!= 'undefined')	return element.innerText;
	if (typeof(element.textContent)	!= 'undefined')	return element.textContent;

	return false;
}



function setInnerText(element, value)
{
	if (!element) return false;
	if (typeof(element.innerText)	!= 'undefined')	
	{
		element.innerText	= value;
		return true;
	}

	if (typeof(element.textContent)	!= 'undefined')
	{
		element.textContent	= value;
		return true;
	}
	
	return false;
}

/* FORM FIELDS SUMBIT CHECKER
© 2006 Analytic Soft, www.analytic.com.ua
--------------------------------------------------------------------------------------
Description

STEP1. First form fileds should be registered.
registerFieldChecking([field_name], [check_type], [message], [param1], [param2])
!!!One field CAN be registered twice or more with different value of [check_type]

STEP2. When user submits form we call testFormBeforeSubmit()
--------------------------------------------------------------------------------------
FUNCTION registerFieldChecking([field_name], [check_type], [message], [param1], [param2])
PARAMETERS:
1. [field_name]: input, textarea, checkbox, radiobutton tag attribute NAME
2. [check_type]:
'NOT_EMPTY'  - checks field for not empty.
'MIN_LENGTH' - checks field for minimal length. [param1] is the minimal allowed length.
'MAX_LENGTH' - checks field for minimal length. [param1] is the maximal allowed length.
'EMAIL'      - checks field to be email.
'REGEXP'     - checks field with regexp.
3. [message] - message for alert.
4. [param2]  - reserved.

EXAMPLES:
      registerFieldChecking('NameTxt', 'NOT_EMPTY','??? ??? ?? ?????? ?????','','');
	  registerFieldChecking('NameTxt', 'MIN_LENGTH','??? ???? ?? ???????? ???????? ??? ???????? ??????','3','');

*/
     var checkedFormFields= new Array();
	 function registerFieldChecking(field_name, check_type, message, param1, param2)
	 { 
	  if (checkedFormFields[field_name]==null) {checkedFormFields[field_name] = new Array();}
	  checkedFormFields[field_name][check_type] = new Array(); 
	  checkedFormFields[field_name][check_type]["field_name"]	=field_name;
	  checkedFormFields[field_name][check_type]["message"]		=message;
	  checkedFormFields[field_name][check_type]["param1"]		=param1;
	  checkedFormFields[field_name][check_type]["param2"]		=param2;
	  checkedFormFields[field_name][check_type]["object"]		=document.getElementsByName(field_name)[0];
	  checkedFormFields[field_name][check_type]["param2"]		=param2;
	  
	 }
/*
--------------------------------------------------------------------------------------
FUNCTION testFormBeforeSubmit()
Checks all registered fields

*/ 
	 function testFormBeforeSubmit()
	 { 
	  var field; 
	  for (field in checkedFormFields)
	  {
	    if (!checkField(field)) return false;
	  }
	  return true;
	 }
/*
--------------------------------------------------------------------------------------
FUNCTION checkField([field_name])
Checks one field for field with tag attribute NAME=[field_name].
Fuction sets focus to tested field

*/ 

	 function checkField(field_name)
	 {  
	  var check_type;
	  for (check_type in checkedFormFields[field_name])
	  {
	    checkedFormFields[field_name][check_type]["object"].focus();
		switch (check_type)
		{
		 case "NOT_EMPTY":
			if (checkedFormFields[field_name][check_type]["object"].value=='') 
			{
			 alert(checkedFormFields[field_name][check_type]["message"]);
			 return false;
			}
		  break;

		 case "MIN_LENGTH":
			if (checkedFormFields[field_name][check_type]["object"].value.length<checkedFormFields[field_name][check_type]["param1"]) 
			{
			 alert(checkedFormFields[field_name][check_type]["message"]);
			 return false;
			}
		  break;
		 case "MAX_LENGTH":
			if (checkedFormFields[field_name][check_type]["object"].value.length>checkedFormFields[field_name][check_type]["param1"]) 
			{
			 alert(checkedFormFields[field_name][check_type]["message"]);
			 return false;
			}
		  break;
		 case "EMAIL":
			var email_exp=new RegExp("^[a-z0-9_-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$"); 
			if (!checkedFormFields[field_name][check_type]["object"].value.match(email_exp)) 
			{
			 alert(checkedFormFields[field_name][check_type]["message"]);
			 return false;
			}
		  break;
		 case "REGEXP":
			var email_exp=new RegExp(checkedFormFields[field_name][check_type]["param1"]); 
			if (!checkedFormFields[field_name][check_type]["object"].value.match(email_exp)) 
			{
			 alert(checkedFormFields[field_name][check_type]["message"]);
			 return false;
			}
		  break;
		}
       }
		return true;
	 }
	
// AJAX functions

//--------------------
// Returns xmlhttp object
function AJAX_getXMLHTTP()
{
	var xmlhttp = false;
	try 
	{
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (E) {xmlhttp = false;}
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') xmlhttp = new XMLHttpRequest();

	if (!xmlhttp) return false;	//Error initing xmlhttp

	return xmlhttp;
}

var AJAX_respondents	= new Array(); //functions, that responds to requests

//--------------------
// Returns xmlhttp object
function AJAX_request(id, url, func, arguments, data)
{
	try
	{
		if (!func) return false;
		if (!url) return false;
		if (!id) return false;
		if (!data) data = false;
		if (!arguments) arguments = false;
		AJAX_respondents[id]	= {'url' : url, 'func' : func, 'arguments' : arguments};

		var XMLHTTP	= AJAX_getXMLHTTP();
		if (!XMLHTTP) return false;
	
		XMLHTTP.onreadystatechange = function () 
		{
		//-----------
			if (XMLHTTP.readyState != 4) return;	//Response not ready
			if (XMLHTTP.status != 200)	return; 	//Errors on connect
		//DEBUG INFO	saved response
		//					alert(xmlhttp.responseText);
		//					alert(xmlhttp.responseXML.xml);
		//					alert (xmlhttp.responseXML.parseError.reason+', '+xmlhttp.responseXML.parseError.line+', '+xmlhttp.responseXML.parseError.srcText+', '+xmlhttp.responseXML.parsed);
		
			AJAX_respondents[id]['func'](id, url, XMLHTTP);
		}
	
		XMLHTTP.open("POST", url, true);
		XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		XMLHTTP.send(data);
	}
	catch (e) {return false;}
}



function AJAX_loadBlockContent(block_id, url, data, onload)
{
	if (!block_id) return false;
	var Block = document.getElementById(block_id);
	if (!Block) return false;
	if (!data) data = false;
	var arguments	= new Array();
	arguments['block']	= Block;
	if (onload) 	arguments['onload']	= onload;

	AJAX_request(block_id+Math.random(), url, AJAX_fillLoadedBlock, arguments, data);
}



function AJAX_fillLoadedBlock(id, url, XMLHTTP)
{
	Block	= AJAX_getArgument(id, 'block');
	if (!Block) return false;
	Block.innerHTML	= XMLHTTP.responseText;
	if (typeof(AJAX_respondents[id]['arguments']['onload']) != 'undefined') AJAX_respondents[id]['arguments']['onload'](id, url);
	
	return true;
}



function AJAX_getArgument(id, name)
{
	if (typeof(AJAX_respondents[id]['arguments'][name]) == 'undefined') return false;
	return AJAX_respondents[id]['arguments'][name];
}

function ESHOP_productCountsRefresh(time)
{
	var input_r			= document.body.getElementsByTagName('input');
	var total_sum		= 0;
	var total_weight	= 0;
	if (input_r)
	{
		for (var tag_index in input_r)
		{
			var InputTag	= input_r[tag_index];
			if (typeof(InputTag.name) == 'undefined') continue;			//Not proper input
			if (InputTag.name.search(/^product\[.*\]/) == -1) continue;	//Wrong name

			//Input found
			var pack	= getInnerText(document.getElementById(InputTag.name+'[pack]'));
			if (!pack) continue;
			pack		= pack.replace(/,/, '.');
			pack		= parseFloat(pack);
			var count		= InputTag.value? parseInt(InputTag.value) : 0;
			if (isNaN(count))
			{
					count = 0;
					InputTag.value = 0;
			}
			var amount		= count*pack;
			var AmountTag	= document.getElementById(InputTag.name+'[amount]');
			if (!AmountTag) continue;
			var amount_tag_value	= (amount)? preciseFloat(amount) : '';
			if (getInnerText(AmountTag) != amount_tag_value) setInnerText(AmountTag, amount_tag_value);
			var price	= getInnerText(document.getElementById(InputTag.name+'[price]'));
			price		= price.replace(/,/, '.');
			price		= parseFloat(price);
			total_sum	+= price*count;
			total_weight+= pack*count;
		}
	}
	
	var total_sum_str	= preciseFloat(total_sum).toString().replace(/\./, ',');
	var total_weight_str= preciseFloat(total_weight).toString().replace(/\./, ',');
	var EShopSumBottom	= document.getElementById('EShopSumBottom');
	var EShopSumTop		= document.getElementById('EShopSumTop');
	var EShopTotalWeight= document.getElementById('EShopTotalWeight');
	if (EShopSumBottom) 	if (getInnerText(EShopSumBottom) 	!= total_sum_str)		setInnerText(EShopSumBottom, total_sum_str);
	if (EShopSumTop)		if (getInnerText(EShopSumTop)		!= total_sum_str)		setInnerText(EShopSumTop, total_sum_str);
	if (EShopTotalWeight)	if (getInnerText(EShopTotalWeight)	!= total_weight_str)	setInnerText(EShopTotalWeight, total_weight_str);
	ESHOP_calculateDeliveryCost();
	setTimeout('ESHOP_productCountsRefresh('+time+')', time);
}



var ESHOP_address = '';
var ESHOP_hint_items	= new Array();
var ESHOP_hint_enabled = false;

function ESHOP_enableHint() {ESHOP_hint_enabled = true;}

function ESHOP_hintItemSelected(selected_item)
{
	var EShopAddressSearch	= document.getElementById('EShopAddressSearch');
	if (!EShopAddressSearch) return false;
	if (!selected_item) return false;
	ESHOP_address			 = getInnerText(selected_item);
	EShopAddressSearch.value = ESHOP_address;
	ESHOP_calculateDeliveryCost();
	
	
	ESHOP_closeHint();
	return false;
}


function ESHOP_calculateDeliveryCost()
{
	//Set delivery cost
	var EShopDeliverySum		= document.getElementById('EShopDeliverySum');
	var EShopDeliverySumHidden	= document.getElementById('EShopDeliverySumHidden');
	var EShopTotalWeight		= document.getElementById('EShopTotalWeight');
	var EShopAddressSearch		= document.getElementById('EShopAddressSearch');
	if (!EShopDeliverySum || !EShopTotalWeight || !EShopAddressSearch) return false;
	var address = EShopAddressSearch.value;
	if (typeof(ESHOP_hint_items[address]) != 'undefined') 
	{
		var delivery_cost	= (EShopTotalWeight.innerText <= ESHOP_GAZEL_tonnage)? ESHOP_hint_items[address]['GAZEL'] : ESHOP_hint_items[address]['ZIL'];
		setInnerText(EShopDeliverySum, delivery_cost);
		setInnerText(EShopDeliverySumHidden, delivery_cost);
	}
	else 
	{
		setInnerText(EShopDeliverySum, 'уточнить');
		setInnerText(EShopDeliverySumHidden, 'уточнить');
	}
}


function ESHOP_closeHint()
{
	var EShopDeliveryHint	= document.getElementById('EShopDeliveryHint');
	if (!EShopDeliveryHint) return false;
	EShopDeliveryHint.style.display = 'none';
	return false;
}


function ESHOP_loadHint(url)
{
	var EShopAddressSearch	= document.getElementById('EShopAddressSearch');
	if (!EShopAddressSearch) return false;
	var word	= EShopAddressSearch.value;
	if (word != ESHOP_address) AJAX_request('EShopDeliveryHint', url, ESHOP_onLoadHint, {'word':word}, word);
	setTimeout('ESHOP_loadHint("'+url+'")', 100);
}


function ESHOP_onLoadHint(id, url, XMLHTTP)
{
	var address_r	= XMLHTTP.responseXML.getElementsByTagName('address');
	if (!address_r) return false;
	if (!address_r.length) return false;
	ESHOP_address		= 	AJAX_getArgument(id, 'word');
	ESHOP_hint_items	= new Array();
	var hint_inner_HTML	= '';
	var EShopDeliveryHintItems	= document.getElementById('EShopDeliveryHintItems');
	var EShopDeliveryHint		= document.getElementById('EShopDeliveryHint');

	for (var node_index=0 ; node_index<address_r.length ; node_index++)
	{
		var AddressNode	= address_r[node_index];
		var name	= AddressNode.getElementsByTagName('name')[0].firstChild.data;
		ESHOP_hint_items[name]	= {
			'ZIL'	: AddressNode.getElementsByTagName('ZIL')[0].firstChild.data,
			'GAZEL'	: AddressNode.getElementsByTagName('GAZEL')[0].firstChild.data
		};
		
		hint_inner_HTML += '<a href="" onclick="return ESHOP_hintItemSelected(this)">'+name+'</a>';
	}
	if (!ESHOP_hint_enabled) return true; //Element is not active
	
	if (EShopDeliveryHint) EShopDeliveryHint.style.display	= 'block';
	if (EShopDeliveryHintItems) EShopDeliveryHintItems.innerHTML		= hint_inner_HTML;
	
	return true;
}



function preciseFloat(float, digits)
{
	float = Math.round(float*100);
	float = float/100;
	return float;
}



function getInnerText(element)
{
	if (!element) return false;
	if (typeof(element.innerText)	!= 'undefined')	return element.innerText;
	if (typeof(element.textContent)	!= 'undefined')	return element.textContent;

	return false;
}



function setInnerText(element, value)
{
	if (!element) return false;
	if (typeof(element.innerText)	!= 'undefined')	
	{
		element.innerText	= value;
		return true;
	}

	if (typeof(element.textContent)	!= 'undefined')
	{
		element.textContent	= value;
		return true;
	}
	
	return false;
}

// JavaScript Document
<!-- Selects all tables with class 'table_class_name' adds class 'column_class' to any cell of column 'column'// --> 
function colorTablesColumn(table_class_name, column, column_class) 
{
 var tables=document.getElementsByTagName('table');
 for (var table=0; table<tables.length; table++)
 {
   if (tables[table].className == table_class_name) 
    for (var row = 0; row<tables[table].rows.length; row++) {tables[table].rows[row].cells[column].className+=' '+column_class};
 }
}

