/*******************************************************************************
FILE: validatefunction.js

DESCRIPTION: This file contains the functions required to validate form fields

  VALIDATION FUNCTIONS:

  validationElement - an array of which validation functions map to specified formfields
  validateForm - loops through every form element and enforces validation rules
  
*******************************************************************************/
//Function used to character count professional and additional professional profiles...
function CharacterCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit)
	{
		alert("You have reached the maximum text length of: "+ maxlimit);
		field.value = field.value.substring(0, maxlimit);
		//countfield.value = maxlimit - field.value.length; //Uncomment to show character left...
		countfield.value = field.value.length;
	}
	else 
	{
		//countfield.value = maxlimit - field.value.length; //Uncomment to show character left...
		countfield.value = field.value.length;
	}
}
function validationElement (elementLabel, elementName, elementTest,emptyOK, alertMethod)
{
	this.elementLabel = elementLabel;
	this.elementName = elementName;
	this.elementTest = elementTest;
	this.emptyOK = emptyOK; 
}
function OnCancel(){ 
var confirm; 
	confirm= window.confirm('If you cancel now, your changes will be lost. Are you sure you want to cancel?');
	return confirm;
}
var errorExists = true;
var validationSelectedArray = true;
var validationSelectedArray2 = true;

function validateForm(form)
{
	validationSelectedArray = new Array();

	validationSelectedArray2 = new Array();
	alertText = new Array();
    for (var i=0; i < validationElementArray.length; i++) {
		validationSelectedArray2[i]=validationElementArray[i].elementName;
	}
	
	errorExists = true;
	var elementName = "", formObj = "", str = "";
	var toSum, elementLabel = "", fieldIndex, fieldLabel = "", truncLabel = "";
	var concatStr = "", firstMissingElt = null;
  
  if (alertMethod == 'alert') 
  var hardReturn = "\r\n";
  else
  var hardReturn = "";

	var lineBreakBegin;
	var lineBreakEnd;
	if(navigator.appName.indexOf("WebTV") == -1) {
		var lineBreakBegin = "<p>"
		var lineBreakEnd = "</p>"
	}
	else
	{
		var lineBreakBegin = "";
		var lineBreakEnd = "\r\n\r\n";
	}
  
  var atLeastOne = false; 
  var emptyFields = 0; 
  
  for (var i=0; i < validationElementArray.length; i++) {
	elementName = validationElementArray[i].elementName;
    formObj = eval("form." + elementName);
    elementLabel = validationElementArray[i].elementLabel;
	str = formObj.value;
	  
      if (validationElementArray[i].fieldSum != null)
	  {
	    truncLabel="";
        concatStr="";
        fieldLabel = validationElementArray[i].elementName;
		fieldIndex = parseInt(validationElementArray[i].fieldSum);
		for (j=0; j < fieldLabel.length - 1; j++)
		{
			truncLabel = truncLabel + fieldLabel.charAt(j);
		}
		for (k=1; k < fieldIndex + 1; k++)
		{
          concatStr = concatStr + eval("form." + (truncLabel+k) + ".value") ;
        }
        str = concatStr;

      if (eval(validationElementArray[i].elementTest)){
        if (validationElementArray[i].stripNum != null)
          str = stripNum( formObj, str, validationElementArray[i].stripNum );
		  if (alertMethod == 'inline') {hideError();}
        continue;
      }
	  
    } 

	if (eval(validationElementArray[i].elementTest)) 
	  {
  		if (alertMethod == 'inline') {hideError()}
		continue;
	  }

	// Added by Jojo
	if (!(eval(validationElementArray[i].elementTest)) && (parseInt(validationElementArray[i].emptyOK)==0) )
	{
	
		if ( eval('form.' + validationElementArray[i].elementName + '.value.length') > 0  && (eval("document.forms[0]."+validationElementArray[i].elementName+".disabled")!=true))
		{
			validationSelectedArray[i]=validationElementArray[i].elementName;
		}
	}
	//   Added by Jojo
	 
	if (eval(validationElementArray[i].elementTest) || (parseInt(validationElementArray[i].emptyOK)!=0) && (eval("document.forms[0]."+validationElementArray[i].elementName+".disabled")!=true)) 
	{
 		  alertText[alertText.length] = lineBreakBegin + elementLabel + lineBreakEnd + hardReturn;
		  validationSelectedArray[validationSelectedArray.length]=validationElementArray[i].elementName;
	}
	else if(str > "" && (eval("document.forms[0]."+validationElementArray[i].elementName+".disabled")!=true)) alertText[alertText.length] = lineBreakBegin + elementLabel + lineBreakEnd + hardReturn;
    }

    if (alertText.length > 0) {
		errorExists = false
    } 

	
	alertText = unique(alertText);
	
	if (alertText.length > 0)
	{
		displayError(alertText);
		selectError(validationSelectedArray2, 'formOff');
		selectError(validationSelectedArray, 'formOn');
	}
}

