function $(id) { return document.getElementById(id) }
function $c(name) { return $ce(name,null,null) }
function $ce(name,params,style) { var el = document.createElement(name); if(params) for(var i in params) el[i]=params[i]; if(style) for(var i in style) el.style[i]=style[i]; return el; }
function $re(el) { if(!el||!el.parentNode) return; el.parentNode.removeChild(el); }
function addClass(el,c) { if(!el) return; if(!containsClass(el, c)) el.className += " " + c; }
function removeClass(el, c) { if(!el) return; el.className = el.className.replace(new RegExp(c,"g"),""); }
function containsClass(el, c) { if(!el) return false; return el.className.indexOf(c) != -1 }
function addEvent(obj, type, fn){
  if (obj.addEventListener)
    obj.addEventListener(type, fn, false);
  else if (obj.attachEvent){
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){obj["e"+type+fn](window.event);}
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}
function getCookie(name)
{
	var arg	= name + '=';
	var alen = arg.length;
	var	clen =document.cookie.length;
	var i = 0;
	while (i < clen)
	{
		var j = i + alen;
		if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
		i = document.cookie.indexOf(" ",i) + 1;
		if (i==0) break;
	};
	return null;
}

function setCookie(name,value,path,expires)
{
	str = name + "=" + value;
	if (expires) str += " ;expires="+expires;
        if (path) str += " ;path="+path;
	document.cookie = str;
}

function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr==-1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset,endstr));
};

function delCookie(name)
{
	if (getCookie(name))
    	document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
function ajaxRequest(url, method, containerResponse, postFunction)
{
	var req;
	if(window.XMLHttpRequest)
		req = new XMLHttpRequest();
	else if(window.ActiveXObject)
		req = new ActiveXObject("Microsoft.XMLHTTP");
	// if browser doesn't support ajax return true
	if(!req) return false;

	method = method.toUpperCase();

	// process function
 	req.onreadystatechange=function()
 	{
  		if (req.readyState == 4)
  			if(req.status == 200)
  			{
  				if(containerResponse) containerResponse.innerHTML = req.responseText;
  				if(postFunction) postFunction(req);
  			}
	}

	// send request
	if(method == "GET")
	{
		req.open(method, url, true );
		req.send(null);
	}
	else if(method == "POST")
	{
		try // catch an exception to prevent errors (opera <= 8 doesn't support post request)
		{
			req.open(method, url.slice(0,url.indexOf("?")), true );
			var parameters = url.slice(url.indexOf("?") + 1);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	      	req.setRequestHeader("Content-length", parameters.length);
	      	req.setRequestHeader("Connection", "close");
	      	req.send(parameters);
      	}
      	catch (e)
      	{
      		return false;
      	}
	}
	else
	{
		alert("Not normal method: " + method);
		return false;
	}

	return true;
}

function bottomMenu()
{
	var liElems = $("bottom").getElementsByTagName("ul")[0].getElementsByTagName("li");
	for(var i = 0; i < liElems.length; i++)
	{
		liElems[i].onmouseover = function() { addClass(this, "hover"); }
		liElems[i].onmouseout = function() { removeClass(this, "hover"); }
	}
}

function setMapOver(el, bg)
{
	var UA = navigator.userAgent.toLowerCase();
	if( UA.indexOf("msie") != -1 && UA.indexOf("opera") == -1 && navigator.appVersion.indexOf("MSIE 6") != -1 )
	{
		el.parentNode.parentNode.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+bg+"')";
	}
	else
		el.parentNode.parentNode.style.background = "url('"+bg+"')";
}

function cleanMapOver(el)
{
	el.parentNode.parentNode.style.background = "url('/images/empty.gif')";
}

function showShops(button)
{
	button.blur();
	clearSelectedCountry();
	addClass(button,"selected");
	var addresses = $("shop_addresses");
	var addressesContainer = addresses.getElementsByTagName("div")[0];
	var content = button.parentNode.parentNode.getElementsByTagName("div")[0];
	addressesContainer.innerHTML = content.innerHTML;
	var closeButton = $ce("span");
	closeButton.title = "Close shop list";
	closeButton.onclick = function()
	{
		clearSelectedCountry();
		hideShops();	
	}
	addressesContainer.appendChild(closeButton);
	addClass($("shop_addresses"),"visible");
	return false;
}

function  hideShops()
{
	removeClass($("shop_addresses"),"visible");
}

function clearSelectedCountry()
{
	var countries = $("countries").getElementsByTagName("a");
	for(var i = 0; i < countries.length; i++)
		removeClass(countries[i],"selected");
}

function hoverProducts()
{
	var timeOut;
	var container = $("left_content").getElementsByTagName("div")[1];
	var originaLcontent = new String(container.innerHTML);
	var elements = $("products").getElementsByTagName("ul")[0].getElementsByTagName("a");
	for(var i = 0; i < elements.length; i++)
	{
		elements[i].position = i;
		elements[i].onmouseover = showDesc;
		elements[i].onmouseout = hideDesc;
	}

	function showDesc()
	{
		clearTimeout(timeOut);
		container.innerHTML = '';
		container.id = "product_image";
		var bg = this.style.backgroundImage;
		var img = bg.slice(bg.indexOf("/"),bg.lastIndexOf(")")).replace("q=75&w=70&h=70","q=80&w=260&h=320");
		container.style.backgroundImage = "url('"+imgCache[this.position].src+"')";

		var colorsDesc = $c("p");
		colorsDesc.className = "note";
		colorsDesc.innerHTML = 'Colors may vary due to monitor settings';
		container.appendChild(colorsDesc);

		var desc = $c("span");
		desc.id = "product_img_desc";
		desc.innerHTML = this.innerHTML.slice(0,this.innerHTML.toLowerCase().indexOf("<span>") - 1);
		container.appendChild(desc);
	}

	function hideDesc()
	{
		clearTimeout(timeOut);
		timeOut = setTimeout(function(){
		container.innerHTML = originaLcontent;
		container.id = "";
		container.style.backgroundImage = "none";
		},300);
	}
}