String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};
function validateEmailv2(email)
{
// a very simple email validation checking. 
// you can add more complex email checking if it helps 
	if(email.length <= 0)
	{
		return true;
	}
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null )
	{
		var regexp_user=/^\"?[\w-_\.]*\"?$/;
		if(splitted[1].match(regexp_user) == null) return false;
	}
	if(splitted[2] != null)
	{
		var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		if(splitted[2].match(regexp_domain) == null) 
		{
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null) return false;
		}// if
		return true;
	}
	return false;
}

function addValidation(strValidateStr,fieldID,strError) 
{	
	var epos = strValidateStr.search("="); 		
	var command  = ""; 
	var cmdvalue = ""; 
	var theForm;
	if(epos >= 0) 
	{ 
		command  = strValidateStr.substring(0,epos); 
		cmdvalue = strValidateStr.substr(epos+1); 
		
	} 
	else 
	{ 
		command = strValidateStr;
	}  
	objValue = document.getElementById(fieldID);

	switch(command) 
	{ 
		
		case "req": 
		case "required": 
		{ 
			if(eval(objValue.value.trim().length) == 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : Required Field"; 					
				}//if
				return strError+"\n";				
			}//if
			
			break;             
		}//case required 
		case "maxlength": 
		case "maxlen": 
		{ 
			if(eval(objValue.value.length) >  eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : "+cmdvalue+" characters maximum "; 
				}//if 				
				return strError+"\n";
			}//if 

			break; 
		}//case maxlen 
		case "fixlen": 
		case "fixlength": 
		{ 
			if(eval(objValue.value.length) !=  eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : "+cmdvalue+" characters maximum "; 
				}//if 				
				return strError+"\n";
			}//if 

			break; 
		}//case maxlen 
		
		case "minlength": 
		case "minlen": 
		{ 
			if(eval(objValue.value.length) <  eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : " + cmdvalue + " characters minimum  "; 
				}//if
				return strError+"\n";
			}//if 

			break; 
		}//case minlen 
		
		case "alnum": 
		case "alphanumeric": 
		{ 
			var charpos = objValue.value.search("[^A-Z a-z 0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only alpha-numeric characters allowed "; 
				}//if 				
				return strError+"\n";
			}//if 
			
			break; 
		}//case alphanumeric
		
		case "alphanum": 
		{ 
			var charpos = objValue.value.search("[^A-Za-z0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only alpha-numeric characters allowed "; 
				}//if 				
				return strError+"\n";
			}//if 
			
			break; 
		}//case alphanumeric 
		
		 
		
		case "num": 
		{ 
			var charpos = objValue.value.search("[^0-9.]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}
		case "alphanumhyphenspace": 
		{ 
			var charpos = objValue.value.search("[^A-Z a-z 0-9-]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}
		case "numhyphenbrace": 
		{ 
			var charpos = objValue.value.search("[^0-9-() ]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}
		case "numhyphenspace": 
		{ 
			var charpos = objValue.value.search("[^0-9- ]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}
		case "numhyphen": 
		{ 
			var charpos = objValue.value.search("[^0-9-]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}
		case "numeric": 
		{ 
			var charpos = objValue.value.search("[^0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			
			break;               
		}//numeric 
		case "number": 
		{ 
			var charpos = objValue.value.search("[^0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}//if
			else if(objValue.value <= 0)
			{
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only digits allowed "; 
				}//if
				return strError+"\n";
			}
			
			break;               
		}//numeric 
		//################# need for Credit Card validation ##################
		
		case "cc": 
		{ 
			if (!objValue.value.match(/^\d{1,20}$|^\*{8,15}\d{4,4}$/))
			{
				//strError = "Require a valid decimal."; 
				return strError+"\n";
			}
			break;
			
		}//numeric 
		
		
		// ############################# End #################################
		case "dec": 
		case "decimal": 
		{ 
			
				if (!objValue.value.match(/^\d{1,10}$|^\d+\.\d{1,2}?$/))
				{
					//strError = "Require a valid decimal."; 
					return strError+"\n";
				}
				else if(objValue.value == 0)
				{
					return strError+"\n";
				}
				break;
				  
		}//numeric 

		case "mobile": 
		{ 
			if(objValue.value!='')
			{
				var stripped = objValue.value.replace(/[\(\)\.\-\ ]/g, '');
				//strip out acceptable non-numeric characters
				if (isNaN(parseInt(stripped))) {
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": Only digits allowed "; 
					}//if 
					return strError+"\n";
				}				
				else if (!(stripped.length == 10)) {
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": Only digits allowed "; 
					}//if					
					return strError+"\n";
				}	
				break;               
			}
			break;			
		}//mobile 
		// FUNCTION TO VALIDATE NAME WHICH CONTAIN SPACE
/*					function validate_name_space(name)
					{
						var iChars = "!@#$%^&*()+=-[]\\\;,./{}|\" >?"; // not allowlable character
						for(i=0;i<iChars.length;i++)
						{
							if(name.indexOf(iChars.charAt )!=-1)
								return false;
						}
						if(i==iChars.length)
							return true;
					}
*/		case "alphabetic": 
		case "alpha": 
		{ 
			var charpos = objValue.value.search("[^A-Za-z]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Only alphabetic characters allowed "; 
				}//if				
				return strError+"\n";
			}//if 
			break; 
		}
		// for valid username :
		case "alnumhyphen":
		{
			var charpos = objValue.value.search("[^A-Za-z0-9\-_\.]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
				}//if 
				return strError+"\n";
			}//if 
			else if(objValue.value.length < 3)
			{
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
				}//if 
				return strError+"\n";
			}
			break;
		}
		case "timeValidate":
		{
			var charpos = objValue.value.search("[^0-9{2}\:\0-9{2}$]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}
		
		case "alnumhyphenONLY":
		{
			var charpos = objValue.value.search("[^A-Za-z0-9\-]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9 and -"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}
		case "alnumONLY":
		{
			var charpos = objValue.value.search("[^A-Za-z0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9 and -"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}
		/*case "alnumhyphenCAPSONLY":
		{
			//var charpos = objValue.value.search("/^(A-Z){3}\-(0-9){3}$/"); 
			var val	=	
			var ri	=	"/^(A-Z){3}\-(0-9){3}$/";
			if(ri.test(objValue.value))
			{alert('ok');}
			else
			{
				alert('not ok');	
			}
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,0-9 and -"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}*/
		
		case "alnumhyphenCAPSONLY":
		{
			var charpos = objValue.value.match("^[A-Z]{3}\-[0-9]{3}$"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": not a valid input"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}
		
		case "valid_name":
		{
			if(objValue.value!='')
			{
				var stripped = objValue.value.replace(/[\ ]/g, '');
				var charpos = stripped.search("[^A-Za-z\-\'\.]"); 
				//strip out acceptable non-numeric characters
				if(objValue.value.length > 0 &&  charpos >= 0) 
				{ 
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and '"; 
					}//if 
					
					return strError+"\n";
				}//if 
				break;               
			}
			break;			
			
		}
		case "valid_lastname":
		{
			var charpos = objValue.value.search("[^A-Za-z\'\ ]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z' and space"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;			
			
		}
		case "valid_subdomain":
		{
			if(objValue.value!='')
			{
				var stripped = objValue.value;
				var charpos = stripped.search("[^A-Za-z0-9\-]"); 
				//strip out acceptable non-numeric characters
				if(objValue.value.length > 0 &&  charpos >= 0) 
				{ 
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and '"; 
					}//if 
					
					return strError+"\n";
				}//if 
				break;               
			}
			break;			
			
		}
		case "space":
		{	
			var vlen	 = objValue.value.length;
			var stripped = objValue.value.replace(/[\ ]/g, '');	
			if(vlen!= stripped.length) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and '"; 
				}//if 
				
				return strError+"\n";
			}//if 
			break;			
		}
		case "password":
		{	
			var vlen	 = objValue.value.length;
			var stripped = objValue.value.replace(/[\ ]/g, '');	
			if(vlen!= stripped.length) 
			{ 
				/*if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and '"; 
				}//if */
				
				return "Enter valid Password.\n";
			}//if
			else if(vlen < 6)
			{
				/*if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and '"; 
				}//if */
				
				return "Password should be at least 6 characters.\n";
			}
			break;			
		}
		case "valid_date":
		{				
			if(objValue.value!='mm/dd/yyyy' )
			{				
				var charpos = objValue.value.search("[^0-9\/]"); 
				if((objValue.value.length > 0 &&  charpos >= 0) || (objValue.value.length > 0 && objValue.value.length != 10)) 
				{ 
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": characters allowed are 0-9 and /"; 
					}//if    
					
					return strError+"\n";
				}//if 
				break;
			}
			break;
		}
		case "alphahyphen":
		{
			var charpos = objValue.value.search("[^A-Za-z\-_.]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,.- and _"; 
				}//if    
				
				return strError+"\n";
			}//if 
			break;
		}		
		case "email": 
		{ 
			if(!validateEmailv2(objValue.value)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Enter a valid Email address "; 
				}//if       
				
				return strError+"\n";
			}//if
			break; 
		}//case email 
		case "lt": 
		case "lessthan": 
		{ 
			if(isNaN(objValue.value)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 				
					strError= objValue.name+": Should be a number ";					
				}
				
				return strError+"\n";				
			}//if 
			else if(eval(objValue.value) >=  eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : value should be less than "+ cmdvalue; 
				}//if               				
				return strError+"\n";
			}//if 
			break; 
		}//case lessthan 
		case "gt": 
		case "greaterthan": 
		{ 
			if(isNaN(objValue.value)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 				
					strError= objValue.name+": Should be a number ";					
				}
				
				return strError+"\n";				
			}//if 
			else if(eval(objValue.value) <=  eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : value should be greater than "+ cmdvalue; 
				}//if               				

				return strError+"\n";
			}//if
			break; 
		}//case greaterthan 
		case "regexp": 
		{ 
			if(objValue.value.length > 0)
			{
				if(!objValue.value.match(cmdvalue)) 
				{ 
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": Invalid characters found "; 
					}//if                                                               
					
					return strError+"\n";
				}//if 
			}		
			break; 
		}//case regexp 
		case "dontselect": 
		{ 
			if(objValue.selectedIndex == null) 
			{ 
				/*alert("BUG: dontselect command for non-select Item"); 
				return false;*/ 
				return "BUG: dontselect command for non-select Item";
			} 
			if(objValue.selectedIndex == eval(cmdvalue)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Please Select one option "; 
				}//if   
				
				return strError+"\n";
			} 
				break; 
		}//case dontselect 
		case "select": 
		{ 
			if(objValue.selectedIndex == 0)
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name + " : Please Select one option"; 					
				}//if
				return strError+"\n";				
			}//if
				break; 
		}//case select
		case "match": 
		{ 	
			if((objValue.value) != (document.getElementById(cmdvalue).value)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Must be same"; 
				}//if 
				
				return strError+"\n";
			} 
				break; 
		}//case match 
		case "today_dt_chk": 
		{ 
			var myDate = new Date;
			var today  = new Date;
			tMonth = today.getMonth()+1;
			tYear  = today.getFullYear();
			
			myDate.setMonth(document.getElementById(cmdvalue).value);
			myDate.setFullYear(objValue.value);
			
			eMonth = myDate.getMonth();
			eYear  = myDate.getFullYear();
			if(((tMonth>eMonth) && (tYear==eYear)) || (tYear>eYear))
			{
				strError = "Please select valid expiration date.";
				return strError+"\n";
			}
			
			break; 
		}//case match 
		
		/*case "today_dt_chk": 
		{ 
			var myDate = new Date;
			var today  = new Date;
			tMonth = today.getMonth();
			tYear  = today.getFullYear();
			
			myDate.setMonth(document.getElementById(cmdvalue).value);
			myDate.setFullYear(objValue.value);
			
			eMonth = myDate.getMonth();
			eYear  = myDate.getFullYear();
			if(myDate<today)
			{
				strError = "Please select valid expiration date.";
				return strError+"\n";
			}
			
			break; 
		}//case match */
		
		case "notmatch": 
		{ 
			valueOne	=	objValue.value.toUpperCase();;
			valueTwo	=	document.getElementById(cmdvalue).value.toUpperCase();;
			//valueOne	=	valueOne.toUpperCase();
			//valueTwo	=	valueTwo.toUpperCase();
			if(valueOne == valueTwo) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = objValue.name+": Must be same"; 
				}//if 
				
				return strError+"\n";
			} 
				break; 
		}//case match 	
		case "validTime": 
		{
			var timeT = objValue.value; 
			var status = checkTime(timeT)
			if(!status)
			{
				if(!strError || strError.length ==0) 
				{ 
					strError ='Please enter valid Accessibility Details';
				}//if 
				
				return strError+"\n";
			}//if 
			break;
		}		
		case "compairValue": 
		{ 
			if(objValue.value <= document.getElementById(cmdvalue).value) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = "From time should be less than to time "; 
				}//if 
				
				return strError+"\n";
			} 
				break; 
		}//case match 	
		
		case "compareDate": 
		{ 
			str_fromdate = objValue.value
			str_todate = document.getElementById(cmdvalue).value;
			strError = CompareDates(str_fromdate, str_todate);	
			
			if(strError.length != 0) 
			{
				return strError+"\n";
			}
			break; 
		}//case compareDate 	
		///################## for not more than 12 months gap ############
		case "compareDate12": 
		{ 
			str_fromdate = objValue.value
			str_todate = document.getElementById(cmdvalue).value;
			strError = CompareDates12(str_fromdate, str_todate);	
			if(strError.length != 0) 
			{
				return strError+"\n";
			}
			break; 
		}//case compareDate 	
		///#################
		case "valid_url": 
		{ 
			if(!/^(http:\/\/)(?:[\w-]+\.)+[a-z]{2,6}$/.test(objValue.value)) 
			{ 
				if(!strError || strError.length ==0) 
				{ 
					strError = "Invalid Url"; 
				}//if 
				
				return strError+"\n";
			} 
				break; 
		}//case valid_url_without_http 
		
		case "valid_url_without_http": 
		{ 
			//if(!/^(?:[\w-]+\.)+[a-z]{2,6}$/.test(objValue.value)) 
			if(objValue.value	!=	'')
			{				
				var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 
				if(!RegExp.test(objValue.value)) 
				{ 
					if(!strError || strError.length ==0) 
					{ 
						strError = "Invalid Url"; 
					}//if 
					
					return strError+"\n";
				}
			}
				break; 
		}//case valid_url_without_http 			
		
		case "optional_name":
		{
			if(eval(objValue.value.trim().length)!=0)
			{
				return eval(objValue.value.trim().length);
			}
			else return 0;
			break;             
		}//switch 
		
		case "numabovezero":
		{
						
			var charpos = objValue.value.search("[^0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) 
			{ 
				
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": Only digits allowed "; 
					}//if
				
				return strError+"\n";
			}//if
			else
			{
				if(eval(objValue.value.trim()) <= 0)
				{	
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": should be greater than zero "; 
					}//if
					return strError+"\n";
				}
				
			}
			break;
		}
		
		case "is_phone_valid":
		{
			if(objValue.value.length > 0) 
			{ 
			str = objValue.value
			var tmp_strr = str.replace(/-/gi, "");
				if(tmp_strr.length<10)
				{
					if(!strError || strError.length ==0) 
					{ 
						strError = objValue.name+": Only digits allowed "; 
					}//if
					return strError+"\n";
				}
			}
			
		}
		default :
				break;
		
	}
	return ''; 
}


