// JavaScript Document
var phone = "()- 0123456789";
var numb = "0123456789";
var alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
var zip = "- 0123456789";

function res(t,v) {
	var w = "";
	for (i=0; i < t.value.length; i++) {
		x = t.value.charAt(i);
		if (v.indexOf(x,0) != -1) {
			w += x;
		} else {
		if(v==phone) {
			alert("Please only use the following characters:\n"+phone);
		} else if(v==numb) {
			alert("Please only use numbers 0-9");
		} else if(v==alpha) {
			alert("Please only use \na-z and A-Z");
		} else if(v==zip) {
			alert("Please only use \nnumbers 0-9 and -");
		} else {
		alert("Please contact admin.");
		}
	}
	}
	t.value = w;
}

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;
	return true;
}
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 isFormChanged(form) {
	var isChanged = false ;
	var elem = document.getElementById(form).elements;
	for (var i = 0; i< elem.length; i++) {
		switch(elem[i].type) {
			case "text" :
				isChanged =  isTextChanged(elem[i]) ;
				break;
			case "select-one" :                
				isChanged =  isSelectChangedOne(elem[i]) ;            
				break;
			case "select-multiple" :                
				isChanged =  isSelectChangedMul(elem[i]) ;            
				break;
			case "radio" :    
				isChanged =  isRadioChanged(elem[i]) ; 
				break;
			case "checkbox" :    
				isChanged =  isCheckChanged(elem[i]) ; 
				break;
			case "textarea" :    
				isChanged =  isTextAreaChanged(elem[i]) ; 
				break;
		}                  
		if (isChanged) {
			break ;
		}
	}
	return isChanged ;    
}

function isSelectChangedOne(selectbox) {
	var len = selectbox.options.length ;
	var defaultIndex = -1 ;
	for (var i = 0 ; i < len ; i++){
		if (selectbox.options[i].defaultSelected) {
			defaultIndex = i ;
			break;
		}
	}
	if (selectbox.size <= 1) {
		if (defaultIndex == -1 && selectbox.selectedIndex == 0) return false;
		return (defaultIndex == selectbox.selectedIndex ) ? false : true ;
	} else {
		return (defaultIndex == selectbox.selectedIndex) ? false : true ;
	}
} 

function isSelectChangedMul(selectbox) {
	var len = selectbox.options.length ;
	for (var i = 0 ; i < len ; i++) {
		if (selectbox.options[i].selected != selectbox.options[i].defaultSelected ) {
			return true ;
		}
	} 
	return false;
}  

function isTextChanged(textBox)  {
	return (textBox.value == textBox.defaultValue) ? false : true ;
}

function isRadioChanged(radioButton) {
	return (radioButton.checked == radioButton.defaultChecked) ? false : true ;
} 

function isCheckChanged(checkBox) {
	return (checkBox.checked == checkBox.defaultChecked) ? false : true ;
} 

function isTextAreaChanged(textAreaField) {
	return (textAreaField.defaultValue == textAreaField.value) ? false : true ;
}

function validateEmail(elementValue){  
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	return emailPattern.test(elementValue);  
}  
