//Version 1.7  Updated 29/07/2007

var Bb = navigator.userAgent;
var ie7 = Bb.indexOf("MSIE 7.")>-1 
var newop = /Opera\/[9]{1,1}\./i.test(Bb);
var op = /Opera(\/| )[78]{1,1}\./i.test(Bb) &&!newop;
var ie6 = Bb.indexOf("MSIE 6.")>-1 && !op && !newop
var ie55 = Bb.indexOf("MSIE 5.5")>-1;
var ie5 = Bb.indexOf("MSIE 5.1")>-1;
var ie = document.all;
var ff = Bb.indexOf("Firefox")>-1 || Bb.indexOf("Camino")>-1 || Bb.indexOf("GranParadiso"); //includes Camino and ff3
var ns = Bb.indexOf("Netscape")>-1 ;
var bettersaf = Bb.indexOf("WebKit")>0;
var saf = Bb.indexOf("Safari")>-1 && Bb.indexOf("OS X")>-1 && !bettersaf;
var GOODBROWSER = (ie7 || ie6 || ie55 || ff || bettersaf || saf || ns || newop); 
var DEGRADE = (op); 
var OLD = (!GOODBROWSER && !DEGRADE); 
var WEIRD =  /Opera [3456]{1,1}\./i.test(Bb) || Bb.indexOf("iCab")>-1||Bb.indexOf("Konqueror")>-1;