function CheckUncheckAll(fmobj,tabid1,tabid2){
	var TotalBoxes = 0;
	var TotalOn = 0;
	//alert(tabid1);
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name != 'checkall') && (e.type=='checkbox')) {
		  TotalBoxes++;
		  if (e.checked) {
		   TotalOn++;
		  }
		}
	}
	
	if(TotalBoxes>TotalOn)
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name != 'checkall') && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = true;
			}
		}
		//document.getElementById(tabid1).value="Uncheck All";
		//if(tabid2!='')
			//document.getElementById(tabid2).value="Uncheck All";
	}
	else
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name != 'checkall') && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = false;
			}
		}	
		//document.getElementById(tabid1).value="Check All";
		//if(tabid2!='')
			//document.getElementById(tabid2).value="Check All";
		
	}		
}

function CheckUncheckAllc(fmobj){
	var TotalBoxes = 0;
	var TotalOn = 0;
	//alert(tabid1);
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name != 'checkall') && (e.type=='checkbox')) {
		  TotalBoxes++;
		  if (e.checked) {
		   TotalOn++;
		  }
		}
	}
	
	if(TotalBoxes>TotalOn+1)
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name != 'checkall') && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = true;
			}
		}
	}
	else
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name != 'checkall') && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = false;
			}
		}	
		
	}		
}

