// File Name: validation.js
// Author: Chaman Ipalawatta [chamani@sabretch.com]
// Creation Date: 28-August-2008
// Description: Validates forms for empty values, not a number, email fields etc...

// Special Note: Following Sabre .NET development standards. Minor changes are made!

//////////////////////
//Revision Version  //
//////////////////////
//	Date of Rel	|	Created by	|	Changes
//------------------------------------------
//	28-08-2008		Chaman			Created



//Check whether given html controls value is empty or not...
function isEmpty(controlId, errControlId)
{
	value = true;
	if(controlId.value != '')
	{
		value = false;
	}
	else
	{
		errControlId.innerHTML ="Feild cannot be empty.";
		controlId.focus();
	}
	return value;
}

function isSelected(controlId, errControlId)
{
	value = true;
	if(!controlId.checked)
	{
		errControlId.innerHTML ="Feature must be selected.";
		value = false;
	}
	return value;
}

function isRequired(controlId, errControlId, displayMessage)
{
	if(trim(document.getElementById(controlId).value))
	{		
		document.getElementById(errControlId).innerHTML = "";
		return 0;
	}
	else
	{
		document.getElementById(errControlId).innerHTML = displayMessage;
		return 1;
	}
		
}

function isControlRequired(controlId, errControlId, displayMessage)
{
	if(trim(document.getElementById(controlId).value))
	{		
		document.getElementById(errControlId).innerHTML = "";
		return true;
	}
	else
	{
		document.getElementById(errControlId).innerHTML = displayMessage;
		return false;
	}		
}

function requiredItems(controlArray, errorControlArray, messageArray, validationType)
{
	var count = 0;
	var i = 0;
	var arrayLength = controlArray.length;
	for(i=0; i< arrayLength; i++)
	{
		if(validationType[i] == 1)
		{
			count += isRequired(controlArray[i], errorControlArray[i], messageArray[i]);
		}
		else if(validationType[i] == 2)
		{
			count += emailValidation(controlArray[i], errorControlArray[i], messageArray[i]);
		}
		else if(validationType[i] == 3)
		{
			count += compareValues(controlArray[i], controlArray[i + 1], errorControlArray[i], messageArray[i], messageArray[i + 1]);
			i++;
		}
		else if(validationType[i] == 4)
		{
			count += websiteValidation(controlArray[i], errorControlArray[i], messageArray[i]);
		}
		else if(validationType[i] == 5)
		{			
			count += validateComboBoxes(controlArray[i], errorControlArray[i], messageArray[i]);
		}
		else if(validationType[i] == 6)
		{
			count += validateEmailWithConfirmation(controlArray[i], controlArray[i + 1], errorControlArray[i], messageArray[i], messageArray[i + 1]);
		}		
			
	}
	
	
	if(count > 0)
		return false;
	else
		return true;
}

function emailValidation(controlId, errControlId, displayMessage)
{
	//var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var reg = /^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/;
	var address = trim(document.getElementById(controlId).value);
	if(address == '')
	{
		document.getElementById(errControlId).innerHTML = displayMessage;
		return 1;
	}
	else if(reg.test(address) == false)
	{
		document.getElementById(errControlId).innerHTML = "Invalid email address";
		return 1;
	}
	else
	{
		document.getElementById(errControlId).innerHTML = "";
		return 0;
	}
}

function websiteValidation(controlId, errorControlId, displayMessage)
{
	//var reg = /(http(s)?:\/\/)?[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
	var reg = /^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&amp;]*)?)?(#[a-z][a-z0-9_]*)?$/;
	var value = trim(document.getElementById(controlId).value);
	if(value != "")
	{
		if(reg.test(value) == false)
		{
			document.getElementById(errorControlId).innerHTML = "Invalid website";
			return 1;
		}
		else
		{
			document.getElementById(errorControlId).innerHTML = "";
			return 0;
		}
	}
//	else
//	{
//		document.getElementById(errorControlId).innerHTML = displayMessage;
//		return 1;
//	}
}

