// AJAX aSynchron request----------------------------------------------------------------------------
function evalScript(scripts)
{	
	try
	{	
		if(scripts!='')	
		{	
			var script="";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function()	{if (scripts !== null) script+=arguments[1]+'\n';return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	
		//alert(e);
	}
}
function makeRequest(url,targetdiv) 
{
	var http_request = false;
	
	if(document.getElementById('targetdiv')!='undefined')
	{

		//alert('url : ' + url +'\nelem : '+ targetdiv);
		document.getElementById(targetdiv).innerHTML='<div style="display:block; position:fixed; top:45%; left:50%; z-index:130; text-align:center; color:#000000;"><img src="images/loading.gif" border="0" /></div><div style="display:block; position:fixed; width:100%; height:100%; top:0px; left:0px; background:transparent; z-index:120; filter:alpha(opacity=60); -moz-opacity:0.6; opacity:.6;"></div>'+document.getElementById(targetdiv).innerHTML;

		if (window.XMLHttpRequest)// Mozilla, Safari, ...
		{ 
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) 
			{
				http_request.overrideMimeType('text/xml');// See note below about this line
			}
		} 
		else if (window.ActiveXObject)// IE
		{ 
			try
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) 
			{
				try
				{
						http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e)
				{}
			}
		}
		if (!http_request)
		{
			alert('Giving up :( Cannot create an XMLHTTP instance');
			return false;
		}
		http_request.onreadystatechange = function()
		{
			alertContents(http_request,targetdiv);
		};
		http_request.open('GET', url, true);
		http_request.send(null);
	}
}
function makeRequest2(url,targetdiv) 
{
	makeRequest(url,targetdiv);
	/*
	var http_request = false;
	document.getElementById(targetdiv).innerHTML='<div style="display:block; position:absolute; z-index:130; color:#000000; background-color:#FFFFFF; filter:alpha(opacity=60); -moz-opacity:0.6; opacity:.6;"><img src="images/loading.gif" border="0" style="position:fixed" /></div><div style="background-color:#FFFFFF; z-index:10; filter:alpha(opacity=60); -moz-opacity:0.6; opacity:.6;">'+document.getElementById(targetdiv).innerHTML+'</div>';
	*/
}
function alertContents(http_request,targetdiv) 
{

	if (http_request.readyState == 4)
	{
		if (http_request.status == 200) 
		{
			result=http_request.responseText;
			document.getElementById(targetdiv).innerHTML=http_request.responseText;	
			evalScript(result);
		} 
		else{
			//alert(targetdiv);
		}
	}
}
// end AJAX aSynchron request----------------------------------------------------------------------
function makeES(ar)//make elements as string
{
	var rez='';
	var string='';
	for(i=0;i<ar.length;i++)
	{
		rez+=(rez=='')?'':'&';
		
		if(encodeURIComponent) 
		{
			string=encodeURIComponent(document.getElementById(ar[i]).value);
		} 
		else
		{
			string=escape(document.getElementById(ar[i]).value);
		}
		rez+=ar[i]+'='+string;
	}
	return(rez);
}
function makeES_strip(ar)//make elements as string
{
	var rez='';
	var string='';
	for(i=0;i<ar.length;i++)
	{
		rez+=(rez=='')?'':'&';

		if(encodeURIComponent) 
		{
			string=encodeURIComponent(stripHTML_string(document.getElementById(ar[i]).value));
		} 
		else
		{
			string=escape(stripHTML_string(document.getElementById(ar[i]).value));
		}
		rez+=ar[i]+'='+string;
	}
	return(rez);
}
//----------------------------------------------------------------------------------
function binaryLength_UTF8(str)
{	
	var bytes, charCode, a, len;
	bytes = 0;
	for (a = 0, len = str.length; a < len; a++)
	{
		charCode = str.charCodeAt(a);
		if (charCode < 128) //2^7
			bytes += 1;
		else if (charCode < 2048) // 2^11
			bytes += 2;
		else if (charCode < 65536) // 2^16
			bytes += 3;
		else
			bytes += 4;
	}
	
	return bytes;
}
//----------------------------------------------------------------------------------
function sendPost(url,content,targetdiv) 
{
	var http_request = false;
	if (window.XMLHttpRequest)
	{ // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			http_request.overrideMimeType('text/xml; charset=x-user-defined-binary');
			// See note below about this line
		}
	} 
	else if (window.ActiveXObject) 
	{ // IE
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try
			{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e)
			{}
		}
	}
	if (!http_request)
	{
		return false; //alert('Giving up :( Cannot create an XMLHTTP instance');
	}
	http_request.onreadystatechange = function()
	{
		alertContents(http_request,targetdiv);
	};
	http_request.open("POST", url, true);		
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", binaryLength_UTF8(content));
	http_request.setRequestHeader("Connection", "close");
	http_request.send(content); 
}
// function to replace the diacritics from a string ----------------------------------------------
function replaceDiacritics(strtextv)
{
	var result='';
	if(strtextv!='')
	{
		var regex = /[^a-zA-Z0-9-/\s~!@#$%^&*()_+`={}[]\|:;\"\',.\/<>?]/gi;
		result = strtextv.replace(regex,'');
		var regex2= /\s\s+/gi;
		result = result.replace(regex2,' ');
	}
	return(result);
}
function onlyLetterNumbers(strtextv)
{
	var result='';
	if(strtextv!='')
	{
		var regex = /[^a-zA-Z0-9\.]/gi;
		result = strtextv.replace(regex,'');
		var regex = /[^a-zA-Z0-9\.]/gi;
		result = strtextv.replace(regex,'');
		var regex2= /\s\s+/gi;
		result = result.replace(regex2,' ');
	}
	return(result);
}
function onlyURL(strtextv)
{
	var result='';
	if(strtextv!='')
	{
		var regex= /\_/gi;
		strtextv = strtextv.replace(regex,'-');

		var regex = /[^a-zA-Z0-9\.\+\-\,\/\s]/gi;
		result = strtextv.replace(regex,'');

		var regex = /[^a-zA-Z0-9\.\+\-\,\/\s]/gi;
		result = strtextv.replace(regex,'');

		var regex2= /\s\s+/gi;
		result = result.replace(regex2,' ');

		var regex2= /\s\s+/gi;
		result = result.replace(regex2,'+');

		var regex2= /\-\,\-/gi;
		result = result.replace(regex2,',');

		var regex2= /\,/gi;
		result = result.replace(regex2,'-');
	
	}
	return(result);
}
// function to strip the html tags from a string --------------------------------------------------
function stripHTML()
{
	var re= /<\S[^><]*>/g;
	for (i=0; i<arguments.length; i++)
	{
		//arguments[i].value=replaceDiacritics(arguments[i].value);
		arguments[i].value=arguments[i].value.replace(re, "");
	}
}
function stripHTML_string(strtextv)
{
	var re= /<\S[^><]*>/g;
	strtextv=strtextv.replace(re, "");
	strtextv=replaceDiacritics(strtextv);
	return(strtextv);
}

// function to make a page redirect to a location--------------------------------------------------
function make_redirect(page)
{
	window.location=page;
}


// function to make a page redirect to a location after a number of miliseconds--------------------
function make_redirect_delay(page,milisecs)
{
	setTimeout("make_redirect('"+page+"')",milisecs);
}


// function to make an ajax request after a number of miliseconds----------------------------------
function delay_request2(page,target,milisecs)
{
	setTimeout("makeRequest('"+page+"','"+target+"')",milisecs);
}

// function to show or hide an element-------------------------------------------------------------
function show_hide_element(elem)
{
	if(document.getElementById(elem)!='undefined' && document.getElementById(elem)!==null)
	{
		if(document.getElementById(elem).style.display=='block')
		{
			document.getElementById(elem).style.display='none';
		}
		else
		{
			document.getElementById(elem).style.display='block';
		}
	}
}

// function to show or hide an element after a number of miliseconds-------------------------------
function show_hide_element_delay(elem,milisecs)
{
	setTimeout("show_hide_element('"+elem+"')",milisecs);
}

// function to rate an item -----------------------------------------------------------------------
function rate_this(val,entity,id_entity)
{
	if(entity!='' && id_entity!='' && document.getElementById('art_rating'+ entity + id_entity)!='undefined' && document.getElementById('art_rating'+ entity + id_entity)!==null)
	{
		makeRequest('_rating.php?star='+val+'&entity='+entity+'&id_entity='+id_entity+'&next='+Math.random(),'art_rating'+ entity + id_entity);
	}
}


// function to send to cart a promotion code-------------------------------------------------------
function check_send_promo_code(prod)
{
	//alert(escape(document.getElementById('promo_code_' + prod).value));
	//makeRequest('include/cart_sources/check_send_promo_code.php?id=' + prod + '&code=' + escape(document.getElementById('promo_code_' + prod).value) , 'elem_promo_code_' + prod);

	makeRequest('include/cart_sources/check_send_add_del.php?id=' + prod + '&code=' + escape(document.getElementById('promo_code_' + prod).value) , 'product_cart_element' + prod);
}
function check_send_promo_code_clear(prod)
{
	makeRequest('include/cart_sources/check_send_add_del_clear.php?id=' + prod + '&code=' + escape(document.getElementById('promo_code_' + prod).value) , 'product_cart_element' + prod);
}
function add2cart(prod)
{
	//alert(escape(document.getElementById('promo_code_' + prod).value));
	makeRequest('include/cart_sources/check_send_add_del.php?id=' + prod +'&add=on', 'product_cart_element' + prod);
}
function delete2cart(prod)
{
	//alert(escape(document.getElementById('promo_code_' + prod).value));
	//alert(prod);
	makeRequest('include/cart_sources/check_send_add_del.php?id=' + escape(prod) +'&del=on', 'product_cart_element' + prod);
}
function delete2cart_operation(prod,msg)
{
	if(confirm(msg))
	{
		makeRequest('include/cart_sources/check_send_add_del_operation.php?id=' + escape(prod) +'&del=on', 'product_cart_element' + prod);
		//show_hide_element('tr_cart_element_'+prod);
		make_redirect('cart.php');
	}
}
function cart_alert_qty(lorg,msg,nr,val)
{
	var elemval=document.getElementById('qty_'+val).value;
	if(isNaN(elemval))
	{
		elemval=elemval.match(/[0-9]/i);
		document.getElementById('qty_'+val).value=elemval;
	}
	if(elemval>nr)
	{
		if(lorg=='more'){alert(msg); document.getElementById('qty_'+val).value=nr;}
	}
	else if(elemval<nr)
	{
		if(lorg=='less'){alert(msg); document.getElementById('qty_'+val).value=nr;}
	}
	
}
function update_cart_include()
{
	makeRequest('_phpcoder_cart.php?refresh=on', 'product_cart_include');
}

function confirm_operation_submit(msg,frmid,elem1,elem2)
{
	if(confirm(msg))
	{
		document.getElementById(elem1).value=elem2;
		document.getElementById(frmid).submit();
	}
}

function generic_getPageSize()
{
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) 
	{	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else
	{ // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) 
	{	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} 
	else if (document.documentElement && document.documentElement.clientHeight) 
	{ // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} 
	else if (document.body)
	{ // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	} 
	else 
	{ 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	} 
	else
	{
		pageWidth = xScroll;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); 
	return arrayPageSize;
}

function check_string_len(elem,mlen)
{
	var cont=document.getElementById(elem).value;
	var len=cont.length;
	if(len>mlen)
	{
		alert('A maximum of '+mlen+' characters to be input per field.');
		document.getElementById(elem).value=cont.substring(0,mlen);
	}	
}
