function FormValidate(formName) {
	var flag ;
	// regular expresions       *any text*     *phone number*              *e-mail address*                                              *CC Number*       *CC Expiration"
	var arrRegExps = new Array("[a-zA-Z0-9]+", "^[\\(\\)0-9\\-_xX \\+\\.eEtT]+$", "^[a-zA-Z0-9\\._-]+@[a-zA-Z0-9\\._-]+\\.[a-zA-Z0-9_-]{2,4}$", "^[0-9]{12,18}$", "^[0-9]{2}/[0-9]{2}$");
	//var arrRegExps = new Array("[a-zA-Z0-9]+", "^[\\(\\)0-9\\-_xX \\+\\.eEtT]+$", "^[a-zA-Z0-9\\._-]+@[a-zA-Z0-9\\._-]+\\.[a-zA-Z0-9_-]{2,4}$", "^[0-9]{12,16}$", "^[0-9]{2}/[0-9]{2}$");
	
	switch(formName) {
	  
		case "loginForm" :
			// human readable field names to be verified
			var arrNames = new Array('User Name', 'Password');

			// form fields to be verified
			var arrFields = new Array('loguser', 'logpass');
			
			// which of the above regular expression is going to be applied to the individual fields? Contains indexes of arrRegExps
			var arrCheck = new Array(0, 0);

			break;

		case "ForgotPass" :
			
			// human readable field names to be verified
			var arrNames = new Array('User Name');

			// form fields to be verified
			var arrFields = new Array('user_name');
			
			// which of the above regular expression is going to be applied to the individual fields? Contains indexes of arrRegExps
			var arrCheck = new Array(2);

			break;
		
		case "Myaccount" :
		var arrCheck = new Array(0, 3, 0, 0, 0);
			// human readable field names to be verified
			var arrNames = new Array('Name On Card', 'Card Number', 'Card Type', 'Expire Month', 'Expire Year');

			// form fields to be verified
			var arrFields = new Array('NameOnCard', 'CardNumber', 'CardType', 'Expire_m', 'Expire_y');
			
			
			break;
		case "Profile" :
			
			var arrCheck = new Array(0, 0, 0, 0, 0, 1, 1, 2);
		
			// human readable field names to be verified
			var arrNames = new Array('First Name', 'Last Name', 'Address', 'City', 'State', 'Zip/Postal Code', 'Phone', 'E-mail');

			// form fields to be verified
			var arrFields = new Array('FirstName', 'LastName', 'Address1', 'City', 'State', 'ZIP', 'WorkPhone', 'Email');
			
			break;
	}
	
	var el = document.forms[formName].elements;
	
		//alert(document.Myaccount.MembershipType.value); return false;
		if (  formName == "Myaccount" ) { 
			//var checkCC = 1;    // then we must require the CC info as well
			var length = arrFields.length;	 
			
			
			
			arrNames[length]    = 'Name On Card';
			arrFields[length]   = 'NameOnCard';
			arrNames[++length]  = 'Card Number';
			arrFields[length]   = 'CardNumber';
			arrNames[++length]  = 'Card Type';
			arrFields[length]   = 'CardType';
			arrNames[++length]  = 'Expire Month';
			arrFields[length]   = 'Expire_m';
			arrNames[++length]  = 'Expire Year';
			arrFields[length]   = 'Expire_y';
					
			var	lnth = arrCheck.length;
			
			arrCheck[lnth]   = 0;
			arrCheck[++lnth] = 3;
			arrCheck[++lnth] = 0;
			arrCheck[++lnth] = 0;
			arrCheck[++lnth] = 0;
			
					
		}	
    var count_fields = 0;
	for (i = 0; i < arrFields.length; i++) {  // Running through the array elements
        count_fields++;
		var objField = el[arrFields[i]];
		var strType = objField.type;
		// Get that element value.
		switch (strType) {
		   
			case "select-one":
				strEntry = objField.options[objField.selectedIndex].value;
				break;
		   
			default:
				strEntry = objField.value;					
				break;
	       }
		objRegExp = new RegExp(arrRegExps[arrCheck[i]], 'i'); // Create the regular expression object
		
		if ( ! objRegExp.test(strEntry)) { // Does it match the expression?  If not do this.
			
		    alert('Your ' + arrNames[i] + ' is not formatted correctly.\nPlease correct.');  
		    objField.focus();  // Set the cursor focus for convenience.
				
		    return false;  // No go!   
		    flag = 1;
	       } else {
			if( formName == "Myaccount" && count_fields == 5){
				calculateTotal();	
			}		       
		   }     
	}
	
	
		
            
    return true; // Go!

}



