	var CHECK_BLANK = 1;
	var CHECK_REGEXP_EMAIL = 2;
	var CHECK_EMAIL_BLACKLIST = 3;
	var CHECK_VALUE_LENGTH_MIN = 4;
	var CHECK_VALUE_LENGTH_MAX = 5;
	
	//OBJECT DEFINITION: HTML Control - is an instance of a form control that needs validating
	function htmlControl(objControl,arEvals,arMessages){
	   this.IsValid = false;
	   this.objControl = objControl;
	   this.arEvals = arEvals;
	   this.arMessages = arMessages;
	}
	
	//OBJECT DEFINITION: HTML Form - is the form that needs validating
	function htmlForm(objForm,arControls,ErrorLabel){
	   this.objForm = objForm;
	   this.submitForm = false;
	   this.ArrayControls = arControls;
	   this.ErrorLabel = ErrorLabel;
	}        
	
	//OBJECT DEFINITION: HTML Form - this is how we add methods to Javascript Objects
	htmlForm.prototype.validateEmailForm = validateEmailForm;

   //FUNCTION: This function will SHOW the error
   function RaiseError(pElementID,pDefaultMessage){
         var bErrorRaised = false;
         if (document.getElementById){
            if (document.getElementById(pElementID)){
               document.getElementById(pElementID).style.display = "block";
               bErrorRaised = true;
            }
         }

         if (String(pDefaultMessage).length > 0 && bErrorRaised == false){
            alert(pDefaultMessage);
         }//end if
   }//end function
	         
   //FUNCTION: This function will HIDE the error
   function HideError(pElementID){
         if (document.getElementById){
            document.getElementById(pElementID).style.display = "none";
         }//end if
   }//end function

   function ClearError(pControls)
   {
      for (i=0; i < pControls.length; i++) {
         for (j=0; j < pControls[i].arMessages.length; j++) {
            HideError(pControls[i].arMessages[j]);
         }
      }
   }
   
   //FUNCTION: This function is the main function of the FORM OBJECT and will validate the form	         
   function validateEmailForm(){
      var IsAtLeastOneError = false;
      ClearError(this.ArrayControls);
      for (i=0; i < this.ArrayControls.length; i++) {
         for (j=0; j < this.ArrayControls[i].arEvals.length; j++) {
            switch (this.ArrayControls[i].arEvals[j]){
               case CHECK_BLANK:
                  //ERROR CHECK - 01
                  if (String(this.ArrayControls[i].objControl.value).length <= 0){
                     RaiseError(this.ArrayControls[i].arMessages[j],"");
                     this.ArrayControls[i].IsValid = false;
                     IsAtLeastOneError = true;
                  }else{
                     HideError(this.ArrayControls[i].arMessages[j]);
                     this.ArrayControls[i].IsValid = true;
                  }//end function
                  break;

               case CHECK_EMAIL_BLACKLIST:
                  //ERROR CHECK - 03
                  var BlackList = new Array("abuse@","admin@","administrator@","anonymous@","archive@","billing@","bin@","blacklist@","blocklist@","blockme@","brasscannon@","contact@","crushspam@","daemon@","everyone@","ftp@","games@","guest@","help@","hostmaster@","info@","ipadmin@","istserv@","junk@","listmanager@","listme@","listproc@","listserv@","lyris@","mailer-daemon@","mailer@","mailman-owner@","majordomo@","marketing@","myspam@","newgroups-request@","newgroups@","news@","newsgroups-request@","newsgroups@","noc@","nospam@","null@","nulljob@","office@","operations@","other@","postmaster@","privacy@","root@","security@","sendmenospam@","service@","setup@","spam69@","spam@","spamforwarder@","spamhere@","spamiam@","spamme@","spammehere@","spamtrap@","support@","sys@","sysadmin@","sysadmins@","systemadmin@","uce@","usenet@","usenetonly@","userhelp@","uucp@","webmaster@","www@","spam@","spamtrap@","spamforwarder@","@home.com","@altavista.net","@ivillage.net");
                  for (k=0; k < BlackList.length; k++)
                  {
                     if (String(this.ArrayControls[i].objControl.value).indexOf(BlackList[k]) != -1)
                     {
                        RaiseError(this.ArrayControls[i].arMessages[j],"");
                        this.ArrayControls[i].IsValid = false;
                        IsAtLeastOneError = true;
                        break;
                     }else{
                        HideError(this.ArrayControls[i].arMessages[j]);
                        this.ArrayControls[i].IsValid = true;
                     }
                  }
                  break;

               case CHECK_REGEXP_EMAIL:
                  //ERROR CHECK - 02
                  if (RegularExpressionValidatorEvaluateIsValid(this.ArrayControls[i].objControl,/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/) == false){
                     RaiseError(this.ArrayControls[i].arMessages[j],"");
                     this.ArrayControls[i].IsValid = false;
                     IsAtLeastOneError = true;
                  }else{
                     HideError(this.ArrayControls[i].arMessages[j]);
                     this.ArrayControls[i].IsValid = true;
                  }//end function
                  break;
                  
            }//end switch
            
            //STEP: Break out of the looping check if this control has thrown ONE error
            if (this.ArrayControls[i].IsValid == false){
               break;
            }
         }//end for
      }//end for
   
      //STEP: Now Check if there is an error
      if (IsAtLeastOneError){
         if (this.ErrorLabel.length) {RaiseError(this.ErrorLabel,"")};
         this.submitForm = false;
      }else{
         if (this.ErrorLabel.length) {HideError(this.ErrorLabel)};
         this.submitForm = true;
      }//end if
	   
   }//end function


   //FUNCTION: This is a VALIDATOR function that validates against a passed in RegEx
   function RegularExpressionValidatorEvaluateIsValid(objControl,strRegEx) {
      var value = objControl.value
      var rx = new RegExp(strRegEx);
      var matches = rx.exec(value);
      return (matches != null && value == matches[0]);
   }//end function
   
   /* SC Adding Cheetahmail Ajax Functionality on APC 5/11/2007 */

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

