String.prototype.trim = function()

{

	return this.replace( /(^\s*)|(\s*$)/g, '' ) ;

}

String.prototype.ltrim = function() {

	return this.replace(/^\s+/,"");

}

function validateCompleteForm(objForm,strErrorClass){

	return _validateInternal(objForm,strErrorClass,0);

};

function validateStandard(objForm,strErrorClass){ 

 	return _validateInternal(objForm,strErrorClass,0);

};

function _validateInternal(form,strErrorClass,nErrorThrowType){ 

	var strErrorMessage="";var objFirstError=null;

	if(nErrorThrowType==0){

		strErrorMessage=(form.err)?form.err:_getLanguageText("err_form");

	};

	var fields=_GenerateFormFields(form);

	for(var i=0;i<fields.length;++i){

		var field=fields[i];

		if(!field.IsValid(field,form)){

			field.SetClass(strErrorClass);

			if(nErrorThrowType==1){

				_throwError(field);

				return false;

			}else{

				if(objFirstError==null){

					objFirstError=field;

				}

				strErrorMessage=_handleError(field,strErrorMessage);

				bError=true;

			}

		}else{

			field.ResetClass();

		}

	};

	if(objFirstError!=null){

		alert(strErrorMessage);

		objFirstError.element.focus();

		return false;

	};

	return true;

};



function isFloat(s)

{

	var i;

	var cnt;

	cnt=0;

	if (s.length==0) return false;

    for (i = 0; i <= s.length; i++)

    {   

        // Check if current character is '.' and count its occurances

        var c = s.charAt(i);

        if (c==".") cnt++;

		if (cnt > 1) return false;

		//break;

    }

    return inValidCharSet(s,"0123456789.");

}

function inValidCharSet(str,charset){

	var result = true;

	for (var i=0;i<str.length;i++)

		if (charset.indexOf(str.substr(i,1))<0){

			result = false;

			break;

		}

	return result;

}

function isInteger(s)

{

    var i;

    for (i = 0; i < s.length; i++)

    {   

        // Check that current character is number.

        var c = s.charAt(i);

        if (((c < "0") || (c > "9"))) return false;

    }

    // All characters are numbers.

    return true;

}

function _getLanguageText(id){

	objTextsInternal=new _jsVal_Language();

	objTexts=null;

	try{

		objTexts=new jsVal_Language();

	}catch(ignored){};

	switch(id){

		case "err_form":strResult=(!objTexts||!objTexts.err_form)?objTextsInternal.err_form:objTexts.err_form;break;

		case "err_enter":strResult=(!objTexts||!objTexts.err_enter)?objTextsInternal.err_enter:objTexts.err_enter;break;

		case "err_select":strResult=(!objTexts||!objTexts.err_select)?objTextsInternal.err_select:objTexts.err_select;break;

	};

	return strResult;

};

function _GenerateFormFields(form){ 

	var arr=new Array();

	for(var i=0;i<form.length;++i){

		var element=form.elements[i];

		var index=_getElementIndex(arr,element);

		if(index==-1){ 

		arr[arr.length]=new Field(element,form);

		}else{

		arr[index].Merge(element)

		};

	};

	return arr;

};

function _getElementIndex(arr,element){

	if(element.name){

		var elementName=element.name.toLowerCase();

		for(var i=0;i<arr.length;++i){

			if(arr[i].element.name){

				if(arr[i].element.name.toLowerCase()==elementName){

					return i;

				}

			};

		};

	}

	return -1;

};

function _jsVal_Language(){

	this.err_form="Please enter/select valid values for the following fields:\n\n";

	this.err_select="Please select a valid \"%FIELDNAME%\"";

	this.err_enter="Please enter a valid \"%FIELDNAME%\"";

};