function CheckUncheckAllcheckbox(fmobj,checkboxname,topcheckbox){
	var TotalBoxes = 0;
	var TotalOn = 0;
	//alert(tabid1);
	for (var i=0;i<fmobj.elements.length;i++) {
		var e = fmobj.elements[i];
		if ((e.name == checkboxname) && (e.type=='checkbox')) {
		  TotalBoxes++;
		  if (e.checked) {
		   TotalOn++;
		  }
		}
	}

	if(TotalBoxes>TotalOn)
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name == checkboxname) && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = true;
			}
		}
	}
	else
	{
		for (var i=0;i<fmobj.elements.length;i++) {
			var e = fmobj.elements[i];
			if ( (e.name == checkboxname || e.name == topcheckbox) && (e.type=='checkbox') && (!e.disabled) ) {
			  e.checked = false;
			}
		}	
		
	}		
}

function CheckUncheckAllcheckbox(theForm,checkbox,checkbox_all)
{
   var set    = document.getElementsByName(checkbox_all);
   checkboxes = document.getElementsByName(checkbox);
	for (var i = 0 ; i<checkboxes.length ; i++ )
	{
		if(checkboxes[i].disabled==false)
			checkboxes[i].checked = set[0].checked;
	}
}

//	Added by Faisal <input type="checkbox" name="category_all" id="category_all" onClick="SetAllCheckBoxes('frm',this.checked);" />

