
var Allow_Chars="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ,.:;-_+/) (\\&%|@!#*$?><\t\n\r=";

var Company_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ,.:;-_+/) (\\&|@!#*$?><=";

var Place_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ,.:;-_+/) (\\&|@!#*$?><=";

var Name_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ .";

var Name_Only = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";

var Password_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var Alpha_Numeric_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var Folder_Chars = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ,:-_+) (\\&@!#$=";

var known_Doms_Pat=new 	RegExp("^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|COM|NET|ORG|EDU|INT|MIL|GOV|ARPA|BIZ|AERO|NAME|COOP|INFO|PRO|MUSEUM)$");

var IP_Domain_Pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;

var Date_Format_Str="dd/mm/yyyy"

var Date_WT_Format_Str="dd/mm/yyyy hh:mm"

function Is_Empty(str)
{ 
  	return ((str == null) || (str.length == 0))
}

function Is_Whitespace (str)
{ 
	var whitespace = " \t\n\r";
  	var i; 
  	if (Is_Empty(str)) return true;
  	for (i = 0; i < str.length; i++)
  	{
    	var c = str.charAt(i);
    	if (whitespace.indexOf(c) == -1) return false;
  	}
  	return true;
}

function Trim_Textbox(str)
{ 
  	while(''+str.charAt(0)==' ')
  	    str=str.substring(1,str.length);
    while(''+str.charAt(str.length-1)==' ')
        str=str.substring(0,str.length-1);
        
  	return str;
}

function Check_Chars(str, bag)
{
  	var i;
  	for (i = 0; i < str.length; i++)
  	{ 
    	var c = str.charAt(i);
    	if (bag.indexOf(c) == -1)	return false;
  	}
  	return true;
}

function Check_Space(str, msg)
{
  	var i;
  	for (i = 0; i < str.length; i++)
  	{ 
    	if (str.charAt(i) == " ") return false;    	
  	}
  	return true;
}

function Is_CharsInBag(str, bag, msg)
{
  	var i;
  	for (i = 0; i < str.length; i++)
  	{ 
    	var c = str.charAt(i);
    	if (bag.indexOf(c) == -1){
    		alert(msg +" can contain only the following characters \n"+ bag +".");
    	 	return false;
    	}
  	}
  	return true;
}

function Is_Max_Length(str, Len, msg)
{
  	var sLength = str.length;
  	if( sLength > Len ) {
  		alert(msg +" can contain maximum of "+ Len +" characters only.");
  		return false;
  	}
  	return true;
}

function Is_Max_Length_Num(str, Len, msg)
{
  	var sLength = str.length;
  	if( sLength > Len ) {
  		alert(msg +" can contain maximum of "+ Len +" digits only.");
  		return false;
  	}
  	return true;
}

function Round_Accuracy(num, acc){
	var temp_val=eval(num);		
	return (temp_val.toFixed(acc));	
}

function check_Int(evt){
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        status = "This field accepts numbers only.";
        return false;
    }
    status = "";
    return true;
}

function Is_Number(str, con, msg){
	var i;
	var temp_count;
	var sLength = str.length;
	if(con=="DEC"){	
		if(!Check_Chars(str,"0123456789.")) {
			alert(msg +" can contain only numbers.");
			return false;		
		}
		temp_count=0;
		for (i = 0; i < sLength; i++)
		{			
			if(str.charAt(i)==".") temp_count=temp_count+1;			
		}		
		if(temp_count>1)  {
			alert(msg +" should not contain two dots.");
			return false;						
		}
		if(str.charAt(sLength-1)==".") {
			alert(msg +" should not contain dot at the end.");
			return false;						
		}
		if(isNaN(str)){
			alert(msg +" can contain only numbers.");
			return false;
		}
	} else if(con=="INT"){	
		if(!Check_Chars(str,"0123456789")) {
			alert(msg +" can contain only numbers.");
			return false;			
		}
	}		
	return true;
}

