  	
//** FUNCTION: Check INPUT value on Focus   	
   	function startEditInput(input) {
		var classes = input.className.split(' ');
		input.className = '';
		input.onselectstart = null;
		for (i=0;i< classes.length; i++) {
			if (classes[i] != 'empty') { input.className += classes[i]; }
		}
		if (input.value == input.getAttribute('empty')) {
			input.value='';
		}
	}

//** FUNCTION: Check INPUT value on Blur
	function finishEditInput(input) {
		if (input.value == input.getAttribute('empty') || input.value == '') {
			input.className += ' empty';
			input.value = input.getAttribute('empty');
		}
    }
/*******************************************************************************
	Form Validation Scripts
********************************************************************************/
    
//** FUNCTION: Validate Standard Form;
    function ValidateForm(form) {
		for (i=0; i<form.elements.length; i++) {
			if (form[i].getAttribute('validate')) {
				if (!validateINPUT(form[i])) {
					validateMsg('show',form[i]) 
					return false; 
				} 			
			} 
		}
		return true;
    }
    
//** FUNCTION: Validate INPUT Element
	function validateINPUT(input) {
		switch(input.getAttribute('validate')) {
			case "email": return validateEmail(input); break;
			case "empty": return validateNotEmpty(input); break;
			case "checked": return validateChecked(input); break;
			case "password": return validatePassword(input); break;
			case "creditcard": return validateCreditCard(input); break;
			default: return false;
		}
	}

//** FUNCTION: Validate Email Address	
	function validateEmail(input) {
		if (input.value != input.getAttribute('empty')) {
			return (input.value.indexOf(".") > 2) && (input.value.indexOf("@") > 0);
		} else {
			return false;
		}
	}
//** FUNCTION: Validate Check Box
	function validateChecked(input) {
		if (input.checked) {
			return true;
		} else {
			return false;
		}
	}
//** FUNCTION: Validate Empty INPUT	
	function validateNotEmpty(input) {
		if (input.value != "") {
			if (input.value != null) {
				if (input.value != ' ') {
					if (input.value != input.getAttribute('empty')) { 
						return true;
					} else return false;
				} else return false;
			} else return false;
		} else return false;
	}


//** FUNCTION: Validate Password Field	
	function validatePassword(input) {
		var confirmInput = eval(input.getAttribute('confirm'));
		if (input.value != "") {
			if (input.value != null) {
				if (input.value != ' ') {
					if (input.value == confirmInput.value) {
						return true;
					} else {
						return false;
					}
				} else return false;
			} else return false;
		} else return false;
	}

//** FUNCTION: Validate Password Field	
	function validateCreditCard(input) {
		if (input.value != input.getAttribute('empty')) {
			if (validateCreditCardNumber(input.value)) {
				var month = eval(input.getAttribute('month'));
				if (validateCreditCardExpires(eval(input.getAttribute('month')),eval(input.getAttribute('year')))) {
					return true
				} else return false;
			} else return false;
		}		
	}

	function validateCreditCardNumber(s) {
		s = s.replace(/ /g,'');
		if (s == '4646464646464646' || s == '0000000000000000') {
			alert('Dummy Credit Card Number');
			return true;
		} else {
			// remove non-numerics
			var v = "0123456789";
			var w = "";
			for (j=0; j < s.length; j++) {
				x = s.charAt(j);
				if (v.indexOf(x,0) != -1) w += x;
			}
			// validate number
			j = w.length / 2;
			if (j < 6.5 || j > 8 || j == 7) return false;
			k = Math.floor(j);
			m = Math.ceil(j) - k;
			c = 0;
			for (l=0; l<k; l++) {
				a = w.charAt(l*2+m) * 2;
				c += a > 9 ? Math.floor(a/10 + a%10) : a;
			}
			for (a=0; a<k+m; a++) c += w.charAt(a*2+1-m) * 1;
			return (c%10 == 0);
		}

	}
	function validateCreditCardExpires(month,year) {
		var today = new Date();
		var expiry = new Date('20'+year.value, (month.value-1), 30,0 , 0, 0);
		if (today.getTime() > expiry.getTime()) return false; else return true;
	
	}
		
/*******************************************************************************
	Form Validation Error Message
********************************************************************************/
	var validateMsgBox;
	function validateMsg(action,input) {
		switch(action) {
			case 'show': 
				validateMsgBox = document.createElement('DIV');
				validateMsgBox.id = 'validateErrorMsg';
				validateMsgBox.innerHTML = input.getAttribute('validateMsg');
				validateMsgBox.style.top = findPosY(input) + input.offsetHeight+'px';
				validateMsgBox.style.left = findPosX(input) + 'px';
				document.body.appendChild(validateMsgBox);
				setTimeout('validateMsg(\'destroy\');',3000);
				break;
			case 'destroy':
				document.body.removeChild(validateMsgBox);
				validateMsgBox = null;
				break;
		}
	}	
	
/*******************************************************************************
	Find Elements Postion in Page Scripts
********************************************************************************/				
//** FUNCTION: Find Left Postion of Element -- From QuirksMode
	function findPosX(obj) {
		var curleft = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) { curleft += obj.offsetLeft; obj = obj.offsetParent;}
		} else if (obj.x) curleft += obj.x;
		return curleft;
	}
//** FUNCTION: Find Top Postion of Element -- From QuirksMode
	function findPosY(obj) {
		var curtop = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) { curtop += obj.offsetTop; obj = obj.offsetParent;}
		} else if (obj.y) curtop += obj.y;
		return curtop;
	}

/**************************************************************************************************
	Change Class Functions
***************************************************************************************************/
	function addClass(obj,className) {
		// Check is Class is already Assigned
		var classes = obj.className.split(' ');
		var found = false;
		for (i=0;i< classes.length; i++) {
			if (classes[i] == className) { found = true; }
		}
		if (!found) { obj.className += ' '+className; }
	}


	function removeClass(obj, className) {
		var classes = obj.className.split(' ');
		obj.className = '';
		for (j=0;j< classes.length; j++) {
			if (classes[j] != className) { obj.className += ' '+classes[j]; }
		}
	}