function Field(element,form){ 

	this.type=element.type;

	this.element=element;

	this.exclude=element.exclude||element.getAttribute('exclude');

	this.err=element.err||element.getAttribute('err');

	this.element.errorClassName=element.errorClassName||element.getAttribute('errorClassName');

	//alert(this.errorClassName);
	if((navigator.appName=='Netscape' && navigator.appVersion.indexOf('Chrome')>=0) || navigator.appName=='Opera'){
		this.required=_parseBoolean(element.getAttribute('required')||element.required);
	} else
	this.required=_parseBoolean(element.required||element.getAttribute('required'));

	this.realname=element.realname||element.getAttribute('realname');

	this.elements=new Array();

	switch(this.type){

		case "textarea":

		case "password":

		case "text":

		case "hidden":

		case "file":

		case "select-one":

			

			this.value=element.value;

			this.minLength=element.minlength||element.getAttribute('minlength');

			this.maxLength=element.maxlength||element.getAttribute('maxlength');

			this.regexp=this._getRegEx(element);

			this.minValue=element.minvalue||element.getAttribute('minvalue');

			this.maxValue=element.maxvalue||element.getAttribute('maxvalue');

			this.equals=element.equals||element.getAttribute('equals');

			this.callback=element.callback||element.getAttribute('callback');

			break;

		

		case "select-multiple":

			this.values=new Array();

			for(var i=0;i<element.options.length;++i){

				if(element.options[i].selected&&(!this.exclude||element.options[i].value!=this.exclude)){

					this.values[this.values.length]=element.options[i].value;

				}

			}

			this.min=element.min||element.getAttribute('min');

			this.max=element.max||element.getAttribute('max');

			this.equals=element.equals||element.getAttribute('equals');

			break;

		case "checkbox":

			this.min=element.min||element.getAttribute('min');

			this.max=element.max||element.getAttribute('max');

		case "radio":

			this.required=_parseBoolean(this.required||element.getAttribute('required'));

			this.values=new Array();

			if(element.checked){

				this.values[0]=element.value;

			}

				this.elements[0]=element;

			break;

	};

};

Field.prototype.Merge=function(element){

	var required=_parseBoolean(element.getAttribute('required'));

	if(required){

		this.required=true;

	};

	if(!this.err){

		this.err=element.getAttribute('err');

	};

	if(!this.errorClassName){

		this.errorClassName=element.getAttribute('errorClassName');

	};

	if(!this.equals){

		this.equals=element.getAttribute('equals');

	};

	if(!this.callback){

		this.callback=element.getAttribute('callback');

	};

	if(!this.realname){

		this.realname=element.getAttribute('realname');

	};

	if(!this.max){

		this.max=element.getAttribute('max');

	};

	if(!this.min){

		this.min=element.getAttribute('min');

	};

	if(!this.regexp){

		this.regexp=this._getRegEx(element);

	};

	if(element.checked){

		this.values[this.values.length]=element.value;

	};

	this.elements[this.elements.length]=element;

};

Field.prototype.IsValid=function(arrFields,formfields){

	switch(this.type){

		case "textarea":

		case "password":

		case "text":

		case "file":

		case "hidden":

		case "select-one":

			return this._ValidateText(arrFields,formfields);

		

		case "select-multiple":

		case "radio":

		case "checkbox":

			return this._ValidateGroup(arrFields);

		default:

			return true;

	};

};

Field.prototype.SetClass=function(newClassName){

	if((newClassName)&&(newClassName!="")){

		if((this.elements)&&(this.elements.length>0)){

			for(var i=0;i<this.elements.length;++i){

				if(this.elements[i].className!=newClassName){

					this.elements[i].oldClassName=this.elements[i].className;

					

					if(this.elements[i].errorClassName)

						this.elements[i].className=this.elements[i].errorClassName;

				}

			}

		}else{

			//alert(this.element.className);

			if(this.element.errorClassName)

			{

				if(this.element.className!=this.element.errorClassName){

					this.element.oldClassName=this.element.className;

					

						this.element.className=this.element.errorClassName;

					

						

				}

			}

		};

	}

};

