/*
	VALIDATION TYPE
	================
		email			Whether field is valid email or not
		blank	 	  	Field must not be blank 
		blank_email		field must be email type as well as mandatory 
		numeric			field must have numeric value
		blank_numeric	field must be numeric as well as numeric
		http			url check if value exist
		blank_http		must have value and valid url 
*/

function validate_form(frm_name)   // FORM VALIDATION FUNCTION
{
	var alert_str="";
	var field_name="";
	var temp_ele,temp_flag;
	temp_flag=0;

	for(var i=0;i < document.forms[frm_name].length;i++)
	{
		//var re = new RegExp ('_', 'gi') ;
		//var field_name = document.forms[frm_name].elements[i].name.replace(re,' ');
		//field_name = word_capitalize(field_name);
		temp_ele=document.forms[frm_name].elements[i];
		//alert(temp_ele.type);
		switch(document.forms[frm_name].elements[i].id)
		{
			case "email" : 
				if(check_blank(document.forms[frm_name].elements[i].value)) 
				{
					if(!isValidMail(document.forms[frm_name].elements[i].value)) 
					{
						field_name = word_capitalize(document.forms[frm_name].elements[i].name);
						alert_str+=field_name+"  : Invalid Email\n";
						if(temp_flag==0)
						{
							temp_ele.focus();
							temp_flag=1;
						}
					}
				}
				break;
			
			case "blank" : 
				if(!check_blank(document.forms[frm_name].elements[i].value)) 
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					//alert(temp_ele.type);
					if(temp_ele.type=="select-one")
						alert_str+="Please select the value for "+field_name+"\n";	
					else
						alert_str+="Please enter a value in "+field_name+"\n";	
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;
			
			case "list" : 
				if(document.forms[frm_name].elements[i].value=="-1") 
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					//alert(temp_ele.type);
						alert_str+="Please select the value for "+field_name+"\n";	
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;

				
			case "blank_email" : 
				if(!check_blank_email(document.forms[frm_name].elements[i].value)) 
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					alert_str+=field_name+" : Blank / Invalid \n"; 
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;
				
			case "numeric" : 
				if(!check_numeric(document.forms[frm_name].elements[i].value)) 
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					alert_str+=field_name+"  : Should Be Numeric\n"; 
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;
			
			case "blank_numeric" : 
				if(!check_blank_numeric(document.forms[frm_name].elements[i].value)) 
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					alert_str+=field_name+" : Blank / Not Numeric\n"; 
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;
			
			case "http" : 
				if(check_blank(document.forms[frm_name].elements[i].value)) 
				{
					if(!isValidWebname(document.forms[frm_name].elements[i].value)) 
					{
						field_name = word_capitalize(document.forms[frm_name].elements[i].name);
						alert_str+=field_name+" : Invalid url\n"; 
						if(temp_flag==0)
						{
							temp_ele.focus();
							temp_flag=1;
						}
					}
				}
			break;

			case "blank_http" : 
				if(check_blank(document.forms[frm_name].elements[i].value)) 
				{
					if(!isValidWebname(document.forms[frm_name].elements[i].value)) 
					{
						field_name = word_capitalize(document.forms[frm_name].elements[i].name);
						alert_str+=field_name+" : Invalid url\n"; 
						if(temp_flag==0)
						{
							temp_ele.focus();
							temp_flag=1;
						}
					}
				}
				else
				{
					field_name = word_capitalize(document.forms[frm_name].elements[i].name);
					//alert(temp_ele.type);
					alert_str+="Please enter a value in "+field_name+"\n";	
					if(temp_flag==0)
					{
						temp_ele.focus();
						temp_flag=1;
					}
				}
				break;
		}
	}
	if(alert_str)
		alert_str="Check Following :\n\n"+alert_str;
	return(alert_str);
}

function check_blank(str)
{
	var re = new RegExp (' ', 'gi') ;
	var newstr = str.replace(re, '') ;
	if(newstr.length==0)
		return(false);
	else
		return(true);
}

function check_numeric ( n ) 
{
	var v = 1.0 * n ;
	if ( v == 0.0 || isNaN(v) )
		return false;
	else
		return true;
}

function check_blank_numeric(str)
{
	if(!check_blank(str))
		return(false);
	else if(!check_numeric(str))
		return(false);
	else
		return(true);
}