// set background of error field
function selectError(errorArray, color)
{
  for (var i=errorArray.length; i >= 0; i--)
  {
  	selectedElement = document.forms[0].elements[errorArray[i]];
	if (selectedElement  && (selectedElement.disabled!=true) )
	{
		if (errorArray[i] != 'Symbol1')
		{
				selectedElement.className=color;
				if (color == "formOn"){setFocus2(errorArray[i]);}
		}
	}
  }
}

// manually highlight error field
function highlightError(formFieldname,color)
{
	if(navigator.appName.indexOf("WebTV") == -1)
	{
		var selectedElement;
		try
		{
		    selectedElement = eval("document.forms[0]."+formFieldname);
		}catch(ex){}
		if ((selectedElement != null) && (selectedElement.disabled == false))
		{
			selectedElement.className=color;
			if (color == "formOn"){setFocus2(formFieldname);}
		}
	}
}

// set focus on formField
function setFocus2(formFieldname)
{
	//var selectedElement;
	selectedElement = eval("document.forms[0]."+formFieldname);
	if ((selectedElement != null) && (selectedElement.disabled == false))
	{
		if ((selectedElement.offsetWidth > 0) || navigator.appName.indexOf("WebTV") != -1)
		{
			var focusTimeout = setTimeout("document.forms[0]."+formFieldname+".focus()",50);
		}
	}
}

//  easy way to clear all highlighted Fields
function clearHighlightError()
{
	with (document.forms[0])
	{
		var iElements = length;
		for (var i = 0; i <= (iElements) - 1; ++i)
		{
			if (elements[i].type == "text" || elements[i].type == "password" ||elements[i].type == "file")
			{
			if (!(elements[i].className=='popInput' || elements[i].className=='popLoginInput'))
				{
					elements[i].className='formOff';
				}
			}    
		}
	}
}



// remove duplicate messages.
function unique(a) {
	tmp = new Array(0);
	for(i=0;i<a.length;i++){
		if(!contains(tmp, a[i])){
	
			tmp.length+=1;
			tmp[tmp.length-1]=a[i];
		}
	}
	return tmp.join("");
}

// look for object
function contains(a, e)
{
	for(j=0;j<a.length;j++)
	{
		if(a[j]==e)
		{
			return true;
		}
	}
	return false;
}

// show inline error container
function displayError(str) {
	hideConfirmation();
	if(navigator.appName.indexOf("WebTV") != -1) 
	{
		alert(str);
	}
	else {
		errorDiv = gE('singleError');
		if (!errorDiv) {alert('ERROR: DIV with singleError ID must exist on page'+ '\r\n' + str);return false;}
		openError="<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td><td valign=\"center\">"
		//<img src=\"/FBPUI/images/error.gif\" width=\"47\" height=\"37\" hspace=\"20\"></td><td valign=\"center\">"
		closeError="</td></tr></table>"
		wH(errorDiv,openError + str + closeError);
		errorDiv.className="errorContainerShow";
		self.scrollTo(0,0);
	}
}
//for MapQuest...
//in this case we will poin to MQ error image...so we don't worry about TF proxy url prefix rules...
function displayMQError(str) {
	hideConfirmation();
	if(navigator.appName.indexOf("WebTV") != -1) 
	{
		alert(str);
	}
	else {
		errorDiv = gE('singleError');
		if (!errorDiv) {alert('ERROR: DIV with singleError ID must exist on page'+ '\r\n' + str);return false;}
		openError="<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td><img src=\"http://test.mapquest.com/mlynch/graphics/wmtp_error.gif\" width=\"47\" height=\"37\" hspace=\"20\"></td><td valign=\"center\">"
		closeError="</td></tr></table>"
		wH(errorDiv,openError + str + closeError);
		errorDiv.className="errorContainerShow";
		self.scrollTo(0,0);
	}
}
// hide inline error container
function hideError() {
	if(navigator.appName.indexOf("WebTV") != -1) 
	{
		return false;
	}
	else {
		errorDiv = gE('singleError');
		errorDiv.className="errorContainerHide";
	}
}