function validateEmailWithConfirmation(controlId1, controlId2, errorControlId,displayMessage1,displayMessage2)
{
	if(emailValidation(controlId1,errorControlId,displayMessage1) == 0)
	{
		return	compareValues(controlId1, controlId2, errorControlId, displayMessage1, displayMessage2);
	}
	return 1;
}

function compareValues(controlId1, controlId2, errorControlId, displayMessage1, displayMessage2)
{
	var value1 = trim(document.getElementById(controlId1).value);
	var value2 = trim(document.getElementById(controlId2).value);
	
	if(value1 == '')
	{
		document.getElementById(errorControlId).innerHTML = displayMessage1;
		return 1;
	}
	else if(value1 != value2)
	{		
		document.getElementById(errorControlId).innerHTML = displayMessage2;
		return 1;
	}
	else if(value1 == value2)
	{
		document.getElementById(errorControlId).innerHTML = "";
		return 0;
	}
}

function trim(stringToTrim) 
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


function selectedCount(controlId)
{
    count = 0;
    
    for(i=0 ; i<document.getElementsByName(controlId).length ; i++)
    {
        if(document.getElementsByName(controlId)[i].checked==true)
        {
            count=count+1;
        }
    } 
    
    return count;
}


function validateComboBoxes(controlId, errControlId, displayMessage)
{
	var sel = document.getElementById(controlId);	
	if(sel.options[sel.selectedIndex].value == '0')
	{
		document.getElementById(errControlId).innerHTML = displayMessage;
		return 1;
	}
	else
	{
		document.getElementById(errControlId).innerHTML = '';
		return 0;
	}
		
	//alert(document.getElementById(errControlId).innerHTML);
}

function validateTextAreaLength(controlId,maxLength)
{
	//alert("test");
	var control=document.getElementById(controlId);

	if(control.value.length>parseInt(maxLength))
	{
		var txtStr	=control.value;	
		//alert(control.value.length);
		control.value=txtStr.substring(0,parseInt(maxLength))
	}
	return;
		
}

function remainCharacters(controlID,Len,displayControl)
{
	var control=document.getElementById(controlID);
	
	//alert("sdf");

	if(control.value.length<parseInt(Len))
	{
		document.getElementById(displayControl).innerText=(parseInt(Len)-control.value.length);
		document.getElementById(displayControl).innerHTML=(parseInt(Len)-control.value.length);

	}
	else
	{
		document.getElementById(displayControl).innerText="0";
		document.getElementById(displayControl).innerHTML="0";
	}
	
	return;
}



function emailAddressValidation(controlId, errControlId)
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//	var reg = /^[A-Za-z0-9_\-]+(\.[_A-Za-z0-9\-]+)*@([_A-Za-z0-9\-]+\.)+([A-Za-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/;
	var address = trim(document.getElementById(controlId).value);
	if(address == '')
	{
		document.getElementById(errControlId).innerHTML = "Invalid email address.";
		return false;
	}
	else if(reg.test(address) == false)
	{
		document.getElementById(errControlId).innerHTML = "Invalid email address.";
		return false;
	}
	else
	{
		document.getElementById(errControlId).innerHTML = "";
		return true;
	}
}

function isRequiredText(controlId, errControlId,tr, errorMessage)
{
	//alert('asd');
	if(trim(document.getElementById(controlId).value)!="")
	{	
		document.getElementById(tr).style.display="none";	
		document.getElementById(errControlId).innerHTML = "";
		return true;
	}
	else
	{
		document.getElementById(tr).style.display="";
		document.getElementById(errControlId).innerHTML = errorMessage;
		return false;
	}
		
}
//function validPhoneNumber(controlId, errControlId,tr, errorMessage)
//{
//	alert("aaaa");
//	var reg = /^\(?[[+]?]?[0-9]*\)?\s?[-]?[0-9]*\s?[-]?[0-9]*\s?[-]?[[0-9]*]?$/;
//	if(reg.test(trim(document.getElementById(controlId).value)))
//	{
//		alert("xxxx");	
//		document.getElementById(tr).style.display="none";	
//		document.getElementById(errControlId).innerHTML = "";
//		return true;
//	}
//	else
//	{
//		alert("yyyy");
//		document.getElementById(tr).style.display="";
//		document.getElementById(errControlId).innerHTML = errorMessage;
//		return false;
//	}
//}