function check_blank_email(str)
{
	if(!check_blank(str))
		return(false);
	else if(!isValidMail(str))
		return(false);
	else
		return(true);
}

function isValidMail(mail)
{
	m=new String(mail);
	var mailLength=m.length
	var totalDOT=0
	var totalROUTE=0
	var totalSPACE=0

	// Should not beging with a '.' or '@'
	if(m.charAt(0)=='@' || m.charAt(0) == '.')
	{	return false;		}

	// 
	for(ctr=1;ctr<=mailLength;ctr++)
	{	if (m.charAt(ctr)=='@')	{	totalROUTE++;	}	
		if (m.charAt(ctr)=='.')	{	totalDOT++;	}	
		if (m.charAt(ctr)==' ') {	totalSPACE++;	}
	}

	if (totalROUTE!=1)			//Checking for Multiple @
	{	return false;		}
	if(totalDOT<1)				//Checking for Route Domain
	{	return false;		}
	if(totalSPACE>0)			//No Embeded Space
	{	return false;		}
	
	//Checking for Invalid Characters

	for(ctr=0;ctr<=mailLength;ctr++)
	{	
		if (m.charAt(ctr)=='`')	return false;	
		else if (m.charAt(ctr)=='!')	return false;	
		else if (m.charAt(ctr)==' ') 	return false;	
		else if (m.charAt(ctr)=='#')	return false;	
		else if (m.charAt(ctr)=='$')	return false;	
		else if (m.charAt(ctr)=='%')	return false;	
		else if (m.charAt(ctr)=='^')	return false;	
		else if (m.charAt(ctr)=='&')	return false;	
		else if (m.charAt(ctr)=='*')	return false;	
		else if (m.charAt(ctr)=='(')	return false;	
		else if (m.charAt(ctr)==')')	return false;	
		else if (m.charAt(ctr)=='+')	return false;	
		else if (m.charAt(ctr)=='=')	return false;	
		else if (m.charAt(ctr)=='|')	return false;	
		else if (m.charAt(ctr)=='\\')	return false;	
		else if (m.charAt(ctr)=='{')	return false;	
		else if (m.charAt(ctr)=='}')	return false;	
		else if (m.charAt(ctr)=='[')	return false;	
		else if (m.charAt(ctr)==']')	return false;	
		else if (m.charAt(ctr)==':')	return false;
		else if (m.charAt(ctr)==';')	return false;	
		else if (m.charAt(ctr)=='"')	return false;	
		else if (m.charAt(ctr)=="'")	return false;	
		else if (m.charAt(ctr)=='<')	return false;	
		else if (m.charAt(ctr)=='>')	return false;	
		else if (m.charAt(ctr)==',')	return false;	
		else if (m.charAt(ctr)=='?')	return false;	
		else if (m.charAt(ctr)=='/')	return false;	
	}
	return true;
}


function newBigWindow(URL, WIN_NAME)
{	
	//alert(URL);
	var HEIGHT=screen.height;
	var POPUP_HEIGHT = HEIGHT-150;
	var POPUP_WIDTH = 890;

	var HEIGHT_POP=screen.height;
	HEIGHT_POP=(HEIGHT_POP/2) - (POPUP_HEIGHT/2);
	var WIDTH_POP=screen.width;
	WIDTH_POP=(WIDTH_POP/2) - (POPUP_WIDTH/2);
	open_win=window.open(URL, WIN_NAME, 'top='+HEIGHT_POP+', left='+WIDTH_POP+', width='+POPUP_WIDTH+',height='+POPUP_HEIGHT+',directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no');
	open_win.focus();
	//alert(open_win);
	return false;
}

function newMediumWindow(URL, WIN_NAME)
{	
	//alert(URL);
	var HEIGHT=screen.height;
	var POPUP_HEIGHT = HEIGHT-150;
	var POPUP_WIDTH = 800;

	var HEIGHT_POP=screen.height;
	HEIGHT_POP=(HEIGHT_POP/2) - (POPUP_HEIGHT/2);
	var WIDTH_POP=screen.width;
	WIDTH_POP=(WIDTH_POP/2) - (POPUP_WIDTH/2);
	open_win=window.open(URL, WIN_NAME, 'top='+HEIGHT_POP+', left='+WIDTH_POP+', width='+POPUP_WIDTH+',height='+POPUP_HEIGHT+',directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no');
	open_win.focus();
	return false;
}