function clearError(str,alertMethod, alertLayer)
{
	if (alertMethod == 'inline')
	{
		if (errorType = 'single') 
			{
			errorDiv = eval("gE('singleError')")
			}
		else
			{
			errorDiv = eval("gE('"+alertLayer+"Error')")
			}
		if (errorDiv) {
			errorDiv.className="errorContainerHide";
		}
		
	}
}
////////////////////////////////////////////////// /////////////////////
//			Validate New Team members or any updates to existing members
/////////////////////////////////////////////////////////////////////////

function validateGrid(pConfirmMessage)
{
	var hdnField;
	hdnField = eval("getElement('__IsInEditInsertMode')");
	//alert(hdnField);
	if(hdnField)
	{
		if(hdnField.value == "true")
		{
			var ans;
			ans=window.confirm(pConfirmMessage);
			//alert (ans);                      
			if (ans==true)
			{
				//alert('Yes');
				return true;
			}
			else
			{
				//alert('No');
				return false;
			}			
		}
	}
}

var errMsg = '';
var setFocus = '';
function validateMember()
{
	var elements;
	errMsg = '';
	var nameCtrl, emailCtrl, phoneCtrl, titleCtrl, producerIdCtrl;
	var name, email, phone, title, producerId;

	if ( arguments.length >= 5 )
	{
		//elements = new Array( arguments.lengh );
		
		nameCtrl = arguments[0]; //textbox
		emailCtrl = arguments[1]; //textbox
		phoneCtrl = arguments[2]; //textbox
		titleCtrl = arguments[3]; //dropdown...
		producerIdCtrl = arguments[4]; //textbox...
		
		name =	eval("getElement('" + nameCtrl + "')");
		email = eval("getElement('" + emailCtrl + "')");
		phone = eval("getElement('" + phoneCtrl + "')");
		title = eval("getElement('" + titleCtrl + "')");
		producerId = eval("getElement('" + producerIdCtrl + "')");
		
		focus(producerId, false);
		
		if ( name != null )
		{
			name.className = '';
			if ( jsFBPUI.isEmpty(name.value) )
			appendErrMsg("- Please enter name", name, true );
		}
		if ( email != null )
		{
			email.className = '';
			if ( jsFBPUI.isEmpty(email.value) )
				appendErrMsg("- Please enter email address", email, true);
			else if ( !jsFBPUI.isEmail( email.value ) )
				{
					//append @ML.COM?
					if ( email.value.indexOf(jsFBPUI.AT_SIGN) == -1 && jsFBPUI.isEmail( email.value + jsFBPUI.AT_ML_DOT_COM ) )
						email.value = email.value + jsFBPUI.AT_ML_DOT_COM; //append @ml.com...
					else
						appendErrMsg("- Please enter a valid email address", email, true);
				}
			else if ( email.value.toLowerCase().lastIndexOf(jsFBPUI.AT_ML_DOT_COM) == -1 )
						appendErrMsg("- Email address must end with:" + jsFBPUI.AT_ML_DOT_COM , email, true);
		
		}
		if ( phone != null )
		{
			phone.className = '';
			if ( jsFBPUI.isEmpty(phone.value) )
				appendErrMsg("- Please enter phone number", phone, true);
			else if ( !jsFBPUI.isUSPhone( phone.value ) )
				appendErrMsg("- Please enter a valid US phone number", phone, true);
				
		}
		
		//CHECK TITLE TO SEE IF IT IS IN ARRAY AND IF IT IS MUST HAVE PRODUCER ID
		//GC 2005.11.22
		if (titleArray) {
			for (var i=0; i < titleArray.length; i++ ) { 
				
				if(title.value == titleArray[i])
				{
					//alert("Title is " + title.value);
					title.className = '';
					if ( jsFBPUI.isEmpty(producerId.value) )
					appendErrMsg("- Please enter a Producer ID for title " + title.value, producerId, true );
				}
			} 
		}
		//END CHECK TITLE
		
		
		//if ( producerId != null )
		//{
		//	producerId.className = '';
		//}
		
		if ( errMsg.length > 0 )
		{
			alert("   In order to insert/update this member, the following information is required.\n\n" + errMsg);
			return false;
		}
		else
		return true;
	}
}
function validateMemberNew()
{
	var elements;
	errMsg = '';
	var nameCtrl, emailCtrl, phoneCtrl, titleCtrl, producerIdCtrl;
	var name, email, phone, title, producerId;

	if ( arguments.length >= 5 )
	{
		//elements = new Array( arguments.lengh );
		
		nameCtrl = arguments[0]; //textbox
		emailCtrl = arguments[1]; //textbox
		phoneCtrl = arguments[2]; //textbox
		titleCtrl = arguments[3]; //dropdown...
		producerIdCtrl = arguments[4]; //textbox...
		
		/*name =	eval("getElement('" + nameCtrl + "')");
		email = eval("getElement('" + emailCtrl + "')");
		phone = eval("getElement('" + phoneCtrl + "')");
		title = eval("getElement('" + titleCtrl + "')");
		producerId = eval("getElement('" + producerIdCtrl + "')");*/
		
		name =	nameCtrl;
		email = emailCtrl;
		phone = phoneCtrl;
		title = titleCtrl;
		producerId = producerIdCtrl;
		
		focus(producerId, false);
		
		if ( name != null )
		{
			name.className = '';
			if ( jsFBPUI.isEmpty(name.value) )
			appendErrMsg("- Please enter name", name, true );
		}
		if ( email != null )
		{
			email.className = '';
			if ( jsFBPUI.isEmpty(email.value) )
				appendErrMsg("- Please enter email address", email, true);
			else if ( !jsFBPUI.isEmail( email.value ) )
				{
					//append @ML.COM?
					if ( email.value.indexOf(jsFBPUI.AT_SIGN) == -1 && jsFBPUI.isEmail( email.value + jsFBPUI.AT_ML_DOT_COM ) )
						email.value = email.value + jsFBPUI.AT_ML_DOT_COM; //append @ml.com...
					else
						appendErrMsg("- Please enter a valid email address", email, true);
				}
			else if ( email.value.toLowerCase().lastIndexOf(jsFBPUI.AT_ML_DOT_COM) == -1 )
						appendErrMsg("- Email address must end with:" + jsFBPUI.AT_ML_DOT_COM , email, true);
		
		}
		if ( phone != null )
		{
			phone.className = '';
			if ( jsFBPUI.isEmpty(phone.value) )
				appendErrMsg("- Please enter phone number", phone, true);
			else if ( !jsFBPUI.isUSPhone( phone.value ) )
				appendErrMsg("- Please enter a valid US phone number", phone, true);
				
		}
		
		//CHECK TITLE TO SEE IF IT IS IN ARRAY AND IF IT IS MUST HAVE PRODUCER ID
		//GC 2005.11.22
		if (titleArray) {
			for (var i=0; i < titleArray.length; i++ ) { 
				
				if(title.value == titleArray[i])
				{
					//alert("Title is " + title.value);
					title.className = '';
					if ( jsFBPUI.isEmpty(producerId.value) )
					appendErrMsg("- Please enter a Producer ID for title " + title.value, producerId, true );
				}
			} 
		}
		//END CHECK TITLE
		
		
		//if ( producerId != null )
		//{
		//	producerId.className = '';
		//}
		
		if ( errMsg.length > 0 )
		{
			alert("   In order to insert/update this member, the following information is required.\n\n" + errMsg);
			return false;
		}
		else
		return true;
	}
}
function getElement(e)
{
	if(document.all)return document.all[e];return document.getElementById(e);
}
function appendErrMsg(str, toFocus, highlight) {
	
	if ( errMsg == "" ) {
		errMsg = "     " + str;
		setFocus = toFocus;
	}
	else
		errMsg = errMsg + "\n     " + str;
	
	if ( highlight )
		toFocus.className = 'formOn';
	else
		toFocus.className = 'formOff';
	
}

