/*********************************************************************************************
		Author 	: Dhaval Dave
		Date	: 14th May 2006
		Purpose	: Provide general validation
**********************************************************************************************/

function check_delbox(field, mesg)
{
	var checked;
	checked	= 0;

	count = document.formlist.elements.length;

	for (i = 0; i < count; i++)
	{
		ele = document.formlist.elements[i];
		if ((ele.type == "checkbox") && (ele.name != "checkbox"))
		{
			if (document.formlist.elements[i].checked)
			{
				checked++;
			}
		}
	}

	if (checked == 0)
	{
		alert("Select atleast one " + mesg);
		return false;
	}
	else
	{
		return true;
	}
}

//Checked atleast one box is ticked.
function get_check(chk_delete, field)
{
	var count = document.formlist.elements.length;

	if (chk_delete.checked)
	{
		for (i = 0; i < count; i++)
		{
			ele = document.formlist.elements[i];
			if (( ele.type == "checkbox") && (ele.name != "checkbox"))
			{
				document.formlist.elements[i].checked = 1;
			}
		}
	}
	else
	{
		for (j = 0; j < count; j++)
		{
			ele = document.formlist.elements[j];
			if ((ele.type == "checkbox") && (ele.name != "checkbox"))
			{
				document.formlist.elements[j].checked = 0;
			}
		}
	}

	return true;
}

function check_blank(input, mesg)
{
	if (input.value == "")
	{
		alert(mesg);
		input.focus();
		return false;
	}
	return true;
}

function check_length(input, mini, maxi, mesg)
{
	//	var mini = 3
	//	var maxi = 7

	if (input.value.length < mini || input.value.length > maxi)
	{
		alert(mesg);
		input.focus();
		return false;
	}

	return true;
}

function check_range(input, mini, maxi, mesg)
{
	//	var mini = 3
	//	var maxi = 7

	if (input.value < mini || input.value > maxi)
	{
		alert(mesg);
		input.focus();
		return false;
	}

	return true;
}

function check_compare(input1, input2, mesg)
{
	if (input1.value.length != 0 && input2.value.length != 0)
	{
		if (input1.value != input2.value)
		{
			alert(mesg);
			input2.focus();
			return false;
		}
	}

	return true;
}

function check_combo(input, val, mesg)
{
	if (input.value == val)
	{
		alert(mesg);
		input.focus();
		return false;
	}

	return true;
}

