cachedImgs=new Array();
function cacheimgs(){for(var i=0;i<arguments.length;i++){if(document.images){var l=cachedImgs.length;cachedImgs[l]=new Image();cachedImgs[l].src=arguments[i];};};}
function setImgSrc(i,s){if(document.images){document.images[i].src=s;};}
function setState(i,s){if(document.images){if(typeof(i)=="string"){i=document.images[i];};var xa=i.src.substring(0,i.src.lastIndexOf("-"));var xz=i.src.substring(i.src.lastIndexOf("."));i.src=xa+"-"+s+xz;};}

function lyvis(l,v){if(isNS6()&&document.getElementById(l)){document.getElementById(l).style.display = v?"block":"none";}else if(isIE4()&&document.all[l]){document.all[l].style.display = v?"block":"none";}else if(isNS4()&&document.layers[l]){document.layers[l].visibility = v?"show":"hide";};}

function getlyvis(l){if(isNS6()&&document.getElementById(l)){return (document.getElementById(l).style.display!="none");}else if(isIE4()&&document.all[l]){return (document.all[l].style.display!="none");}else if(isNS4()&&document.layers[l]){return (document.layers[l].visibility=="show");};}

function isNS4(){return(document.layers)?true:false;}
function isIE4(){return(document.all)?true:false;}
function isNS6(){return(document.getElementById)?true:false;}
function lywrite(l,h){if(isIE4()){document.all[l].innerHTML=h;}else if(isNS6()){document.getElementById(l).innerHTML=h;};}



function checkForm(f){
if(!document.getElementById){return;}
var oktosend=true;var fs=f.elements

for(var i=0;i<fs.length;i++){
	if(fs[i].type&&fs[i].name){

	//get field value
	var ftype=fs[i].type;var efilter=false
	if(ftype=="text" || ftype=="textarea" || ftype=="password" || ftype=="file" || ftype=="hidden") {
		v=fs[i].value
	} else if(ftype=="select-one"||ftype=="select-multiple") {
		v=fs[i][fs[i].selectedIndex].value
	} else if(ftype=="checkbox") {
	} else {
		v="!"//other types, don't check
	}

	var isfilled=isvalid=(v!="");

	//special fields:
		if(fs[i].name&&fs[i].name.indexOf("mail")>-1){ftype="email";efilter=true;}
		if(efilter){isvalid=isValidField(v,ftype);}

	//is required, or need to check if filled?
	var reqelm=FindClassUp(fs[i],"required","form")
	if(!reqelm&&efilter&&isfilled){
		reqelm=FindClassUp(fs[i],"field","form");
		if(!reqelm){reqelm=fs[i];}
		}

	if(!isvalid&&reqelm){
		if(oktosend&&(ftype.indexOf("text")>-1||ftype.indexOf("select")>-1) ){fs[i].focus();}
		oktosend=false
		fs[i].onclick=rmErrorClass;fs[i].onfocus=rmErrorClass;fs[i].onkeyup=rmErrorClass;
		AddClass(reqelm,"error");
	}
	}//end filter fs
}//end for i in fs
return oktosend;
}

function rmErrorClass(event){
var elm=this;var etag=FindClassUp(elm,"error","form");if(!etag){etag=FindClassUp(elm,"field","form");};if(!etag){etag=elm}
if(etag){KillClass(etag,"error");elm.onclick=null;elm.onfocus=null;elm.onkeyup=null}
}

function isValidField(t,k){
if(k=="email"){
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}


function FindClassUp(p,classname,limit){
if(!limit){limit="html";}else{limit=limit.toLowerCase();}
while(true){
	p=p.parentNode;if(!p.tagName||p.tagName.toLowerCase()==limit){return false;}
	if(HasClass(p,classname)){return p;};
	}
}

//*** This code is copyright 2002-2003 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
function AddClass(obj,cName){KillClass(obj,cName);return obj&&(obj.className+=(obj.className.length>0?' ':'')+cName);}
function KillClass(obj,cName){return obj&&(obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),''));}
function HasClass(obj,cName){return(!obj||!obj.className)?false:(new RegExp("\\b"+cName+"\\b")).test(obj.className);}