function Is_Accont_No(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,Alpha_Numeric_Chars)) {
		alert(msg +" can contain only these characters "+ Alpha_Numeric_Chars +".");
		return false;		
	}
	if(sLength > 20) {
		alert(msg +" can contain maximum of 20 characters only.");
		return false;	
	}
	if(sLength < 2) {
		alert(msg +" should contain minimum of 2 characters.");
		return false;
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength)  {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Card_No(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,Alpha_Numeric_Chars)) {
		alert(msg +" can contain only these characters "+ Alpha_Numeric_Chars +".");
		return false;		
	}
	if(sLength > 20) {
		alert(msg +" can contain maximum of 20 characters only.");
		return false;	
	}
	if(sLength < 8) {
		alert(msg +" should contain minimum of 10 characters.");
		return false;
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_File_Type(fileName, fileTypes) 
{
	dots = fileName.split(".")
	file_name = dots[dots.length-1];
	
	if (fileTypes.search(file_name) != -1) {
		return true;
	} else {
		alert("Please upload only files that end in \n\n" + fileTypes + "\n\nPlease select a new file and try again.");
		return false
	}		
}

function Is_Folder_Path(filepath, msg) 
{
    var fLength = filepath.length;
    
    if (!Check_Chars(filepath,Folder_Chars)) {
		alert(msg +" can contain only these characters "+ Folder_Chars +".");
		return false;		
	}
    
    if(filepath.charAt(fLength-1)!="\\"){
        alert(msg +" Should end with forward slash.");
		return false;					
	}
	return true;			
}

function Is_Phone_CTRY(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;		
		alert(msg +" can contain only numbers.");
	}
	if(sLength > 4) {
		alert(msg +" can contain maximum of 4 characters only.");
		return false;	
	}
	if(sLength < 2) {
		alert(msg +" should contain minimum of 2 characters.");
		return false;
	}
	if(str.charAt(0) == "0" && str.charAt(1) == "0") {
		alert(msg +" should not start with two zero.");
		return false;
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength)  {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Phone_AREA(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;		
	}
	if(sLength > 6) {
		alert(msg +" can contain maximum of 6 characters only.");
		return false;	
	}
	if(sLength < 2) {
		alert(msg +" should contain minimum of 2 characters.");
		return false;
	}
	if(str.charAt(0) == "0" && str.charAt(1) == "0") {
		alert(msg +" should not start with two zero.");
		return false;
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Phone_NUM(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;		
	}
	if(sLength > 10) {
		alert(msg +" can contain maximum of 10 characters only.");
		return false;
	}
	if(sLength < 5) {
		alert(msg +" should contain minimum of 5 characters.");
		return false;
	}
	if(str.charAt(0) == "0") {
		alert(msg +" should not start with zero.");
		return false;
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Phone_EXT(str, msg)
{
	var temp_count;
	var sLength = str.length;
	if (!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;		
	}
	if(sLength > 8) {
		alert(msg +" can contain maximum of 8 characters only.");
		return false;
	}
	if(sLength < 2) {
		alert(msg +" should contain minimum of 2 characters.");
		return false;
	}
	if(str.charAt(0) == "0" && str.charAt(1) == "0") {
		alert(msg +" should not start with two zero.");
		return false;	
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Pin(str, msg)
{
	var sLength=str.length;
	if(!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;
	}
	if(sLength > 8) {
		alert(msg +" can contain maximum of 8 characters only.");
		return false;
	}
	if(sLength < 5) {
		alert(msg +" should contain minimum of 5 characters.");
		return false;
	}
	if(str.charAt(0) == "0") {
		alert(msg +" should not start with zero.");
		return false;	
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Is_Mobile(str, msg)
{
	var sLength=str.length;
	if(!Check_Chars(str,"0123456789")) {
		alert(msg +" can contain only numbers.");
		return false;
	}
	if(sLength != 10) {
		alert(msg +" should contain 10 numbers.");
		return false;	
	}
	if(str.charAt(0) == "0") {
		alert(msg +" should not start with zero.");
		return false;	
	}
	temp_count=0;
	for (i = 0; i < str.length; i++)
	{
		if(str.charAt(i)!="0"){
			return true;					
		} else {
			temp_count=temp_count+1;
		}				
	}		
	if(temp_count==sLength) {
		alert(msg +" should not contain all characters zero.");
		return false;	
	}
	return true;
}

function Compare_Date(dvalue1,dvalue2,type)
{
	var day1,day2,month1,month2,year1,year2,hr1,hr2,mnt1,mnt2,ch_Flag;
	
	if(Date_Format_Str=="mm/dd/yyyy")
	{   
	    day1=dvalue1.substring(3,5);
	    month1=dvalue1.substring(0,2);	    
	} else {
	    day1=dvalue1.substring(0,2);
	    month1=dvalue1.substring(3,5);
	}
	year1=dvalue1.substring(6,10);
	if(dvalue1.length != 16){
		hr1=00;
		mnt1=00;
		ch_Flag="DONTCHECK";
	}else{
		hr1=dvalue1.substring(11,13);
		mnt1=dvalue1.substring(14,16);
	}
	
	if(Date_Format_Str=="mm/dd/yyyy")
	{   
	    day2=dvalue2.substring(3,5);
	    month2=dvalue2.substring(0,2);	    
	} else {
	    day2=dvalue2.substring(0,2);
	    month2=dvalue2.substring(3,5);
	}	
	year2=dvalue2.substring(6,10);
	if(dvalue2.length != 16){
		hr2=00;
		mnt2=00;
		ch_Flag="DONTCHECK";		
	}else{
		hr2=dvalue2.substring(11,13);
		mnt2=dvalue2.substring(14,16);
	}
	
	if(ch_Flag=="DONTCHECK"){
		if(type=="EQ"){
 			if((year1 != year2)||(month1 != month2)||(day1 != day2)) 
 				return false; 			
		}else if((type=="LEQ")||(type=="LT")){		
			if((type=="LT")){
				if((year1 == year2)&&(month1 == month2)&&(day1 == day2)) 					
					return false; 				
			}
 			if(year1 > year2)
 				return false;
	 		if((year1 == year2)&&(month1 > month2))
 				return false; 
 			if((year1 == year2)&&(month1 == month2)&&(day1 > day2))
 				return false; 
		}else{
			return false; 
		}
	}else{
		if(type=="EQ"){
 			if((year1 != year2)||(month1 != month2)||(day1 != day2)||(hr1 != hr2)||(mnt1 != mnt2))
				return false; 
		}else if((type=="LEQ")||(type=="LT")){		
			if((type=="LT")){
				if((year1 == year2)&&(month1 == month2)&&(day1 == day2)&&(hr1 == hr2)&&(mnt1 == mnt2))
					return false; 
			}
 			if(year1 > year2)
 				return false;
	 		if((year1 == year2)&&(month1 > month2))
 				return false; 
 			if((year1 == year2)&&(month1 == month2)&&(day1 > day2))
 				return false; 
	 		if((year1 == year2)&&(month1 == month2)&&(day1 == day2)&&(hr1 > hr2))
 				return false; 
 			if((year1 == year2)&&(month1 == month2)&&(day1 == day2)&&(hr1 == hr2)&&(mnt1 > mnt2))
				return false; 
		}else{
			return false; 
		}
	}
	
 	return true; 
}

function Leap_Year(myyear) 
{
	if (myyear % 100 == 0) 
	{
		if (myyear % 400 == 0) 
			return true;
		else {
			if ((myyear % 4) == 0) 
			return true; 
		}
	}

	return false;
}


function Check_Date(dvalue,type,msg)
{
	var year1,month1,day1,Hr1,Mnt1;
	
	if (type=="WT"){
		
		if(dvalue.length !=16){ 
			alert(msg +" should be in ("+ Date_WT_Format_Str +") format only.");
			return false;
		}
		if(dvalue.substring(2,3)!="/" && dvalue.substring(5,6)!="/") {		
			alert(msg +" should be in ("+ Date_WT_Format_Str +") format only.");
			return false;
		}
		if(dvalue.substring(13,14)!=":") {
			alert(msg +" should be in ("+ Date_WT_Format_Str +") format only.");
			return false;
		}
		
		if(Date_Format_Str=="mm/dd/yyyy")
	    {   
	        day1=dvalue.substring(3,5);
		    month1=dvalue.substring(0,2);		
	    } else {
	        day1=dvalue.substring(0,2);		
	        month1=dvalue.substring(3,5);		    
	    }        
		year1=dvalue.substring(6,10);
		Hr1=dvalue.substring(11,13);
		Mnt1=dvalue.substring(14,16);
		    
	}else{
		
		if(dvalue.length !=10) {
			alert(msg +" should be in ("+ Date_Format_Str +") format only.");
			return false;
		}
		if(dvalue.substring(2,3)!="/" && dvalue.substring(5,6)!="/") {
			alert(msg +" should be in ("+ Date_Format_Str +") format only.");
			return false;
		}
		if(Date_Format_Str=="mm/dd/yyyy")
	    {   
	        day1=dvalue.substring(3,5);		    
	        month1=dvalue.substring(0,2);			        
	    } else {
	        day1=dvalue.substring(0,2);		
	        month1=dvalue.substring(3,5);		    
	    }				
		year1=dvalue.substring(6,10);
		Hr1=00;
		Mnt1=00;
	}	
	
	if(isNaN(day1))
	{
		alert("Give valid Day for "+ msg +".");
		return false;
	}
	
	if(isNaN(month1))
	{
		alert("Give valid Month for "+ msg +".");
		return false;
	}
	
	if(isNaN(year1))
	{
		alert("Give valid Year for "+ msg +".");
		return false;
	}
	
	if(isNaN(Hr1))
	{
		alert("Give valid Hour for "+ msg +".");
		return false;
	}
	
	if(isNaN(Mnt1))
	{
		alert("Give valid Minutes for "+ msg +".");
		return false;
	}
	
	if(month1<1 || month1>12 || year1<1900 || year1>2100) {	    
		alert("Give valid month range and year range for "+ msg +".");
		return false;
	}
    
  	if ((month1 == 01 || month1 == 03 || month1 == 05 || month1 == 07 || month1 == 08 || month1 == 10 || month1 == 12) && (day1 > 31 || day1 < 1)) {
		alert("Give valid date range for "+ msg +".");
		return false;
	}
	
	if ((month1 == 4 || month1 == 06 || month1 == 09 || month1 == 11) && (day1 > 30 || day1 < 1)) {
		alert("Give valid date range for "+ msg +".");
		return false;
	}
	
	if(month1 == 02)
	{
		if (Leap_Year(year1) == true) 
		{
			if (day1 > 29) {
				alert("Give valid date range for "+ msg +".");		
				return false;
			}
		}	
		else
		{
			if (day1 > 28) {
				alert("Give valid date range for "+ msg +".");		
				return false;
			}
		}
	}
	
	if ((Hr1 > 23) || (Mnt1 >59) || (Hr1 < 0) || (Mnt1 < 0)) {	
		alert("Give valid time range for "+ msg +".");	
		return false;
	}
	   
	return true;	
}

function Is_Email(emailstr, msg)
{
  var emailpattern = new RegExp("^(.+)@(.+)$");
  var matcharray = emailstr.match(emailpattern);
  
  if ( matcharray == null)
  {
    alert("Invalid "+ msg +".");    
    return false;
  }

  var user = matcharray[1];
  var domain = matcharray[2];
  if (Check_Valid_Char(user))
  {
    var domarray = domain.match(IP_Domain_Pattern);
    if (domarray == null)
    {
			if ( domain.indexOf(".")!= -1)
			{
				for(var i=0; i < domain.length ; i++)
				{
					if( domain.charAt(i)=="." && domain.charAt(i+1)==".")
					{
						alert(msg +" should not contain two sucessive dots.");
						return false;
					}
				}
				if(domain.charAt(0)!=".")
				{
					var domarr = domain.split(".");
					var len = domarr.length;
					var fullset = Allow_Chars;
					if (len > 1)
					{
						for(var i=0; i < len ; i++)
						{
							var strlen = domarr[i].length;
							if (((Allow_Chars.indexOf(domarr[i].charAt(0)))!=-1)&&(Allow_Chars.indexOf(domarr[i].charAt(strlen-1))!=-1))
							{
								for( var j =0; j < strlen ;j++)
								{
									var c = domarr[i].charAt(j);
									if( fullset.indexOf(c) == -1)
									{
									alert("Domain part of "+ msg +" can contain only the following characters \n" + fullset);
									return false;
									}
								}
							}
							else
							{
								alert("Domain part of "+ msg +" should start and end with an alphanumeric.");
								return false;
							}
						}
						if (domarr[len-1].length!=2 && domarr[len-1].search(known_Doms_Pat)==-1) 
						{
							alert(msg +" must end in a well-known domain or two letter country.");
							return false;
						}
						else
						{
							return true;
						}
					}
					else
					{
						alert(msg +" is missing a hostname.");
						return false;
					}
				}
				else
				{
					alert("Domain part of "+ msg +" should not start with a dot.");
					return false;
				}
			}
			else
			{
				alert(msg +" is invalid.");
				return false;
			}
		}
		else
		{
			for (var i=1;i<=4;i++)
			{
				if (domarray[i]>255) 
				{
					alert(msg +" is invalid.");
					return false;
				}
			}
			return true;
		}
	}	
	else
	{		
		return false;
	}	
}

function Is_Website(domain, msg)
{
	var domarray = domain.match(IP_Domain_Pattern);
	if (domarray == null)
	{
		if ( domain.indexOf(".")!= -1)
		{
			for(var i=0; i < domain.length ; i++)
			{
				if( domain.charAt(i)=="." && domain.charAt(i+1)==".")
				{
					alert(msg +" should not contain tow sucessive dots");
					return false;
				}
			}
			if(domain.charAt(0)!=".")
			{
				var domarr = domain.split(".");
				var len = domarr.length;
				var fullset = Allow_Chars;
				if (domarr[0] == "www" || domarr[0] == "WWW")
				{
					if (len > 2)
					{
						for(var i=1; i < len ; i++)
						{
							var strlen = domarr[i].length;
							if (((Allow_Chars.indexOf(domarr[i].charAt(0)))!=-1)&&(Allow_Chars.indexOf(domarr[i].charAt(strlen-1))!=-1))
							{
								for( var j =0; j < strlen ;j++)
								{
									var c = domarr[i].charAt(j);
									if( fullset.indexOf(c) == -1)
									{
										alert(msg +" can contain the following characters \n" + fullset);
										return false;
									}
								}
							}
							else
							{
								alert(msg +" should start and end with an alphanumeral");
								return false;
							}
						}
						if (domarr[len-1].length!=2 && domarr[len-1].search(known_Doms_Pat)==-1) 
						{
							alert(msg +" must end in a well-known domain or two letter" + "country.");
							return false;
						}
						else
						{
							return true;
						}
					}
					else
					{
						alert(msg +" is missing a hostname!");
						return false;
					}
				}
				else
				{
					alert(msg +" missing WWW");
					return false;
				}
			}
			else
			{
				alert(msg +" should not start with a dot.");
				return false;
			}
		}
		else
		{
			alert(msg +" Domain name is mising");
			return false;
		}
	}
	else
	{
		for (var i=1;i<=4;i++) 
		{
			if (domarray[i]>255) 
			{
				alert(msg +" Destination IP address is invalid.");
				return false;
			}
		}
		return true;
	}
}

function Check_Valid_Char(name)
{
	var strlen = name.length;
	var fullset = Allow_Chars;	
	if (((Allow_Chars.indexOf(name.charAt(0)))!=-1)&&(Allow_Chars.indexOf(name.charAt(strlen-1))!=-1))
	{
		for( var i =0; i < strlen ;i++)
		{
			var c = name.charAt(i);
			if( fullset.indexOf(c) == -1)
			{
				alert(msg +" can contain only the following characters \n" + fullset);
				return false;
			}
			else
			{
				if (c==".")
				{
					if ((Allow_Chars.indexOf(name.charAt(i-1))==-1) || (Allow_Chars.indexOf(name.charAt(i+1))==-1))
					{
						alert("A dot should precede and succeed by any alphanumeric in "+ msg +".");
						return false;
					}
				}
			}
		}
		return true;
	}
	else
	{
		alert(msg +" field Should start and end with an alphanumeric.");
		return false;
	}
}