function focus(toFocus, highlight) {
	if ( highlight )
		toFocus.className = 'formOn';
	else
		toFocus.className = 'formOff';
}

function validateOverride()
{		
	var elements;
	errMsg = '';
	var teamMailboxCtrl,phoneCtrl;		//nameCtrl, emailCtrl, phoneCtrl, titleCtrl, producerIdCtrl;
	var teamMailbox,phone;			//name, email, phone, title, producerId;
	var pConfirmMessage;
	
	teamMailboxCtrl = arguments[0]; //textbox...
	teamMailbox = eval("getElement('" + teamMailboxCtrl + "')");
	
	if(!teamMailbox)
	{
	    //double check in case of inside of user control and we did not get the client id in code behind.
	    teamMailbox = eval("getElement('ctl00_ContentPlaceHolder1_" + teamMailboxCtrl + "')");
	}
	
	 

	if(teamMailbox)
	{
		phoneCtrl = arguments[1]; //textbox
		phone = eval("getElement('" + phoneCtrl + "')");
		
		pConfirmMessage = arguments[2]; //confirmation message for Validate Grid
		//alert(pConfirmMessage);
			
		//alert("enter validateCtrl " + teamMailboxCtrl);
			
		teamMailbox.className = '';
			if ( !jsFBPUI.isEmpty(teamMailbox.value) && !jsFBPUI.isEmail( teamMailbox.value ) )
			{
				//append @ML.COM?
				if ( teamMailbox.value.indexOf(jsFBPUI.AT_SIGN) == -1 && jsFBPUI.isEmail( teamMailbox.value + jsFBPUI.AT_ML_DOT_COM ) )
					teamMailbox.value = teamMailbox.value + jsFBPUI.AT_ML_DOT_COM; //append @ml.com...
				else
					appendErrMsg("- Please enter a valid email address", teamMailbox, true);
			}
			else if ( !jsFBPUI.isEmpty(teamMailbox.value) )
			{
				if ( teamMailbox.value.toLowerCase().lastIndexOf(jsFBPUI.AT_ML_DOT_COM) == -1 )
					appendErrMsg("- email address must end with:" + jsFBPUI.AT_ML_DOT_COM , teamMailbox, true);
			}						
									
		//phone
		if ( phone != null )
		{
			phone.className = '';
			if ( !jsFBPUI.isEmpty(phone.value) && !jsFBPUI.isUSPhone( phone.value ) )
				appendErrMsg("- Please enter a valid US phone number", phone, true);
		}
					
		if ( errMsg.length > 0 )
		{
			alert("   In order to submit this page, the following information is required or needs to be changed.\n\n" + errMsg);
			return false;
		}
		else
		{
			return validateGrid(pConfirmMessage);				
		}
	}
}

