﻿// JScript File
// JScript File
var errorCount=0;

function stripHtml()
{
    obj=getElementByPD_Id("SiteSearchString");
    
    obj.value = obj.value.replace(/[<>(.|\n)*?]/g,"");    
    return true;
}

function browserSniffer(browserCode, browserVersion) 
{
	var agt1 = navigator.userAgent.toLowerCase();
	var agt2 = navigator.appVersion.toLowerCase();
	if(browserCode==1)
	{	//check for IE
		if(browserVersion == 0)
		{
			if(agt2.indexOf("msie")!=-1)
				return true;
		}
		else
		{
			if(agt2.indexOf("msie " + browserVersion)!=-1)
				return true;
		}
	}
	else if(browserCode==2)
	{	//check for mozilla
		if(agt1.indexOf("firefox")!=-1)
			return true;
	}
	else if(browserCode==3)
	{	//check for safari
		if(agt2.indexOf("safari")!=-1)
			return true;
	}
	return false;    
}


function validate_FormRequiredFields(formName)
{   
    var sMessage = "Please complete required fields and correct data as shown, then resubmit."
    if(formName != "Careers")
    {  
            var pageName = "http://www.bridgelinesw.com/BL_FORMS_RELATED/SalesforceForm.aspx"+ formName;   
    
        if(validationRequiredFields(sMessage))        
        {   
            window.open(pageName,'frmSalesForce','width=50, height=10, scrollbars=no, minimize=yes ,left=0,top=150,');
            self.focus();
             return true;
        }    
    }
     if(formName == "Careers")
    {  
        if(validationRequiredFields(sMessage))        
        {   
             return true;
        }    
    }
    
    return false;
}

