
dojo.addOnLoad(function(){

    var myViewableMap = "ligeo-result-map";
    var toShow = 'showSearch';
    if (hasResults()){
    	toShow = 'showResults';
    }
    changeDisplay(toShow);
    setDefaultFilters();
    LigeoFeaturesAPI.setSingleLineAsync(true);
    if ((typeof isPassThroughSearch != "undefined") && LigeoVarUtils.isNotNullOrEmpty(isPassThroughSearch) && isPassThroughSearch){
        var myForm = document.getElementById('searchForm');
        isPassThroughSearch = false;
        doCibcSearch(myForm);
    }
});


function doCibcSearch(form) {

   hideErrorDiv();
	hideCandidatesList();
   var validSearchForm = validateSearchForm();
   if(validSearchForm) {
	 var searchLandmark = document.getElementById('searchType_landmark');
	 var routeForm = document.getElementById("drivingDirections");
     switchSearchOrder('DISTANCE'); 
     startProgressWindow(); 
     toggleMaps('ligeo-result-map'); 
     LigeoFeaturesAPI.useFuzzyGeocodingCandidates = false; 
     clearUnrelatedElements(form);     
     if(searchLandmark != null && searchLandmark.checked){
         form.formSubmitSearch.value = false;
         routeForm.start.value = form.landmark.value;
         form.originalLandmarkValue.value = form.landmark.value;
     }else{
     	if (LigeoVarUtils.isNotNullOrEmpty(form.formSubmitSearch)){
             form.formSubmitSearch.value = true;
     	}
     	if (LigeoVarUtils.isNotNullOrEmpty(form.originalLandmarkValue)){
             form.originalLandmarkValue.value = "";
     	}        
     }

     return LigeoAPI.ajaxHtmlMessages(form, document.getElementById('resultsBlock'));
  } else {
	 return validSearchForm;
  }
}

function validateSearchForm() {

    var retc = false;
    if(brandId == "intra" || brandId == "inter"){  
        if (document.getElementById('searchType_landmark').checked) {
        	retc = true;
        } else if (document.getElementById('searchType_transit').checked) {
            retc = validateTransit();
        }
    } else {     
    	if (document.getElementById('searchType_address').checked) {
            retc = validateAddress();
        } else if (document.getElementById('searchType_landmark').checked) {
            retc = validateLandmark();
        } 
    }
    return retc;
}

function doCibcDrill(drillUrl)
{

    LigeoAPI.ajaxHtmlMessages(drillUrl, document.getElementById('detailsBlock'));
    changeDisplay("showDrill");
    return true;  //Don't follow href
}

function doCibcRoute(routeForm){

	validateRoute(routeForm);
	startProgressWindow();
	LigeoFeaturesAPI.setSingleLineAsync(true);
	toggleMaps('ligeo-route-map');
	return LigeoAPI.ajaxHtmlMessages(routeForm, document.getElementById('routeBlock'));
}

function doCibcResults(resultsUrl)
{

	LigeoAPI.closeBalloon();
    LigeoAPI.ajaxHtmlMessages(resultsUrl, document.getElementById('resultsBlock'));
    return true;  //Don't follow href
}

// This function sets information on the routeBlock that is needed to display and execute the route
function setRouteInformation(transitDesignation, locationType, uniqueId) {

//      alert("the transitDesignation is " + transitDesignation + "\nthe locationType is " + locationType + "\nthe uniqueId is " + uniqueId);
        var titleSpan = document.getElementById('headerTitleSpan');
        var subtitleSpan = document.getElementById('headerSubtitleSpan');
        var endText = document.getElementById('end');
        titleSpan.innerHTML = transitDesignation;
        subtitleSpan.innerHTML = locationType;
        endText.value = transitDesignation;

        // this section sets the hidden form fields for the route
        var featureNumber = document.getElementById('routeFeatureNumber').innerHTML;
        //var uniqueId = document.getElementById('routeUniqueId').innerHTML;
        //var routeFeatureNumberInput = document.getElementById('routeFeatureNumberInput');
        var routeUniqueIdInput = document.getElementById('routeUniqueIdInput');
        //routeFeatureNumberInput.value = featureNumber;
        routeUniqueIdInput.value = uniqueId;
}

//TOGGLE MAP
function toggleMaps(showId) {

        myViewableMap = showId;
        var allMapIds = new Array("ligeo-result-map", "ligeo-drill-map", "ligeo-route-map");
        for (var i = 0; i < allMapIds.length; i++) {
                var hideElement = document.getElementById(allMapIds[i]);
                if(hideElement != null){
                        hideElement.style.display = "none";
                }
        }

        if (enableMaps == true) {
                var showElement = document.getElementById(showId);

                if(showElement != null){
                        showElement.style.display = "block";
                }
        }

}

function startProgressWindow() {
        if (enableMaps == true) {
                var progressElement = document.getElementById('progress-window-div');
                if(progressElement != null){
                        progressElement.style.display = "block";
                }
        }
}

function stopProgressWindow() {
        if (enableMaps == true) {
                var progressElement = document.getElementById('progress-window-div');
                if(progressElement != null){
                        progressElement.style.display = "none";
                }
        }
}

