
var eIndex=0;
var emailPattern = '/^([\w\-]+\.?)+\@([\w\-]+\.{1})+(com|net|org|edu|int|mil|gov|biz|info|aero|museum|name|coop|\w{2})$/';
  			
/***********************************************/
//VALIDATOR FACTORY
function FormValidatorFactory(messageId) {
	this.messageId = messageId;
	
	FormValidatorFactory.prototype.createValidator = function(obj){
		var tagName = obj.tagName.toLowerCase();
		var type = obj.type.toLowerCase();
		 
		if(type == 'text' || type == 'password') {
			return new InputTextValidator(obj,this.messageId);
	  }else if	(tagName == 'textarea')
	  	return new TextAreaValidator(obj,this.messageId);
		else if	(tagName == 'select')
		  return new SelectValidator(obj,this.messageId);
		else if	((type == 'radio') || (type == 'checkbox'))
		  return new MultiValidator(obj,this.messageId);
						
		obj.validate = function() {return '';}
		
		return obj;
	}
}
/***********************************************/
function getTokenName(tokenName) {
	
	if(tokenName.indexOf('1') > -1 || 
		 tokenName.indexOf('2') > -1 || 
		 tokenName.indexOf('3') > -1 )
	 	return tokenName.substring(0, tokenName.length-1);
	
}
function clearField(obj){
	
	try {
			$(obj.name + '_wrap').style.color = '666666';
	 		}catch(e) {
	 		  try {
	 		  	$(obj + '_wrap').style.color = '666666';
	 		  }catch(e){
	 		  	 try {
	 		  	    $(obj).style.color = '666666';
	 		   }catch(e){
	 		   		try {
	 		   				var tokenName = getTokenName(obj.name);
	 		 					$(tokenName + '_wrap').style.color = '666666';
	 		   		}catch(e) {}
	 		   	}
	 		}
	 }
	try{
	 		// obj.style.backgroundColor='#ffffff';
		 }catch(e) {}
		 
		 	
}

function clearDefaultText(obj){
	try {
		var value = $(obj.name).value
		if (value == def_eventname || 
				value == def_organizedby || 
				value == def_recipientname || 
				value == def_invitemsg){
			$(obj.name).value = '';
		}
		}catch(e){}	
}

function errorField(obj){
	try {
	 		$(obj.name + '_wrap').style.color = 'red';
	 	 }catch(e) {
	 	 	 try {
	 		  	$(obj + '_wrap').style.color = 'red';
	 		  }catch(e){
	 		  	
	 		 try {
	 		 	var tokenName = obj.name;
	 		 			$(tokenName).style.color = 'red';
	 		 	 		tokenName = getTokenName(obj.name);
	 		 	 		$(tokenName + '_wrap').style.color = 'red';
	 		   }catch(e){}	
	 		 }
	 	}
	try{
	 		// obj.style.backgroundColor='#cccccc';
		}catch(e) {}
	
}

function customError(messageId,message){
		$(messageId).style.color = 'red';
 		$(messageId).innerHTML = message;
}

function complexTextType(obj,messageId){
	//Find all corresponding input text fields (for complex types)
  var complexTypes = document.getElementsByTagName('input');
  var complexType = null;
  var len = complexTypes.length;
  for(j=0; j < len; j++){
  	complexType = complexTypes[j];
  	if(complexType.type == 'text' && 
  		complexType.name.indexOf(obj.value) > -1) {
  			eIndex++;
  			var v = new InputTextValidator(complexType,messageId);
  			return v.validate();
  			
  	}
  }
  return '';
}
//Text Validator Object
function TextValidator(elemObj,messageId){
  this.obj = elemObj;
  this.name = this.obj.name;
  this.isRequired = (this.obj.className.indexOf('_optional') <  0) ;
 
  TextValidator.prototype.notFilled=function() {
  	 clearField(this);
  	 var fieldVal = trim(this.obj.value);
  	 if(fieldVal == '' && this.isRequired ){
  	 	 errorField(this);
  			return true;
  	 } 
  	return false;
 }
}
//Select Validator Object
function SelectValidator(elemObj,messageId){
  var validator = new TextValidator(elemObj);

  SelectValidator.prototype.validate=function() { 
  if(validator.notFilled()){
  		return validator.name;
  }
  return '';
 }
}

 
//Radio/Checkbox Validator Object
function MultiValidator(elemObj,messageId){
  this.isRequired = (elemObj.className.indexOf('_optional') <  0) ;
  this.name = elemObj.name; 
  this.value = elemObj.value;
  
  MultiValidator.prototype.validate=function() { 
  clearField(this);
  
  if(!this.isRequired) return '';  	 
  
  var multiArray = document.getElementsByName(this.name);
  var isChecked = false;
  //increment index to avoid dupe processing
    for( i=0; i < multiArray.length; i++){
     	eIndex++;
     	clearField(this);
  		if(multiArray[i].checked) {
			  isChecked = true;
			  break;
  	   }
  	 }
  	 eIndex--;
	 if(isChecked) return '';	
  	 errorField(this); 
  	 return this.name;
   } 
	
}
 
