function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
var myhtmlrequest = [];
var myhtmlcallback = [];

function HtmlRequest(url, parms, callback)
{
	var i = myhtmlrequest.length;
	z = new XMLHttpRequest();
	z.mystoredurl = url;
	z.onreadystatechange = HtmlCallback;
	z.open('POST', url, true);
	z.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	z.setRequestHeader("Content-length", parms.length);
	z.setRequestHeader("Connection", "close");
	z.send(parms);
	myhtmlcallback[i] = callback;
	myhtmlrequest[i] = z;
}
function HtmlRequestGet(url, parms, callback)
{
	var i = myhtmlrequest.length;
	z = new XMLHttpRequest();
	z.mystoredurl = url;
	z.onreadystatechange = HtmlCallback;
	z.open('GET', url, true);
	z.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	z.setRequestHeader("Content-length", parms.length);
	z.setRequestHeader("Connection", "close");
	z.send(parms);
	myhtmlcallback[i] = callback;
	myhtmlrequest[i] = z;
}

function HtmlCallback()
{
	for( var i=0; i < myhtmlrequest.length; i++ ) {
		if( myhtmlrequest[i].readyState == 4 ) {
			if( myhtmlrequest[i].status != 200 ) {
				alert("There was an error processing your request.\n" + myhtmlrequest[i].mystoredurl);
			} else {
				myhtmlcallback[i](myhtmlrequest[i].responseText);
			}
			// drop this from the lists
			myhtmlcallback.splice(i,1);
			myhtmlrequest.splice(i,1);
			return;
		}
	}
}
function getPos(e)
{
	var curleft = 0;
	var curtop = 0;

	if( e.offsetParent ) {
		do {
			curleft += e.offsetLeft;
			curtop += e.offsetTop;
		} while( e = e.offsetParent );
	}

	return [curleft,curtop];
}

function showBag(e)
{
	var width = "220";
	var el = document.getElementById('mybagdisp');
	var vbagtab = document.getElementById('mybag');
	var pos = getPos(vbagtab.offsetParent);
	pos[0] += vbagtab.offsetWidth;
	pos[1] += vbagtab.offsetHeight + 20;

	el.style.display = 'block';
	el.style.position = 'absolute';
	el.style.left = (pos[0] - width) + "px";
	el.style.top = (pos[1]+16) + "px";
	el.style.width = width + "px";
	el.style.zIndex = 10;
	if( cartcount > 5 ) {
		var eldisp = document.getElementById('mybag_items');
		eldisp.style.height = "480px";
		eldisp.style.overflowY = "scroll";
	}

	JSSUCKSUSEHAX(el);
	BagHasFocus=1;
}

function JSSUCKSUSEHAX( e )
{
//	alert(e.nodeName);
	if( e.attachEvent ) {
		e.attachEvent("onmouseover", bagVis);
		e.attachEvent("onmouseout", bagNVis);
	} else if( e.nodeName != "#text" ) {
		e.onmouseover = bagVis;
		e.onmouseout = bagNVis;
	}
	for( var x in e.childNodes ) {
		JSSUCKSUSEHAX(e.childNodes[x]);
	}
}

var BagHasFocus=0;
var BagTimer=-1;
function bagVis(e)
{
	BagHasFocus=true;
}
function bagNVis(e)
{
	BagHasFocus=false;
	if( BagTimer != -1 )
		clearTimeout(BagTimer);
	BagTimer=setTimeout('hideBag()', 100);
}
function hideBag()
{
	if(BagHasFocus) return;
 	var el = document.getElementById('mybagdisp');
	el.style.display='none';
}

// all select boxes must be eg _optionname now. in order to preserve the option list
function fixSelect( sel )
{
	var newname;
	var changename=0;
	if( sel.name.substr(0,1) == "_" ) {
		newname = sel.name.substr(1);
	} else {
		newname = sel.name;
		changename=1;
	}
	var formsel = sel.form[sel.name];

	var cn = sel.className;
	var cid = cn.substr( cn.indexOf("styled")+6 );

	var opts = formsel.options;
	var j = opts.length;
	var i;

	var output = "";
	var selectedtext = opts[0].text;
	var selectedvalue = opts[0].value;
//	var selectwidth = ;

//	alert(selectwidth);

	if( changename == 1 ) {
		// select is not prefixed by _, we will fix that here
		sel.name = "_" + newname;
	}
	// lets see if we need to change the form name too?
	if( sel.form.name == undefined || sel.form.name == "" ) {
		sel.form.name = Math.floor(Math.random()*100000);
	}

	var msid = sel.form.name + "_" + sel.name;

	// Grab all data from preexisting select and create array + divs:
	for( i = 0; i < j; i++ )
	{
		output += "<div class='selectoption";
		if( opts[i].selected )
		{
//			alert("Found selected " + opts[i].value);
			output += " selectedoption";
			selectedtext = opts[i].text;
			selectedvalue = opts[i].value;
		}
		output += "' onmouseover='TMD(\"" + msid + "\", this)' onmouseout='TMO(\"" + msid + "\", this)' onclick='TMI(\"" + msid + "\", this)'>" + opts[i].text + "</div>\n";
	}

	renderoutput = "<div class=selectmain" + cid + " onmousedown='openSelect(\"" + msid + "\", this)'>" + selectedtext + "</div>";
	renderoutput+= "<div class=selectoptions" + cid + " style='display:none'>" + output + "</div>";	
	renderoutput+= "<input type=hidden name='" + newname + "' value='" + selectedvalue + "'>";

	var newbox = document.createElement("div");
	newbox.className = "selectwrap" + cid;
	newbox.innerHTML = renderoutput;

	var par = sel.parentNode;
	par.insertBefore(newbox, sel);

}