function whichColor() {
	if (brandId == "inter" || brandId == "intra") {
		highlightColor = "#f7ebc6"; 
		normalColor = "#f7f7e7";
	} else {
		highlightColor = "#f7ebc6"; 
		normalColor = "#f7ebc6";
	}
}
//TODO: CIBC-967
//function changeSearchDiv(selectedDivId, newAction) {
//	if (brandId == "inter" || brandId == "intra") {
//		whichColor();
//		var allSearchDivIds = new Array("addressBlock", "landmarkBlock", "transitBlock");
//		for (var i = 0; i < allSearchDivIds.length; i++) {
//			var searchDivElem = document.getElementById(allSearchDivIds[i]);
//			if(LigeoVarUtils.isNotNullOrEmpty(searchDivElem) && searchDivElem.id == selectedDivId){
//				searchDivElem.style.backgroundColor = highlightColor;
//			} else {
//				searchDivElem.style.backgroundColor = normalColor;
//			}
//		}
//	}
//}

//TODO: CIBC-967 WE believe that this function can be removed all together
function changeBgOnReset(selectedDivId) {
    if (brandId == "inter") {
            whichColor();
            var allSearchDivIds = new Array("addressBlock", "landmarkBlock", "transitBlock");
            for (var i = 0; i < allSearchDivIds.length; i++) {
                    var searchDivElem = document.getElementById(allSearchDivIds[i]);
                    if(LigeoVarUtils.isNotNullOrEmpty(searchDivElem) && searchDivElem.id == selectedDivId){
                            searchDivElem.style.backgroundColor = highlightColor;
                    } else {
                            searchDivElem.style.backgroundColor = normalColor;
                    }
            }
    }
}

function createNewAction(form, newAction) {
    var newCurrentAction = form.action;
    var currentAction = form.action;
    var start = currentAction.lastIndexOf("/") + 1;
    var end = currentAction.indexOf(".do");
    currentAction = currentAction.substr(start, end - start);
    newCurrentAction = newCurrentAction.replace(currentAction, newAction);
    return newCurrentAction;
}