//Input Text Validator
function InputTextValidator(elemObj,messageId){
  var validator = new TextValidator(elemObj); 
  this.obj = elemObj;
  
  InputTextValidator.prototype.validate=function() {   
  	if (elemObj.className.indexOf('_optional') <  0) {
		if(validator.notFilled() ){   
			return validator.name;
  	 	} 
 	}
			
 		clearField(this.obj);
   	//Check password type
  	var type = this.obj.type.toLowerCase();
  	var isPass = (this.obj.type.toLowerCase() == 'password'); 	
  	if(isPass) {
	
  			  var pass2 = $(this.obj.name + '2');
  				if (pass2) {
						var isPass2 = (pass2.type.toLowerCase() == 'password');
						if(pass2){
							clearField(pass2);
							if(this.obj.value != pass2.value){
								errorField(this.obj);
								errorField(pass2);
								return 'password_match';
							}	
							eIndex++;
						}
					}
	  }
	  
    //Check number type
   	if(this.obj.className.indexOf('_number') > -1) {  
		
   		var strName = this.obj.name;
   		var strNum = this.obj.value;
   		if(strName.indexOf('phone') > -1) {
   			 	if(!isNaN(strNum)) {
   			 		 if( strNum.indexOf('.') > -1 ){
   							errorField(this.obj);
   							return validator.name;
   						}
   				}
   			} 
   		strNum = cleanNumber(strNum);   		
			if(isNaN(strNum)){
   				errorField(this.obj);
   				return validator.name;
   			} 
   	}
   
   	//Check email type
   	if(this.obj.name.indexOf('email') > -1){   
	 	 var email2 = $(this.obj.name + '2');
	 	 if(email2){
			if (this.obj.value != email2.value){
				clearField(email2);
				errorField(this.obj);
				errorField(email2);
				return 'email_match'; 
			}
		 }
   		 if(this.obj.name.indexOf('subject') < 0) {
   		 	if(!this.validateEmail(this.obj)) {
   		 		 errorField(this.obj);
   		 		 return validator.name; 	
   		 	}	
   		}
     }
     //Check CC type  
    if(this.obj.name.indexOf('cc_number') > -1){ 
	
     	if(!this.validateCC(this.obj)) {
   		 		 errorField(this.obj);
   		 		 return validator.name; 	
   		 	}
   	 }
   	return '';
 }
 
 //Email validator function
 this.validateEmail=function(elemObj) {   		
	var email = elemObj.value;
  	var isRequired = (elemObj.className.indexOf('_optional') <  0) ;

	if (email == '' &&  !isRequired)
  		return true;
  	else {
  		if(email.match(objRegExpEmail) == null)
  			return  false;
  	}
    return true;
 }
  
 //CC validator function
 this.validateCC = function(cardObj)
 {
  var isValid = false;
  var cardNumber = cardObj.value;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);
	
  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;
    
		var cardType = cardNumber.charAt(0);
	
		 switch(cardType)
    {
      case '5': //mastercard
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case '4': //visa
       	lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case '3': //amex
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

	case '6': //discover
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^6011/;
        break;

      default:
        prefixRegExp = /^$/;
        //alert("Card not supported.");
    	}

    	prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    	isValid = prefixIsValid && lengthIsValid;
  	}
  		if (isValid) {
    		var numberProduct;
   		 	var numberProductDigitIndex;
    		var checkSumTotal = 0;

    	 for (digitCounter = cardNumberLength - 1; 
      			digitCounter >= 0; 
      			digitCounter--)
     {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;
        productDigitCounter < numberProduct.length; 
        productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }
    isValid = (checkSumTotal % 10 == 0);
    }
 
		return isValid;
	}	 
 
}

