// include functions from cfform
function include_dom(script_filename) {
	var html_doc = document.getElementsByTagName('head').item(0); 
	var js = document.createElement('script'); 
	js.setAttribute('language', 'javascript'); 
	js.setAttribute('type', 'text/javascript'); 
	js.setAttribute('src', script_filename); 
	html_doc.appendChild(js); 
	return false; 
}

function include(script_filename) {  
    document.write('<' + 'script');  
    document.write(' language="javascript"');  
    document.write(' type="text/javascript"');  
    document.write(' src="' + script_filename + '">');  
    document.write('</' + 'script' + '>');  
}
  
include('/cfide/scripts/cfform.js');
 

//my functions
function focusThisField(myField){

	if( myField.value == myField.title ){
		myField.value = '';
	}
}

function blurThisField(myField){

	if( myField.value == '' ){
		myField.value = myField.title;
	}
}

function keyupThisField(myField){
	
	if( ( myField.className == 'f_input_req' || myField.className == 'f_input_dep_req' || myField.className == 'f_input_opt_bad' ) && myField.value != ''  && myField.value != myField.title ){
		if( myField.className == 'f_input_dep_req' ){
			myField.className = 'f_input_dep';
		}
		else if( myField.className == 'f_input_opt_bad' ){
			myField.className = 'f_input_opt';
		}
		else{
			myField.className = 'f_input';
		}
	}
	
	if ( myField.className == 'f_input_dep'){

		//var myTr = eval("document.getElementById('" + myField.title + "_tr')");
		var myInput = eval('document.membershipForm.' + myField.title + '_other');

		for ( i=0; i < myField.options.length; i++){
			if( myField.options[i].selected == true ){

				if( myField.options[i].text == 'Other' ){
					//myTr.style.display = '';
					myInput.disabled = false;
				}
				else{
					//myTr.style.display = 'none';
					myInput.disabled = true;
				}
				
			}
		}
	}
}

function keyupThisPassword(myField){
	if ( myField.value == myField.title ){
		myField.type = "text";
		//myField.setAttribute("type", "text");
	}
	else{
		myField.type = "password";
		//myField.setAttribute("type", "password");
	}
}


function checkMaxLength(myField, myMaxLength){

	if( myField.value.length > myMaxLength ){
		alert('* Maximum length for ' + myField.title + ' is ' + myMaxLength + ' characters')
		myField.value = myField.value.substring(0, myMaxLength)
	}
}

function f_checkFields(myFrom){
	var myInputs = myFrom.getElementsByTagName('*');
	var isValid = '';
	var myErrors = '';
	
	// loop though all fields
	for (i=0; i < myInputs.length; i++) {
		
		// if input is required and not disabled
		if ( (myInputs[i].className == 'f_input' || myInputs[i].className == 'f_input_req' || myInputs[i].className == 'f_input_dep' || myInputs[i].className == 'f_input_dep_req' ) && myInputs[i].disabled == false) {
			
			// if input is empty
			if( myInputs[i].value == '' || myInputs[i].value == myInputs[i].title ){
				myErrors = myErrors + '* ' + myInputs[i].getAttribute('validationmsg') + ' \n';
				// if input has dependency, set dependency required class
				if( myInputs[i].className == 'f_input_dep' || myInputs[i].className == 'f_input_dep_req' ){
					myInputs[i].className = 'f_input_dep_req';
				}
				// set required class
				else{
					myInputs[i].className = 'f_input_req';
				}
			}
			// if input has validation
			else if( myInputs[i].getAttribute("validate") != '' ){
				isValid = true;
				
				// inner validate field
				isValid = validate(myInputs[i], myInputs[i].getAttribute("validate"));
				
				if( isValid == true ){
					if( myInputs[i].getAttribute("onvalidation") != null && myInputs[i].getAttribute("onvalidation") != '' )
					{
						var myValue = myInputs[i].value;
						if( myInputs[i].value == myInputs[i].title ) myValue = '';
						isValid = eval(myInputs[i].getAttribute("onvalidation") + "('" + myInputs[i].value + "', '" + myInputs[i].id + "')");
					}
				}
				
				// if input is not valid
				if( isValid != true ){
					myErrors = myErrors + isValid;
					// if input has dependency, set dependency required class
					if( myInputs[i].className == 'f_input_dep' || myInputs[i].className == 'f_input_dep_req' ){
						myInputs[i].className = 'f_input_dep_req';
					}
					// set required class
					else{
						myInputs[i].className = 'f_input_req';
					}
				}
			}
			// return to normal class
			else{
				if( myInputs[i].className == 'f_input_dep' || myInputs[i].className == 'f_input_dep_req' ){
					myInputs[i].className = 'f_input_dep';
				}
				else{
					myInputs[i].className = 'f_input';
				}
			}
		}
		// if input is optional
		else if ( ( myInputs[i].className == 'f_input_opt' || myInputs[i].className == 'f_input_opt_bad' ) && myInputs[i].disabled == false){
			// is input has validation
			if( myInputs[i].getAttribute("validate") != '' ){
				isValid = true;
				// validate field
				//if( myInputs[i].getAttribute("type") == 'text' ){
					isValid = validate(myInputs[i], myInputs[i].getAttribute("validate"));
				//}
				
				// if input is not valid
				if( isValid != true ){
					myErrors = myErrors + isValid;
					myInputs[i].className = 'f_input_opt_bad';
				}
				// return to normal class
				else{
					myInputs[i].className = 'f_input_opt';
				}
			}
		}
	}
	
	// display errors and return false
	if( myErrors.length > 0 ){
		alert( myErrors );
		return false;
	}

	// if submit is good, empty all optional fields which have not been field out
	for (i=0; i < myInputs.length; i++) {
		if ( myInputs[i].className == 'f_input_opt' && myInputs[i].value == myInputs[i].title ){
			myInputs[i].value = '';
		}
	}
	
	return true;
}