function newSmallWindow(URL, WIN_NAME)
{	var HEIGHT=screen.height;
	var POPUP_HEIGHT = HEIGHT-391;
	var POPUP_WIDTH = 700;

	var HEIGHT_POP=screen.height;
	HEIGHT_POP=(HEIGHT_POP/2) - (POPUP_HEIGHT/2);
	var WIDTH_POP=screen.width;
	WIDTH_POP=(WIDTH_POP/2) - (POPUP_WIDTH/2);
	open_win=window.open(URL, WIN_NAME, 'top='+HEIGHT_POP+', left='+WIDTH_POP+', width='+POPUP_WIDTH+',height='+POPUP_HEIGHT+',directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=no');
	open_win.focus();
	return false;;
}

function deleteConfirm()
{
	var flag=0;
	for(i=0;i<document.forms[0].length;i++)
	{
		if((document.forms[0].elements[i].type=='checkbox' || document.forms[0].elements[i].type=='radio') && document.forms[0].elements[i].checked)
		{		
			if(confirm("Are you sure to delete selected row(s)? "))
			{
				document.forms[0].submit();
				return true;
			}
			else
				return false;
		}
	}
	alert("No rows selected");
	return false;
}


function word_capitalize(field_name1)
{
	var re = new RegExp ('_', 'gi');
	var field_name = field_name1.replace(re,' ');

	var ret_field_name="";
	var ar=field_name.split(" ");
	for(var i=0; i < ar.length; i++)
	{
		var temp=ar[i].charAt(0).toUpperCase()+ar[i].substr(1).toLowerCase();
		ret_field_name+=temp+" ";
	}
	return(ret_field_name);
}

// ON ENTER PRESSS FORM VALIDATIOAN AND FORM SUBMISSION

function checkEnter(e,frm_name)
{ //e is event object passed from function invocation
	var characterCode ;//literal character code will be stored in this variable

	if(e && e.which)
	{ //if which property of event object is supported (NN4)
		//alert("e");
		e = e
		characterCode = e.which; //character code is contained in NN4's which property
	}
	else
	{
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}

	if(characterCode == 13)
	{ //if generated character code is equal to ascii 13 (if enter key)
	//document.forms[0].submit() //submit the form
		validate_frm(frm_name);
		return false; 
	}
	else
	{
		return true;
	}
}

function check_all(frm_name)
{
	//alert(frm_name);
	for(i=0; i < document.forms[frm_name].length; i++)
	{
		if(document.forms[frm_name].elements[i].type=='checkbox')
			document.forms[frm_name].elements[i].checked=true;
	}
}

function check_selected(frm_name)
{

	var flag="";
	for(i=0; i < document.forms[frm_name].length; i++)
	{
		if(document.forms[frm_name].elements[i].type=='checkbox' || document.forms[frm_name].elements[i].type=='radio')
		{
			if(document.forms[frm_name].elements[i].checked==true)
			{
				flag=true;
				break;
			}
			else
				flag=false;
		}
	}
	if(flag==false)
	{
		alert("Please Select at least one row.")
		return false;
	}
	else
		return true;
}

function checkSignUpDetails()
{	
	with(window.document.contactForm)
	{	if(firstname.value=="")
		{	alert("Enter First Name");firstname.focus(); return false;	}
/*		if(lastname.value=="")
		{	alert("Enter Last Name");lastname.focus(); return false;	}
*/
		if(country.value=="-1")
			{	alert("Select Country");country.focus(); return false;	}
		if(email.value=="")
		{	alert("Enter Email.");
			email.focus(); return false;
		}
		if(!(isValidMail(email.value)))
		{	alert("Enter valid Email.");
			email.focus(); return false;
		}
		if(subject.value=="")
		{	alert("Enter Subject.");
			subject.focus(); return false;
		}
		if(comment.value=="")
		{	alert("Enter Your Comments");comment.focus(); return false;	}
		return true;
	}
}

