// JavaScript Document
// Validation object.


var formName;
function setFormName(whichForm){
	whichForm = whichForm.toString();
	formName = document[whichForm];
	
}


function validationObj()
{
	this.oProps = new GenObj();
	this.formRef;
}
validationObj.prototype.setProp = function(prop,value) { this.oProps.setProp(prop,value); }
validationObj.prototype.getProp = function(prop) { var rtn = this.oProps.getProp(prop); if(rtn==undefined) {} return rtn; }
validationObj.prototype.init = function(f)
{
	this.formRef = document.forms[f];
}
validationObj.prototype.validateEmail = function(id)
{
	var t;
	if(get(id))
	{
		t = get(id);
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(t.value)) { return(true); }
	}
	return false;
}


//validate SkyMiles field
validationObj.prototype.validateSMNum = function(id)
{	
	var t;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/\d{10}/)) { get('skymilesNumberLabel').innerHTML = '&nbsp;SkyMiles #'; return true; }
	}

	get('skymilesNumberLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">SkyMiles #</span>';
	
	get('pinLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">PIN</span>';
    	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />The SkyMiles membership number or PIN entered is invalid.</p>';	
	return false;
}

//validate PIN field
validationObj.prototype.validatePINNum = function(id)
{
	var t;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/\d{4}/)) { get('pinLabel').innerHTML = '&nbsp;PIN'; return true; }
	}
	get('skymilesNumberLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">SkyMiles #</span>';
	get('pinLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">PIN</span>';
    	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />The SkyMiles membership number or PIN entered is invalid.</p>';
	return false;
}


//validate Firstname field
validationObj.prototype.validateFirstname = function(id)
{
	var t;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/[a-zA-Z\s]+/)) { get('firstnameLabel').innerHTML = 'First name'; return true; }
	}
	get('firstnameLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">First name</span>';
        showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	return false;
}

//validate Lastname field
validationObj.prototype.validateLastname = function(id)
{
	var t;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/[a-zA-Z\s]+/)) { get('lastnameLabel').innerHTML = 'Last name' ; return true; }
	}
	get('lastnameLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Last name</span>';
   	showDiv('validationFormError');
 	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	return false;
}