// function:	validate
// in:			field, validation type
function validate(myField, validateType){
	
	var isValid = true;
	var myValue = myField.value;
	
	// set value
	if( myValue == myField.title ){
		myValue = '';
	}
	
	// call respective validation
	switch (validateType){
	
		case 'integer':
			isValid = checkInt(myField, myValue);
		break;

		case 'float':
			isValid = checkFloat(myField, myValue);
		break;

		case 'email':
			isValid = checkMail(myField, myValue);
		break;

		case 'emailList':
			isValid = checkMailList(myField, myValue);
		break;

		case 'phone':
			isValid = checkPhone(myField, myValue);
		break;

		case 'zip':
			isValid = checkZip(myField, myValue);
		break;

		case 'cc':
			isValid = checkCC(myField, myValue);
		break;

		case 'cvv2':
			isValid = checkCVV2(myField, myValue);
		break;

		case 'ssn':
			isValid = checkSSN(myField, myValue);
		break;

		case 'url':
			isValid = checkURL(myField, myValue);
		break;

		case 'uuid':
			isValid = checkUUID(myField, myValue);
		break;

		case 'boolean':
			isValid = checkBoolean(myField, myValue);
		break;

		case 'date':
			isValid = checkDate(myField, myValue);
		break;
	}
	
	return isValid;
}

//validations
function checkInt(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkinteger(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Integer\n';
}

function checkFloat(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checknumber(myValue, false);
	
	if( isValid == true ) return true;
	else{
		if( myField.getAttribute('validationmsg').length ){
			return '* ' + myField.validationmsg + '\n';
		}
		else{
			return '* ' + myField.title + ' is not a valid Float\n';
		}
	}
}

function checkMail(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkEmail(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Email\n';
}


function checkMailList(myField, myValue)
{
	var isValid = true;
	var valueArray = myValue.split(",");
	
	for( var i = 0; i < valueArray.length; i++ ){
		if( _CF_checkEmail(trim(valueArray[i]), false) == false ){
			return '* ' + myField.title + ': "' + trim(valueArray[i]) + '"' + ' is not a valid Email\n';
		}
	}
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Email\n';
}


function checkPhone(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkphone(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Phone Number\n';
}

function checkZip(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkzip(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Zip Code\n';
}

function checkCC(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkcreditcard(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Credit Card\n';
}

function checkCVV2(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkinteger(myValue, false);
	
	if( isValid == true ){
		isValid = _CF_numberrange(myValue, 100, 9999, false);
	}
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid CVV2\n';
}

function checkSSN(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkssn(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Social Security Number\n';
}

function checkURL(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkURL(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid URL\n';
}

function checkUUID(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkUUID(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid UUID\n';
}

function checkBoolean(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkBoolean(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a Boolean\n';
}

function checkDate(myField, myValue)
{
	var isValid = true;
	
	isValid = _CF_checkdate(myValue, false);
	
	if( isValid == true ) return true;
	else return '* ' + myField.title + ' is not a valid Date\n';
}



function trim(s) {
	if (s == null) {
		return s;
	}
	while (s.substring(0,1) == ' ' || s.substring(0,1) == '\n') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ' || s.substring(s.length-1,s.length) == '\n') {
		s = s.substring(0,s.length-1);
	}
	return s;
}