function SetAllCheckBoxes(frm,CheckValue)
{	
	for(i=0;i<document.frm.elements.length;i++)
	{ 
		if((document.frm.elements[i].type=="checkbox"))
		{
			document.frm.elements[i].checked = CheckValue;
		}
	}
}

function check_confirm(frm)
{	
	var flag=0;	
	var clientid;
	clientid="";
	for(i=0;i<document.frm.elements.length;i++)
	{ 
		if((document.frm.elements[i].type=="checkbox") && (document.frm.elements[i].checked ))
		{
			if(clientid=="")
			clientid=document.frm.elements[i].value;
			else
			clientid=clientid + "~" + document.frm.elements[i].value;
			flag=1;
		}
	}
	
	if(flag==0)
	  {
		alert("please select atleast one Checkbox");
		return false;
	  }
	else
	{				
		if (confirm("Do you want to proceed?"))
		{
			return true;			
		}
		else
			return false;
	}	
	
}

function focused(elementId)
{
	re = /fieldbg/gi;
	elementId.className += ' fieldbg';
}

function nonfocused(elementId)
{
	re = /fieldbg/gi;
	elementId.className = elementId.className.replace(re, '');
}

function delete_single(strval)
{
	if(confirm("Are you sure you want to delete selected record?"))
	{
		window.location=strval;
	}
	else
	{
		return false;	
	}
}