function validationRequiredFields(errorMessage)
{
    var oItems = document.forms[0].elements;
    var sUrl="";
    var isValid =true; 
    var returnValue = true;  
    
    var hasErrors =false;
    var spanList = document.getElementsByTagName("label")
    for(i=0;i<spanList.length;i++)
    {    
       if(spanList[i].className.indexOf("errorHighlight",0) !=-1  )        
            hasErrors=true;
    }
       
    
    for(i=0;i<oItems.length;i++)
    {        
       //RemoveErrorHightLighting(document.getElementById("lbl" + oItems[i]))             
       
       if(checkCustomAttribute(oItems[i],"PD_isRequiredValue","true"))
	   {	 
	       
	      /* if(oItems[i].onblur != null)       
	          oItems[i].onblur()
	           
	        if(oItems[i].onchange != null)       
	          oItems[i].onchange()
	        */   
	            
	       if(oItems[i].id.indexOf("firstName",0) !=-1)
	       {
	            if(!validate_FormRegularExpression(oItems[i],/^([a-zA-Z\-,.'\s])+$/,"",false))
	            {
	                hasErrors=true;
	                oItems[i].focus();    
	            }
	       }    
	       
	        if(oItems[i].id.indexOf("lastName",0) !=-1)
	       {
	            if(!validate_FormRegularExpression(oItems[i],/^([a-zA-Z\-,.'\s])+$/,"",false))
	            {
	                hasErrors=true;
	            }
	       }    
	       
	       
	       if(oItems[i].id.indexOf("company",0) !=-1 )
	       {
	            if(!validate_FormRegularExpression(oItems[i],/^[a-zA-Z0-9_!@#\s$%^&\s*()+=;:,.?/\s-\s\s *]+$/,"",false))
	                hasErrors=true;
	       }    
	       
	       if(oItems[i].id.indexOf("email",0) !=-1 )
	       {
	            if(!validate_FormRegularExpression(oItems[i],/^[a-zA-Z0-9]+([\.|\-_]?[a-zA-Z0-9])*@[a-zA-Z0-9]+([\.|\-_]?[a-zA-Z0-9])*\.[a-zA-Z0-9]+$/,"",false))
	                hasErrors=true;
	       } 
	        
	      if(oItems[i].id.indexOf("phone",0) !=-1 )
	       {
	            if(!validate_PhoneRegularExpression(oItems[i],"",false))
	                hasErrors=true;
	       }  
	       
	       if(oItems[i].id.indexOf("zip",0) !=-1 )
	       {
	            if(!validate_FormRegularExpression(oItems[i],/^\d{5}([\-]\d{4})?$/,"",false))
	                hasErrors=true;
	       }  
	       
	        if(oItems[i].id.indexOf("VerticalMarket",0) == 0 )
	       {
	                hasErrors=true;
	       }  
	        if(oItems[i].id.indexOf("LeadSource",0) == 0 )
	       {
	                hasErrors=true;
	       }  
	       
         //Check if there is any validation errors for each Controls
	        var spanError = document.getElementById("spanError" + oItems[i].id);
	        //if(!spanError)
	        //    RemoveErrorHightLighting(oItems[i])	        
            switch (oItems[i].type){
                case  "select-one":                            
                            if(oItems[i].selectedIndex >-1)
                            {
                                if( oItems[i].options[oItems[i].selectedIndex].value <= 0)
                                {
	                                isValid = false;
                                    AddErrorHightLighting(oItems[i])
									
                                }
                            }
                            else
                            {
                                isValid = false;
                                AddErrorHightLighting(oItems[i])
                            }     
                            break;
                case  "select-multiple":                            
                            if(oItems[i].selectedIndex >-1)
                            {
                                if( oItems[i].options[oItems[i].selectedIndex].value <= 0)
                                {
	                                isValid = false;
                                    AddErrorHightLighting(oItems[i])
                                }
                            }
                            else
                            {
                                isValid = false;
                                AddErrorHightLighting(oItems[i])
                            }     
                            break;
                case "text":if(oItems[i].value == "")
	                        {
	                            isValid = false;	     
	                            AddErrorHightLighting(oItems[i])                      	                                                            
                            }
                            break;
                case "file":if(oItems[i].value == "")
	                        {
	                            isValid = false;	     
	                            AddErrorHightLighting(oItems[i])                      	                                                            
                            }
                            break;
                case "textarea":if(oItems[i].value == "")
	                        {
	                            isValid = false;	     
	                            AddErrorHightLighting(oItems[i])                      	                                                            
                            }
                            break;
                case "hidden":if(oItems[i].value == "")
	                        {
	                            isValid = false;
                                // the Only hidden field which is required is address
                                 //var objLabel = document.getElementById("lblAddress")	    	    	    	                                                                                              
                                 //objLabel.className="errorHighlight " + objLabel.className;
                                 //objLabel.style.fontWeight="bold";
                                 //document.getElementById("divAddressContainer").className="errorHighlight "
                                 //AddErrorHightLighting(obj)
                                 //document.getElementById("divAddressContainer").style.border="solid 1px #E23827";
                                 //document.getElementById("divAddressContainer").style.backgroundColor= "#FFFED9";
                                 AddErrorHightLighting(oItems[i]) 
                            }
                            break;             	        
	        }
	        
       }  
       
      
    }    
    
    document.getElementById("clientErrorMessages").innerHTML ="";
       
    if(! isValid || hasErrors )
    {
		document.getElementById("clientErrorMessages").outerHTML ="<div class='clearFix'></div> " +         document.getElementById("clientErrorMessages").outerHTML
		document.getElementById("clientErrorMessages").innerHTML = errorMessage;
		document.getElementById("clientErrorMessages").style.display="block";			
		document.location = "#";
		returnValue = false;        
    }
    
	
    return returnValue;
}
    


// Validate any regular expression
function validate_FormRegularExpression(oObject,regExpnString,sMessage,showAlert)
{   
    var valueToCheck = oObject.value.replace(" ","");        
    var newValue="";
    RemoveErrorHightLighting(oObject)  
    
    var returnValue = true;     
        
    var regExpn =regExpnString
    
    if(valueToCheck !="")       
    {   
        if (!regExpn.test(valueToCheck)) //if match failed
        {  
         //  if(showAlert)
	      //  alert(sMessage);	      
		
           AddErrorHightLighting(oObject);           
           returnValue = false;
        }      
    }
    else
    {
        if((oObject.value == "") && checkCustomAttribute(oObject,"PD_isRequiredValue","true"))
        {    
          // if(showAlert)
	       //     alert(sMessage);
           AddErrorHightLighting(oObject);           
           returnValue = false;                         
        }          
    }
   
    return returnValue;
}

//***************************************************************************************//
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
//***************************************************************************************//

function validate_PhoneRegularExpression(oObject,sMessage,showAlert)
{
   
    var valueToCheck = oObject.value.replace(" ","");        
    var newValue="";
    RemoveErrorHightLighting(oObject)  
    var returnValue = true;     
    if(valueToCheck !="")       
    {   
   
        var bracket=3
        if(valueToCheck.indexOf("+")>1) return false
        if(valueToCheck.indexOf("-")!=-1)bracket=bracket+1
        if(valueToCheck.indexOf("(")!=-1 && valueToCheck.indexOf("(")>bracket)return false
        var brchr=valueToCheck.indexOf("(")
        if(valueToCheck.indexOf("(")!=-1 && valueToCheck.charAt(brchr+2)!=")")return false
        if(valueToCheck.indexOf("(")==-1 && valueToCheck.indexOf(")")!=-1)return false
        s=stripCharsInBag(valueToCheck,validWorldPhoneChars);
        if((isInteger(s) && s.length >= minDigitsInIPhoneNumber) == false)
        {
            AddErrorHightLighting(oObject);           
            returnValue = false;
        }
    }
    else
    {
        if((oObject.value == "") && checkCustomAttribute(oObject,"PD_isRequiredValue","true"))
        {
         //  if(showAlert)
	    // alert(sMessage);
           AddErrorHightLighting(oObject);           
           returnValue = false;                         
        }          
    }
    return returnValue;
}

function validate_IsRequired(oObject,sMessage)
{
    RemoveErrorHightLighting(oObject)      
            
    if((oObject.value == "" || oObject.value == "0") && checkCustomAttribute(oObject,"PD_isRequiredValue","true"))
    {          
           AddErrorHightLighting(oObject)            
          // alert("Please enter a valid " + sMessage  );
           return false;                         
    } 
    
	return true; 
}

//Check for valid String value
function validate_FormStringValue(oObject,sTitle)
{   
    //var regExpn = "^[a-zA-Z0-9_!@#$%^*()+=;:,.?/-\s *]+$"       
    var regExpnString = /^[a-zA-Z0-9_!@#\s$%^&\s*()+=;:,.?'"/\s-\s\s *]+$/;
    //var regExpnString = /^([a-zA-Z.'\s])+$/    
    var sMessage = "Please enter a valid " + sTitle  ;      
        
    validate_FormRegularExpression(oObject,regExpnString,sMessage,true)    
    return true;
}

//Check for valid String value
function validate_FormStringValueNamesOnly(oObject,sTitle)
{   
    //var regExpn = "^[a-zA-Z0-9_!@#\s$%^&\s*()+=;:,.?/\s-\s\s *]+$"       
    var regExpnString = /^([a-zA-Z\-,.'\s])+$/    
    var sMessage = "Please enter a valid " + sTitle  ;      
        
    validate_FormRegularExpression(oObject,regExpnString,sMessage,true)    
    return true;
}

//Check for valid String value
function validate_FormTextValue(oObject,sTitle)
{   
    //var regExpn = "^[a-zA-Z0-9_!@#\s$%^&\s*()+=;:,.?/\s-\s\s *]+$"       
    var regExpnString = /^([\w-_!@#$%^&*()+=;:,.?/\s])+$/    
    var sMessage = "Please enter a valid " + sTitle  ;      
        
    validate_FormRegularExpression(oObject,regExpnString,sMessage,true)    
    return true;
}


// Check for a valid  Numeric value
function validate_FormNumber(oObject,sTitle)
{                   
    var regExpnString = "^[0-9]+$"    
    var sMessage = "Please enter a valid " + sTitle  ;      
    validate_FormRegularExpression(oObject,regExpnString,sMessage,true)      
    return true;
}

// Check for valid Email
function validate_FormEmailValue(oObject,sTitle)
{   
    // For Email reg ex
    var regExpnString =/^[a-zA-Z0-9]+([\.|\-_]?[a-zA-Z0-9])*@[a-zA-Z0-9]+([\.|\-_]?[a-zA-Z0-9])*\.[a-zA-Z0-9]+$/
    //var sMessage = sTitle +  " must contain the @ character and a period"  
    var sMessage = "Please enter a valid " + sTitle  ;      
        
    validate_FormRegularExpression(oObject,regExpnString,sMessage,true)          
    return true;
}

// Validate Phone
function validate_FormPhoneValue(oObject,sTitle)
{   
     // For phone reg ex
   // var regExpnString =/^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,3})|(\(?\d{2,3}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/
    //var sMessage = sTitle +  " is not in the valid format"  
    var sMessage = "Please enter a valid 10 digit phone number" ;      
        
    validate_PhoneRegularExpression(oObject,sMessage,true)          
    return true;
}


//check for valid Pincode
function validate_FormPinCode(objPinCode,sTitle)
{    
    var regExpnString  = /^\d{5}([\-]\d{4})?$/;
    //var sMessage = "Enter only 5 or 9 digits(0 thru 9) or - "
    var sMessage = "Please enter a valid " + sTitle  ;      
     
    validate_FormRegularExpression(objPinCode,regExpnString,sMessage,true)  
    return true;       
}



function getElementByPD_Id(idValue)
{   
    var oItems = document.forms[0].elements;   
    var objElement;        
    for(pd_counter=0;pd_counter<oItems.length;pd_counter++)
    {  
       if(checkCustomAttribute(oItems[pd_counter],"pd_id",idValue))
	   {                  
          objElement = oItems[pd_counter]
          return objElement       
        }           
    }    
    return null;
}

//this method will get the element using getElementsByTagName method and
//custom pd_id property
// Created because 
function getElementByTagNamePD_Id(idValue,tagName)
{       
    var oItems = document.getElementsByTagName(tagName);   
    var objElement;    
     
    for(pd_counter=0;pd_counter<oItems.length;pd_counter++)
    {       
       if(checkCustomAttribute(oItems[pd_counter],"pd_id",idValue))
	   {                  
          objElement = oItems[pd_counter]
          return objElement       
        }           
    }    
    return null;
}


function getElementByHiddenType(idValue)
{       
    var tagName="INPUT";
    var oItems = document.getElementsByTagName(tagName);   
    var objElement;    
     
    for(pd_counter=0;pd_counter<oItems.length;pd_counter++)
    {       
       if (oItems[pd_counter].type == "hidden")
       {
         if(oItems[pd_counter].indexOf(idValue) != -1)
            return oItems[pd_counter]
       }
       
    }    
    return null;
}

function clearSearchForm()
{
    var oItems = document.forms[0].elements;   
    var objElement;
    
    for(pd_counter=0;pd_counter<oItems.length;pd_counter++)
    {       
       oAttribute = customAttributeExists(oItems[pd_counter],"pd_id") 	
        
       if(oAttribute!=null)
       {   
            objElement = oItems[pd_counter]                  
            switch (objElement.type){
                case  "select-one":objElement.selectedIndex=0;
                case "text":objElement.value="";                
            }    
        }           
    }   
    // Clear accepting new patients checkbox
        
    var spanCheckbox = getElementByTagNamePD_Id("acceptingNewPatients","SPAN");
    if(spanCheckbox)
    {
        var oCheckBox = spanCheckbox.lastChild;        
        oCheckBox.checked=false;
    }
}

function checkCustomAttribute(object,attributeName,attributeValue)
{
    var objAttribute

    if(browserSniffer(1, 0))
	{
	   objAttribute = object[attributeName]
	   if(objAttribute == attributeValue)
	        return true;
	}
	else
	{	  
	   objAttribute = object.attributes.getNamedItem(attributeName)
	   if(objAttribute != null)
	   {
	     if(objAttribute.value == attributeValue)
	        return true;
	   }      
	}
	return false
}

function customAttributeExists(object,attributeName)
{
    var objAttribute
    
    if(browserSniffer(1, 0))
	{
	   objAttribute = object[attributeName]	   
	}
	else
	{
	   objAttribute = object.attributes.getNamedItem(attributeName)	   
	}
	return objAttribute
}


function AddErrorHightLighting(obj)
{
    var width = obj.clientWidth;
    var height = obj.clientHeight;
        
    var lblObject;
    var lblName ="c" + obj.id.substring(1,obj.id.lastIndexOf("_")) + "_label";    
    
    if(browserSniffer(1, 0))
    {         
       //lblObject = document.getElementById("lbl"+ obj["pd_id"])                     
       lblName += obj["pd_id"]        
       lblObject = document.getElementById(lblName)
    }
    else
    {  
       //lblObject = document.getElementById("lbl"+ obj.attributes.getNamedItem("pd_id").value)
       
       lblName += obj.attributes.getNamedItem("pd_id").value               
       lblObject = document.getElementById(lblName)
    }       
    
    lblObject.className="errorHighlight " + lblObject.className;  
    //set the HasErrors Flag
    errorCount++;
}

 

function RemoveErrorHightLighting(obj)
{
    var lblObject;
    var lblName ="c" + obj.id.substring(1,obj.id.lastIndexOf("_")) + "_label";  
    
    if(browserSniffer(1, 0))
    {         
      // lblObject = document.getElementById("lbl"+ obj["pd_id"])      
      lblName += obj["pd_id"]        
      lblObject = document.getElementById(lblName)
      
    }
    else
    {  
       //lblObject = document.getElementById("lbl"+ obj.attributes.getNamedItem("pd_id").value)
       lblName += obj.attributes.getNamedItem("pd_id").value               
       lblObject = document.getElementById(lblName)
    } 
        
    if(lblObject.className.indexOf("errorHighlight")!=-1)
    {
        var width = obj.clientWidth;
        var height = obj.clientHeight;
                
        lblObject.className = lblObject.className.replace(/errorHighlight/g, "");        
        
    }
        
    // update errorCount
    errorCount--;
}


function checkEnterKeyPressed(objName,sUrl,totalPages)
{
    if(event.which || event.keyCode)
    {	
	if ((event.which == 13) || (event.keyCode == 13))
        {		
           document.getElementById(objName).click();                         
		
        }
    }
    return false;   
}
// End of Functions Used in eventListing.xslt

// Function to format phone numbers on typing
// ---------------------------------------------------------
// Phone number formatter, created for Foodry
// For more info, visit:
// http://www.foodry.com/blog
// ---------------------------------------------------------
function formatPhone(elm, e) {
    var keychar;

    // If used in onkeypress, pass in the event and this will
    // grab the character and do the right thing. This allows
    // for a smoother user experience than if the chars are
    // being visibly deleted.
    if (e) {
        var keynum;
        if (window.event) {
            keynum = e.keyCode
        }
        else if (e.which) {
            keynum = e.which
        }

        keychar = String.fromCharCode(keynum)
    }   

    // Allow a backspace to go through, so the user
    // can correct any typos.
    
    if (/[\b]/.exec(keychar)) {
        
        return true;
    } else {
        var p = elm.value + keychar;

        // Don't allow a leading 1 or 0. We also strip out all
        // non-numeric characters here to make the formatting
        // easier later on. This could be modified to allow
        // letters if you consider them valid.
        p = p.replace(/^[0]/,"");
        p = p.replace(/\D+/g, "");

        // You can easily change the formatting of the phone
        // number by editing the conditionals below.
        if (p.length > 0 && p.length < 3) {
            //p = p;
        }
        else if (p.length >= 3 && p.length < 7) {
            p = p.substring(0,3)+ "-" + p.substring(3);
        }
        else if (p.length >= 7 && p.length < 10) {
            p = p.substring(0,3) + "-" + p.substring(3,6) + "-" + p.substring(6);
        }
        else if (p.length) {
            p = p.substring(0,3)+"-"+p.substring(3,6)+"-"+p.substring(6,10);
        }
        elm.value = p;

        return false;
    }
}

// Function to format phone numbers on typing



// Function to get the Date Controls Dropdown boxes using Pd_id
function getDateControlsByPd_Id(pdId)
{
    var allDropdownBoxes = document.getElementsByTagName("Select");    
    
    var DateControlList = new Array();
    var id= new String();    
    var counter=0;
   
    for(i=0;i<allDropdownBoxes.length;i++)
    {       
       id =allDropdownBoxes[i].id;         
       if(id.indexOf(pdId,0)>0) 
       {         
         DateControlList[counter] = allDropdownBoxes[i];
         counter++;         
         if(counter == 3)
            break;
       } 
	}	
	
	return DateControlList;
}

// Begin Functions specific to cms Edit section
    function validateLoginForm()
    {
        if (document.forms[0].userName.value == "" || document.forms[0].password.value == "" )
        {
            alert("Please specify your login & password");
            return false;
        }
        return true;    
    }

// End Functions specific to cms Edit section

// Functions specific to FORMS - State and Country
    function stateOnChange(stateDDObj)
    {
        var stateObj = getElementByPD_Id('State');
        var countryObj = getElementByPD_Id('Country'); 
        
        stateObj.value=stateDDObj.value; 
        validate_FormStringValue(stateObj,'State'); 
        if(stateObj.value !='') 
        {
            countryObj.value='U.S.A';
            validate_FormStringValue(countryObj,'Country'); 
        }
    }
    
    function countryOnChange(countryObj)
    {
        var stateDDObj = getElementByPD_Id('USStates');
        var stateObj = getElementByPD_Id('State');  
        
        if(countryObj.value!='U.S.A')
        {
            stateObj.value='';
            stateObj.style.display='';
            stateDDObj.style.display='none';
        }
        else
        {
 	    stateObj.value='';	
            stateObj.style.display='none';
            stateDDObj.style.display='';
            stateDDObj.value='';
        } 
        
        validate_FormStringValue(stateObj,'State');
        validate_FormStringValue(countryObj,'Country');
    }
// End Functions