//validate Confirmation # field
validationObj.prototype.validateConfirmNum = function(id)
{
	var t;
	if(get(id))
	{
		t = get(id);
	 	t.value = t.value.replace(/\s*/g,"");
		if(t.value != ""&&t.value.match(/^[a-zA-Z_0-9]{6}$/)) { get('confirmNumLabel').innerHTML = 'Confirmation #'; return true; }
	}
	get('confirmNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Confirmation #</span>';
   	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	; return false;
}

// new CC validation 

validationObj.prototype.validateCCType = function(fieldId, ccValue)

{

	var dropDownIndex = parseInt(document.getElementById(fieldId).selectedIndex);
	var ccSelected = document.getElementById(fieldId).options[dropDownIndex].value;
	
	var ccNumberInput = document.getElementById(ccValue).value;

	switch(ccSelected)
	{
	// American Express: length 15-19, prefix 34 or 37.
	case "AX": if (ccNumberInput != ""&&ccNumberInput.match(/^3[4,7]\d{11,17}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// VI length 16-19, prefix 4.
	case "VI": if (ccNumberInput != ""&&ccNumberInput.match(/^4\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// CA: length 16-19, prefix 51-55.
	case "CA": if (ccNumberInput != ""&&ccNumberInput.match(/^5[1-5]\d{11,17}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	 // Diners Club: length 13-19
	case "DC":  if (ccNumberInput != ""&&ccNumberInput.match(/\d{13,19}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// Discover: length 13-19
	case "DS": if (ccNumberInput != ""&&ccNumberInput.match(/\d{13,19}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// CB : length 14-19, prefix 3
	case "CB": if (ccNumberInput != ""&&ccNumberInput.match(/^3\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// TP : length 16-19, no prefix
	case "TP": if (ccNumberInput != ""&&ccNumberInput.match(/\d{13,19}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}

	// XS: length 16-19, prefix 51-55.
	case "XS":if (ccNumberInput != ""&&ccNumberInput.match(/^5[1-5]\d{11,17}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// BB: length 16-19, prefix 4.
	case "BB": if (ccNumberInput != ""&&ccNumberInput.match(/^4\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// BF: length 16-19, prefix 4.
	case "BF": if (ccNumberInput != ""&&ccNumberInput.match(/^4\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// CG: length 16-19, prefix 4.
	case "CG":if (ccNumberInput != ""&&ccNumberInput.match(/^4\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// MD: length 16-19, prefix 51-55.
	case "MD":if (ccNumberInput != ""&&ccNumberInput.match(/^5[1-5]\d{11,17}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// DL : length 16-19, prefix 2006
	case "DL":if (ccNumberInput != ""&&ccNumberInput.match(/^2006\d{9,15}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// ER : length 14-19, no prefix
	case "ER":if (ccNumberInput != ""&&ccNumberInput.match(/\d{13,19}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// EC : length 16-19, no prefix
	case "EC":if (ccNumberInput != ""&&ccNumberInput.match(/\d{13,19}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
	// JC : length 16-19, prefix 3
	case "JC": if (ccNumberInput != ""&&ccNumberInput.match(/^3\d{12,18}$/))
	{ get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; break;}
	
		else {
		get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
   	 	showDiv('validationFormError');
		get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
		; return false;
		}
		
	default:  
		
	get('ccTypeLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card Type</span><br /> ';
	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	return false;
	break;
	}
	
 // need a switch statement on the typeID passed in
 // which is the credit card type
}



//validate Credit Card field
validationObj.prototype.validateCCNum = function(id)
{
	
	var t;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/[^\s]+/)) { get('creditCardNumLabel').innerHTML = 'Credit Card #'; return true; }
	}
	get('creditCardNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">Credit Card #</span>';
    	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	; return false;
}





//validate eTicket field
validationObj.prototype.validateETicketNum = function(id)
{
	
	var t;
	if(get(id))
	{
		t = get(id);
		t.value = t.value.replace(/\s*/g,"");
		if(t.value != ""&&t.value.match(/^006\d{10}$/)) { get('eTicketNumLabel').innerHTML = '&nbsp;eTicket #'; return true; }
			 if(t.value != ""&&t.value.match(/\d{10}$/)) { get('eTicketNumLabel').innerHTML = '&nbsp;eTicket #'; return true; }
	}
	get('eTicketNumLabel').innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">eTicket #</span>';
    	showDiv('validationFormError');
	get('validationFormError').innerHTML = '<p class="cpyError" style="padding-top:5px;padding-bottom:5px;"><img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" />You have entered invalid information in one or more fields below.</p>';
	return false;
}



	

validationObj.prototype.validateField = function(fieldId, type)

{	
	switch(type)
	{
	
		case "email": return this.validateEmail(fieldId);break;
		case "SMNum": return this.validateSMNum(fieldId);break;
		case "PINNum": return this.validatePINNum(fieldId);break;
		case "Firstname": return this.validateFirstname(fieldId);break;
		case "Lastname": return this.validateLastname(fieldId);break;
		case "ConfirmNum": return this.validateConfirmNum(fieldId);break;
		case "CCType": return this.validateCCType(fieldId);break;
		case "ETicketNum": return this.validateETicketNum(fieldId);break;
		default: return true;break;
	}
}
 
validationObj.prototype.validateFields = function(fieldArray){
//alert(fieldArray.length);

var submitForm = new Boolean();
	submitForm = true;

for(i=0;i<fieldArray.length;i++){
	var tempProp = fieldArray[i].toString()
	var tempArray = tempProp.split(',');
		//alert(propArray.length);
		//alert(fieldArray[i]);
		for(j=0;j<tempArray.length;j++){
				if(tempArray[j + 1] == "CCType"){
					//alert(propArray[j + 2]);
					//alert("CCType " + propArray[j] + " " + propArray[j+1]);
					//alert(tempArray[j] + " " + tempArray[j+1] + " " + tempArray[j+2]);
					var tempString = this.validateCCType(tempArray[j], tempArray[j+2]);
						//alert(tempString);
					if(!tempString){
						submitForm = false;
					}
				} else if(tempArray[j+1]) {
					var tempString = this.validateField(tempArray[j], tempArray[j+1]);
						//alert(tempArray[j] + " " + tempString);
						if(!tempString){
							submitForm = false;
						}
				}
			

	}

}

	if(submitForm){
	
	formName.submit();
	}
}


/* used in itineraries manage trip only */
function validateSMNumAlt(id)
{	
	// skymilesNumberLabel_02
	var t;
	var tempStr;
	if(get(id))
	{
		t = get(id);
		if(t.value != ""&&t.value.match(/\d{10}/)) { 
			tempStr = 'skymilesNumberLabel_'+id.split("_")[1];
			get(tempStr).innerHTML = '&nbsp;SkyMiles #'; 
			tempStr = "addffno_"+id.split("_")[1];
			//removed so form will not submit document[tempStr.toString()].submit();
			return true;
		}
	}
	tempStr = 'skymilesNumberLabel_'+id.split("_")[1];
	get(tempStr).innerHTML = '<img src="/images/icons/error_x.gif" width="19" height="19" alt="" border="0" align="absmiddle" /> <span class="cpyError">SkyMiles #</span>';	
	get('alerts_errors').innerHTML = '<div class="error">The SkyMiles number is invalid.</div>';	
	return false;
}