function isRequiredTextarea(controlId, errControlId,tr, errorMessage)
{
	//alert('sfsdfs');
	if(trim(document.getElementById(controlId).value).length > 0)
	{	
		document.getElementById(tr).style.display="none";	
		document.getElementById(errControlId).innerHTML = "";
		return true;
	}
	else
	{
		document.getElementById(tr).style.display="";
		document.getElementById(errControlId).innerHTML = errorMessage;
		return false;
	}
		
}

function ValidDateBothEmailAndRequired(controlId, errControlId, errorControlIdRequiredField,tr, errorMessage)
{
	if(isRequiredText(controlId,errorControlIdRequiredField,tr, errorMessage))
	{
		if(emailAddressValidation(controlId, errControlId))
		{
			document.getElementById(tr).style.display="none";
			return true;
		}
		else
		{
			document.getElementById(tr).style.display="";
			return false;
		}
	}
	else
	{
		document.getElementById(tr).style.display="";
		return false;
	}
}

function ValidateOnSubmit(controlIdNormal, errControlIdNormal,trNormal, controlIdEmail, errControlIdEmail,errorControlIdReqFieldEmail ,trEmail, mainErrorControl)
{
	var count = 0;
	if(!ValidDateBothEmailAndRequired(controlIdEmail, errControlIdEmail, errorControlIdReqFieldEmail,trEmail,"Email address required."))
	{
		document.getElementById(mainErrorControl).innerHTML = "";
		count++;
	}
	
	if(!isRequiredText(controlIdNormal, errControlIdNormal,trNormal,"Password required."))
	{
		document.getElementById(mainErrorControl).innerHTML = "";
		count++;
	}
	
	if(count > 0)
	{
		
		return false;
	}
	else
	{
		
		return true;
	}
}

function ValidateOnContactUsSubmit(controlId, errControlId, errorControlIdRequiredField,tr,controlIdNormal, errControlIdNormal,trNormal,controlIdC, errControlIdC,tr_commentC)
{
	var count = 0;
	if(!ValidDateBothEmailAndRequired(controlId, errControlId, errorControlIdRequiredField,tr,"Email address required."))
	{
		count++;
	}
	
	if(!isRequiredText(controlIdNormal, errControlIdNormal,trNormal,'Your name is required.'))
	{
		count++;
	}
	if(!isRequiredTextarea(controlIdC, errControlIdC,tr_commentC, 'Your comment is required'))
	{
		count++;
	}
	
	if(count > 0)
	{
		return false;
	}
	else
	{
		return true;
	}
}


function CompareValidation(control1,control2,errorContainer,errorControl,errorMessage)
{
	if(trim(document.getElementById(control1).value)==trim(document.getElementById(control2).value))
	{
		document.getElementById(errorContainer).style.display="none";	
		document.getElementById(errorControl).innerHTML = "";
		return true;
	}
	else
	{
		document.getElementById(errorContainer).style.display="";
		document.getElementById(errorControl).innerHTML = errorMessage;
		return false;
	}
}

function ValidateBothCompareAndRequired(control1,control2,errorContainer,errorControl,errorMessageRequired,errorMessageCompare)
{
	//alert('asd');
	var count=0;
	
	if(isRequiredText(control2,errorControl,errorContainer,errorMessageRequired))
	{
		if(!CompareValidation(control1,control2,errorContainer,errorControl,errorMessageCompare))
		{
			count++;
		}	
	}
	else
	{
		count++;
	}
	
	if(count>0)
	{
		return false;
	}
	else
	{
		return true;
	}
	
}

function ValidatePassword(control,errorContainer,errorControl,errorMessage)
{
	//alert("xxx");
	//var reg =/^(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,35})$/;	        
	var reg =/^[a-zA-Z0-9]+$/;
	if(reg.test(trim(document.getElementById(control).value)))
	{
		if(trim(document.getElementById(control).value).length < 6)
		{
			document.getElementById(errorContainer).style.display="";
			document.getElementById(errorControl).innerHTML = errorMessage;
			return false;
		}
		else
		{
			document.getElementById(errorContainer).style.display="none";	
			document.getElementById(errorControl).innerHTML = "";
			return true;
		}
	}
	else
	{
		document.getElementById(errorContainer).style.display="";
		document.getElementById(errorControl).innerHTML = errorMessage;
		return false;
	}
}

