function acceptFileType(filetype,acceptTypes)
{
	var temp = new Array();
	filetype = filetype.toLowerCase();	
	var status = false;
	temp = acceptTypes.split(',')
	for(i=0;i<temp.length;i++)
	{
		if(filetype==temp[i])
		{
			status = true;
			i=temp.length;
		}
	}
	return status;
}

// check to see if input is alphanumeric
function IsNumeric(sText)
{	

	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char; 
	var firstval = sText.charAt(0) 
	
	sText = trimContent(sText);
	if(sText=='')
	{
		return true
	}
	else
	{
		if(firstval == 0)
		{
			IsNumber = false;
		}
		else
		{
			for (i = 0; i < sText.length && IsNumber == true; i++) 
			{ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) 
				{
				IsNumber = false;
				}
			}
		}
		return IsNumber;
	}
	/*val = trimContent(val);
	if(val='')
	return true
	else
	{		
		if (val.match(/^[0-9]+$/))
		{
		return true;
		}
		else
		{
		return false;
		}
	}*/
}

// to validate gsm for the given sText
function IsGSM(sText)
{
	//alert("isGSM");
	sText = trimContent(sText);	
	var ValidChars = "+(),-/0123456789 ";
	var IsNumber=true;
	var Char; 
	firstval = sText.charAt(0) 
	
		for (i = 0; i < sText.length && IsNumber == true; i++) 
		{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
			{
			IsNumber = false;
			}
		}
	
	return IsNumber;
}


//to validate SSN for the given sText
function IsSsn(sText)
{
	//alert("isssn");
	sText = trimContent(sText);
	var ValidChars = "0123456789-";
	var IsNumber=true;
	var Char;
	firstval = sText.charAt(0)


	for (i = 0; i < sText.length && IsNumber == true; i++)
	{
		Char = sText.charAt(i);
		if (ValidChars.indexOf(Char) == -1)
		{
			IsNumber = false;
		}
	}
	return IsNumber;
}

function IsEmail(str) {
	//return (str.lastIndexOf(".") > 2) && (str.indexOf("@") > 0) && (str.lastIndexOf(".") > (str.indexOf("@")+1)) && (str.indexOf("@") == str.lastIndexOf("@"));
		//var validRegExp=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z]+)*\.[A-Za-z]+$/;
		//RFC 2822 token definitions for valid email - only used together to form a java Pattern object: 
		
	str = trimContent(str);	
	//remove this code	
	if(trimContent(str)=="")
	{
	return true;
	}
	
	var sp = "!#$%&'*+-/=?^_`{|}~"; 
	var atext = "[a-zA-Z0-9" + sp + "]"; 
	var atom = atext + "+"; //one or more atext chars 
	var dotAtom = "\\." + atom; 
	var localPart = atom + "(" + dotAtom + ")*"; //one atom followed by 0 or more dotAtoms. 
	//RFC 1035 tokens for domain names: 
	var letter = "[a-zA-Z]"; 
	var letDig = "[a-zA-Z0-9]";
	var letDigHyp = "[a-zA-Z0-9-]"; 
	var rfcLabel = letDig + letDigHyp + "{0,61}" + letDig;
	//var domain = rfcLabel + "(\\." + rfcLabel + ")*\\." + letter + "{2,6}"; 
	var domain = rfcLabel + "{0,61}" + "(\\." + rfcLabel + ")*\\." + letter + "{2,6}"; 

	//Combined together, these form the allowed email regexp allowed by RFC 2822: 
	var addrSpec = "^" + localPart + "@" + domain + "$"; 
	
	var re = new RegExp(addrSpec);
	if (str.search(re) == -1) 
	{
		return false;
	} 
	else
	{
		return true;
	}
} 

//this is used in common validation. to check whether the given text only alphabets
function isAlphabetic(val)
{
	if (val.match(/^[a-zA-Z ]+$/))
	{
		return true;
	}
	else
	{
		return false;
	} 
}
function validateName(name)
{
	name = trimContent(name);
	if(name=="")
	{
		return true
	}
	else
	{
		// to validate Name 
	var Reg_first= /[0-9\(\)\<\>\,\;\:\\\/\"\[\]\ \`\~\!\@\#\$\%\^\&\*\_\-\+\+\\\|\{\}\.\<\>\?]/;
	var Reg_middle= /[\(\)\<\>\,\;\:\\\/\"\[\]\`\~\!\#\$\%\^\&\*\+\+\\\|\{\}\<\>\?\@]/;
	var Reg_last=  /[\(\)\<\>\,\;\\\/\"\[\]\ \`\~\!\@\#\$\%\^\&\*\_\-\+\+\\\|\{\}\<\>\?]/; 
	var first=name.charAt(0);
	var middle=name.substring(1,(name.length-1));
	var last=name.charAt(name.length-1);
	if((Reg_first.test(first))||(Reg_middle.test(middle))||(Reg_last.test(last))||(name.length==0))
		return false; 
	else
		return true;
	}
	
}

function minValidate(value,length)
{    
	value = trimContent(value);
	if(value.length < length)
		return false;
	else
		return true;
}
function maxValidate(value,len)
{
	value = trimContent(value);
	if(value.length > length)
		return false;
	else
		return true;
}
function isURL(value){

	var pattern = /(^(ftp|http|https):\/{2}w{3}[0-9]{0,}\.([-a-zA-Z0-9]*\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z]{2,}))|(^w{3}[0-9]{0,}\.([-a-zA-Z0-9]*\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z]{2,}))/
	value = trimContent(value);
	var patternWWW = /(^(ftp|http|https):\/{2}([-a-zA-Z0-9]{1,}\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z]{2,}))|(^w{3}[0-9]{0,}\.([-a-zA-Z0-9]*\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z]{2,}))/;
	if(value != '')
	{
		if(value != 'http://')
		{
			if(pattern.test(value))
			{
				return true;
			}
			else
			{
				if(patternWWW.test(value))
				{
					return true;
				}
				else
				{
					
					return false;
				}
			}
		}
		return true;
	}

	return true;
	
	
}
function IsVisible(object)
{
   if(object.style.display == 'none' || object.disabled ==  false)
		return true;
	else
		return false;
}
var errMsg = '';
function validation()
{		
   
	errMsg = '';
	var object = document.getElementsByTagName('INPUT');		
	for(var i=0; i<object.length; i++)
	{
		//if(object[i].hasAttribute('validate'))
		if(object[i].getAttribute('validate') != null)
		{
			errMsg +=doValidation(object[i]);
		}
	}			
		
	return errMsg;
}