function checkTime(s){
  if(s == null) return false;
  if(s.indexOf(":") == -1) return false;
  var spl = s.split(":");
  if(parseInt(spl[0], 10) == 24 && parseInt(spl[1], 10) == 00)
  {
  	return true;
  }
  else
  {
  	return parseInt(spl[0], 10) < 24 && parseInt(spl[1], 10) < 60;
  }
}

function CompareDates(str_fromdate, str_todate)
{
   var str = "";
   var fromDate = (str_fromdate).split("/");
   var toDate = (str_todate).split("/");

   var date1 = new Date(fromDate[2], fromDate[0], fromDate[1]);
   var date2 = new Date(toDate[2], toDate[0], toDate[1]);

   if((Date.parse(date2)-Date.parse(date1)) > 0 )
   {
       str = "To date cannot be greater than from date";
   }
   return str;
}
function CompareDates12(str_fromdate, str_todate)
{
	var str = "";
	var fromDate = (str_fromdate).split("/");
	var toDate = (str_todate).split("/");
	
	var date1 = new Date(fromDate[2], fromDate[0], fromDate[1]);
	var date2 = new Date(toDate[2], toDate[0], toDate[1]);
	var diff = (Date.parse(date1)-Date.parse(date2));
	diff	=	Math.floor(diff/1000/60/60/24/30);
	//if((Date.parse(date1)-Date.parse(date2)) > 79747200000 )
	if(diff>12)
	{
		str = "Date range should not be greater than to 12 months";
	}
	else if((fromDate[0]==toDate[0]) && (fromDate[2] != toDate[2]) )
	{
		str = "Date range should not be greater than to 12 months";
	}
	return str;
}
function uncheckbox(checkbox_id,field_id)
{
	var id;
	idlist	=	"";
	
      for(i=0;i<document.frm.elements.length;i++)
      { 
          if((document.frm.elements[i].type=="checkbox") && (!document.frm.elements[i].checked ) && (document.frm.elements[i].id==checkbox_id))
		  {
		    if(idlist=="")
				idlist	=	document.frm.elements[i].value;
			else
		    	idlist	=	idlist + "|" + document.frm.elements[i].value;
		  }
			  	  
	  }
		document.getElementById(field_id).value = idlist;
	
}

