var enablerequest = true;
var http_request = false;
var div_id = false;
var request_fun = false;
var _requestQueue = new Array();

function makeRequest(url, id, fun, f) {
	if (enablerequest) {
		enablerequest = false;
		http_request = false;
		if (window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
			}
		}
		else if (window.ActiveXObject) {
			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;
		}
		div_id = id;
		request_fun = fun;
		http_request.open("POST", url, true);
		http_request.onreadystatechange = loadContent;
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		var data = '';
		if (f && f.elements) {
			var s = '';
			var tmp = '';
			for (c = 0; c < f.elements.length; c++) {
				if (f.elements[c].type != 'checkbox' || f.elements[c].checked) {
					tmp = new String(f.elements[c].name+'='+f.elements[c].value);
					data += s+tmp.replace(/&/g, '%26');
					s = '&';
				}
			}
		}
		http_request.send(data);
	} else
		_requestQueue.push([url,id,fun,f]);
}
function loadContent() {
	if (http_request) {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				if (div_id != '') {
					var div = document.getElementById(div_id);
					div.innerHTML = http_request.responseText;
				}
				if (request_fun)
					eval(request_fun);
				enablerequest = true;
				if(_requestQueue.length){
					var nextReq = _requestQueue.shift();
					makeRequest(nextReq[0],nextReq[1],nextReq[2],nextReq[3]);
				}
			}
			else
				alert('There was a problem with the request.');
		}
	}
	else
		alert('Http_request error');
}

// bookmark 

function bookmarksite(title, url){
	if (document.all) window.external.AddFavorite(url, title);
	else if (window.sidebar) window.sidebar.addPanel(title, url, "")
}

// cookies functions 

function getCookie(name){ 
	var cname = name + "=";                
	var dc = document.cookie;              
	if (dc.length > 0) {               
    		begin = dc.indexOf(cname);        
		if (begin != -1) {            
            		begin += cname.length;        
                        end = dc.indexOf(";", begin); 
                        if (end == -1) end = dc.length; 
                        return unescape(dc.substring(begin, end)); 
                }  
        } 
        return null; 
}

function setCookie(name, value, expires, path, domain, secure) { 
	document.cookie = name + "=" + escape(value) +  
		((expires == null) ? "" : "; expires=" + expires.toGMTString()) + 
		((path == null) ? "" : "; path=" + path) + 
		((domain == null) ? "" : "; domain=" + domain) + 
		((secure == null) ? "" : "; secure"); 
};

function setCookieYear(name, value, path, domain, secure) {
	var expiration = new Date(); 
	var year; 
	year=expiration.getYear(); 
	if (year<2000) { 
	        year=year+1900; 
	} 
	if (value)
		expiration.setYear(year + 1);
	else
		expiration.setYear(year - 1); // empty value, clear cookie
	setCookie(name,value,expiration,path,domain,secure);
}

function clearCookie(name, path, domain, secure) {
	var expiration = new Date(); 
	var year; 
	year=expiration.getYear(); 
	if (year<2000) { 
	        year=year+1900; 
	} 
	expiration.setYear(year - 1);
	setCookie(name,'_',expiration,path,domain,secure);
}

// clShopInfo

function showCurrency(show){
	var cdiv = document.getElementById("currency");
	if(cdiv) switch(show) {
		case 0:cdiv.style.display="none"; break;
		case 1:cdiv.style.display=""; break;
		case 2:cdiv.style.display=(cdiv.style.display=="none"?"":"none");break;
	}
};

function checkEmail(email){
	var r = /^([\w-]+(\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (!r.test(email)) { 
		alert("Email address is not valid."); 
		return false; 
	}
	return true; 
}

// events

function addEvent(element, event, listener, bubble) {
	if(element.addEventListener) {
		if(typeof(bubble) == "undefined")
			bubble = false;
		element.addEventListener(event, listener, bubble);
	} else 
		if(this.attachEvent) {
		    element.attachEvent("on" + event, listener);
		}
}

function str_trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