function changeDisplay(displayAction) {
        //GET ALL THE ELEMENTS
        //TABS
        var searchOnTab = document.getElementById('searchOnTab');
        var searchOffTab = document.getElementById('searchOffTab');
        var resultsOnTab = document.getElementById('resultsOnTab');
        var resultsOffTab = document.getElementById('resultsOffTab');
        var locationOnTab = document.getElementById('locationOnTab');
        var locationOffTab = document.getElementById('locationOffTab');

        //DISPLAY ELEMENTS
        var searchBlock = document.getElementById('searchBlock');
        var resultsBlock = document.getElementById('resultsBlock');
        var detailsBlock = document.getElementById('detailsBlock');
        var routeBlock = document.getElementById('routeBlock');
        var allDisplayBlocks = new Array(searchBlock, resultsBlock, detailsBlock, routeBlock);
        
        //MARKETING MODULE ELEMENTS
        if (brandId == "inter"){        
		        var marketingModuleSearch = document.getElementById('marketingModuleSearch');
		        var marketingModuleOther = document.getElementById('marketingModuleOther');
	       }
       
        LigeoAPI.closeBalloon();

		if (displayAction == 'resetFormAndShowSearch') {
			resetSearchForm();
			resetSearchTabs();
			resetResultMap();
			clearErrors();
			displayAction = 'showSearch';
        }

        if (displayAction == 'showOneResultDrill'){
                searchOnTab.style.display = 'none';
                searchOffTab.style.display = 'inline';
                resultsOnTab.style.display = 'none';
                resultsOffTab.style.display = 'inline';
                locationOnTab.style.display = 'inline';
                locationOffTab.style.display = 'none';
                showDisplayBlock(detailsBlock, allDisplayBlocks);
                toggleMaps('ligeo-drill-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-drill-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                doSpaghetti();
                if (brandId == "inter"){
                    marketingModuleSearch.style.display = 'none';
                    marketingModuleOther.style.display = 'inline';
                }
                
            LigeoAPI.setLigeoMap(LigeoAPI.getLigeoMapById(LigeoAPI.RESULT_MAP_ID));
            LigeoAPI.configureResults();
            
        } else if (displayAction == 'showResults') {
                searchOnTab.style.display = 'none';
                searchOffTab.style.display = 'inline';
                resultsOnTab.style.display = 'inline';
                resultsOffTab.style.display = 'none';
                if (locationOnTab.style.display == 'inline') {
                        locationOnTab.style.display = 'none';
                        locationOffTab.style.display = 'inline';
                }
                showDisplayBlock(resultsBlock, allDisplayBlocks);
                toggleMaps('ligeo-result-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-result-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                if (brandId == "inter"){     
               	    marketingModuleSearch.style.display = 'none';
               	    marketingModuleOther.style.display = 'inline';
                }                
        } else if (displayAction == 'showNewResults') {
            searchOnTab.style.display = 'none';
            searchOffTab.style.display = 'inline';
            resultsOnTab.style.display = 'inline';
            resultsOffTab.style.display = 'none';
            locationOnTab.style.display = 'none';
            locationOffTab.style.display = 'none';
            showDisplayBlock(resultsBlock, allDisplayBlocks);
            toggleMaps('ligeo-result-map');
            LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-result-map');
            LigeoAPI.setZoomLevelStatus('zoom-level');
             if (brandId == "inter"){     
            	    marketingModuleSearch.style.display = 'none';
            	    marketingModuleOther.style.display = 'inline';
             }
        } else if (displayAction == 'showSearch') {
                searchOnTab.style.display = 'inline';
                searchOffTab.style.display = 'none';
                if (resultsOnTab.style.display == 'inline') {
                        resultsOnTab.style.display = 'none';
                        resultsOffTab.style.display = 'inline';
                }
                if (locationOnTab.style.display == 'inline') {
                        locationOnTab.style.display = 'none';
                        locationOffTab.style.display = 'inline';
                }
                showDisplayBlock(searchBlock, allDisplayBlocks);
                toggleMaps('ligeo-result-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-result-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                 if (brandId == "inter"){     
                      marketingModuleOther.style.display = 'none';
                      marketingModuleSearch.style.display = 'inline';
                  }
        } else if (displayAction == 'showDrill') {
                searchOnTab.style.display = 'none';
                searchOffTab.style.display = 'inline';
                resultsOnTab.style.display = 'none';
                resultsOffTab.style.display = 'inline';
                locationOnTab.style.display = 'inline';
                locationOffTab.style.display = 'none';
                showDisplayBlock(detailsBlock, allDisplayBlocks);
                toggleMaps('ligeo-drill-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-drill-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                 if (brandId == "inter"){     
                	    marketingModuleSearch.style.display = 'none';
                    	marketingModuleOther.style.display = 'inline'
                  }
        } else if (displayAction == 'showRoute') {
                searchOnTab.style.display = 'none';
                searchOffTab.style.display = 'inline';
                resultsOnTab.style.display = 'none';
                resultsOffTab.style.display = 'inline';
                locationOnTab.style.display = 'inline';
                locationOffTab.style.display = 'none';
                showDisplayBlock(routeBlock, allDisplayBlocks);
                toggleMaps('ligeo-drill-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-drill-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                document.getElementById("ligeo-route").innerHTML = "&nbsp;";
                var routeForm = document.getElementById("drivingDirections");
                if(routeForm.start.value == "") {
                        routeForm.start.select();
                }
                if (brandId == "inter"){     
                  	marketingModuleSearch.style.display = 'none';
                  	marketingModuleOther.style.display = 'inline';
                }
        } else if (displayAction == 'showRouteMap') {
                searchOnTab.style.display = 'none';
                searchOffTab.style.display = 'inline';
                resultsOnTab.style.display = 'none';
                resultsOffTab.style.display = 'inline';
                locationOnTab.style.display = 'inline';
                locationOffTab.style.display = 'none';
                showDisplayBlock(routeBlock, allDisplayBlocks);
                toggleMaps('ligeo-route-map');
                LigeoAPI.myLigeoMap = LigeoAPI.getLigeoMapById('ligeo-route-map');
                LigeoAPI.setZoomLevelStatus('zoom-level');
                if (brandId == "inter"){     
                   	marketingModuleSearch.style.display = 'none';
                   	marketingModuleOther.style.display = 'inline';
                }
        }
        if (LigeoVarUtils.isNotNullOrEmpty(LigeoAPI.getLigeoMap())){
        	LigeoAPI.fixNavMapStyles();
        }
}

function showDisplayBlock(blockToDisplay, allDisplayBlocks){
        for (var i = 0; i < allDisplayBlocks.length; i++) {
                if (LigeoVarUtils.isNotNullOrEmpty(allDisplayBlocks[i])) {
                        if (allDisplayBlocks[i].id == blockToDisplay.id) {
                                allDisplayBlocks[i].style.display = 'block';
                        } else {
                                allDisplayBlocks[i].style.display = 'none';
                        }
                }
        }
}


function resetSearchForm() {
    if (brandId != "intra" && brandId != "inter") {
        document.getElementById('address').value = "";
        document.getElementById('city').value = "";
        document.getElementById('province').value = "";
        document.getElementById('postalCode').value = "";
        document.getElementById('address').value = "";  
    }  
    if (LigeoVarUtils.isNotNullOrEmpty(document.getElementById('landmark'))){
    	document.getElementById('landmark').value = "";
    }    
    document.getElementById('transit').value = "";
    document.getElementById('branches').checked = false;
    document.getElementById('abms').checked = false;
    toggleSecondary("branches");
    toggleSecondary("abms");
    document.getElementById('branches').checked = true;
     if (brandId == "intra") {
        document.getElementById('specialist').checked = false;    
    } else if (brandId == "inter") {       
        document.getElementById('abms').checked = true;         
    } else {
        document.getElementById('abms').checked = true;    
        document.getElementById('searchType_address').checked = true;    
    }
    var mms = document.getElementById("mms");
    if (mms != null)
        document.getElementById("mms").checked = true;
    var businessAdvisors = document.getElementById("advisers");
    if (businessAdvisors != null)
        document.getElementById("advisers").checked = false;
    if (brandId != "intra" && brandId != "inter") {
        changeBgOnReset('addressBlock');
    }
}

function resetSearchFormBR() {
    document.getElementById('address').value = "";
    document.getElementById('city').value = "";
    document.getElementById('province').value = "";
    document.getElementById('postalCode').value = "";
    document.getElementById('address').value = "";
}

function resetSearchFormABM() {
    document.getElementById('address').value = "";
    document.getElementById('city').value = "";
    document.getElementById('province').value = "";
    document.getElementById('postalCode').value = "";
    document.getElementById('landmark').value = "";
    document.getElementById('address').value = "";
    document.getElementById('deposit').checked = false;
    document.getElementById('wheelchair').checked = false;
    document.getElementById('audio').checked = false;
    document.getElementById('withdrawUSD').checked = false;
    //document.getElementById('drivethru').checked = false;
    changeBgOnReset('addressBlock');
}

function resetSearchTabs() {
    document.getElementById('searchOnTab').style.display = 'inline';
    document.getElementById('searchOffTab').style.display = 'none';
    document.getElementById('resultsOnTab').style.display = 'none';
    document.getElementById('resultsOffTab').style.display = 'none';
    document.getElementById('locationOnTab').style.display = 'none';
    document.getElementById('locationOffTab').style.display = 'none';
}

function resetResultMap() {
    var resultMap = LigeoAPI.getLigeoMapById("ligeo-result-map");
    var defaultCenter = new LigeoLocation("defaultCenter");
    defaultCenter.setLatitude(55.603178169027046);
    defaultCenter.setLongitude(-97.91015625000001);
    resultMap.setCenterAndZoom(defaultCenter.getVELatLong(), 4);
    resultMap.clearResults();
    LigeoAPI.configureResults = function(){};
}

function toggleBranches(checkBox) {
    if(document.getElementById(checkBox).checked == true) {
        document.getElementById('branches').checked = true;
    }
}

function toggleABMs(checkBox) {
    if(document.getElementById(checkBox).checked == true) {
        document.getElementById('abms').checked = true;
    }
}


function followAlongFocus_ADDRESS(text) {
    document.getElementById('searchType_address').checked = true;
}

function followAlongFocus_LAND(text) {
    document.getElementById('searchType_landmark').checked = true;
}

function followAlongFocus_TRANS(text) {
    document.getElementById('searchType_transit').checked = true;
}


function setDefaultFilters(){
    var filter = document.getElementById("branches");
    if (filter != null)
        filter.checked = true;
    filter = document.getElementById("abms");
    if (filter != null && brandId != 'intra')
        filter.checked = true;
    filter = document.getElementById("mms");
    if (filter != null)
        filter.checked = true;

}

function toggleSecondary(filter) {
    // Primary filter unchecked
    if(!document.getElementById(filter).checked) {
        if(filter == 'branches') {
            temp = document.getElementById('closedBranches');
            if (temp != null) {
                document.getElementById('closedBranches').checked = false;
            }

            document.getElementById('wheelchair').checked = false;
            document.getElementById('handicapPark').checked = false;
            document.getElementById('freePark').checked = false;
            document.getElementById('teletype').checked = false;
            document.getElementById('extended').checked = false;
            document.getElementById('weekend').checked = false;
            document.getElementById('sundayHours').checked = false;

            temp = document.getElementById('otherTypes');
            if (temp != null) {
                document.getElementById('otherTypes').checked = false;
            }
        }
        else {
            document.getElementById('deposit').checked = false;
            document.getElementById('wheelchair2').checked = false;
            document.getElementById('audio').checked = false;
            document.getElementById('drivethru').checked = false;
            document.getElementById('withdrawUSD').checked = false;
        }
    }
}

function overNumberIcon(num) {

    var thatObj = document.getElementById('listData'+num);
    if (thatObj != null && thatObj != undefined) {
        thatObj.style.backgroundColor = '#FFF8DF';
    }
    return true;
//TODO: CIBC-967 The was from dev branch, preferred way of managing styles.
//	offNumberIcon(0);
//	var thatObj = document.getElementById('listData'+num); 
//	if (thatObj != null && thatObj != undefined) {
//		var tmpStyle= "";
//		tmpStyle = thatObj.className;
//		tmpStyle = tmpStyle + " resultListHighlight";
//		thatObj.className = tmpStyle;
//	}
//	return true;
}

function offNumberIcon(num) {
    var thatObj = document.getElementById('listData'+num);
    if (thatObj != null && thatObj != undefined) {
        thatObj.style.backgroundColor = '#FFFFFF';
    }
    return true;
}

function overNumberIcon2(num) {
	   try{
        var markerImg = document.getElementById("marker_"+ num);
	   
    	   if(markerImg != null){
    	      	markerImg.src = "../images/marker_" + num + "_on.gif";
    	   }      
    
	      	var thatObj = document.getElementById('listData'+num); 
        if (thatObj != null && thatObj != undefined) {
	      	    thatObj.style.background = '#DEEFFF';
        }
	   } catch(err) {}
	   return true;
}

function offNumberIcon2(num) {
	   try{
        var markerImg = document.getElementById("marker_"+ num);
	   
    	   if(markerImg != null){
    	      	markerImg.src = LigeoEnvironment.getImageServer() + "mapicons/noRdSq" + num + ".gif";
    	   }        

	      	var thatObj = document.getElementById('listData'+num); 
        if (thatObj != null && thatObj != undefined) {
	          	thatObj.style.background = '#FFF';
        }
	   } catch(err) {}
	   return true;
//TODO: CIBC-697, prefered method of styles, missing functionality from inter/intra
//	var loopCount = 0;
//	if (num == 0) {
//		var loopStart = 1;
//		var loopStop = 50;
//	} else {
//		var loopStart = num;
//		var loopStop = num;
//	}
//	var thatObj = null;
//	var tmpStyle= "";
//	for (loopCount=loopStart; loopCount<=loopStop; loopCount++) {
//		thatObj = document.getElementById('listData'+loopCount); 
//		if (thatObj != null && thatObj != undefined) {
//			tmpStyle = thatObj.className;
//			tmpStyle = tmpStyle.replace (" resultListHighlight", "");
//			thatObj.className = tmpStyle;
//		}
//	}
//	return true;
}

function switchSearchOrder(orderValue){
    var form = document.getElementById('searchForm');
    form.searchCustom__columnSort.value = true;
    form.searchCustom__searchOrder.value = orderValue;
}

function clearUnrelatedElements(form){
    if(form.searchType_address != null && form.searchType_address.checked){
        clearLandmark(form);
        clearTransit(form);
    }else if(form.searchType_landmark != null && form.searchType_landmark.checked){
        if (brandId != 'intra' && brandId != 'inter') {
            clearAddress(form);
        }
        clearTransit(form);
    }else if(form.searchType_transit != null && form.searchType_transit.checked){
        clearLandmark(form);
        if (brandId != 'intra' && brandId != 'inter') {        
            clearAddress(form);
        }
    }
}

function clearLandmark(form){
  if(form.landmark != null)
    form.landmark.value = "";
}

function clearTransit(form){
  if(form.transit != null)
    form.transit.value = "";
}

function clearAddress(form){
    form.address.value = "";
    form.city.value = "";
    form.province.value = "";
    form.postalCode.value = "";
}

function populateRouteStartAddress(searchForm, routeForm){
    var startAddress = "";
    if(searchForm.address.value != null && searchForm.address.value != ""){
        startAddress += searchForm.address.value + ", ";
    }
    if(searchForm.city.value != null && searchForm.city.value != ""){
        startAddress += searchForm.city.value  + ", ";
    }
    if(searchForm.province.value != null && searchForm.province.value != ""){
        startAddress += searchForm.province.value  + ", ";
    }
    if(searchForm.postalCode.value != null && searchForm.postalCode.value != ""){
        startAddress += searchForm.postalCode.value;
    }

    routeForm.start.value = startAddress;
}

function populateRouteStartAddressWithAddressLabel(/*String*/ startAddress){
    var routeForm = document.getElementById("drivingDirections");
    if(routeForm != null){
        routeForm.start.value = htmlDecode(startAddress);
    }
}

function htmlDecode(string) {
        string = string.replace(/\&gt;/g, ">");
        string = string.replace(/\&lt;/g, "<");
        string = string.replace(/\&quot;/g, "\"");
        string = string.replace(/\&#039;/g, "'");
        string = string.replace(/\&#39;/g, "'");
        string = string.replace(/\&apos;/g, "'");
        string = string.replace(/\&amp;/g, "&");

        return string;
}


var validationPatterns = new Array();
validationPatterns['genericText'] = /^[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ¦ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿,:\'"\-=_!@# \+\*\?\.\[\]\^\$\(\)\{\}\|\\\&]*[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ¦ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿,:\'"\-=_!@# \+\*\?\.\[\]\^\$\(\)\{\}\|\\\&]*$/;
validationPatterns['multiLineGenericText'] = /^[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿,:\'"-=_!@# \+\*\?\.\[\]\^\$\(\)\{\}\|\\\&\f\n\r]*[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿,:\'"-=_!@# \+\*\?\.\[\]\^\$\(\)\{\}\|\\\&\f\n\r]*$/;
validationPatterns['2DigitWholeNumber'] = /^[0-9]{2}$/;
validationPatterns['3DigitWholeNumber'] = /^[0-9]{3}$/;
validationPatterns['5DigitWholeNumber'] = /^[0-9]{5}$/;
validationPatterns['alphabetic'] = /^([A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿\' \-,]*)$/;
validationPatterns['alphabetic2'] = /^([A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿#]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿\' #\-\/.]*)$/;
validationPatterns['alphabetic3'] = /^([A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿\'" \-,]*)$/;
validationPatterns['alphabetic4'] = /^([A-Za-zÃƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-zÃƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿\' \-,]*)$/;
validationPatterns['alphanumeric'] = /^([A-Za-zÃƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿]+[A-Za-z0-9Ãƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿\' \-]*)$/;
validationPatterns['alphanumericStrict'] = /^[A-Za-zÃƒâ‚¬Ãƒ?Ãƒâ€šÃƒÆ’Ãƒâ€žÃƒâ€¦Ãƒâ€¡ÃƒË†Ãƒâ€°ÃƒÅ Ãƒâ€¹ÃƒÅ’Ãƒ?ÃƒÅ½Ãƒ?Ãƒâ€˜Ãƒâ€™Ãƒâ€œÃƒâ€?Ãƒâ€¢Ãƒâ€“Ãƒâ„¢ÃƒÅ¡Ãƒâ€ºÃƒÅ“Ãƒ?ÃƒÂ ÃƒÂ¡ÃƒÂ¢ÃƒÂ£ÃƒÂ¤ÃƒÂ¥ÃƒÂ¦ÃƒÂ§ÃƒÂ¨ÃƒÂ©ÃƒÂªÃƒÂ«ÃƒÂ¬ÃƒÂ­ÃƒÂ®ÃƒÂ¯ÃƒÂ±ÃƒÂ²ÃƒÂ³ÃƒÂ´ÃƒÂµÃƒÂ¶ÃƒÂ¹ÃƒÂºÃƒÂ»ÃƒÂ¼ÃƒÂ½ÃƒÂ¿0-9]+$/;
validationPatterns['bankAccount'] = /^((([0-9]{2}[- ])?[0-9]{5})|([0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]))$/;
validationPatterns['CCNumber'] = /^[0-9]{4}[ ]?[0-9]{4}[ ]?[0-9]{4}[ ]?[0-9]{4}$/;
validationPatterns['CCNumber1'] = /^([0-9]{4}[ ]?[0-9]{4}[ ]?[0-9]{4}[ ]?[0-9]{4})|([0-9]{4}[ ]?[0-9]{6}[ ]?[0-9]{5})$/;
validationPatterns['currency'] = /^((([0-9]{1,3}([, ]?[ ]?[0-9]{3})*)|([0-9]*))([.][0-9]{1,2})?)$/;
validationPatterns['currency2'] = /^((([0-9]{1,3}([, ]?[ ]?[0-9]{3}){0,2})|([0-9]{0,9}))([.][0-9]{1,2})?)$/;
validationPatterns['currency-fr'] = /^((([0-9]{1,3}([ ]?[ ]?[0-9]{3})*)|([0-9]*))([,.][0-9]{1,2})?)$/;//not used currently
validationPatterns['currency2-fr'] = /^((([0-9]{1,3}([ ]?[ ]?[0-9]{3}){0,2})|([0-9]{0,9}))([,.][0-9]{1,2})?)$/;//not used currently
validationPatterns['dateDay'] = /^[ ]?(([3][01])|([12][0-9])|([0]?[1-9]))[ ]?$/;
validationPatterns['dateYear'] = /^(((19)|(20))[0-9]{2})$/;
validationPatterns['decimalNumber'] = /^(([0-9]+)|([0-9]*[.][0-9]+))$/;
validationPatterns['email'] = /^[a-zA-Z0-9!#\$%\&'\*\+\-\/=\?\^_`\{\|\}~]+([.][a-zA-Z0-9!#\$%\&'\*\+\-\/=\?\^_`\{\|\}~]+)*[@]([a-zA-Z0-9]+([\.\-][a-zA-Z0-9]+)*(\.[a-zA-Z]{2,})|(((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))))$/;
validationPatterns['expDateMonth'] = /^[01][0-9]$/;
validationPatterns['percentage'] = /^[01]?[0-9]{1,2}$/;
validationPatterns['phoneNumber'] = /^[0-9]{3}[ \-\.]?[0-9]{4}$/;
validationPatterns['foreignPhoneNumber'] = /^[0-9\-\.]+$/;
validationPatterns['postalCode'] = /^[A-Za-z][0-9][A-Za-z][ ]?[0-9][A-Za-z][0-9]$/;
validationPatterns['spacedWholeNumber'] = /^[0-9 ]+$/;
validationPatterns['SINumber'] = /^[0-9]{3}[ ]?[0-9]{3}[ ]?[0-9]{3}$/;
validationPatterns['wholeNumber'] = /^[0-9]+$/;


function patternValidate(fieldVal, patternName){
    if(fieldVal.length == 0 || validationPatterns[patternName].test(fieldVal)){
        return true;
    }else{
        return false;
    }
}

function patternValidate2(fieldVal, patternName){
    if(fieldVal.length == 0 || morePatterns[patternName].test(fieldVal)){
            return true;
    }else{
            return false;
    }
}
//*********************************************************************************
// Title:                               newCustomWindow
// Desc:                                Opens a new window of large size.
// Created :                    Nov 25, 2003
// Last Modified:               Jan 29, 2004
// Accepts:                             pop_url - the URL of the page to open
// Returns:                             void
//*********************************************************************************
function newCustomWindow(pop_url,win_width,win_height,win_name) {
    var custWindow;
    if(pop_url.indexOf('/marketing/locators/TeamLocatorSearch') != -1){
        pop_url = '/ca/apply/afp-error.html';
    }
    if(!win_name){
        win_name="custWindow";
    }
    custWindow = window.open(pop_url,win_name,"width="+win_width+",height="+win_height+",scrollbars=yes,menubars=yes,resizable=yes,top=10,left=10");
    custWindow.focus();
    //return false;
}
   
   function validateAddress() {
       clearErrors();
       var error = false;

       var searchForm = document.getElementById("searchForm");

       // Trim the address field values of surrounding spaces
       searchForm.address.value = searchForm.address.value.replace(/^\s*|\s*$/g,"");
       searchForm.city.value = searchForm.city.value.replace(/^\s*|\s*$/g,"");
       searchForm.postalCode.value = searchForm.postalCode.value.replace(/^\s*|\s*$/g,"");
       
//NEED TO HANDLE ALL OF THE FOLLOWING ERRORS FOR ABM AND BRANCH

       // Address selected, no search fields entered
       if(searchForm.address.value == '' && searchForm.city.value == '' && searchForm.province.options[searchForm.province.selectedIndex].value == '' && searchForm.postalCode.value == '') {
    	   errorMissingAll();
           error = true;
       }
       // Address selected, no postal code, only province included (street address optional)
       else if(searchForm.city.value == '' && searchForm.postalCode.value == '' && searchForm.province.options[searchForm.province.selectedIndex].value != '') {
           errorMissingPostalCity();
           error = true;
       }
       // Address selected, no postal code, only city included (street address optional)
       else if(searchForm.city.value != '' && searchForm.province.options[searchForm.province.selectedIndex].value == '' && searchForm.postalCode.value == '') {
    	   errorMissingPostalProvince();
           error = true;
       }
       // Address selected, no postal code, street address only
       else if(searchForm.city.value == '' && searchForm.province.options[searchForm.province.selectedIndex].value == '' && searchForm.postalCode.value == '') {
    	   errorMissingAll(); // This really is the same as condition one above....so re-use it.
           error = true;
       }
       // Postal code invalid (wrong number/type of characters)
       else if(searchForm.postalCode.value != '' && !patternValidate(searchForm.postalCode.value, 'postalCode') && !patternValidate2(searchForm.postalCode.value, 'shortPostalCode')) {
    	   errorPostalInvalidFormat();
           error = true;
       }
       // Invalid characters in City
       if(!patternValidate(searchForm.city.value, 'alphabetic2')) {
    	   errorCityInvalidFormat();
           error = true;
       }

      return !error;

   }



//TODO: CIBC-697: Do we need this closing brace?
//    }
    function validateFilters(){
        var errors = false;

        var branchBox = document.getElementById("branches");
        var abmBox = document.getElementById("abms");
        var baBox = document.getElementById("advisers");
        var mmsBox = document.getElementById("mms");

        if(baBox != null){
          if((branchBox != null && !document.getElementById("branches").checked) && (abmBox != null && !document.getElementById("abms").checked) && (abmBox != null && !document.getElementById("advisers").checked)){
           errors = true;
          }
        }else{
          if((branchBox != null && !document.getElementById("branches").checked) && (abmBox != null && !document.getElementById("abms").checked) && (mmsBox != null && !document.getElementById("mms").checked) ){
           errors = true;
          }
        }

        return errors;
    }

    function validateRoute(form){
        form.fullAddress.value = checkFullAddressPostalCode(form.fullAddress.value, 'postalCodeWithNoSpace');
    }

    function validateLandmark() {
        clearErrors();
        var error = false;

        var searchForm = document.getElementById("searchForm");

        if(searchForm.landmark.value == '') {
        	errorLandmarkValidation();
            error = true;
        }

        if(error) {
            //document.searchForm.submit();
        }
       return !error;

    }

    function validateTransit() {
        clearErrors();
        var error = false;

        var searchForm = document.getElementById("searchForm");

        //Trim white space
        searchForm.transit.value = searchForm.transit.value.replace(/^\s*|\s*$/g,"");

        // Branch Transit selected, no value entered
        var transitLength = searchForm.transit.value.length;
        if(transitLength < 1) {
        	errorTransitValidation();
        	error = true;
        }

        // Branch Transit selected, field contains invalid characters or is too long.
        else if(!patternValidate(searchForm.transit.value, 'wholeNumber')) {
        	errorTransitValidation();
        	error = true;
        }

        // Padding transit numbers with length < 5
        else if(transitLength < 5 && transitLength > 0 && patternValidate(searchForm.transit.value, 'wholeNumber')) {
            var transitNumber = searchForm.transit.value;
            for (i=0; i < 5-transitLength; i++) {
                transitNumber = '0' + transitNumber;
            }
            searchForm.transit.value = transitNumber;
        }

       return !error;
    }

    function clearErrors() {
    	hideErrorDiv();
    }


    /****** Additional Validation Patterns *******/
var morePatterns = new Array();
// L#L and trailing whitespace is allowed
morePatterns['shortPostalCode'] = /^[A-Za-z][0-9][A-Za-z][ ]*$/;
morePatterns['postalCodeWithNoSpace'] = /[A-Za-z][0-9][A-Za-z][0-9][A-Za-z][0-9]/;

function checkFullAddressPostalCode(fieldVal, patternName) {
    var returnAddress = fieldVal;
    if(fieldVal.length != 0 && morePatterns[patternName].test(fieldVal)){
        var ar = morePatterns[patternName].exec(fieldVal);
        var newPostal = ar[0].substring(0,3) + ' ' + ar[0].substring(3);
        returnAddress = fieldVal.replace(ar[0], newPostal);
    }
    return returnAddress;
}

/*
function radiusSearchCallback (origin, radius) {
        var queryString = "mapcircle.centerLatitude=" + origin.Latitude + "&" + "mapcircle.centerLongitude=" + origin.Longitude + "&" + "mapcircle.radius="+ radius + "&" + "isMapCircleSearch=true";
        var actionForm = document.getElementById("searchForm");
        var url = actionForm.action + "?" + queryString;
        var targetElement = document.getElementById("resultsBlock");
        LigeoAPI.ajaxHtmlMessages(url,targetElement);
}
*/

function highlight(id1,id2,id3) {
        highlightColor = "#f7ebc6;";
       normalColor = "#f7f7e7;";

        setBackgroundColor(id1,highlightColor);
        setBackgroundColor(id2,normalColor);
        setBackgroundColor(id3,normalColor);

        radioSet(id1);
}

function setBackgroundColor(id,colour) {
        /* get the dom object for this id */
        elem = document.getElementById(id);
        elem.style.cssText = 'background-color:' + colour + ';';
}

function toggleClass( elementID, classToChange ) {
    classList = document.getElementById(elementID);
    if( classList.className.match( classToChange ) != null ){           // The class already exists: remove
           classList.className = classList.className.replace( classToChange, "" );
    }
    else {                                                                                                                      // The class does not exist: add it
           classList.className = classList.className + " " + classToChange;
    }
}



function sumitCandidate(candFullAdress)
{

	fullAddress = document.getElementById("landmark");
	fullAddress.value = candFullAdress;

	var errorDiv = document.getElementById('errorsCIBC');
	errorDiv.className = 'conditionalContentVisible';

    var myForm = document.getElementById('searchForm');
    doCibcSearch(myForm);
}

function sumitCandidateRoute(dispName, Latitude, Longitude)
{
	var routeForm = document.getElementById('drivingDirections');
	//
	changeDisplay('showRouteMap');
	validateRoute(routeForm);startProgressWindow(); 
	LigeoFeaturesAPI.setSingleLineAsync(true);
	toggleMaps('ligeo-route-map');
	LigeoFeaturesAPI.doNotDisplayParsedAddressInFullAddressField(); 
	//
	// hide candidates
	var candidatelist = document.getElementById('candidatelist');
	candidatelist.className = "hideCandidates";
	
	var Latitude = document.getElementById('Latitude');
	routeForm.Latitude.value = Latitude;
	
	var Longitude = document.getElementById('Longitude');
	routeForm.Longitude.value = Longitude;	
	
	var candidatelist = document.getElementById('candidatelist');
	candidatelist.className = "hideCandidates";

	// set fullAddress	
	routeForm.start.value = dispName ;
	
	// submit form
	//routeForm.submit();	
	//LigeoAddressParser.parseAddress(document.getElementById('drivingDirections'), document.getElementById('routeBlock'));
	LigeoAPI.ajaxHtmlMessages(document.getElementById('drivingDirections'), document.getElementById('routeBlock'));
}

function showCandidates()
{

	var showcandidates = document.getElementById('moreCandidates');
	showcandidates.className = "showCandidates";
	var candidatesshowlink = document.getElementById('candidatesshowlink');
	candidatesshowlink.className = "hideCandidates";
	var candidateshidelink = document.getElementById('candidateshidelink');
	candidateshidelink.className = "showCandidates";

	
}

function hideCandidates()
{

	var hidecandidates = document.getElementById('moreCandidates');
	hidecandidates.className = "hideCandidates";
	var candidateshidelink = document.getElementById('candidateshidelink');
	candidateshidelink.className = "hideCandidates";
	var candidatesshowlink = document.getElementById('candidatesshowlink');
	candidatesshowlink.className = "showCandidates";


}


function hideCandidatesList()
{

	var searchBlockCandidates = document.getElementById('searchBlockCandidates');
	if(searchBlockCandidates!=null)
	{	
		searchBlockCandidates.className = "condCandidateHidden";
	}
}

function hideCandidatesListRoutePg()
{

	var searchBlockCandidates = document.getElementById('searchBlockCandidates');
	searchBlockCandidates.className = "condCandidateHidden";
}


function showCandidatesRoutePg()
{

	var showcandidates = document.getElementById('moreCandidatesRoute');
	showcandidates.className = "showCandidates";
	var candidatesshowlink = document.getElementById('candidatesshowlinkRoute');
	candidatesshowlink.className = "hideCandidates";
	var candidateshidelink = document.getElementById('candidateshidelinkRoute');
	candidateshidelink.className = "showCandidates";

	
}

function hideCandidatesRoutePg()
{

	var hidecandidates = document.getElementById('moreCandidatesRoute');
	hidecandidates.className = "hideCandidates";
	var candidateshidelink = document.getElementById('candidateshidelinkRoute');
	candidateshidelink.className = "hideCandidates";
	var candidatesshowlink = document.getElementById('candidatesshowlinkRoute');
	candidatesshowlink.className = "showCandidates";


}

function setfocus(deeplinking)
{	
	if ( deeplinking!=null && deeplinking!="true" )
	{
		document.getElementById('landmark').focus();
	}
}

function stopMapZoomOnBalloonOpen(mapEvent) { 

	var isPinClick = didEndUserClickOnMapPin(mapEvent);
	if ( isPinClick )
	{
	    return true;
	}
	
	return false;     
} 


//MAP PIN CLICK EVENT HANDLER
//---------------------------------------------------------------------------

//Determines whether or not the end user clicked on a map pin.
//returns true if the end user clicked on a map pin, false otherwise.
//By returning true, this also overrides the default double click
//behavior on the VEMap. By returning false, the default double click
//behavior is allowed to run, which results in the map zooming in.
/*boolean*/ function didEndUserClickOnMapPin(/*MapEvent*/ mapEvent)
{
	
 // If the end user clicked on the VEMap where there were no pins,
 // the elementID aspect of the mapEvent will be null. If the end
 // user clicked on the VEMap where there was a pin, the elementID
 // aspect of the mapEvent will be of the form : msftve_1002_2000008_10008,
 // hence the logic below.
 return ((mapEvent.elementID != null) && (mapEvent.elementID.indexOf("msftve_") >= 0));
}