//Text Area Validator Object
function TextAreaValidator(elemObj,messageId){
  var validator = new TextValidator(elemObj);
  
  TextAreaValidator.prototype.validate=function() { 
  if(validator.notFilled()){
  		return  validator.name;
  }
  return '';
 }
}
	
function valid(formObj,messageId){

	var factory = new FormValidatorFactory(messageId);
	var validator;
	var errorStr='';
	var elemArray = formObj.elements;
	for(eIndex=0; eIndex < elemArray.length; eIndex++){
		try{
			   
				validator = factory.createValidator(elemArray[eIndex]);		
				errorStr += validator.validate();	
				}catch(e) {
					if(debug) alert(e); 				
			  }
   }

	return errorStr;
}


function validateJoin(formObj,messageId){
  
  var errorStr = valid(formObj,messageId);
  
  var allValid = (errorStr.length < 1);
  if(!allValid) {
	var strMessage = ''//'Please correct the fields below in red:'
	if(errorStr.indexOf('password_match') > -1){
		strMessage += '<br />Passwords do not match.';
	}
	if(errorStr.indexOf('email_match') > -1){
		strMessage += '<br />Emails do not match.';	
	}
  	customError(messageId, strMessage);
	//setTimeout('clearMessage(' + messageId +')',10000); 
    return;
  } else
  	formObj.submit();
	
  //Check if CC info is valid before submitting
  /*
  var formCC = $('form_register_cc');
  
  if( formCC ) {		  
		  if(errorStr.indexOf('cc') < 0 ){
		  		var ajaxReq = new Ajax.Request(
						'/functions/auth_request.asp' ,
					{	method: 'post', 
				  	parameters: formObj.serialize(true),
						onSuccess:function(transport){
							var res = transport.responseText;
							//document.write(res);
							var out = '';
							var error=false;
								if(res.indexOf('Declined') > -1 ){
									 out = '<br>Invalid Credit Card.  Please re-enter or try a different card.';	
									 error = true;
								}else if(res.indexOf('Error') > -1){
									 out = '<br>Error Processing Credit Card.  Please re-enter.';
									 error=true;
								}	 
								if(error) {
									$('cc_message').style.color='red';
									$('cc_message').innerHTML = out;
									 setTimeout("clearMessage('cc_message')",5000); 
									 cc_error=true;
								}	else if (res.indexOf('Approved') > -1) {
									 if(allValid){
									 	 //$('cc_message').style.color='green';
									 	 //$('cc_message').innerHTML = '<br>Card accepted';	
									 		formObj.submit();
									 		return;
									 		
									 	}
								}											 		
						},
						onFailure:function(transport){
										 if(debug)
										 alert('transport failure:' + transport.responseText);
										
						}
					}); 
			
		  }
	} else {
	
		 if( errorStr.indexOf('email') < 0    &&
		 		 errorStr.indexOf('password') < 0 &&
		 		 errorStr.indexOf('agree') < 0 ) {
		 		 	formObj.submit();
		 		 	return;
		 	}
	}
	*/
	
	
	
}

function validateGeneric(formObj,messageId,callback, width,height,actionuri){
//alert (formObj.name + ', ' + messageId);
if($(messageId)) 
	$(messageId).innerHTML = '';
else {
	return;
}	
  var errorStr = valid(formObj,messageId);
  if (errorStr.length > 1) {
	
	 		var strMessage = 'Please correct the fields below in red: '	 	

	 		if(errorStr.indexOf('password_match') > -1){
	 			strMessage += 'Passwords do not match. Please re-enter. <br>';
			}
			if(errorStr.indexOf('email_match') > -1){
				strMessage += 'Emails do not match.  Please re-enter.<br>';	
			}
	 		$(messageId).innerHTML =  strMessage;
			//setTimeout('clearMessage("' + messageId +'")',10000); 
			resizeFrame();
	 	 	return false;
	 }
	resizeFrame();
	if(formObj.id.indexOf('login') > -1 ||
	   formObj.id.indexOf('register') > -1){
			formObj.submit();
			return;
	}	
//	S/N: No longer used?	
//	if(formObj.id.indexOf('preview_form') > -1){
//		sendFormData(formObj,
//	 					formObj.action,
//	 					'/create/preview/confirm.asp', 
//	 					sendSubModalNext, 
//	 					600, 
//	 					400 
//	 				);
//	  return;
//	}
	if( actionuri != ''){
		formObj.action = formObj.action + '?' + actionuri	
	}
	formObj.submit();
	 
	
}

