/*	Champions: JS functions */

var annoy=true;function debug(m){if(annoy){annoy=confirm(m);};}


function scrollDiv(id,updown,steps,time){// -1:up; 1:down
	var updown=updown?updown:1;var time=time?time:100;var steps=steps?steps:10;
	if(updown==directionScroll){ //process scroll only if there is no conflicting direction
		var divH = $(id).offsetHeight;
		steps--; var scrollStep = Math.floor(divH / steps );var timeStep = Math.round(time / steps );
		var scrolledH=0;
		for(var i=1;i<divH-scrollStep;i+=scrollStep){
			setTimeout('$("'+id+'").scrollTop += '+updown*scrollStep,i*timeStep);
			scrolledH += updown*scrollStep;
		}
		//last scroll, snapping to final position to resolve rounding
		setTimeout('$("'+id+'").scrollTop += '+(updown*divH - scrolledH), i*timeStep );
		//window.status = $(id).scrollTop //debug
	}
}




function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}

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"){
		v=fs[i].value
		}else if(ftype=="select-one"||ftype=="select-multiple"){
		v=fs[i][fs[i].selectedIndex].value
		}else if(ftype=="checkbox"){
		v=fs[i].checked
		//alert(v)
		}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=FindTagClassUp(fs[i],".required","form")
	if(!reqelm&&efilter&&isfilled){
		reqelm=FindTagClassUp(fs[i],".field","form");
		if(!reqelm){reqelm=fs[i];}
		}

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

function rmErrorClass(event){
var elm=this;var etag=FindTagClassUp(elm,".error","form");if(!etag){etag=FindTagClassUp(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"){
	if( t.indexOf("@example.com")>-1){return false;};
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}

function resolveCSSpath(e,c){
var e=$(e);
c=c.split(" ");

for(var i=0;i<c.length;i++){
	var cis = c[i].split(":")
	var num = cis[1]?cis[1]:"0"
	var ci=cis[0]

	if(ci=="<"){
		e=e.parentNode;
	}else if(ci.charAt(0)=="#"){
		e=document.getElementById( ci.substring(1) );
		if(!e){return false;};
	}else if(ci.charAt(0)=="."){
	var a=e.childNodes;var t=ci.substring(1);var d=false;
		for(var b=0;b<a.length;b++){
		if(HasClass(a[b],t)){d=a[b];break;};
		};
		if(d){e=d;}else{return false;};
	}else if(ci.charAt(0)=="<"){
		e=FindTagClassUp(e.parentNode,ci.substring(1),"BODY");
		if(!e){return false;};
	}else{
	var a = e.getElementsByTagName( ci.toLowerCase() );
		if(a.length>0){
			if(num=="0"){e=a[0];
			}else if(num=="last"||num>a.length){
			e=a[a.length-1]
			}else{
			e=a[num]
			}
		}else{
			var a = document.getElementsByName(ci);
			if( a[0] ){ e=a[0]; }else{return false;};
		};
	};
	};
	return e;
};

function FindTagClassUp(elm,tcsearch,tclimit){

var tc=(tcsearch+".").split(".");tc[0]=tc[0].toUpperCase();
if(!tclimit){tclimit="BODY";};
var tz=(tclimit+".").split(".");tz[0]=tz[0].toUpperCase();
	while(n=elm.nodeName){
		if(tc[0]==""||n==tc[0]){
			if(tc[1]==""||HasClass(elm,tc[1])){return elm;};};
		if(tz[0]==""||n==tz[0]){
			if(tz[1]==""||HasClass(elm,tz[1])){return false;};};
		elm=elm.parentNode;
	};
	//dump("CANNOT GET NODENAME: ",elm);
	return false;
};

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);}