function newSmallAddressWindow(URL, WIN_NAME)
{	
	var HEIGHT=screen.height;
	var POPUP_HEIGHT = HEIGHT-400;
	var POPUP_WIDTH = 400;

	var HEIGHT_POP=screen.height;
	HEIGHT_POP=(HEIGHT_POP/2) - (POPUP_HEIGHT/2);
	var WIDTH_POP=screen.width;
	WIDTH_POP=(WIDTH_POP/2) - (POPUP_WIDTH/2);
	open_win=window.open(URL, WIN_NAME, 'top='+HEIGHT_POP+', left='+WIDTH_POP+', width='+POPUP_WIDTH+',height='+POPUP_HEIGHT+',directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');
	open_win.focus();
	return false;;
}


function check_phone(val)
{   
    var allowed_char= "0123456789!-_()@! ";

    for (i = 0; i < val.length; i++)
    {   
        var c = val.charAt(i);
        if (allowed_char.indexOf(c) == -1)
		return false;
    }
    return true;
}

function close_func(close_check, loc)
{
	if(loc)
		eval("window."+loc).location.reload();

	if(close_check)
		window.close();
}

function isValidWebname(webname)
{	
	m=new String(webname);
	n=new String("http://");
	p=new String("https://");
	var mailLength=m.length
	var totalDOT=0
	var totalROUTE=0
	var totalSPACE=0
	var taglength=0
	var tag=0

	// Should not beging with a '.' or '@'
	if(m.charAt(0)=='@' || m.charAt(0) == '.')
	{	return false;		}
	//should begin with http:// or https://
	
	 for(i=0;i<8;i++){
	    if(m.charAt(i)==p.charAt(i)) { taglength++; }
	 }
     if(taglength==8) { tag++; }
	 taglength=0;
	 for(i=0;i<7;i++){
	    if(m.charAt(i)==n.charAt(i)) { taglength++; }
	 }
     if(taglength==7) { tag++;}
	 if(tag==0){
		 //alert("Enter url with http:// or https://");
		 //httpvalidate="httptrue";
		 //return (httpvalidate);
		 return false;
	 }
	// 
	for(ctr=1;ctr<=mailLength;ctr++)
	{	//if (m.charAt(ctr)=='@')	{	totalROUTE++;	}	
		if (m.charAt(ctr)=='.')	{	totalDOT++;	}	
		if (m.charAt(ctr)==' ') {	totalSPACE++;	}
	}

	//if (totalROUTE!=1)			//Checking for Multiple @
	//{	return false;		}
	if(totalDOT<1)				//Checking for Route Domain
	{
		return false;		}
	if(totalSPACE>0)			//No Embeded Space
	{	return false;		}
	
	//Checking for Invalid Characters

	for(ctr=0;ctr<=mailLength;ctr++)
	{	
		if (m.charAt(ctr)=='`')	return false;	
		else if (m.charAt(ctr)=='!')	return false;	
		else if (m.charAt(ctr)==' ') 	return false;	
		else if (m.charAt(ctr)=='#')	return false;	
		else if (m.charAt(ctr)=='$')	return false;	
		else if (m.charAt(ctr)=='%')	return false;	
		else if (m.charAt(ctr)=='^')	return false;	
		else if (m.charAt(ctr)=='&')	return false;	
		else if (m.charAt(ctr)=='*')	return false;	
		else if (m.charAt(ctr)=='(')	return false;	
		else if (m.charAt(ctr)==')')	return false;	
		else if (m.charAt(ctr)=='+')	return false;	
		else if (m.charAt(ctr)=='=')	return false;	
		else if (m.charAt(ctr)=='|')	return false;	
		else if (m.charAt(ctr)=='\\')	return false;	
		else if (m.charAt(ctr)=='{')	return false;	
		else if (m.charAt(ctr)=='}')	return false;	
		else if (m.charAt(ctr)=='[')	return false;	
		else if (m.charAt(ctr)==']')	return false;	
		//else if (m.charAt(ctr)==':')	return false;
		else if (m.charAt(ctr)==';')	return false;	
		else if (m.charAt(ctr)=='"')	return false;	
		else if (m.charAt(ctr)=="'")	return false;	
		else if (m.charAt(ctr)=='<')	return false;	
		else if (m.charAt(ctr)=='>')	return false;	
		else if (m.charAt(ctr)==',')	return false;	
		else if (m.charAt(ctr)=='?')	return false;	
		//else if (m.charAt(ctr)=='/')	return false;	
	}
	return true;
}