function validateSubmit(formObj,messageId,callback, width,height,actionuri){

	if(formObj.id.indexOf('participant_form') > -1){
	  return validatePartsForm(formObj, messageId,actionuri);
	 }
	 	if(formObj.id.indexOf('profile_form') > -1){
	   return validateProfileForm(formObj, messageId);	  
	 }
	  if(formObj.id.indexOf('payment_form') > -1){
	   return validatePaymentForm(formObj, messageId);	  
	 }
	  if(formObj.id.indexOf('setting_form') > -1){
	   return validateSettingForm(formObj, messageId, actionuri);	  
	 }
	  if(formObj.id.indexOf('password_reset_form') > -1){
		//S.N - 12/24/2007 - added	
		return validatePasswordResetForm(formObj, messageId);
	 }
	 
	 return validateGeneric(formObj,messageId,callback, width,height,actionuri);
	
}	
	
function validateInvites(elemId,messageId,landing){
	var max_length = 500;
	var elemObj = $(elemId);
	var inviteVal = elemObj.value;
	var messgObj = $(messageId);	
	var allEmails = new Array();
	
	if(inviteVal == '(Organizer)' &&
	   landing == 'participant') {
		 updateValuesByName('edivvy_number_dynamic',1);	
		 return;
	} 
	allEmails = trim(inviteVal).split(objRegExpList);
	var length = allEmails.length;	
	if (length > max_length) {	
		if(messgObj) messgObj.innerHTML = "Sorry, you've reached the maximum number of emails allowed.  Please email <a href='/contact/email.asp' target='_top' >Customer Service</a> if you would like to send out more than " + max_length + "invitations.";
		return;
	}
	
	var emails = new Array(); 
    var email = '';
	var emailList = '';
	var message='';
	
	for(i=0; i < length; i++){
			email = trim(allEmails[i]);
			if(email.length > 2){			
				if(!objRegExpEmail.test(email) && !objRegExpNetwork.test(email) ) {			
					 message += '<li>' + email + '</li>';
				}else
				  	try { 
				  		   if(emailList.indexOf(email) < 0){
				  					emailList += ',' + email;
				  		  			emails.push(email);
				  		  	}else
				  		  		 message += '<li>' + email + '(duplicate)</li>';
				  		  }catch(e){}
				  	
				}
	}
	clearMessage(messgObj);	
 
	if(message.length > 2) {
		message = '<br>The following email addresses are not valid and were removed:<ul>' + message + '</ul>';
	}
	
	 if(length == 1 && emails.length == 0) length = 0;	
	 elemObj.value=emails.join('\n');
	 
	 if(message.length > 2) {
                messgObj.innerHTML = message;
		setTimeout("clearMessage('" + messageId + "')", 2000);
		return false;
	 }



   return true;
 
}

function updateEdivvyParts(num){
	//update from login
	try {
	 $('edivvy_number_dynamic_parts').innerHTML = num;
//	 $('edivvy_number_dynamic').innerHTML = num+1;
	 }catch(e) {}
}

function alertOrg(messgObj, message, clearTime){
	  if(!clearTime) clearTime = 3000;
	  
	  if(messgObj) messgObj.innerHTML = message;	
		setTimeout("clearMessage('" + messgObj.id + "')",5000); 	
}

function sendValidList(elemId){
	var val = elemId.value;
	if(!val)
		val = $(elemId).value;
		
	sendToPartList(val,elemId,true, false);
	
}

function clearMessage(mId){
	 
	 if(!$(mId)) return;
	 $(mId).innerHTML = '';
}