function validateEmailForm()
{
	var myEmailCtrl, friendEmailCtrl, myNameCtrl, myMessageCtrl;
	var myEmail, friendEmail, myName, myMessage;
	var pErrorMessage;
		
	//alert ("entering");
	myEmailCtrl = arguments[0];
	myEmail = eval("getElement('" + myEmailCtrl + "')");
	
	friendEmailCtrl = arguments[1];
	friendEmail = eval("getElement('" + friendEmailCtrl + "')");
	
	/*myNameCtrl = arguments[2];
	myName = eval("getElement('" + myNameCtrl + "')");*/
	
	myMessageCtrl = arguments[2];
	myMessage = eval("getElement('" + myMessageCtrl + "')");
	
		
	myEmail.className = '';
	if ( jsFBPUI.isEmpty(myEmail.value) || !jsFBPUI.isEmail(myEmail.value) )
	{
		appendErrMsg("- Please enter your valid email",myEmail,true);
		//alert("invalid myEmail " + errMsg.length);
	}
	
	friendEmail.className = '';
	if ( jsFBPUI.isEmpty(friendEmail.value) || !jsFBPUI.isEmailList(friendEmail.value) )
	{
		appendErrMsg("- Please enter a valid email for your friend",friendEmail,true);
		//alert("invalid friendEmail " + errMsg.length);
	}
	
	/*myName.className = '';
	if ( jsFBPUI.isEmpty(myName.value) )
	{
		appendErrMsg("- You must provide your name",myName,true);
	}*/
	
	myMessage.className = '';
	if ( jsFBPUI.isEmpty(myMessage.value) )
	{
		appendErrMsg("- Please enter a message to be delivered",myMessage,true);
	}
			
	if ( errMsg.length > 0 )
	{	
		alert("   In order to submit this page, the following information is required or needs to be changed.\n\n" + errMsg);
		errMsg = "";
		return false;
	}
}
function ShowHidePic()
{
	var elements;
	errMsg = '';
	var radioCtrl, imgCtrl, expectedUrl, defaultUrl, expectedUrlExists;
	var radioCtrlElem, imgCtrlElem;

	if ( arguments.length >= 5 )
	{
		radioCtrl = arguments[0]; //radion button which holds the YES value
		imgCtrl = arguments[1]; //img button
		expectedUrl = arguments[2]; //url
		defaultUrl = arguments[3]; //url
		expectedUrlExists = arguments[4]; //boolean value
		
		radioCtrlElem =	eval("getElement('" + radioCtrl + "')");
		imgCtrlElem =	eval("getElement('" + imgCtrl + "')");
		
		if ( radioCtrlElem != null && imgCtrlElem != null )
		{
			if ( radioCtrlElem.checked && expectedUrlExists )
			{
				imgCtrlElem.src = expectedUrl
			}
			else
				imgCtrlElem.src = expectedUrl = defaultUrl;
		}
	}
	else
	{
		alert( 'invalid arguments passed to ShowHidePic' );
		return false;
	}
}

function ValidateEnterKey(e,element)
{       
    if((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
    {
        document.getElementById(element).click();        
        //alert (document.all);
        return true;
    } 
}

function DoOnClick(element)
{
    //document.getElementById(element).click();        
    return true;
}