function CompareDates(D1,D2,msg)
{	var dt1 = new  String(D1)
	myAr1 = dt1.split('-');
	var dt2 = new  String(D2)
	myAr2 = dt2.split('-');

	var y1 = myAr1[0];
	var y2 = myAr2[0];
	var d1 = myAr1[2];
	var d2 = myAr2[2];
	var m1 = myAr1[1];
	var m2 = myAr2[1];

	//alert(y1+"  "+d1+"  "+m1+"  "+y2+"  "+d2+"  "+m2);
		
	if (eval(y1) > eval(y2))
	{	
		alert(msg); return false;	
	}
		if (eval(y1) == eval(y2))
		{	if (eval(m1) == eval(m2))
			{	if (eval(d1) > eval(d2))
				{	alert(msg); return false;	
				}
			}
			else 
			{	if (eval(m1) > eval(m2))	
				{	alert(msg); return false;	
				}
			}
		}
		return true;
}

function isValidDate(byear,bmonth,bday)
{	
		var yr=byear;
	    var mon=bmonth;
		
      	var day=bday;

		//Checking for Non-Numeric Values
     		if((isNaN(yr))||(isNaN(mon))||(isNaN(day)))
	      {	alert("Error! Invalid Date Format");
			return false;
	      }

		//Checking for Positive Numeric Values
		if((yr<1) || (mon<1) ||(day<1))
		{	alert("Error! Invalid Date Format")
			return false;
		}
		if (yr<1900)
		{	alert("Error! Year entered is too old")
			return false;
		}

		if (yr>9999)
		{	alert("Error! Enter year in 4 Digits")
			return false;
		}
	
    	if(mon>12)
	    {	alert("Error! Month Range 1-12.")
			return false;	
		}
    		if(day>31)
	      {	alert("Error! Day Range 1-31.")
			return false;
	      }
	
		//Checking for month having 30 days
		if(mon==4 || mon==6 || mon==9 || mon==11)
		{	if(day >30)
			{ 	alert("Error! Day Range 1-30 for the given month.")
				return false;
		      }
		}
	
		//Checking for February and Leap year
		if(mon==2)
		{	if(yr%4==0)
			{	if(day >29)
				{     alert("Error! Day Range 1-29 for the given month and year.")
					return false;
		      	}
			}
			else
			{	if(day >28)
				{	alert("Error! Day Range 1-28 for the given month and year.")
					return false;
	      		}
			}
		}
	     	return true;
}

function DoValidate(Dt)
{
	var myDate = new  String(Dt)
	var SpaceExpr = /\s/;
	var SpacePos = myDate.search(SpaceExpr);
	if (SpacePos > -1)
	{
	alert("No space allowed in a Date.");
	return false;
	}
	var dLength=myDate.length
	var totalSlash=0
	var totalChar=0
	var totalInvalids=0

	// Should not beging with a '/' or end with '/'
	if(myDate.charAt(0)=='-' || myDate.charAt(dLength) == '-')
	{
	alert("Invalid Date");
	return false;
	}

	// Scanning the String
	for(ctr=0;ctr<dLength;ctr++)
	{
	Ch=myDate.charAt(ctr);
		if (Ch=='-')
		{
		totalSlash++;
		}			
		if (Ch!='-')
		{
			if (isNaN(Ch))	
			{	
				totalInvalids++;	
			}	
		}
		totalChar++;
	}
		
	if (totalSlash > 2)
	{
	alert("Excess Separators used in the date.");
	 return false;
	 }
	if (totalInvalids > 2)
	{
	alert("Invalid Character present in Date."); 
	return false;
	}
	if (totalChar < 8)
	{
	alert("Less Character present in Date."); 
	return false;
	}
	if (totalSlash==0)
	{
	alert("Pleae use '-' (Dash) as Separator"); 
	return false;
	}	
	myArr = myDate.split('-');
	if (myArr.length < 3)
	{	alert("Invalid Date");
	return false;
	}
	if (!isValidDate(myArr[0],myArr[1],myArr[2]))//year,month date
	{
	return false;	
	}
	return true;
}