function validatePartsForm(formObj, messageId, actionuri){
	var message = 'Please correct the fields in red below.<br><br>';
	var flag='';
	var dataStr = formObj.participant_list.value;
	//Particiant Field
	clearField($('participant_list'));
	if( dataStr == ''){
			errorField($('participant_list'));
			flag += 'participant_list';
	} else if(dataStr.indexOf('Org') > -1) {
		customError(messageId,"Please replace (Organizer) with your email using Manual Entry!<p>"); 
		$('manual_entry').style.color='red';
		setTimeout("clearMessage('" + messageId + "')",2500); 
		setTimeout("clearField('manual_entry')",2500);
		return;
	}
	if(flag.length > 2) {
		customError(messageId,'Please correct the fields below in red.<br><br>'); 
		return;
	}
	//MAKE SUBMODAL
	dataStr = dataStr.replace(/\n/g,",");
 // dataStr = dataStr.replace(/\(Organizer\)/g,"");
  	updateDbEventParts('participant_list=' + dataStr);
	
	if( actionuri != ''){
		formObj.action = formObj.action + '?' + actionuri	
	}
	formObj.submit();
}

function validateEventDetailsForm(formObj, messageId){
	//L.K - 03/12/2009 - Added
	//Validates event details form fields - required items only
	//Revisit and use modify text input to use classname
	//InputTextValidator functionality
	//classname = input_text_required
	//check for "_required"
	var eMsg = '*';
	
	clearField($(error_event_name));
	clearField($(error_event_recipient_name));
	clearField($(error_event_organizer_name));
	clearField($(error_event_date_delivery));
	clearField($(error_event_shipto_name));
	clearField($(error_event_shipto_phone));
	clearField($(error_event_shipto_address));
	clearField($(error_event_shipto_city));
	clearField($(error_event_shipto_state));
	clearField($(error_event_shipto_zip));
	
	if (formObj.event_name.value == '') { customError(error_event_name,eMsg); errorField(event_name); }
	if (formObj.event_recipient_name.value == '') { customError(error_event_recipient_name,eMsg); errorField(event_recipient_name); }
	if (formObj.event_organizer_name.value == '') { customError(error_event_organizer_name,eMsg); errorField(event_organizer_name); }
	if (formObj.event_date_delivery.value == '') { customError(error_event_date_delivery,eMsg); errorField(event_date_delivery); }
	if (formObj.event_shipto_name.value == '') { customError(error_event_shipto_name,eMsg); errorField(event_shipto_name); }
	if ((formObj.event_shipto_phone1.value == '') || (formObj.event_shipto_phone2.value == '') || (formObj.event_shipto_phone3.value == '')) { customError(error_event_shipto_phone,eMsg); customError(event_shipto_phone_wrap, 'Phone Number:'); }
	if (formObj.event_shipto_address.value == '') { customError(error_event_shipto_address,eMsg); errorField(event_shipto_address); }
	if (formObj.event_shipto_city.value == '') { customError(error_event_shipto_city,eMsg); errorField(event_shipto_city); }
	if (formObj.event_shipto_state.value == '') { customError(error_event_shipto_state,eMsg); errorField(event_shipto_state); }
	if (formObj.event_shipto_zip.value == '') { customError(error_event_shipto_zip,eMsg); errorField(event_shipto_zip); }
}

function validateSettingsForm(formObj, messageId){
	//L.K - 03/17/2009 - Added
	//Validates event invitation options / settings - required items only
	var eMsg = '*';
	
	clearField($(error_event_recipient_email));
	if (formObj.event_recipient_email.value == '') { customError(error_event_recipient_email,eMsg); errorField(event_recipient_email); }	
}

// Validates a single field
function validateRequired(obj, messageId){
	var eMsg;
	eMsg = '*';
	
	clearField($(messageId));
	//clearMessage(messageId);
	validator = new InputTextValidator(obj,messageId);
	errorStr = validator.validate();
		
	if (errorStr != ''){ 
		obj.value = '';
		customError(messageId, eMsg);
	}	
}

// Validates the Amazon Gift Card field
function validateGC(obj, checkValue, messageId){
	var eMsg;
	eMsg = '*';
	
	clearField($(messageId));
	clearMessage(messageId);
	if (checkValue = 'checked') {
		validator = new InputTextValidator(obj,messageId);
		errorStr = validator.validate();
		
		if (errorStr != '' || obj.value == ''){ 
			obj.value = '';
			customError(messageId, eMsg);
			errorField(obj);
		}	
	}
}