var doValidate = true;
function doValidation(object)
{
  
	var err = '';
	var attr = object.getAttribute('validate');
	var conditions	= attr.split('&');	
	var errMsgs		= object.getAttribute('errmsg').split('&');
	
	for(var c=0; c < conditions.length; c++)
	{
	   	if(conditions[c] == 'visible')		
			if(!IsVisible(object))
			{			
				doValidate = false;
				break;		
			}			
					
		if(doValidate)
		{
		   
			var valid = validate(conditions[c],object.value,object)
			
			if(!valid)							
				err += errMsgs[c] + "\n";				
		}
	}
	doValidate = true;	
	return err;
}
function validate(condition,value,object)
{  
	var cond = condition.split(':');
    
	switch(cond[0])
	{
		case('email'):
			if(!IsEmail(value))									
				return false;
			break;
		case('gsm'):
			if(!IsGSM(value))									
				return false;
			break;					
		case('ssn'):
			if(!IsSsn(value))									
				return false;
			break;
		case('name'):
			if(!validateName(value))									
				return false;
			break;
		case('number'):
			//if(!isNaN(value))
			if(!IsNumeric(value))
				return false;
			break;
		case('float'):
			if(!isFloat(value))
				return false;
			break;
		case('url'):	
		    if(!isURL(value))	
				return false;
			break;
		case('min'):
			if(!minValidate(value,cond[1]))
				return false;
			break;
		case('max'):
			if(!maxValidate(value,cond[1]))
				return false;
			break;
		case('trim'):
			object[i].value = trimContent(value);
			return true;
			break;
		
	}
	return true;	
}


//trim left and right side blank spaces
function trimContent(value)
{
	return value.replace(/^\s+|\s+$/g,'')
}

//adding maxlength attribute
function ismaxlength(obj)
{
	var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
	if (obj.getAttribute && obj.value.length>mlength)
	obj.value=obj.value.substring(0,mlength);
}

//check for floating point value
function isFloat(val)
{
	val = trimContent(val);
	var floatTest =/^((\d+(\.\d*)?)|((\d*\.)?\d+))$/
	if(!floatTest.test(val))
	{
		return false;
	}
	else
	{
		return true;
	}
}

//check for valid date
function isValidDate(obj)
{
var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
if(!objRegExp.test(obj.value))
    return false; //doesn't match pattern, bad date
  else
	return true;
}

//filltering text field
function doChangeFilter(sender,table,cell)
 {
        var filterStore = new Array();
		var sText = sender.value.toLowerCase();
		if(cell==0)
		{
		document. cookie="Cname="+sender.value
		}
	    
		if(cell==1)
		{
		document. cookie="loc="+sender.value
		}
	    
		filterStore[cell] = sText;
		var hideRow;
	    
		for (var i =2 ; i < table.rows.length;i++) 
		{
		hideRow=false;
		var cels = table.rows[i].getElementsByTagName('td');
		
		if(cels.length > 0 && table.rows[i].getAttribute('class')!='dontinclude')
		{      
			for (var j=0;j<filterStore.length;j++) 
			{
				if (filterStore[j]) 
				{
					var cels = table.rows[i].getElementsByTagName('td');
					var contentValue = '';			
					if(cels[j] != null)
					{				
						for( var c=0; c<cels[j].childNodes.length; c++)						
							contentValue += ( cels[j].childNodes[c].innerHTML == null)?cels[j].childNodes[c].nodeValue : cels[j].childNodes[c].innerHTML;											
						if (contentValue.toLowerCase().indexOf(filterStore[j]) < 0) 
						{
							hideRow = true;
							break;
						}
					}
					else
					{
						hideRow = true;
						break;
					}
				}           
			}

		}       
		if (hideRow)
		{
			table.rows[i].style.display = 'none';
	    
		} else 
		{
			table.rows[i].style.display = '';
	    
		}
	}    
  } 

  
 /*
 //this is not in use, only for reference
function doChangeFilter(filter,cell) {
	filter = filter.toLowerCase();
	var table = document.getElementById('olist');
	for (var i=3 ; i<table.rows.length; i++) {
		var show = (ReplaceTags(table.rows[i].cells[cell].innerHTML).toLowerCase().indexOf(filter) > -1);
		table.rows[i].style.display = (show)?'':'none';
	}
}*/