function validateAndSaveEmail(theForm, errorline)
{
	var req;
	var ref;
	var emailOK = false;
	var x = theForm.email.value;
	var filter  = /^([a-zA-Z0-9_\.\+\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x))
	{
		document.getElementById(errorline).style.display  = 'none';
		emailOK = true;
	}
	else
	{ 
		document.getElementById(errorline).style.display  = 'block';
		return(false);
	}

	if (emailOK)
	{
    	req = createXMLHTTPObject();
		if (!req) return;
		ref = document.URL;
		userEmail = theForm.email.value;
		var sendString;
		sendString = "email=" + (userEmail) + "&ref=" + ref
		req.open("GET","/email/saveEmail.asp?email=" + (userEmail),true);
		req.send(null);
		return true; 
	
  	} //end if emailOK
} //end function

function ajax_send(pPageName,pQueryString)
{
    	req = createXMLHTTPObject();
	
		if (!req){
         return false;
		}else{		   
	          req.open("GET",pPageName + (pQueryString.length > 0 ? "?" : "") + pQueryString, false);
		   req.send(null);			
		   return req.responseText; 
		}
}
//end of new AJAX cheetahmail functionality.

//BEGIN - DART Functions -------------------------------------------------------------------------------------------------------------------
var bSentDiagnosticOnce = false;

function keyCapture(e)
{
	var evt=(e)?e:(window.event)?window.event:null;
	var invoked = 'm';
	if(evt)
	{ 
		var ctrlMod = (window.event)? window.event.ctrlKey : evt.ctrlKey;
		var shiftMod = (window.event)? window.event.shiftKey : evt.shiftKey;
		var key = (window.event)? window.event.keyCode : evt.which;
		key = String.fromCharCode(key).toLowerCase();
		if (ctrlMod && shiftMod && key==invoked && bSentDiagnosticOnce==false){
			sendDiagnosticReport(true)	
			bSentDiagnosticOnce = true;
		}
	}
	return true;
}

function sendDiagnosticReport(isPopup)
{
	req = createXMLHTTPObject();
	if (!req) return;
	postString = "";
	if (isPopup)
		queryString = "popup=true"
	else
		queryString = "popup=false"
	
	req.open("POST","/includes/shared/diagnostics.asp?" + queryString);
	req.onreadystatechange = getResponseKeyCapture;
	req.send(postString);
}
			
function getResponseKeyCapture() 
{	
	if (req.readyState == 4) 
	{	
		 theContainer = document.getElementById("dartContainer")
		 theContainer.innerHTML = req.responseText;
		 topPos = 150 + parseInt(document.body.scrollTop);
		 theContainer.style.top = topPos;
		 theContainer.style.left = '250';
		 theContainer.style.display = 'block';
	}
}
addEventToObject(document,"keydown",keyCapture);
//END --- DART Functions -------------------------------------------------------------------------------------------------------------------

function showFramingVideo()
{

	  window.open("/help/FramingVideo/ShowAPCFramingVideo.html",'Video','height=270,width=480,left=200,top=200,resizable=no,titlebar=no');
	   return false;
}

function showFramingVideo_homepage() 
{ 
	showFramingVideo(); 

}