function validatePasswordResetForm(formObj, messageId){
	//S.N - 12/24/2007 - Added
	clearField('member_password');
	clearField($('member_password1'));
	clearField($('member_password2'));
	clearMessage(messageId);
	//Requested Amount
	var validator,inputElem1,inputElem2;
	var flag = '';
	var errorStr = '';
	
	inputElem1 = formObj.member_password1;
	validator = new InputTextValidator(inputElem1,messageId);
	inputElem2 = formObj.member_password2;
	validator = new InputTextValidator(inputElem2,messageId)
		
	if(inputElem1 != inputElem2){
		errorField(inputElem1);
		errorField(inputElem2);
		flag += validator.validate();
		//errorStr = 'New Password field does not match Re-type New Password Field'
	}
	
	if(flag.length > 1) {
		customError(messageId,'Please correct the fields below in red.'); 		//se
		tTimeout("clearMessage('" + messageId + "')",2500); 
	    return;
	}
	formObj.submit();
}
function validateSettingForm(formObj, messageId, actionuri){
	
	clearField('event_request_default_min');
	clearField($('event_request_value_min'));
	clearField('event_request_value_flexible');
	clearField('event_request_value_flexible_min');
	clearField('event_request_value_flexible_max');
	clearField($('event_request_value_exact'));
	clearField($('event_request_value_suggested'));
	clearMessage(messageId);
	//Requested Amount
	var requestTypes = formObj.event_request_type;
	var validator,inputElem1,inputElem2;
	var flag = '';
	var max_total = 0, min_total=0;
	var event_total = $('edivvy_total') ? $('edivvy_total').innerHTML : 0;
	var errorStr = '';
	var busrule_minamt = 1;
	event_total = cleanNumber(event_total);
	
	//Verify Suggested 
	if(requestTypes[0].checked) {
	 	inputElem1 = formObj.event_request_value_suggested;
		validator = new InputTextValidator(inputElem1,messageId);
		flag += validator.validate();
		
		if(flag.length > 2){	  	
	  	   errorField('event_request_value_suggested');
	  	}else {
			 min_total = parseFloat(cleanNumber( inputElem1.value ) );
			 if(min_total < busrule_minamt ) {
				  errorField('event_request_value_suggested');
				  errorField('event_request_default_min');
				  flag += 'event_request_value_suggested';
		  }
	  	}
	}
	//Verify Minimum
	if(requestTypes[1].checked){
		inputElem1 = formObj.event_request_value_min;
		validator = new InputTextValidator(inputElem1,messageId);
		flag += validator.validate();
		 if(flag.length > 2){	  	
	  	   errorField('event_request_value_min');
	  	}else {
		  min_total = parseFloat(cleanNumber( inputElem1.value ) );
		  if(min_total < busrule_minamt ) {
		      errorField('event_request_value_min');
			  errorField('event_request_default_min');
			  flag += 'event_request_value_min';
		  }
		}
	}	
  
	//Verify Flexible
	if(requestTypes[2].checked){	
		inputElem1 = formObj.event_request_value_flexible_min;
		validator = new InputTextValidator(inputElem1,messageId);
		flag += validator.validate();
		
		inputElem2 = formObj.event_request_value_flexible_max;
		validator = new InputTextValidator(inputElem2,messageId);
		flag += validator.validate();
	 
	  if(flag.length > 2){	  	
	  		errorField('event_request_value_flexible');
	  }else{
	     min_total = parseFloat(cleanNumber(inputElem1.value));
		 max_total = parseFloat(cleanNumber(inputElem2.value));
		 if(min_total < busrule_minamt ) {
		 	  errorField('event_request_value_flexible');
			  errorField('event_request_value_flexible_min');
			  errorField('event_request_default_min');
			  flag += 'event_request_value_flexible_min';
		  }
		  if(min_total > max_total) {
		   	 errorField('event_request_value_flexible');
			 errorField('event_request_value_flexible_max');
			 flag += 'event_request_value_flexible_max';
			 errorStr += '<li>Maximum Contribution needs to be greater than the minimum contribution.</li>';
		  }
		}
	  }
	
	//Verify Exact 
	/*if(requestTypes[3].checked) {
	 	inputElem1 = formObj.event_request_value_exact;
		validator = new InputTextValidator(inputElem1,messageId);
		flag += validator.validate();
		
		if(flag.length > 2){	  	
	  	   errorField('event_request_value_exact');
	  	}else {
			max_total = parseFloat(cleanNumber(inputElem1.value));
			if(max_total < busrule_minamt ) {
		      errorField('event_request_value_exact');
			  errorField('event_request_default_min');
			  flag += 'event_request_value_exact';
		  	}
	  	}
	}
	*/
	if(flag.length > 2) {
		customError(messageId,'<p>Please correct the fields below in red.<ol>' + errorStr + '</ol>'); 		
		setTimeout("clearMessage('" + messageId + "')",10000); 
	    return;
	}
	if( actionuri != ''){
		formObj.action = formObj.action + '?' + actionuri	
	}
	formObj.submit();
}
/*******************
 VALIDATE: catpcha
********************/
function validateCaptcha(objForm, messageId){
 var errorStr='';		
 var notValid  = valid(objForm,messageId);
 
 //Validate basic form fields 
 if(notValid && notValid.length > 2){
 	if(notValid.indexOf('challenge') > -1)
		objForm.challenge.style.backgroundColor='red';	
 }
 
 //Validate captcha
 notValid = trim(notValid);
 if(objForm.challenge.value == objForm.c.value) {  
 	 if(notValid.length == 0) {
	 	objForm.submit();
		return;
	}
}else{
	 notValid += 'challenge';
	 objForm.challenge.style.backgroundColor='red';	
	 objForm.challenge.value='';
	 captchaFile(objForm);
}
	if(notValid.length > 1)customError(messageId,'Please correct the fields in red.'); 	
}
/************************
 VALIDATE: Profile Form
*************************/
function validateProfileForm(formObj, messageId){	
	 var errorStr = valid(formObj,messageId);
	 var cc_elem = $('cc_new');	
	 if (errorStr.length > 1) {	     
	 
	     	if( cc_elem && cc_elem.style.display == 'none'){
	     		//Ignore cc_elem
	     		var ccTokens = errorStr.split(formObj.member_account_cc_number.name);
	     		errorStr = ccTokens.join('');
	     		ccTokens = errorStr.split(formObj.member_account_cc_exp_m.name);
	     		errorStr = ccTokens.join('');
	     		ccTokens = errorStr.split(formObj.member_account_cc_exp_y.name);
	     		errorStr = ccTokens.join('');
	     		ccTokens = errorStr.split(formObj.member_account_cc_cvid.name);
	     		errorStr = ccTokens.join('');	     		
	     	}
	  }
	  if(errorStr.length > 1) {
	  	customError(messageId,'Please correct the fields below in red: ');
	  	setTimeout("clearMessage('" + messageId + "')",10000); 
	  	return;
	  	
	 }else if ( cc_elem && cc_elem.style.display != 'none' ){
	 var ajaxReq = new Ajax.Request(
						'/functions/auth_request.asp' ,
					{	method: 'post', 
				  	parameters: formObj.serialize(true),
						onSuccess:function(transport){
							var res = transport.responseText;
							var out = '';
							var error=false;
								if(res.indexOf('Declined') > -1 ){
									 out = '<br>Invalid Credit Card.  Please re-enter or try a different card.';	
									 error = true;
								}else if(res.indexOf('Error') > -1){
									 out = '<br>Error Processing Credit Card.  Please re-enter.';
									 error=true;
								}	 
								if(error) {
									$('cc_message').style.color='red';
									$('cc_message').innerHTML = out;
									 setTimeout("clearMessage('cc_message')",10000); 
									 cc_error=true;
								}	else if (res.indexOf('Approved') > -1) {
										 $('cc_message').style.color='green';
									 	 $('cc_message').innerHTML = '<br>Card accepted';	
									 		formObj.submit();
									 		return;
								}											 		
						},
						onFailure:function(transport){
										
										 alert('transport failure:' + transport.responseText);
										
						}
					}); 			
	  
	  }else {
	  	formObj.submit(); 
	 }
	 
}