var lastmain = 0;
var lastselected = 0;
var closetimer = -1;

function openSelect(msid, el)
{
	var sel = el.parentNode;
	var j = sel.childNodes.length;
	var i;
	var selmain;
	var selopts;

	for( i = 0; i < j; i++ ) {
		if( sel.childNodes[i].nodeName == "#text" ) continue;
		if( sel.childNodes[i].className.indexOf("selectmain") >= 0 ) {
			selmain = sel.childNodes[i]; continue;
		}
		if( sel.childNodes[i].className.indexOf("selectoptions") >= 0 ) {
			selopts = sel.childNodes[i]; 
			continue;
		}
	}

	if( lastmain != 0 )
		closeSelect(lastmain);
	lastmain = selmain;

	sel.onmouseout = TMX;
	sel.onmouseover = TMY;

	selopts.style.display = 'block';
	if( closetimer != -1 ) { clearTimeout(closetimer); closetimer=-1; }
}

function closeSelect( selmain )
{
	var sel = selmain.parentNode;
	sel.onmouseout = sel.onmouseover = null;
	var optsdiv = selmain.nextSibling;
	optsdiv.style.display = 'none';
	if( closetimer != -1 ) { clearTimeout(closetimer); closetimer=-1; }
}

function TMD(msid, el)
{
	// mouse is over an option - select it
	var optsdiv = el.parentNode;

	if( lastselected ) lastselected.className = "selectoption";
	el.className = "selectoption selectedoption";
	lastselected = el;
	TMY();
}
function TMO(msid, el)
{
	// mouse is over an option - select it
	var optsdiv = el.parentNode;

	if( lastselected ) lastselected.className = "selectoption";
	el.className = "selectoption selectedoption";
	lastselected = el;
	TMY();
}
function TMY()
{
	if( closetimer != -1 ) { clearTimeout(closetimer); closetimer=-1; }
}
function TMX()
{
	TMY();
	closetimer = setTimeout( "closeSelect(lastmain)", 400);
}


function TMI(msid, el)
{
	var selopts = el.parentNode;
	var selmain = selopts.previousSibling;
	var msids = msid.split("_");
	var frmsel = document.forms[msids[0]]["_" + msids[2]];
	var frmdat = document.forms[msids[0]][msids[2]];

	if( lastselected ) lastselected.className = "selectoption";
	el.className = "selectoption selectedoption";

	lastselected=el;

	var selectedname = el.firstChild.nodeValue;
	var i;
	
	for( i = 0; i < frmsel.options.length; i++ ) {
		if( frmsel.options[i].text == selectedname ) {
			selectedvalue = frmsel.options[i].value;
		}
	}
	

	selmain.innerHTML = selectedname;
	frmdat.value = selectedvalue;

	selopts.style.display = 'none';
	if( closetimer != -1 ) { clearTimeout(closetimer); closetimer=-1; }
}


var startup_pause=0;
var startup_stop=0;
var startup_running=0;
function runStartup()
{
	var kk;

	startup_running=1;

	for( kk = startup_stop; kk < onstart.length; kk++ ) {
		onstart[kk]();
		if( startup_pause == 1 ) {
			startup_stop = kk+1;
			startup_running=0;
			return;
		}
	}

	var inputs = document.getElementsByTagName("select");
	for(var a = 0; a < inputs.length; a++)
		if(inputs[a].className.indexOf("styled") == 0 ) {
			fixSelect(inputs[a]);
			inputs[a].style.display='none';
		}

/*
	for(var a = 0; a < inputs.length; a++)
		if(inputs[a].className.indexOf("styled") == 0 ) {
			inputs[a].parentNode.removeChild(inputs[a]);
		}
*/
	startup_running=0;
}
function pauseStartup()
{
	startup_pause=1;
}
function continueStartup()
{
	startup_pause=0;
	if( startup_running==0 )
		runStartup();
}

var cartcount=0;
function setCartcount(cc)
{
	cartcount=cc;
}

//setTimeout(runStartup, 500);

function drawMenu()
{
	var output;

	var i;

	output="";
	for( i = 0; i < topmenu.length; i++ ) {
		if( i > 0 )
			output += "<div style='float:left; padding: 0; margin: 0'><img src=\"" + imagedir + "/menu/menu_spacer.gif\" border=0></div>";
		if( topmenu[i].usetext ) {
			output += "<div style='float: left; padding-top: 2px; padding-right: 5px; padding-left: 5px; font-face: " + menufont + "'><a class=menulnk href=\"" + topmenu[i].link + "\">" + topmenu[i].text + "</a></div>"; 
		} else {
			output += "<div style='float: left'><a href=\"" + topmenu[i].link + "\" onmouseover=\"document.zmenu" + i + ".src='" + topmenu[i].t2 + "';\" onmouseout=\"document.zmenu" + i + ".src='" + topmenu[i].t1 + "';\">";
			output += "<img src=\"" + topmenu[i].t1 + "\" border=0 name=zmenu" + i + "></a></div>";
		}
	}

	document.getElementById('menucontent').innerHTML = output;
}