function ValidatePasswordStringAndRequired(control,errorContainer,errorControl,errorMessageRequired,errorMessageInvalidPWFormat)
{
	//alert('asd');
	
	var count=0;
	
	if(isRequiredText(control,errorControl,errorContainer,errorMessageRequired))
	{
		if(!ValidatePassword(control,errorContainer,errorControl,errorMessageInvalidPWFormat))
		{
			count++;
		}	
	}
	else
	{
		count++;
	}
	
	if(count>0)
	{
		return false;
	}
	else
	{
		return true;
	}
} 

function PasswordResetValidateOnSubmit(oldPassword,newPassword,retypePassword,oldPWTR,oldPWTD,newPWTR,newPWTD,nrtPWTR,nrtPWTD)
{
	var count=0;
	
	if(!isRequiredText(oldPassword,oldPWTD,oldPWTR,'Old password required.'))
	{
		count++;
	}
	
	if(!ValidatePasswordStringAndRequired(newPassword,newPWTR,newPWTD,'New password required.','Password must contain alpha and/or numeric characters and minimum of 6 characters in length.'))
	{
		//alert("sdf");
		count++;
	}
	
	if(!ValidateBothCompareAndRequired(newPassword,retypePassword,nrtPWTR,nrtPWTD,'Please re-type the password.','There is mismatch between new password and the re-typed password.'))
	{
		count++;
	}
	
	if(count>0)
	{
		return false;
	}
	else
	{
		return true;
	}
	
}

function PasswordResetValidateOnSubmitMyAccount(oldPassword,newPassword,retypePassword,oldPWTR,oldPWTD,newPWTR,newPWTD,nrtPWTR,nrtPWTD)
{
	var count=0;
	
	if(!isRequiredText(oldPassword,oldPWTD,oldPWTR,'Old password required.'))
	{
		count++;
	}
	if(!ValidatePasswordStringAndRequired(newPassword,newPWTR,newPWTD,'New password required.','Password must contain alpha and/or numeric characters and minimum of 6 characters in length.'))
	{
		count++;
	}
	
	if(!ValidateBothCompareAndRequired(newPassword,retypePassword,nrtPWTR,nrtPWTD,'Please re-type the password.','There is mismatch between new password and the re-typed password.'))
	{
		count++;
	}
	
	if(count>0)
	{
		return false;
	}
	else
	{
		return true;
	}
	
}

function ValidateCheckBox(control1)
{
	if(document.getElementById(control1).checked)
		return true;
	else
		return false;	
}

function ValidateFlightTrainingSubmit(chkbox1,chkbox2,errorControl,errorContainer)
{
	var returnVal;
	if(ValidateCheckBox(chkbox1) || ValidateCheckBox(chkbox2))
	{
		document.getElementById(errorContainer).style.display="none";	
		document.getElementById(errorControl).innerHTML = "";
		returnVal=true;
	}
	else
	{
		document.getElementById(errorContainer).style.display="";
		document.getElementById(errorControl).innerHTML = "Please select atleast one item.";
		returnVal=false;
	}
	return returnVal;
}

function ValidateOnlineTrainingSubmit(chkbox1,chkbox2,chkbox3,chkbox4,chkbox5,errorControl,errorContainer)
{
	if(ValidateCheckBox(chkbox1) || ValidateCheckBox(chkbox2)|| ValidateCheckBox(chkbox3)|| ValidateCheckBox(chkbox4)|| ValidateCheckBox(chkbox5))
	{
		document.getElementById(errorContainer).style.display="none";	
		document.getElementById(errorControl).innerHTML = "";
		return true;
	}
	else
	{
		document.getElementById(errorContainer).style.display="";
		document.getElementById(errorControl).innerHTML = "Please select atleast one item.";
		return false;
	}
}

function confirmation()
{
	var answer = confirm("Are you sure that you want to leave this page?");
	if (!answer)
	{
		return false;
	}
	else
	{
		return true;
	}
}