/*
Function : toTimestamp
Purpose  : Convert a date into timestamp. 
*/
function toTimestamp(strDate)
{
	var datum = Date.parse(strDate);
	return datum/1000;
}

/* -------------------------------------------------------------------------------------------
   Function : checkDate
   Purpose  : Checks entered date to be in the format DD/MM/YYYY
   Entry    : field - Text description of the field
	      date  - Actual date entered
   Exit	    : error - Error message (if errored)
	      ffDate - Date object for the date entered
   ------------------------------------------------------------------------------------------ */

function checkDate( field, date )
{
	var error    = "";
	var vdate    = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/((19|20)\d\d)$/;
	
	var monthLen = new Array( 0,31,28,31,30,31,30,31,31,30,31,30,31);
	var ffDate  = new Date();

	var dep = date.match( vdate ) ;

// ---- Check for formatting and month, year and day (approx) are OK  -----
	
	var dep = date.match( vdate ) ;
	if (dep == null)
		error +=  field + " is invalid12\n";
	else
	{
// ----- Now break up the date -----

		var day   = parseInt(dep[1],10);
		var month = parseInt(dep[2],10);
		var year  = parseInt(dep[3],10);

// ----- We need to check the number of days for a leap year -----

		monthLen[2] = (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );

		if (day > monthLen[month])
			error += field + " is invalid\n";
		else
			ffDate.setFullYear( year, month-1, day );
	}

	return {error:error, ffDate:ffDate};
}