var fclient=(GOODBROWSER&&!ns)
function FadeList() { 
	if(typeof fadelists=='undefined') obj = fadelists = new Array();
	obj = fadelists;
	this.pn = 'fadelists'; this.ind = obj.push(this)-1; this.fades = new Array();
	this.started = false; this.lastgroup = null; this.cleared = new Array(); 
}
FadeList.prototype.addobj = function (obj, direction, time, mn, mx, delay, func, kill) {
	if(obj==null || direction==null || obj.parentNode==null) return;
	var ing = this.fades.push([{obj:obj,tim:time?time:1500,dir:direction, range: [mn?mn:0, mx?mx:100], co:null, status: -1, delay: delay?delay:1, ind: this.fades.length, func:new Function(func), kill:kill,str:null, tm:null}])
	with(this) {lastgroup=fades[ing-1];lastgroup[0].par=lastgroup;lastgroup.did=0;lastgroup.par=this;}
}
FadeList.prototype.addconc = function (obj, direction, time, mn, mx, delay, func, kill) {
	var found=false,lgi,i;
	if(obj==null || direction==null||obj.parentNode==null) return;
	if(this.lastgroup!==null) {
		for (i=0;i<this.lastgroup.length;i++) 
			if(obj==this.lastgroup[i].obj) {found=true; break;}
		if(!found||found&&this.lastgroup[i].status>1) {
			lgi=this.lastgroup.push({obj:obj,tim:time?time:1500,dir:direction, range: [mn?mn:0, mx?mx:100], co:null, status: -1, delay: delay?delay:1, ind: this.fades.length, func:new Function(func), kill:kill,str:null, tm:null})-1;
			this.lastgroup[lgi].par=this.lastgroup;
		} else
			{ with(this.lastgroup[i]) dir=direction; kill=kill; func = new Function (func); range=[mn,mx]; }
	}
	else { this.addobj(obj, direction, time, mn, mx, delay, func, kill);}
}
FadeList.prototype.start = function() {
	for(var i=0;i<this.fades.length;i++) 
		if(this.fades[i].did!==this.fades[i].length) {
			for(var ii=0;ii<this.fades[i].length;ii++) 
				with (this.fades[i][ii]) 
					if(status<0) {str=this.pn+"["+this.ind+"].fades["+i+"]["+ii+"]";status=0;tm=setTimeout("fade("+str+");",delay);co=range[(-dir+1)/2];}
			break;}
}
FadeList.prototype.fadeallconc = function(k, f) { 
	var cd,ing = this.fades.push(new Array())-1;
	with(this) {lastgroup=fades[ing];lastgroup.did=0;lastgroup.par=this;}
	
	for(var i=0;i<ing;i++) {
		//this.fades[i].did=0;
		cd=0;
		for(var ii=0;ii<this.fades[i].length;ii++) { 
			with (this.fades[i][ii]) {
				if(dir==1) { 
				dir=-1; 
				range[0]=0; 
				if(k)kill=k; 
				delay=1; 
				//onpage("searchfor").value+='@ '+f.replace(/#str#/gi,str)+' '+i+' '+ii;
				}
				switch (status) {
					case -1,0 :
						clearTimeout(tm); status=3;cd++
						break;
					case 1 :
						func=new Function(f.replace(/#str#/gi,str)); tim/=2; break;
					case 2 :
						if(!this.gone(this.fades[i][ii])) { status=-1; tim/=2; this.cleared.push(this.fades[i][ii]); func=new Function(f.replace(/#str#/gi,str)); } else cd++
						if(co>0) range[1]=co;
						break;
				}
				
			}
		}
		this.fades[i].did=cd;
	}
	this.start();
}
				//range[0]=0; if(status==0) clearTimeout(tm);	if(k)kill=k; delay=1;
				//if(status>0) { dir=-1; func=new Function(f.replace(/#str#/gi,str));}
				//if(status==2&&co>0) { if(!this.gone(obj)) {  range[1]=co; this.cleared.push(obj); status=-1; }  }
FadeList.prototype.gone = function (ref) { for(var i=0; i<this.cleared.length; i++) if(this.cleared[i]==ref) return true; return false; }
function fade(o) {
	var inte=40,step;
	with(o) {
		status=1;mn=range[(-dir+1)/2];mx=range[(dir+1)/2];step=((mx-mn)*inte)/tim;
		var left = Math.abs(mx-co)>Math.abs(step);	co=left?co+step:mx;
		fclient?ie?obj.style.filter="alpha(opacity="+co+")":obj.style.opacity=(co)/100:obj.style.visibility=dir>0?'visible':'hidden';
		if(left) tm=setTimeout("fade("+str+");",inte);	else { if(dir==1&&mx==100&&ie) obj.style.filter=""; func();if(kill) window.kill(o);par.did++;status=2;par.par.start(); }
	}
}
function kill(o) { if(o.obj.parentNode)o.obj.parentNode.removeChild(o.obj); }


function changeMenu(it) {
	if(typeof worldpayserver=='undefined') {
		var url = "selcookie.asp?sel=" + it;
		ajax(url, "");
		addqstring("sel="+it);
	}
	var a = 0;
	if(document.getElementById) {
		mi = document.getElementById("lefttabs").getElementsByTagName("li");
		mij = new Array();
		mij[0] = document.getElementById("searchdiv");
		mij[1] = document.getElementById("catdiv");
		mij[2] = document.getElementById("logindiv");
		mid = document.getElementById("belowmenu").getElementsByTagName("span");
		for (a=0; a<3; a++) {
			if(a<2) mi[a].className = "tab"; else mi[a].className="logintab";
			mij[a].style.display = mid[a].style.display = "none";
			if(a==it) {mi[a].className += "on"; mij[a].style.display = mid[a].style.display = "block";}
		}
	}
}
function GetXmlHttpObject() { 
	var objXMLHttp=null
	if (window.XMLHttpRequest)	
		objXMLHttp=new XMLHttpRequest()
	else if (window.ActiveXObject)
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	return objXMLHttp
}
function addqstring(str) {
	var a = document.getElementsByTagName("a");
	var strr = str.substring(0, str.indexOf("="));
	for(var i=0; i<a.length; i++) {
		var atthemo = a[i].getAttribute("href");
		if(atthemo.indexOf("#")<0 && atthemo!=="") {
			var ind1 = atthemo.indexOf(strr)
			if(ind1>-1) {
				var before = atthemo.substring(0, ind1);
				var after = atthemo.substring(ind1, atthemo.length);
				ind2 = after.indexOf("&")>-1? after.indexOf("&") : after.length;
				after = after.substring(ind2, after.length);
				a[i].setAttribute("href", before + str + after);
			}
			else
			a[i].setAttribute("href", atthemo.indexOf("?")>1? atthemo + "&"+str : atthemo + "?" + str);
		}
	}
}
function ajax(url, func) 	{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)	{
			alert ("Sorry, this page requires your browser to support Ajax in order to display correctly.")
			location.href="/";
			return
	} 
	xmlHttp.onreadystatechange = func==null?"":function() {
		if (xmlHttp.readyState == 4) {eval(func); }
	}
	xmlHttp.open("GET",url,func!==null)
	xmlHttp.send(null);
} 

function jaxChildProducts(ref) { //electronic products
		GREF = ref;
		ref.disabled = true;
		var Ds = Hr.childNodes;
		var Sd = ref.parentNode;
		//Clear anything afterwards
		for(var i=Ds.length-1; i>0; i--) {
			if(Ds[i]==Sd) break;
			if(Ds[i].innerHTML != null) Hr.removeChild(Ds[i]);
		}
		//Get Product Value
		Pid = ref.value;
		if(Pid!=0) {
			//Change select box temporarily
			THTML = new Array();
			var cn = ref.childNodes;
			for(var i=0; i <cn.length; i++) 
				if(cn[i].nodeType==1) if(cn[i].tagName.toLowerCase()=='option') THTML.push({ label: cn[i].innerHTML, value: cn[i].value, selected: cn[i].selected });
			ref.innerHTML = "<option>Loading...</option>"
			//jax in products
			ajax("include/incGetElectronicProducts.asp?imageid=" + imageid + "&productid=" + Pid, "jaxChildProductsDone();"); 
		} else
		ref.disabled=false;
}
function jaxChildProductsDone() { //electronic products
	GREF.innerHTML =  "";
	for(var i=0; i<THTML.length; i++) {
		var Opt = document.createElement('option');
		Opt.value = THTML[i].value;
		Opt.innerHTML = THTML[i].label;
		if(THTML[i].selected) Opt.selected = 'selected';
		GREF.appendChild(Opt);
	}
	GREF.disabled = false;
	var newdiv = document.createElement("div");
	newdiv.className = "size";
	newdiv = GREF.parentNode.parentNode.appendChild(newdiv);
	newdiv.innerHTML += xmlHttp.responseText;
	
}
