//Copyright PRLog
var undefined;

function IsNum(txt){return (txt.length>0 && txt.search('[^0-9]')<0);}
function IsInt(txt){return IsNum(txt);}
function IsAlpha(txt){return (txt.length>0 && txt.search('[^a-zA-Z]')<0);}
function IsAlphaNum(txt){return (txt.length>0 && txt.search('[^a-zA-Z0-9]')<0);}
function ToInt(txt){return (txt-0);}

function Flag(f){
	f.style.borderColor="red";
	f.focus();
}

function UnFlag(f){
	f.style.borderColor="";
}

function VfySize(fld,lbl,rqd,mn,mx,minmsg){
	var n=fld.value.length;
	var serr='';
	if(n<=0){
		if(rqd)serr='is a required field';
	}else if(n<mn){
		if(minmsg!=undefined && minmsg!=''){
			serr=minmsg;
		}else if(rqd){
			serr='must be at least '+mn+' characters';
		}else{
			serr='is optional.\nIf specified, it must be at least '+mn+' characters';
		}
	}else if(n>mx){
		serr='must be less than '+mx+' characters.\n\nYou have '+n+' characters';
	}
	if(serr==''){
		UnFlag(fld);
		return true;
	}else{
		Flag(fld);
		alert('The requested action was not performed due to following error(s)-\n\n"'+lbl+'" '+serr+'.');
		return false;
	}
}

function VfyRegex(fld,label,reqd,min,max,re,errmsg){
	if(!VfySize(fld,label,reqd,min,max))return false;

	if(!fld.value.match(re)){
		Flag(fld);
		alert('"' + label + '" ' + errmsg);
		return false;
	}
	UnFlag(fld);
	return true;
}

function VfyName(fld,lbl,reqd,min,max){
	return VfyRegex(fld,lbl,reqd,min,max,/^[a-zA-Z_\-,\. ]*$/,'must not contain characters other than letters.');
}

function VfyUserName(fld,lbl,reqd,min,max){
	return VfyRegex(fld,lbl,reqd,min,max,/^[a-zA-Z0-9_]*$/,'must not contain characters other than letters, numbers and underscore.');
}

function VfyPassword(fld,lbl,reqd,min,max){
	return VfyRegex(fld,lbl,reqd,min,max,/^[a-zA-Z0-9_]*$/,'must not contain characters other than letters, numbers and underscore.');
}

function VfyAlpha(fld,label,reqd,min,max){
	return VfyRegex(fld,lbl,reqd,min,max,/^[a-zA-Z]*$/,'must not contain characters other than letters.');
}

function VfyAlphaNum(fld,label,reqd,min,max){
	return VfyRegex(fld,lbl,reqd,min,max,/^[a-zA-Z0-9]*$/,'must not contain characters other than letters and numbers.');
}

function VfyCaptcha(fld){
	return VfySize(fld,'Are you human?',1,4,10);
}

function IsFrom(txt,set){
	var n=txt.length;
	for(var i=0;i< n;i++){
		if(set.indexOf(txt.charAt(i))==-1)return false;
	}
	return true;
}

function VfyChars(fld,label,reqd,min,max,valid,errmsg){
	if(!VfySize(fld,label,reqd,min,max))return false;

	var txt=fld.value;
	var n=txt.length;

	for(var i=0;i< n;i++){
		if(valid.indexOf(txt.charAt(i))==-1){
			Flag(fld);
			alert('"' + label + '" ' + errmsg);
			return false;
		}
	}
	UnFlag(fld);
	return true;
}

function VfyAlpha(fld,label,reqd,min,max,valid){
	valid+='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var errmsg='must not contain characters other than letters.';
	return VfyChars(fld,label,reqd,min,max,valid,errmsg);
}

function VfyAlphaNum(fld,label,reqd,min,max,valid){
	valid+='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
	var errmsg='must not contain characters other than letters and numbers.';
	return VfyChars(fld,label,reqd,min,max,valid,errmsg);
}

function VfyInt(fld,label,reqd,min,max){
	var txt=fld.value;
	var n=txt.length;
	var serr='';

	if(reqd && n<=0){
		serr='is a required field';
	}else if(reqd || n>0){
		if(!isInt(txt)){
			if(reqd){
				serr='must be a numeric whole value';
			}else{
				serr='is optional.\n If specified, it must be a numeric whole value';
			}
		}else{
			txt=ToInt(txt);
			if(txt<min){
				serr='must be greater than or equal to '+ min;
			}else if(txt>max){
				serr='must be less than or equal to '+ max;
			}
		}
	}
	if(serr==''){
		UnFlag(fld);
		return true;
	}else{
		Flag(fld);
		alert('"'+label+'" '+serr+'.');
		return false;
	}
}

function VfyEmail(fld,lbl,rqd,mn,mx){
	var txt=fld.value;
	var n=txt.length;
	var serr='';

	if(txt.indexOf("@")<1 || txt.indexOf(".")<1 || n<mn){
		serr='must be a valid email address';
	}else if(n>mx){
		serr='must be less than ' + mx + ' characters';
	}
	if(serr==''){
		UnFlag(fld);
		return true;
	}else{
		Flag(fld);
		alert('"'+lbl+'" '+serr+'.');
		return false;
	}
}

//clears text,textarea,password & resets select to 0
function FormReset(frm){
	var n=frm.elements.length;
	for(var i=0;i<n;i++){
		el=frm.elements[i];
		switch(el.tagName){
		case "INPUT":
			if(el.type=="text" || el.type=="password"){
				el.value="";
			}else if(el.type=='checkbox'){
				el.checked=false;
			}
			break;
		case "TEXTAREA":
			el.value="";
			break;
		case "SELECT":
			el.selectedIndex=0;
			break;
		}
	}
}

function ShowSize(txt,fld,n){
	fld=document.getElementById(fld);
	if('value' in txt)
		i=txt.value.length;
	else
		i=txt.innerHTML.length;
	if(n>=i){
		fld.innerHTML=(n-i)+' characters left';
		fld.style.color='#008000';
	}else{
		fld.innerHTML=(i-n)+' characters over';
		fld.style.color='#ff0000';
	}
}

function arr2opt(selname,selval,sep,arr){
	var sel=document.getElementsByName(selname)[0];
	arr=arr.split(sep);
	var n=arr.length;
	if(n%2==1)n--;
	for(var i=0;i< n;i+=2){
		sel.options[i/2+1]= new Option(arr[i+1],arr[i]/*+' '+arr[i+1]*/);
	}
	n=sel.options.length;
	for(i=0;i<n;i++){
		if(sel.options[i].value==selval){
			sel.selectedIndex=i;
			break;
		}
	}
}

function onSelOther(fldSel,fldOth,clsSel1,clsSel2,clsOth,label){
	if(fldSel.value=='' && fldSel.selectedIndex>0){
		fldSel.style.backgroundColor="red";
		alert("Please select a valid \"" + label + "\"");
	 	fldSel.style.backgroundColor="";
		fldSel.selectedIndex=0;
		fldSel.className=clsSel1;
		fldOth.className="hidden";
	}else if(fldSel.value=='ot'){
		fldOth.className=clsOth;
		fldSel.className=clsSel2;
	}else{
		fldSel.className=clsSel1;
		fldOth.className="hidden";
	}
}

function BtnsOff(){
	var e=document.getElementsByTagName("input");
	n=e.length;
	for(var i=0;i< n;i++){
		var f=e[i];
		var t=f.type;
		if(t=="button" || t=="submit"){
			f.disabled=true;
		}
	}
}