function addReqValidation(fieldID,value,msg)
{
	objValue = document.getElementById(fieldID);
	if(objValue.value == value)
	{
		if(!msg || msg.length ==0) 
		{ 
			msg = objValue.name + " : Required Field"; 					
		}
		return msg+"\n";	
	}
	return ''; 
}

function addReqTimeValidation(fieldID1,fieldID2,msg)
{	
	objValue1 = document.getElementById(fieldID1);
	objValue2 = document.getElementById(fieldID2);
	if(objValue1.value == "00")
	{	
		if(!msg || msg.length ==0) 
		{ 
			msg = objValue1.name +" "+objValue2.name+ " : Required Field"; 					
		}
		return msg+"\n";
	}
	return ''; 
}

function alphanumValidation(fieldID,msg)
{
	var symRegex = /[!@#$%^<>\[\]\{\}+=_\/\\.,;:\'\"`^&*~()-]+/;
	objValue = document.getElementById(fieldID).value;
	if(objValue.match(symRegex))
	{
		if(!msg || msg.length ==0)
		{
			msg = "Please enter valid ".objValue1.name;
		}
		return  msg+"\n";
  	}
	return ''; 
}

function nameValidation(fieldID,msg)
{
	var symRegex =/[!@#$%^<>\[\]\{\}+=\_\/\\.,;?:\"`^&*~()]+/;
	objValue = document.getElementById(fieldID).value;
	if(objValue.match(symRegex))
	{
		if(!msg || msg.length ==0)
		{
			msg = "Please enter valid ".objValue1.name;
		}
		return  msg+"\n";
  	}
	return ''; 
}

function phoneValidation(fieldID,msg)
{
	var symRegex =/[a-zA-Z!@#$%^\[\]\{\}+=\_\/\\.,;:\'\"`^&*~]+/;
	objValue = document.getElementById(fieldID).value;
	if(objValue.match(symRegex))
	{
		if(!msg || msg.length ==0)
		{
			msg = "Please enter valid ".objValue1.name;
		}
		return  msg+"\n";
  	}
	return ''; 
}

function decimalValidation(fieldID,msg)
{
	var symRegex =/[a-zA-Z!<>@#$%^\[\]\{\}+=\_\/\\,;:\'\"`^&*~()-]+/;
	objValue = document.getElementById(fieldID).value;
	if(objValue.match(symRegex))
	{
		if(!msg || msg.length ==0)
		{
			msg = "Please enter valid ".objValue1.name;
		}
		return  msg+"\n";
  	}
	return ''; 
}

function less_than_date(date1,date2,msg)
{
	objValue1 = document.getElementById(date1).value;
	if(toTimestamp(objValue1) >= toTimestamp(date2))
	{
		if(!msg || msg.length ==0)
		{
			msg = objValue1+" must be less than today date";
		}
		return  msg+"\n";	
	}
	return ''; 
}

function checkExpDate(month,year,msg)
{
	objValue1 = document.getElementById(month).value;
	objValue2 = document.getElementById(year).value;
	if(objValue1 == "" || objValue2 == "" )
	{
		if(!msg || msg.length ==0)
		{
			msg = "Expiration Date";
		}
		return  msg+"\n";	
	}
	return '';
}

function arrHasDupes( A ) 
{
	var i, j, n;
	n=A.length;
    for (i=0; i<n; i++) 
	{       
		for (j=i+1; j<n; j++) 
		{   
			if (A[i]==A[j]) return A[j];
	}	}
	return '';
}


function multiEmail(email,email_field,msg) 
{	
	var emails = document.getElementById(email_field).value;	
	var emailid = document.getElementById(email).value;	
	var email = emails.split(',');
	i = 0;
	count = 0;
	if(email.length > 1)
	{
		for (var i = 0; i < email.length; i++) 
		{
			if (!validateEmailv2(email[i]))
			{
				i = 1;	
				return msg;	
				break;	
				
			}
			else if(emailid==email[i])
			{	
				i = 1;
				return "You cannot enter your own Email in Friend's Email field.";	
				break;	
			}
			count++;
		}
		
		if(count>10)
		{
			i = 1;
			return "You cannot enter more than 10 Friend's Email.";		
		}
	}
	else
	{
		if (!validateEmailv2(email[i]))
		{
			i = 1;
		}
		else if(emailid==email[i])
		{
			i = 1;
			return "You cannot enter your own Email in Friend's Email field.";
		}
	}
	
	if(arrHasDupes(email) != '')
	{
		i = 1;
		//return "Duplicate email ids found.";		
		return "Duplicate email ids found ("+arrHasDupes(email)+").";
	}
	
	if(i==1)
	{
		return msg;	
	}
	else
	{
		return '';	
	}
} 

function validateExpData(monthid,yearid,msg)
{
	var date=new Date();
	var month = document.getElementById(monthid).value;
	var year = document.getElementById(yearid).value;
	var cur_month = date.getMonth();
	var cur_year  = date.getYear();
	if(cur_year < 1000)
	{
		cur_year += 1900;
	}
	if((month<=cur_month) && (cur_year==year))
	{
		return msg+"\n";
	}
	return '';
}

function validatecc(ccNumb)
{
  // v2.0
	var valid = "0123456789"  // Valid digits in a credit card number
	var len = ccNumb.length;  // The length of the submitted cc number
	var iCCN = parseInt(ccNumb);  // integer of ccNumb
	var sCCN = ccNumb.toString();  // string of ccNumb
	sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
	var iTotal = 0;  // integer total set at zero
	var bNum = true;  // by default assume it is a number
	var bResult = false;  // by default assume it is NOT a valid cc
	var temp;  // temp variable for parsing string
	var calc;  // used for calculation of each digit
	
	// Determine if the ccNumb is in fact all numbers
	for (var j=0; j<len; j++) {
	  temp = "" + sCCN.substring(j, j+1);
	  if (valid.indexOf(temp) == "-1"){bNum = false;}
	}
	
	// if it is NOT a number, you can either alert to the fact, or just pass a failure
	if(!bNum){
	  /*alert("Not a Number");*/bResult = false;
	}
	
	// Determine if it is the proper length 
	if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
	  bResult = false;
	} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
	  if(len >= 15){  // 15 or 16 for Amex or V/MC
		for(var i=len;i>0;i--){  // LOOP throught the digits of the card
		  calc = parseInt(iCCN) % 10;  // right most digit
		  calc = parseInt(calc);  // assure it is an integer
		  iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
		  i--;  // decrement the count - move to the next digit in the card
		  iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
		  calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
		  calc = calc *2;                                 // multiply the digit by two
		  // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
		  // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
		  switch(calc){
			case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
			case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
			case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
			case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
			case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
			default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
		  }                                               
		iCCN = iCCN / 10;  // subtracts right most digit from ccNum
		iTotal += calc;  // running total of the card number as we loop
	  }  // END OF LOOP
	  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
		bResult = true;  // This IS (or could be) a valid credit card number.
	  } else {
		bResult = false;  // This could NOT be a valid credit card number
		}
	  }
	}
	// change alert to on-page display or other indication as needed.
	/*if(bResult) {
	  alert("This IS a valid Credit Card Number!");
	}*/
	if(!bResult){
	  return false;
	}
	  return bResult; // Return the results
}