function setEnable(fld) {	
 
	if(fld.checked) {
																											
		if(fld.name == "renew") {
		var tmp = "credit_card";
			if(fld.value == "true") {
				for(var i=0;i < eval(tmp + '.length'); i++) {						
					identity=document.getElementById(eval(tmp + '[i]'));
					identity.disabled  = false;
					identity.className = "enable";
				}
				  document.getElementById('NameOnCard').focus();
			}else {
				for(var i=0;i < eval(tmp + '.length'); i++) {
					identity=document.getElementById(eval(tmp + '[i]'));
					identity.disabled  = true;
					identity.className = "disable";
				}
			}
			return;
		}else {
			for(var i=0;i < eval(fld.name + '.length'); i++) {
				identity=document.getElementById(eval(fld.name + '[i]'));
				identity.disabled  = false;
				identity.className = "enable";
			}
		}
	}else {	 		
		
		for(var i=0;i < eval(tmp + '.length'); i++) {
			identity=document.getElementById(eval(tmp + '[i]'));
			identity.disabled  = true;
			identity.className = "disable";
		}
		
		for(var i=0;i < eval(fld.name + '.length'); i++) {								
			identity=document.getElementById(eval(fld.name + '[i]'));
			identity.disabled  = true;
			identity.className = "disable";
		}
	}					
} // End of function SetEnable()  

function calculateTotal() {
	var objMem = document.getElementById('MembershipLevel');
	var totalPrice = 0;
		totalPrice = totalPrice + prices[objMem.options[objMem.selectedIndex].value];
		
	document.Myaccount.total.value = totalPrice;
	
} // End of function calculateTotal()

// Update Hidden Fields
function updateHidden(formName) {

	switch(formName) {
		
		case 'Myaccount' :

			for(i=0; i < eval('updateHiddenFlds' + formName + '.length'); i++) {
				
				switch(eval('updateHiddenFlds' + formName + '[' + i + ']')) {
					
					case 'address_state' :					
						eval( 'document.' + formName + '.' + eval( 'updateHiddenFlds' + formName + '[' + i + ']' ) + '.value = \'' + eval('stateName[\'' + eval('document.Myaccount.State.value') + '\']') + '\'');
						break;
					
					case 'PaymentType' :
						var pay = new Array();
						var mem = new Array();
						
						// Payment Status Message to be inserted in the table
						pay[0] = 'CC transaction confirmed.';
						pay[1] = 'Cheque To be Cleared.';
						
						// Membership Status Message to be inserted in the table
						mem[0] = 'Update Successful.';
						mem[1] = 'Update Pending.';
						
						for(j=0; j < 2; j++)							
							if(eval('document.Myaccount.payment[' + j + '].checked')) {
								document.Myaccount.PaymentType.value = eval('document.Myaccount.payment[' + j + '].value');
								document.Myaccount.payment_status.value = pay[j];
								document.Myaccount.MembershipStatus.value = mem[j];
							}
						break;
					case 'address_country' :
						if(document.Myaccount.selCountry.value == 228)
							document.Myaccount.address_country.value = 'USA';
						break;
					default :
						eval('document.' + formName + '.' + eval('updateHiddenFlds' + formName + '[' + i + ']') + '.value = document.Myaccount.' + eval('updateHiddenVals' + formName + '[' + i + ']') + '.value');
				}
			}
			break;
	}		
}


