// JavaScript Document
String.prototype.trim = function() 
{ 
	return this.replace(/^\s+|\s+$/, ''); 
};

function isPrice(number)
{
	number = number.trim();
	var characters="0123456789.";
	var tmp;
	var lTag;
	lTag = 0;
	temp = (number.length);
	for (var i=0;i<temp;i++)
	{
		tmp=number.substring(i,i+1);
		if (characters.indexOf(tmp)==-1)
		{
			lTag = 1;
		}
	}
	if(lTag == 1)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isNumeric(number)
{
	number = number.trim();
	var characters="0123456789";
	var tmp;
	var lTag;
	lTag = 0;
	temp = (number.length);
	for (var i=0;i<temp;i++)
	{
		tmp=number.substring(i,i+1);
		if (characters.indexOf(tmp)==-1)
		{
			lTag = 1;
		}
	}
	if(lTag == 1)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isPhone(number)
{
	number = number.trim();
	var characters="0123456789-";
	var tmp;
	var lTag;
	lTag = 0;
	temp = (number.length);
	for (var i=0;i<temp;i++)
	{
		tmp=number.substring(i,i+1);
		if (characters.indexOf(tmp)==-1)
		{
			lTag = 1;
		}
	}
	if(lTag == 1)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function isEmail(str) {
	
	//alert("Original string: '" + str + "'");
	str = str.trim();
	//alert("Incompletely stripped string: '" + str + "'");

	var at = "@";
	var dot = ".";
	var lat = str.indexOf(at);
	var ldot = str.indexOf(dot);
	var lstr = str.length;
	var alt = "Please enter a valid email address.";
		
	if(str.indexOf(at) == -1) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(at, (lat + 1) ) != -1) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(dot, (lat + 2) ) == -1) {
		alert(alt);
		return false;
	}
		
	if(str.indexOf(" ") != -1) {
		alert(alt);
		return false;
	}
	return true;
}

function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

/*############################################################################################################*/
/*############################################################################################################*/
/*############################################################################################################*/

	function validateEmpty(fld, msg) {
		var error = "";
	 
		if (fld.value.length == 0) {
			fld.style.background = '#FC3254'; 
			error = msg+"\n"
		} else {
			fld.style.background = 'White';
		}
		return error;  
	}
	
	function validateUsername(fld, minlen, maxlen) {
		var error = "";
		var illegalChars = /\W/; // allow letters, numbers, and underscores
	 
		if (fld.value == "") {
			fld.style.background = '#FC3254'; 
			error = "You didn't enter a username.\n";
		} else if ((fld.value.length < minlen) || (fld.value.length > maxlen)) {
			fld.style.background = '#FC3254'; 
			error = "The username is the wrong length.\n";
		} else if (illegalChars.test(fld.value)) {
			fld.style.background = '#FC3254'; 
			error = "The username contains illegal characters.\n";
		} else {
			fld.style.background = 'White';
		}
		return error;
	}
	
	function validatePassword(fld,minlen,maxlen) {
		var error = "";
		var illegalChars = /[\W_]/; // allow only letters and numbers 
	 
		if (fld.value == "") {
			fld.style.background = '#FC3254';
			error = "You didn't enter a password.\n";
		} else if ((fld.value.length < minlen) || (fld.value.length > maxlen)) {
			error = "The password is the wrong length. \n";
			fld.style.background = '#FC3254';
		} else if (illegalChars.test(fld.value)) {
			error = "The password contains illegal characters.\n";
			fld.style.background = '#FC3254';
		} else if (!((fld.value.search(/(a-z)+/)) && (fld.value.search(/(0-9)+/)))) {
			error = "The password must contain at least one numeral.\n";
			fld.style.background = '#FC3254';
		} else {
			fld.style.background = 'White';
		}
		return error;
	}
	
	function trim(s) {
		return s.replace(/^\s+|\s+$/, '');
	}
	
	function validateEmail(fld) {
		var error="";
		var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
		var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
		var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	   
		if (fld.value == "") {
			fld.style.background = '#FC3254';
			error = "You didn't enter an email address.\n";
		} else if (!emailFilter.test(tfld)) {              //test email for illegal characters
			fld.style.background = '#FC3254';
			error = "Please enter a valid email address.\n";
		} else if (fld.value.match(illegalChars)) {
			fld.style.background = '#FC3254';
			error = "The email address contains illegal characters.\n";
		} else {
			fld.style.background = 'White';
		}
		return error;
	}
	
	function validatePhone(fld) {
		var error = "";
		var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    
	
		if (fld.value == "") {
			error = "You didn't enter a phone number.\n";
			fld.style.background = '#FC3254';
		} else if (isNaN(parseInt(stripped))) {
			error = "The phone number contains illegal characters.\n";
			fld.style.background = '#FC3254';
		} else if (!(stripped.length == 10)) {
			error = "The phone number is the wrong length. Make sure you included an area code.\n";
			fld.style.background = '#FC3254';
		}
		return error;
	}
	
	function validateNumeric(number, msg) {
		
		var error = "";
		var characters = "0123456789";
		var tmp;
		var lTag;
		lTag = 0;
		temp = (number.value.length);
		for (var i=0;i<temp;i++) {
			tmp = number.value.substring(i,i+1);
			if (characters.indexOf(tmp) == -1) {
				lTag = 1;
			}
		}
		if(lTag == 1) {
			error = msg;
			number.style.background = '#FC3254';
		}
		return error;
	}
	
	function validatePrice(number, msg) {
		
		var error = "";
		var characters = "0123456789.";
		var tmp;
		var lTag;
		lTag = 0;
		temp = (number.value.length);
		for (var i=0;i<temp;i++) {
			tmp = number.value.substring(i,i+1);
			if (characters.indexOf(tmp) == -1) {
				lTag = 1;
			}
		}
		if(lTag == 1) {
			error = msg;
			number.style.background = '#FC3254';
		}
		return error;
	}
	
	function validateCheckBox(fld, msg) {
		var error = "";
		if (fld.checked == false) {
			fld.style.background = '#FC3254'; 
			error = msg+"\n"
		} else {
			fld.style.background = 'White';
		}
		return error;
	}
	
	function confirmPassword(pass, confpass) {
		var error = "";
		if(pass.value != confpass.value) {
			error = "The both password are not same.\n";
			confpass.style.background = '#FC3254';
			confpass.focus();
		}
		return error;
	}