Field.prototype.ResetClass=function(){

	if((this.type!="button")&&(this.type!="submit")&&(this.type!="reset")){

		if((this.elements)&&(this.elements.length>0)){

			for(var i=0;i<this.elements.length;++i){

				if(this.elements[i].oldClassName){

					this.elements[i].className=this.elements[i].oldClassName;

				}

				else{

					this.elements.className="";

				}

			}

		}else{

			//alert(this.element.getAttribute('name') + ': '+this.element.oldClassName);

			

			if(this.element.oldClassName){

				this.element.className=this.element.oldClassName;

			}

			else{

				//this.element.className="";

			}

		};

	};

};

Field.prototype._getRegEx=function(element){

	regex=element.regexp||element.getAttribute('regexp')

	if(regex==null)return null;

		retype=typeof(regex);

	if(retype.toUpperCase()=="FUNCTION")

		return regex;

	else if((retype.toUpperCase()=="STRING")&&!(regex!=""))

	{

		nBegin=0;nEnd=0;

		if(regex.charAt(0)=="/")nBegin=1;

		if(regex.charAt(regex.length-1)=="/")nEnd=0;

		return new RegExp(regex.slice(nBegin,nEnd));

	}

	else{

		return regex;

	};

};

Field.prototype._ValidateText=function(arrFields,formfields){

	if((this.required)&&(this.callback)){

		nCurId=this.element.id?this.element.id:"";

		nCurName=this.element.name?this.element.name:"";

		eval("bResult = "+this.callback+"('"+nCurId+"', '"+nCurName+"', '"+this.value+"');");

		if(bResult==false){

			return false;

		};

	}else{

		if(this.required&&!this.value){

			return false;

		};

		if(this.value&&(this.minLength&&this.value.length<this.minLength)){

			return false;

		};

		

		if(this.value&&(this.maxLength&&this.value.length>this.maxLength)){

			return false;

		};

		//alert(this.regexp);

		if(this.regexp){

			if(!_checkRegExp(this.regexp,this.value,this,formfields))

			{

				if(!this.required&&this.value){

					return false;

				}

				if(this.required){

					return false;

				}

			}

			else

			{

				return true;

			};

		};

		if(this.equals){

		for(var i=0;i<arrFields.length;++i){

			var field=arrFields[i];

				if((field.element.name==this.equals)||(field.element.id==this.equals)){

					if(field.element.value!=this.value){

						return false;

					};

					break;

				};

			};

		};

		if(this.required){

			var fValue=parseFloat(this.value);

			if((this.minValue||this.maxValue)&&isNaN(fValue)){

				return false;

			};

			if((this.minValue)&&(fValue<this.minValue)){

				return false;

			};

			if((this.maxValue)&&(fValue>this.maxValue)){

				return false

			};

		};

	}

	return true;

};

Field.prototype._ValidateGroup=function(arrFields){

	if(this.required&&this.values.length==0){

		return false;

	};

	if(this.required&&this.min&&this.min>this.values.length){

		return false;

	};

	if(this.required&&this.max&&this.max<this.values.length){

		return false;

	};

	return true;

};

function _handleError(field,strErrorMessage){

	var obj=field.element;

	strNewMessage=strErrorMessage+((field.realname)?field.realname+"\n":"");

	//((obj.id)?obj.id:obj.name))+"\n";

	return strNewMessage;

};

function _throwError(field){

	var obj=field.element;

	switch(field.type){

		case "text":

		case "password":

		case "textarea":

		case "hidden":

		case "file":

			alert(_getError(field,"err_enter"));

			try{

				obj.focus();

			}

			catch(ignore){}

			break;

		case "select-one":

		case "select-multiple":

		case "radio":

		case "checkbox":

			alert(_getError(field,"err_select"));

			break;

	};

};

function _getError(field,str){

	var obj=field.element;

	strErrorTemp=(field.err)?field.err:_getLanguageText(str);

	idx=strErrorTemp.indexOf("\\n");

	while(idx>-1){

		strErrorTemp=strErrorTemp.replace("\\n","\n");

		idx=strErrorTemp.indexOf("\\n");

	};

	return strErrorTemp.replace("%FIELDNAME%",(field.realname)?field.realname:((obj.id)?obj.id:obj.name));

};