/************************
 VALIDATE: PAYMENT FORM
*************************/

function validatePaySub(formObj,messageId){
	var factory = new FormValidatorFactory(messageId);
	var validator;
	var debug = '';
	var errorStr='';
	var elemArray = formObj.elements;
	var valid = true;
	for(eIndex=0; eIndex < elemArray.length; eIndex++){
		 validator = factory.createValidator(elemArray[eIndex]);	
		 errorStr = validator.validate();
		 debug += errorStr
				if(errorStr != "") {
					elemArray[eIndex].style.background = "#ffff33";
					valid = false;
				 }
	}
	if(debug.indexOf("email_match") >= 0 ){
		if($('participant_email2')){
			$('participant_email2').style.background = "#ffff33";
			$('participant_email2_wrap').style.color = "red";
		}
	}
	
	if(valid) formObj.submit();
	
	return valid;

	
}

function validatePaymentForm(formObj, messageId, passFlag ){
	 var errorStr = '';
	 var ajaxReq;
  //clear messages
   clearMessage('error_payment')
   clearMessage(messageId);
   errorStr = valid(formObj,messageId);	
	 
	 if(errorStr.length > 1) {	 	 
	  	customError(messageId,'Please correct the fields below in red. ');
		customError('error_message_bottom','Please correct the fields above in red. ');
		setTimeout("clearMessage('" + messageId + "')",10000); 
		setTimeout("clearMessage('error_message_bottom')",10000); 
		return;
	 } 
	   formObj.submit();
	}
 function validateCC(formObj, messageId, passFlag) {
  
    var errorStr = '';
	var ajaxReq;
	var cc_elem = $('cc_new');	
	var acct_elem = $('participation_account');
	 if(errorStr.length < 2){
				formObj.submit();
	 }
	
	 ajaxReq = new Ajax.Request(
						'/functions/auth_request.asp' ,
					{	method: 'post', 
				  		parameters: formObj.serialize(true),
						onSuccess:function(transport){
							var res = transport.responseText;
							//alert('success:' + res);
							var out = '';
							var error=false;
								if(res.indexOf('Declined') > -1 ){
									 out = '<br>Invalid Credit Card.  Please re-enter or try a different card.';	
									 error = true;
								}else if(res.indexOf('Error') > -1){
									 out = '<br>Error Processing Credit Card.  Please re-enter.';
									 error=true;
								}	 
								if(error) {
									$('cc_message').style.color='red';
									$('cc_message').innerHTML = out;
									 setTimeout("clearMessage('cc_message')",10000); 
									 cc_error=true;
								}	else if (res.indexOf('Approved') > -1) {									
									 	 var res_split = transport.responseText.split(':'); 	 
									 	 if(res_split && res_split.length > 1)
									 	 	 formObj.payment_cc_auth.value = res_split[1];
									 	
									 	 if(errorStr.length < 2){
										 	formObj.submit();
									 	 }
										 return;
								}											 		
						},
						onFailure:function(transport){
										alert('transport failure:' + transport.responseText);
						}
					}); 			
					
	
	  
}


/************************
 VALIDATE: Preview Form
*************************/
//S/N - No longer used?
//function validatePreview(obj, messageId){
//	 
//	 if(obj) {
//	 		var formObj = obj.form;
//	 		var processUrl = '/create/preview/send_process.asp';
//	 		var ajaxReq = new Ajax.Request(processUrl ,
//				{	method: 'post', 
//				  parameters: 	$(formObj.id).serialize(true),
//					onSuccess:function(transport){
//						var res = transport.responseText;
//						var res_tokens = res.split("|");
//						if(res_tokens.length > 1) {	
//							formObj.edivvy.value = res_tokens[1];					
//							if(obj.id.indexOf('send') > -1) {		
//							 	  formObj.action = obj.id + '.asp';	
//							 		sendFormData(formObj, formObj.action, 'confirm.asp?edivvy=' + res_tokens[1], sendSubModalNext , 400, 300 );
//							}else if(obj.id.indexOf('save') > -1) {
//									formObj.action = '/invite/';
//									formObj.submit();
//							}
//						}					 		
//					},
//					onFailure:function(transport){
//										if(debug)
//										 			alert('transport failure!!:' + transport.responseText);
//										
//					}
//				});
//		 
//	 }
//	
//}
