// Requirements

// None

// Usage

//			var test=myCookie;
//			test.init("test");
//			test.set("Test");
//			document.write(test.value());

String.prototype.upper=function(){return this.toUpperCase();}
String.prototype.left=function(n){if(n<=0){return "";}else if(n>this.length){return this;}else{return String(this).substring(0,n);}}
function $T(id){return document.getElementsByTagName(id);}
function $(id){if(document.getElementById(id)){return document.getElementById(id);}return false;}
function Buttons(Button,BackGround,Color,Size,fontWeight,fontSize){var x=$(Button);if(x){x.style.background=BackGround;x.style.color=Color;x.style.width=Size;if(fontWeight){x.style.fontWeight=fontWeight;}if(fontSize){x.style.fontSize=fontSize;}}}

Events={
	add: function(obj,evType,fn){if(typeof(fn)!='undefined'){if(obj.addEventListener){obj.addEventListener(evType,fn,true);return true;}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}}return false;}
}
function Forms(){
	this.fields=function(id){var elements=$T(id);for(var i=0;i<elements.length;i++){var x=elements.item(i).name;myForm.check(x);}};
	this.required=function(id){if(!$(id).getAttribute("required")){$(id).setAttribute("required","yes");if(!$(id).value){$(id).value="Required";}(this.label(id)).className='required';}};
	this.notrequired=function(id){var x=$(id);(this.label(id)).className='';x.removeAttribute("required");if(Right(id,2)!="st"){x.value="";}else{x.selectedIndex=0;}x.style.background="";};
	this.checkrequired=function(name){var fail=0,elements=$T(name);for(var i=0;i<elements.length;i++){var y=elements.item(i).getAttribute('required');if(y!=null){fail=(y!="done"&&fail==0)?1:fail;}}return fail;};
	this.status=function(){var failed=0;failed=myForm.checkrequired('input');failed=failed+myForm.checkrequired('textarea');failed=failed+myForm.checkrequired('select');$('Submit').disabled=failed>0?true:false;return failed;};
	this.strFormat=function(y,format){var x="",z=format.split("-");for(var a=0;a<(z.length-2);a++){x+=y.substring(z[a],z[(a+1)])+z[(z.length-1)];}return x;};
	this.setup=function(){
		var input,inputs=$T('input');
		for(var i=0;(input=inputs[i]);i++){if(input.id&&input.id!="mod_search_searchword"){Events.add(input,'focus',myForm.focus);Events.add(input,'blur',myForm.blur);}
		var textareas=$T('textarea');}
		for(var i=0;(textarea=textareas[i]);i++){Events.add(textarea,'focus',myForm.focus);Events.add(textarea,'blur',myForm.blur);}
		//$('Name').focus();
		Events.add(window,'focus',myForm.init);};
	this.focus=function(e){if(typeof e=='undefined'){var e=window.event;}var source;if(typeof e.target!='undefined'){source=e.target;}else if(typeof e.srcElement!='undefined'){source=e.srcElement;}else{return;}source.style.border='2px solid #000';myForm.init();myForm.status();};
	this.blur=function(e){if(typeof e=='undefined'){var e=window.event;}var source;if(typeof e.target!='undefined'){source=e.target;}else if(typeof e.srcElement!='undefined'){source=e.srcElement;}else{return;}source.style.border='2px solid #ccc';id2=source.id;if(id2!="Updates"){myForm.check(id2);}};
	this.error=function(id,a){var x=$(id);x.setAttribute("required","yes");$('Submit').disabled=true;if(x.id=="Email"){a.className='problem';}};
	this.ok=function(id,a){var x=$(id);x.setAttribute("required","done");a.className='completed';};
	this.init=function(){myForm.fields("input");myForm.fields("textarea");myForm.fields("select");};
	this.label=function(val){var label,labels=$T('label');for(var i=0;(label=labels[i]);i++){if(label.htmlFor==val){return label;}}return false;};
	this.check=function(id){
		if(id){var x=$(id);if(x){var a=this.label(id);if(x!=null){var y=x.getAttribute("inputtype");}if(x!=null){var lngth=x.getAttribute("lngth");}if(x!=null){var fmt=x.getAttribute("fmt");}if(x!=null){var required=x.getAttribute('required');}
		if(x!=null){
				if((x.value).length>0){
				switch(y){
					case "alphabetic":
						var z=x.value.replace(/[^a-zA-Z]/ig,'');z=z.left(lngth),zRegExp=/^([a-zA-Z]+)$/;if(x!=null){if(zRegExp.test(z)!=true){if(required!=null){myForm.error(id,a);}}else{if(zRegExp.test(z)==true){myForm.ok(id,a);}}}myForm.status();
					break;
					case "numeric":
						var z=x.value.replace(/[^0-9]/ig, '');if(z.length>lngth){z=z.left(lngth);}var zRegExp=/^([0-9]+)$/;if(x!=null){if(zRegExp.test(z)!=true){if(x.getAttribute("rreq")!=null){myForm.error(id,a);}}if(fmt!=null){if((x.value).length>1){x.value=myForm.strFormat(z,fmt);}}myForm.ok(id,a);}myForm.status();
					break;
					case "email":
						var z=x.value,zRegExp=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(z!="Required"){if(zRegExp.test(z)==false||x.value=="Required"){if(required!=null){myForm.error(id,a);}}else{myForm.ok(id,a);}}myForm.status();
					break;
					case "alphanumeric":
						var z=x.value.replace(/[^a-zA-Z0-9]/ig, ''),zRegExp=/^([a-zA-Z0-9]+)$/;if(x.value!="Required"){if(zRegExp.test(z)!=true||z=="Required"){if(a.className!=""){if(x.getAttribute("required")!=null){myForm.error(id,a);x.value="Required";}}}else{myForm.ok(id,a);}}myForm.status();
					break;
				}
			}
		}
		if(y=="list"){var z=x.selectedIndex;if(z>0){myForm.ok(id,a);}else{if(a.className=='completed'){myForm.error(id,a);x.setAttribute("rreq","req");}}myForm.status();}
		}}
	};
}