function _parseBoolean(value){

	return !(!value||value==0||value=="0"||value=="false");

};

function _checkRegExp(regx,value,fieldobj,formfields){

	switch(regx){

	case "test_ss":

	alert('et dfdfd');

	return false;	

	case "none":

		return true;

		break;

	case "JS_EMAIL":

	//return((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/).test(value));

	value = value.trim();

	return ((/^[A-Za-z]+[A-Za-z0-9_\.-]*?\@[A-Za-z0-9]+((\.|-)[A-Za-z]+){1,2}$/).test(value));

	

	case "JS_EMAIL_AJAX":

	//return((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/).test(value));

		var check = (/^[A-Za-z]+[A-Za-z0-9_\.-]*?\@[A-Za-z0-9]+((\.|-)[A-Za-z]+){1,2}$/).test(value)

		if(check)

		{

			if(formfields.mail_status.value==1)  {

			return true;

			}

			else

			{

				alert('Email Address already exists.');

				return false;		

			}

		}

		else

		{

			return false;

		}

	

	

	case "JS_TEL":

	return((/^1?[\-]?\(?\d{3}\)?[\-]?\d{3}[\-]?\d{4}$/).test(value));

	

	case "JS_NUMBER":

		var patternString=/^([0-9]*$)/;

		return patternString.test(value);

	

	case "JS_STRING":

		var patternString=/^([a-zA-Z]*$)/;

		return patternString.test(value);

	case "JS_STRING_WITH_QUOTE":

		var patternString=/^(['"])?([a-zA-Z0-9])+['"]?/;

		return patternString.test(value);

	

	case "TEL_JS_STRING":

		var patternString=/^([+()a-zA-Z0-9-.][+()a-zA-Z0-9-. \/#]*$)/;

		return patternString.test(value);

		

	case "JS_ALPHANUMERIC":

		//var patternString=/^([a-zA-Z0-9-.][a-zA-Z0-9-. \'#]*$)/;

		//value = value.ltrim();

		value = value.trim();

		if(value==''){return false;}

		var patternString=/^([a-zA-Z0-9-.\'\"]+)/;

		return patternString.test(value);	

	break;

	case "JS_ADDRESS":

		value = value.trim();

		if(value==''){return false;}		

		else return true;

		//var patternDesc=/^([a-zA-Z0-9]+)/;

		//return patternDesc.test(value);

		

	case "JS_LINK":

	var sUrl = value;

		if(sUrl != "")

		{

				var url = false ;

				var isNot = "`!@$^*()[{]}\|;'',<> " ;

				if (sUrl.length != 0 )

				{

					if (sUrl.indexOf('://') != -1)

					{

						if (sUrl.indexOf('"') == -1)

						{

							url = true ;

							if (sUrl.length <= 7 )

							{

								url = false ;	

							}

							for (i=0;i!=sUrl.length;++i)

							{

								if (isNot.indexOf(sUrl.substring(i,i+1)) != -1)

								{

									url = false ;	

								}

							}

						}

					}

				}	

				if (url == false )

				{

					//alert("Please enter valid URL.\nEx. http://www.test.com") ;

					return false;

				}

				return true;

		}



	

	case "JS_DESCRIPTION":

		var patternDesc=/^([a-zA-Z0-9]+)/;

		return patternDesc.test(value);



	case"JS_USERNAME":

		var username = value;

		if(username.length<3)

			return false;

		var temp;

	

		if(!(username.charAt(0)>="A" && username.charAt(0)<="z"))

			return false;

		if((username.charAt(username.length-1)>="A" && username.charAt(username.length-1)<="z") || (username.charAt(username.length-1)>="0" && username.charAt(username.length-1)<="9"))

			temp="";

		else

			return false;

			

		for(var i=0;i<username.length;i++){

			temp=username.charAt(i);

			

			if((temp>="0" && temp<="9") || (temp>="A" && temp<="z") || (temp=="_") || (temp=="."))

				temp="";

			else

				return false;

			

		}

		return true;

	case"JS_USERNAME_AJAX":

		var username = value;

		if(username.length<3)

			return false;

		var temp;

	

		if(!(username.charAt(0)>="A" && username.charAt(0)<="z"))

			return false;

		if((username.charAt(username.length-1)>="A" && username.charAt(username.length-1)<="z") || (username.charAt(username.length-1)>="0" && username.charAt(username.length-1)<="9"))

			temp="";

		else

			return false;

			

		for(var i=0;i<username.length;i++){

			temp=username.charAt(i);

			

			if((temp>="0" && temp<="9") || (temp>="A" && temp<="z") || (temp=="_") || (temp=="."))

				temp="";

			else

				return false;

			

		}

		if(formfields.user_status.value==1)  {

			return true;

		}

		else {

			alert('Username already exists.	');

			return false;	

		}

		

	case"JS_IMG":

	var property_file=value; //document.frmpicture.picture.value;

		

		var file = property_file.substring(property_file.length -5);

		var ext = file.slice(file.indexOf(".")).toLowerCase();

		if(ext!=".gif" && ext!=".png" && ext!=".jpg" && ext!=".jpeg") 

		{

			return false;

		}

		else

		{

			return true;

		}

		return true;

	case"JS_FILE":

	var property_file=value; //document.frmpicture.picture.value;

		

		var file = property_file.substring(property_file.length -5);

		var ext = file.slice(file.indexOf(".")).toLowerCase();

		if(ext!=".ppt" && ext!= ".doc" && ext!=".xls" && ext!=".pdf") 

		{

			return false;

		}

		else

		{

			return true;

		}

		return true;

	case"JS_FILE_PDF":

	var property_file=value; //document.frmpicture.picture.value;

		var file = property_file.substring(property_file.length -5);

		var ext = file.slice(file.indexOf(".")).toLowerCase();

		if(ext!=".pdf") 

		{

			return false;

		}

		else

		{

			return true;

		}

		return true;	

						

	case"JS_CSV":

	var property_file=value; //document.frmpicture.picture.value;

					

					var file = property_file.substring(property_file.length -5);

					var ext = file.slice(file.indexOf(".")).toLowerCase();

					if(ext!=".csv" && ext!=".CSV") 

					{

						 return false;

					}

					else

					{

						return true;

					}

					return true;

	case "JS_ZIP":

		val=value;

		if(val.length>20)

		{

			return false;

		}

		else

		{

			var patternString=/^([0-9]*$)/;

			return patternString.test(value);

			//return((/^\d{20}$/).test(value));

		}

	

	case "JS_MONEY":

		if(isNaN(value) || value<=0){

			return false;	

		}

		return((/^\d+([\.]\d+)?$/).test(value));

	case "JS_CREDITCARD":

		return(!isNaN(value));

	case "JS_PHONE":

			<!--var patternString=/^([0-9/-]*$)/;-->
			//var patternString=/^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
			var patternString=/^([0-9-() ]*$)/;
			return patternString.test(value);

		break;

	case "JS_NewPassword":

	value = value.trim();

		if(value=='')

			return false;

		else

			return true;

	break;
	

	case "JS_NAME":

		var patternString=/^([a-zA-Z]+[a-zA-Z- .\']+$)/;

		return patternString.test(value);

		

	case "JS_BLANK":

		//alert("val1=="+trim(value)+"==Val2");

		if(value=="") 

		{

			return false;

		}

		

		return true; 

		break;

	

	// checking length of password should be grater rhan 4

	case "JS_PASS_LENGTH":

		//alert("val1=="+trim(value)+"==Val2");

		if(value=="") 

		{

			return false;

		}

		else if(value.length<5)

		{

			return false;

		}

		return true; 

		break;

	

	case "JS_RePassword":

		if(value!="" && value!=formfields.txtnewpassword.value) {

			//alert('New Password & Confirm Password should be same.');

			return false;

		}

		else if(value!="" &&  value==formfields.txtnewpassword.value) {

			return true;

		}

		else {

			return false;

		}

	break;

	case "JS_CHKLAST":

		return chk_last_val();

	break;

	default:

	//return(regx.test(value));

	};



};



var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")





function countdown(yr,m,d){

	theyear=yr;themonth=m;theday=d

	var today=new Date()

	var todayy=today.getYear()

	if (todayy < 1000)

		todayy+=1900

	var todaym=today.getMonth()

	var todayd=today.getDate()

	var todayh=today.getHours()

	/*var todaymin=today.getMinutes()

	var todaysec=today.getSeconds()*/

	var todaystring=montharray[todaym]+" "+todayd+", "+todayy//+" "+todayh+":"+todaymin+":"+todaysec

	futurestring=montharray[m-1]+" "+d+", "+yr

	dd=Date.parse(futurestring)-Date.parse(todaystring)

	dday=Math.floor(dd/(60*60*1000*24)*1)

	dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)

	dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)

	dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)

	//alert(todaym+"-"+todayd+"-"+todayy);

	if(dday>0)

	{

		//alert("Please enter date less than todays date.");

		return false;

	}

	else

	{

	  return true;

	}

}//end of function



function validateForm(objfrm){

	var obj = objfrm["txtsize[]"];

	var str='';

	var flag = '';

	var len = obj.length;

	

////////////////////////////////////////////////////

if(objfrm["txtheadstyle"].value==''){

	str = ' Head Style \n ';

}

////////////////////////////////////////////////////

	for(i=0;i<len;i++){

		if(obj[i].selected==true && obj[i].value!=''){

			flag = 'set';

		}

	}//end for

	

	if(flag==''){

		str = str + ' Size \n ';

		

	}



//////////////////////////////////////////////////////

	var obj = objfrm["txtlength[]"];

	var len = obj.length;

	var flag = '';

	for(i=0;i<len;i++){

		if(obj[i].selected==true && obj[i].value!=''){

			flag = 'set';

		}

	}//end for

	

	if(flag==''){

		str = str + ' Length \n ';

	}

////////////////////////////////////////////////////////////		

///////////////////////////////////////////////////////

	var obj = objfrm["txtmaterials[]"];

	var len = obj.length;

	var flag = '';

	for(i=0;i<len;i++){

		if(obj[i].selected==true && obj[i].value!=''){

			flag = 'set';

		}

	}//end for

	

	if(flag==''){

		str = str + ' Material \n ';

	}

////////////////////////////////////////////////////////////		

///////////////////////////////////////////////////////

	var obj = objfrm["txtscrewtypes[]"];

	var len = obj.length;

	var flag = '';

	for(i=0;i<len;i++){

		if(obj[i].selected==true && obj[i].value!=''){

			flag = 'set';

		}

	}//end for

	

	if(flag==''){

		str = str + ' Screw Type \n ';

	}

////////////////////////////////////////////////////////////

	var property_file = objfrm["txtImageFile"].value;

	if(property_file!=''){

		var file = property_file.substring(property_file.length -5);

		var ext = file.slice(file.indexOf(".")).toLowerCase();

		if(ext!=".gif" && ext!=".png" && ext!=".jpg" && ext!=".jpeg") 

		{

			str = str + ' Image \n ';

		}

	}

////////////////////////////////////////////////////////////

if(str!=''){

	alert('Please enter/select valid values for following fields: \n\n ' + str);

	return false;

}

else	

return true;

}//end function

function trim(inputString) 

{

   if (typeof inputString != "string") { return inputString; }

   var retValue = inputString;

   var ch = retValue.substring(0, 1);

   

   while (ch == " ") { 

      retValue = retValue.substring(1, retValue.length);

      ch = retValue.substring(0, 1);

   }

   

   ch = retValue.substring(retValue.length-1, retValue.length);

   while (ch == " ") { 

      retValue = retValue.substring(0, retValue.length-1);

      ch = retValue.substring(retValue.length-1, retValue.length);

   }

   while (retValue.indexOf("  ") != -1) { 

      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 

   }

   return retValue;

}

String.prototype.ltrim = function() {

	return this.replace(/^\s+/,"");

}