function check_number(input, mesg)
{
	var re = /^[0-9]*$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

// 123.50
function check_currency(input, mesg)
{
	var re = /^([0-9]+)(\.)([0-9]{2})*$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_alphabets(input, mesg)
{
	var re = /^[A-Za-z]*$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_alphanumeric(input, mesg)
{
	var re = /^[A-Za-z0-9]*$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_email(input, mesg)
{
	var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_ip(input, mesg)
{
	var re = "/^(25[0-5]|2[0-4]\d|[01]?\d\d\d)\.25[0-5]|2[0-4]\d|[01]?\d\d\d)\.25[0-5]|2[0-4]\d|[01]?\d\d\d)\.25[0-5]|2[0-4]\d|[01]?\d\d\d))$/";

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_url(input, mesg)
{
	if (input.length != 0)
	{
		if (!input.value.match("/^((http|https):\/\/)?((w){3}$\.)?[a-z0-9\-]+)?\.((.*))$/"))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_zip(input, mesg)
{
	var re = /^[0-9]{5}$/;

	if (input.length != 0)
	{
		if (!re.test(input.value))
		{
			alert (mesg);
			input.focus();
			return false;
		}
	}

	return true;
}

function check_specialchar(input, mesg)
{
	var count;
	var special = "`~!@#$%^&*()_-=+\|/*.><,';:][{}?";
	var chars = input.value.split("");

	if (input.value.length != 0)
	{
		count = 0;
		for (i = 0; i < chars.length; i++)
		{
			
			if (special.indexOf(chars[i]) != -1)
		 	{	
				count++;		
			}

			if (count > 0)
			{
				alert(mesg);
				input.focus();
				return false;
			}
		}
	}
	return true;
}

function check_allowspecial(input, mesg)
{
	var count;
	var special = "`~!@#$%^&*()=+\|/*.><,';:][{}?";
	var chars = input.value.split("");

	if (input.value.length != 0)
	{
		count = 0;
		for (i = 0; i < chars.length; i++)
		{
			
			if (special.indexOf(chars[i]) != -1)
		 	{	
				count++;		
			}

			if (count > 0)
			{
				alert(mesg);
				input.focus();
				return false;
			}
		}
	}
	return true;
}

function check_date(input, $mesg)
{
	var datePat = "/^(\d{1, 2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/";
	var matchArray	= input.value.match(datePat);

	if (matchArray == null)
	{
		return false;
	}

	month	= matchArray[1];
	day		= matchArray[3];
	year	= matchArray[4];

	if (month < 1 || month > 12)
	{
		alert("Month must be between 1 and 12");
		return false;
	}

	if (day < 1 || day > 31)
	{
		alert ("Day must be between 1 and 31");
		return false;
	}

	if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31))
	{
		alert("Month " + month + " does not have 31 days!");
		return false;
	}

	if (month == 2)
	{
//		var isleap((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0));

		if ( (day > 29) || (day == 29 && (!isleap)) )
		{
		   	alert("February " + year + " does not have " + day + " days!");
			return false;
		}
	}

	return true;
}

// e.g. popup('http://www.google.com', 'Google', 'no', 'no', 0, 0, 500, 400)
function popup(file, title, menubar, toolbar, status, sb, width, height)
{
	var mywindow;
	mywindow = window.open(file, title, '"menubar = ' + menubar + ', toolbar = ' + toolbar + ', status = ' + status + ', scrollbars = ' + sb +  ', width = ' + width + ', height = ' + height + '"');
}

function print_page()
{
	if (window.print)
	{
		agree = confirm("Print this page ?");

		if (agree)
		{	window.print();		}
	}
}

function validateEmail(form)
{
	var returncode = true;
	var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/

	if ( re.test(form.email.value) )
	{
		// it passes
		returncode = true;
	}
	else
	{
		alert("Invalid email address specified " + form.email.value + "\nPlease correct it");
		form.email.focus();
		form.email.select();
		returncode = false;
	}
	return returncode;
}

function filterNonNumeric(field)
{
	var result = new String();
	var numbers = "0123456789";
	var chars = field.value.split(""); // create array

	for (i = 0; i < chars.length; i++)
	{
		if (numbers.indexOf(chars[i]) != -1) result += chars[i];
	}

	if (field.value != result) field.value = result;
}

function filterNonNumeric_zero(field)
{
	var result = new String();
	var numbers = "0123456789";
	var chars = field.value.split(""); // create array

	for (i = 0; i < chars.length; i++)
	{
		if (numbers.indexOf(chars[i]) != -1) result += chars[i];
	}

	if (field.value != result) field.value = result;
	if (field.value == '0') field.value = "1";
	if (field.value == '') field.value = "1";
}

function filterNumericWithSign(field)
{
	var result = new String();
	var numbers = "0123456789-.";
	var chars = field.value.split(""); // create array

	for (i = 0; i < chars.length; i++)
	{
		if (numbers.indexOf(chars[i]) != -1) result += chars[i];
	}

	if (field.value != result) field.value = result;
}

function filter_phone(field, mesg)				// DD 25 June, 2004 for Phone validation
{
	var result = new String();
    var count = 0;
	var numbers = "0123456789()-";			// DD 25 June, 2004. Do not change sequence of last 3 digit, (,),-
	var chars = field.value.split("");		// create array
/*
    if (field.value.length < 10)
    {
    	alert (mesg);
        field.select();
        field.focus();
        return(false);
    }
    else
    {
*/
		for (i = 0; i < chars.length; i++)
    	{
        	if (numbers.indexOf(chars[i]) == 10 || numbers.indexOf(chars[i]) == 11 || numbers.indexOf(chars[i]) == 12)
            { count++; }

			if (numbers.indexOf(chars[i]) != -1) result += chars[i];
		}

    	if (field.value != result) field.value = result;

    	if ((count == 2) && (field.value.length > 12))
    	{
    		alert (mesg);
        	field.select();
        	field.focus();
        	return(false);
    	}
        else
        	{ return(true); }
//    }
}

function validate_phone(input, mesg)
{
	if (!input.value.match(/^(\d{3})\-(\d{3})\-(\d{4})$/) )
	{
		alert (mesg);
		input.focus();
		return false;
	}

	return true;
}

function check_state (form)
{
	//alert (form.state.value);
	if (!StateV (form.state.value, "Please enter the \"State\" you currently reside."))
	{
		return(false);
	}
}

function StateV (s, message)
{
	if (s.selectedIndex = 0)
	{
	   alert(message);
	   s.focus();
	   return (false);
	}

	return (true);
}

function validate_Zip(oZip)
{
	var re = /^[0-9][0-9][0-9][0-9][0-9]\-?([0-9][0-9][0-9][0-9])?$/;
	var sZip = oZip.value;
	var bPassed = true;

	//First let's check for length of string
	if (sZip.length != 0)
    {
		//Now let's check if it's ok
		if (sZip.search(re) == -1)
        {
            sMessage = 'Zip code must be 5 numbers.';
			bPassed = false;
		}
	}
	else
    {
		bPassed = false;
	}

	if (!bPassed)
    {
		if (sMessage.length == 0)
		{
			sMessage = 'Zip code must be 5 numbers.\nIt may be followed by a four number extension, with or without a dash.';
		}
		alert(sMessage);
        oZip.select();
        oZip.focus();
        return(false);
	}
	else
    {
		return(true);
	}
}
/*
validate_date = function(date)
{
	if ( date.match(/^(\d{1,2})\-(\d{1,2})\-(\d{4})$/) )
	{
		var mm = RegExp.$1;
		var dd = RegExp.$2;
		var yy = RegExp.$3;

		// try to create the same date using Date Object
		var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
		// invalid day
		if ( parseFloat(dd) != dt.getDate() ) { return false; }
		// invalid month
		if ( parseFloat(mm)-1 != dt.getMonth() ) { return false; }
		// invalid year
		if ( parseFloat(yy) != dt.getFullYear() ) { return false; }

		// everything fine
		return true;
	} else {
		// not even a proper date
		return false;
	}
}
*/