// This is the job results object that holds all the logic for controls that are only ever on this page.
CB.JobResults = function(){
    // Let them eat cake - Hat Tip, Aaron Gustafson - http://www.alistapart.com/articles/eatcake/
    // modified and extended by Jeff Kenny
    function fixLinks(where) {
        var a, href, index, i, currentTab;
	    var startnode = CB.e(where);
        if (!startnode.getElementsByTagName){return null;}
        var anchors = startnode.getElementsByTagName("a");
        
        for(i=0; i < anchors.length; i++) {
            a = anchors[i];
            href = a.href;
            if ((href.indexOf("#") != -1) ) { // jump ref
                index = href.indexOf("#") + 5;
                currentTab = href.substring(index);
                CB.EventUtils.addEventListener(a,"click",function(myTab){return function(){CB.JobResults.showTab(myTab);};}(currentTab));
                href = '#';
                a.setAttribute("href",href);
            }
        }
    }

    function hideDivs(exempt) {
        var i, div, id, n, li;
	    if (!document.getElementsByTagName){return null;}
	    if (!exempt){exempt = "";}
	    // set the all but the active divs in the big form to not show
	    var pnls = CB.e("panels");
	    var divs = pnls.getElementsByTagName("div");
	    
	    for(i=0; i < divs.length; i++) {
		    div = divs[i];
		    id = div.id;
            if ((id !== "jp_f"+exempt) && (id !== "")) {
                div.className = "popHide";
            }
		    if (id === "pnl_"+exempt) {
			    div.className = "popShow";
		    }
        }
        
	    // set the correct tab to be "active"
	    var list = CB.e("tabs");
	    var lis = list.getElementsByTagName("li");
	    for(n=0; n < lis.length; n++) {
            li = lis[n];
            id = li.id;
		    CB.e("tab_"+(n+1)).className = "";
	    }
	    CB.e("tab_"+exempt).className = "active";
	    CB.e("tab_"+exempt).blur();
    }  
    
    return{
        excrit:'',
        windowOnLoad:function(){
            this.initializeSearchBox();
        },
        initializeSearchBox:function(){
            // this is method that is called from each individual search box and must be overridden by that search box
            // this feels a little ugly - mmcnair 6.4.2007
        },
        // initiate the tabs
        defaultTabs:function() {
            fixLinks("tabs");
            fixLinks("panels");
	        var hash = window.location.hash;
	        var jumpto = hash.charAt(5);
	        if (hash === "" || jumpto === "" || isNaN(jumpto) || jumpto > CB.e("tabs").getElementsByTagName("li").length ) {
		        // if there's no hash
		        // or the hash exists but it's not long enough
		        // or the 5th character is not a number
		        // or that number is greater than the number of anchors in the jumplist
		        // then default to form part 1
		        hideDivs("1");
	        } else {
		        // else jump to a specific part of the form
		        hideDivs(jumpto);
	        }
        },
        showTab:function(what) {
            if (!document.getElementById){return null;}
            hideDivs(what);
	        CB.e("pnl_"+what).className = "popShow";
        },
        appendExCrit:function(link){
			if(link.href.indexOf('&excrit=') == -1){
				link.href += '&excrit=' + this.excrit;
			}
        }
    };
}();

// The SaveJob object holds everything that is important to the SaveJob.ascx control.
CB.AJAX.SaveJob = function () {
    var sj_pending = {jobDID:'',title:'',company:'',notes:'',savedJobDID:''};	
    
        // save the job , this will be called when the saveJob box is opened
    function saveJob(options) {
        var data = 'LoadNoteOnly=True' + '&' +
                   'JobDID=' + options.jobDID + '&' +
		           'JobTitle=' + encodeURIComponent(options.title + ' @ ' + options.company);
    			   
        sj_pending.jobDID = options.jobDID;
        sj_pending.title = options.title;
        sj_pending.company = options.company;
        sj_pending.savedJobDID = '';
        sj_pending.notes = '';

        CB.AJAX.submitCallback(data, 'SaveThisJob.aspx', handleSaveJobBoxResponse, true);
    }
    
    // this will be called when the saved note submit button is clicked
    function saveNote() {
        var data = 'LoadNoteOnly=False' + '&' +
       'JobDID=' + sj_pending.jobDID + '&' +
       'JobTitle=' + encodeURIComponent(sj_pending.title + ' @ ' + sj_pending.company) + '&' +
       'JobNotes=' + encodeURIComponent(CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value);
       
       sj_pending.notes = CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value;
               
        //If we have a SavedJobDID pass that along so that we protect from double saving
        if(sj_pending.savedJobDID !== null && sj_pending.savedJobDID !== '')
        {
            data += '&SavedJobDID=' + sj_pending.savedJobDID;
        } 
        CB.AJAX.submitCallback(data, 'SaveThisJob.aspx', handleSaveNoteBoxResponse,true);
    }
    
    // handles call back from the save job response
    function handleSaveJobBoxResponse(success, responseText) {
        // responseText must conatins the communication result in front of the message
        // eg.  responseText = SUCCESS;This is a test message
        var separator = (responseText.indexOf(';')<0)? 0:responseText.indexOf(';');
        var result = responseText.substr(0,separator);
        var results = result.split('&'); // if it is a success we should have a SavedJobDID appended to "SUCCESS"
        result = results[0];
        sj_pending.savedJobDID = results[1];  // storing savedJobDID so that when we save a note we can pass it along
        
        var notes = responseText.substring(separator+1);
        if (notes !== null && notes !== '') {
            // we must have saved this job before, so prefill the notes field
            sj_pending.notes = notes;
        }

        if(success && result=="SUCCESS") {
            if (CB.AJAX.SaveJob.onSaveJobSuccess){
                CB.AJAX.SaveJob.onSaveJobSuccess();
            }

            CB.AJAX.SaveJob.formAP.show(null, sj_pending);        
        }    
        else {
            // something went wrong with the AJAX callback, show the error message
            CB.AJAX.SaveJob.errorAP.show();
        }
    }

    function handleSaveNoteBoxResponse(success, responseText) {
        // responseText must conatins the communication result in front of the message
        // eg.  responseText = SUCCESS;This is a test message
        var separator = (responseText.indexOf(';')<0)? 0:responseText.indexOf(';');
        var result = responseText.substr(0,separator);
        var results = result.split('&'); // if it is a success we should have a SavedJobDID appended to "SUCCESS"
        result = results[0];
        sj_pending.savedJobDID = results[1];   // storing savedJobDID so that when we save a note we can pass it along
      
        if(success && result=="SUCCESS") {
            if (CB.AJAX.SaveJob.onSaveNoteSuccess){
                CB.AJAX.SaveJob.onSaveNoteSuccess();
            }
            CB.AJAX.SaveJob.noteSavedAP.show();
        }    
        else {
            // something went wrong with the AJAX callback, show the error message
            CB.AJAX.SaveJob.errorAP.show();
        }
    }
    
    function handleUserRejectedLoginResponse(success, responseText) {
        var div,divKnown,hyperlink,welcome;
        if (success && responseText == 'Success') {
            div = CB.e('_ctl0_pnlSign');
            if(div !== null){
                divKnown = CB.e('_ctl0_lblWelcome');	                
                if(divKnown !== null){
                    hyperlink = CB.e('_ctl0_cblSignInKnown');
                    welcome = CB.e('_ctl0_lblWelcome');
                    welcome.innerHTML = "";
                    hyperlink.innerHTML = "Already Registered?  Sign In &gt;&gt;";                
                }	                               
            }
        }
	}
	
	function onLoginSuccess() {
	    CB.e('SJSignInAlertDiv').style.display = 'inline';
	    CB.AJAX.SaveJob.savingAP.show();
    }
	 
	function onLoginClose() {
        CB.AJAX.SaveJob.savingAP.show();
        CB.AJAX.SaveJob.userRejectedLogin('button');
    }
    
	return {
	    prefix: '',
	    notes: function() {
	        return sj_pending.notes;
	    },
        savingOnShow: function (options) {
            if (options) {
                if(options.mode && options.mode == 'note') {
                    saveNote();
                }
                else {
                    // set the values in the elms
	                CB.e('SaveJobTitleCompany').innerHTML = options.title + " @ " + options.company;
	                CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value = '';
	                saveJob(options);
	            }
	        }
	        else {
	            // we are coming from the login control, so we must be saving a job.  grab everything from the pending object
                // set the values in the elms
                CB.e('SaveJobTitleCompany').innerHTML = sj_pending.title + " @ " + sj_pending.company;
                CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value = '';
                saveJob(sj_pending);
	        }
        },
        
        formOnShow: function(options) {
            if (options) {
                if (!options.usePendingValues) {
                    sj_pending.jobDID = options.jobDID;
                    sj_pending.title = options.title;
                    sj_pending.company = options.company;
                    sj_pending.savedJobDID = options.savedJobDID;
                    sj_pending.notes = options.notes;
                }
                
                CB.e('SaveJobTitleCompany').innerHTML = sj_pending.title + " @ " + sj_pending.company;
                if (sj_pending.notes != "") { CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value = sj_pending.notes; }
	            
	            if(options.mode && options.mode == 'addEditNote') {
	                // hide the successfully saved message
	                CB.e(CB.AJAX.SaveJob.prefix + 'SaveJobBoxIntro').style.display = 'none';
	            }
            }
        },

        formOnHide: function () {
            if (CB.AJAX.SaveJob.onClose) {
                CB.AJAX.SaveJob.onClose();
            }
            CB.e(CB.AJAX.SaveJob.prefix + 'SaveJobBoxIntro').display = '';
        },
        
        saveThisJobOnClick: function (anchor, options) {
            if (CB.e(CB.AJAX.SaveJob.prefix + 'hdnShowLogin').value == 'true' && !CB.AJAX.Login.isLoggedIn()) {
                sj_pending.jobDID = options.jobDID;
                sj_pending.title = options.title;
                sj_pending.company = options.company;
                sj_pending.savedJobDID = '';
                sj_pending.notes = '';
                
                CB.AJAX.Login.loginAP.show(anchor, {introHTML:CB.e('loginHTML').innerHTML,
                    onLoginSuccessHandler:onLoginSuccess,
                    onCloseHandler:onLoginClose,
                    siteDownHTML:CB.e('siteDownHTML').innerHTML});
            }
            else {
                CB.AJAX.SaveJob.savingAP.show(anchor, options);
            }
        },
        userRejectedLogin: function(source) {
	        CB.e(CB.AJAX.SaveJob.prefix + 'hdnShowLogin').value = 'false';
	        var data = 'UserRejectedLogin=True&Source=' + source;
	        CB.AJAX.submitCallback(data, 'ForgetMe.aspx', handleUserRejectedLoginResponse,true);
	    },
	    saveNoteOnClick: function(){
	        // check if there is any note to save
            if (CB.e(CB.AJAX.SaveJob.prefix + 'Notes').value === "") {
                CB.AJAX.SaveJob.formAP.hide();
            }
            else{
                CB.AJAX.SaveJob.savingAP.show(null, {mode:'note'});
            }
	    },
	    decodeHTML:function(str){
	        return str.replace("&amp;", "&");
        },
        initializePopups:function() {
            CB.AJAX.SaveJob.savingAP = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveJob.savingAP.initialize(CB.e('sj_saving'));
            CB.AJAX.SaveJob.savingAP.onShow = CB.AJAX.SaveJob.savingOnShow;
            
            CB.AJAX.SaveJob.formAP = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveJob.formAP.initialize(CB.e('sj_form'));
            CB.AJAX.SaveJob.formAP.onShow = CB.AJAX.SaveJob.formOnShow;
            CB.AJAX.SaveJob.formAP.onHide = CB.AJAX.SaveJob.formOnHide;
            
            CB.AJAX.SaveJob.noteSavedAP = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveJob.noteSavedAP.initialize(CB.e('sj_noteSaved'));
            CB.AJAX.SaveJob.noteSavedAP.onHide = CB.AJAX.SaveJob.formOnHide;
            
            CB.AJAX.SaveJob.errorAP = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveJob.errorAP.initialize(CB.e('sj_error'));
        }
    };
} ();

// The SaveSearch object holds everything that is important to the SaveSearch.ascx control    
CB.AJAX.SaveSearch = function () {
    var ddlsToHide;
    // handles the return signal from the AJAX page
	function handleSaveJobSearchResponse(success, responseText)	{
	    var savedSearchData,savedSearchArray,didSplit,DID,searchNameSplit,SearchName,EmailFrequency,onclickString,cnt;
		if(success)	{
		    if(responseText == "SUCCESS") {  // SavedJobSearch was able to be saved
                CB.AJAX.SaveSearch.confirmSaveAC.show();	        
		    }
		    else {  // Limit exceeded 5 SavedJobSearch
		        // Show control prompting to delete  
		        savedSearchData = responseText.substring(4, responseText.length);   // Removes beginning 'DID='
		        savedSearchArray = (savedSearchData).split("|DID="); // Splits saved searches while removing 'DID='
		        
		        for(cnt=0; cnt < savedSearchArray.length; cnt++){
		            didSplit = savedSearchArray[cnt].split(";SearchName="); // Split seperates DID from the rest
		            DID = didSplit[0];
		            searchNameSplit = didSplit[1].split(";EmailFrequency="); // Spit seperates SearchName from the rest
		            SearchName = searchNameSplit[0];
		            EmailFrequency = searchNameSplit[1].substr(0, 1) + searchNameSplit[1].substr(1).toLowerCase();
		            
		            if (SearchName.length > 20){
		                SearchName = SearchName.substr(0, 17) + '...';
		            }
		            
		            // Load each individual SavedJobSearch for deletion
		            CB.e('delete' + cnt + 'Name').innerHTML = SearchName.replace('&', '&amp;');
		            CB.e('delete' + cnt + 'Frequency').innerHTML = EmailFrequency;
		            onclickString = "CB.AJAX.SaveSearch.savingAC.show(null, {searchName:'" + CB.e(CB.AJAX.SaveSearch.prefix + 'SSName').value + "',criteria:'" + CB.e(CB.AJAX.SaveSearch.prefix + 'hdn_strCrit').value + "',frequency:'" + CB.e('SSFrequency').value + "',did:'" + DID + "',mode:'delete'})";
		            CB.e('delete' + cnt + 'Link').parentNode.innerHTML = '<a href="#" id="delete' + cnt + 'Link" onclick="' + onclickString + '">' + CB.e('delete' + cnt + 'Link').innerHTML + '</a>';
		        }
                CB.AJAX.SaveSearch.deleteSearchAC.show();
		    }		    
		}
		else{
		    CB.AJAX.SaveSearch.siteDownSavingAC.show();
		}
	}

	function handleSaveJobSearchDeleteResponse(success, responseText){
	    if(success){
	        if(responseText == "SUCCESS"){
	            CB.AJAX.SaveSearch.confirmSaveAC.show();
	        }
	    }
	    else{
	        CB.AJAX.SaveSearch.siteDownSavingAC.show();
	    }
	}
	
	function onLoginSuccess(){
	    CB.e('SSSignInAlertDiv').style.display = '';
	    CB.AJAX.SaveSearch.saveSearchAC.show();
	}
	
    //window.onDomReady(initializePopups);

    return {
        saveSearchOnShow: function(options) {
            CB.e('SSFrequency').value = 'DAILY';  
            CB.e('SSFrequency').style.display = ''; // crazy display logic required for IE6
            
            if (CB.Window.ie6){
                var i=0;
                for (i; i < ddlsToHide.length; i++){
                    ddlsToHide[i].style.visibility = 'hidden';
                }
            }
        },
        saveSearchOnHide: function() {
            CB.e('SSFrequency').style.display = 'none'; // crazy display logic required for IE6
            CB.e('SSSignInAlertDiv').style.display = 'none';
        },
        saveSearchOnSubmit: function (strCrit) {
            var SSName = CB.e(CB.AJAX.SaveSearch.prefix + 'SSName');
            if (SSName.value.length > 0) {	
    	        SSName.value = SSName.value.replace(/"/g, '');
            	SSName.value = SSName.value.replace(/'/g, "");
    	        CB.AJAX.SaveSearch.savingAC.show(null, {searchName:SSName.value, criteria:strCrit, frequency:CB.e('SSFrequency').value, mode:'saveNew'});
            } 
	        else {
            	alert(CB.AJAX.SaveSearch.alertNameSearch);
            }
        },
        savingOnShow: function(options) {
            var data;
        	if (options.mode == 'delete') {  
                data = "SearchName=" + encodeURIComponent(options.searchName);
                data += "&StrCritV2=" + options.criteria;
                data += "&EmailFrequency=" + options.frequency;
                data += "&DID=" + options.did;
                CB.AJAX.submitCallback(data, "SaveSearch.aspx", handleSaveJobSearchDeleteResponse,true);
            }
            else {
                data = "SearchName=" + encodeURIComponent(options.searchName);
		        data += "&StrCritV2=" + options.criteria;
		        data += "&EmailFrequency=" + options.frequency;
		        CB.AJAX.submitCallback(data, "SaveSearch.aspx", handleSaveJobSearchResponse,true);
		    }
        },
        deleteOnShow: function(options) {
            CB.e('tab_deleteSearch').style.display = '';  // crazy display logic required for IE6
        },
        deleteOnHide: function(options) {
            CB.e('tab_deleteSearch').style.display = 'none'; // crazy display logic required for IE6
        },
        confirmSaveOnHide: function() {
            CB.AJAX.SaveSearch.onClose();
        },
        onClose: function() {
            if (CB.Window.ie6){
                var i=0;
                for (i; i < ddlsToHide.length; i++){
                    ddlsToHide[i].style.visibility = 'visible';
                }
            }
        },
        saveThisSearchOnClick: function(anchor, options) {
            if (CB.AJAX.Login.isLoggedIn()) {
                CB.AJAX.SaveSearch.saveSearchAC.show(anchor, options);
            }
            else {
                options.onLoginSuccessHandler = onLoginSuccess;
                CB.AJAX.Login.loginAP.show(anchor, options);
            }
        },
        initializePopups:function () {
	        CB.AJAX.SaveSearch.saveSearchAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveSearch.saveSearchAC.initialize(CB.e('saveSearch'));
            CB.AJAX.SaveSearch.saveSearchAC.onShow = CB.AJAX.SaveSearch.saveSearchOnShow;
            CB.AJAX.SaveSearch.saveSearchAC.onHide = CB.AJAX.SaveSearch.saveSearchOnHide;
            
            CB.AJAX.SaveSearch.deleteSearchAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveSearch.deleteSearchAC.initialize(CB.e('deleteSearch'));
            CB.AJAX.SaveSearch.deleteSearchAC.onShow = CB.AJAX.SaveSearch.deleteOnShow;
            CB.AJAX.SaveSearch.deleteSearchAC.onHide = CB.AJAX.SaveSearch.deleteOnHide;
            
            CB.AJAX.SaveSearch.confirmSaveAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveSearch.confirmSaveAC.initialize(CB.e('confirmSave'));
            CB.AJAX.SaveSearch.confirmSaveAC.onHide = CB.AJAX.SaveSearch.confirmSaveOnHide;
            
            CB.AJAX.SaveSearch.savingAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveSearch.savingAC.initialize(CB.e('ss_saving'));
            CB.AJAX.SaveSearch.savingAC.onShow = CB.AJAX.SaveSearch.savingOnShow;
            
            CB.AJAX.SaveSearch.siteDownSavingAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.SaveSearch.siteDownSavingAC.initialize(CB.e('siteDownSaving'));
            
            // initialize textbox that we want to submit form on enter
            CB.Textbox.setupTextbox(CB.e(CB.AJAX.SaveSearch.prefix + 'SSName'), function(){CB.e(CB.AJAX.SaveSearch.prefix + 'btn_saveSS').click();});
            ddlsToHide = document.getElementsByTagName('select');
	    }
    };
} ();

// The AnonymousSaveSearch object holds everything that is important to the AnonymousSaveSearch.ascx control    
CB.AJAX.AnonymousSaveSearch = function () {
    // handles the return signal from the AJAX page
	function handleSaveJobSearchResponse(success, responseText)	{
	    var savedSearchData,savedSearchArray,didSplit,DID,searchNameSplit,SearchName,EmailFrequency,onclickString,cnt;
		if(success)	{
		    if(responseText == "SUCCESS") {  // SavedJobSearch was able to be saved
                	CB.AJAX.AnonymousSaveSearch.confirmSaveAC.show();	        
		    }
		    else {
		    	CB.AJAX.AnonymousSaveSearch.siteDownSavingAC.show();
  		    }
		}
	}

	function handleSaveJobSearchDeleteResponse(success, responseText){
	    if(success){
	        if(responseText == "SUCCESS"){
	            CB.AJAX.AnonymousSaveSearch.confirmSaveAC.show();
	        }
	    }
	    else{
	        CB.AJAX.AnonymousSaveSearch.siteDownSavingAC.show();
	    }
	}

    return {
        saveSearchOnShow: function(options) {
        },
        saveSearchOnHide: function() {
        },
        saveSearchOnSubmit: function (strCrit) {
            var SSName = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSName');
            var SSEmail = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSEmail');
            var SSRealName = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSRealName');
            var SSCobrandCode = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSCobrandCode');
            var SSSearchPublicJobs = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSSearchPublicJobs');
            var SSSearchPrivateJobs = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSSearchPrivateJobs');
            var SSSearchInternalJobs = CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSSearchInternalJobs');
            if (SSName.value.length > 0) {	
    	        SSName.value = SSName.value.replace(/"/g, '');
            	SSName.value = SSName.value.replace(/'/g, "");		
            	if (SSEmail.value.length > 0) {
            		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
            		var regex = new RegExp(emailReg);
            		if (regex.test(SSEmail.value)) {
	            	    if (SSRealName.value.length > 0) {
  	        	      	CB.AJAX.AnonymousSaveSearch.savingAC.show(null, {searchName:SSName.value, criteria:strCrit, email:SSEmail.value, realName:SSRealName.value, cobrandCode:SSCobrandCode.value, searchPublicJobs:SSSearchPublicJobs.value, searchPrivateJobs:SSSearchPrivateJobs.value, searchInternalJobs:SSSearchInternalJobs.value, mode:'saveNew'});   
        	    	    }
            		    else {
            	        	alert(CB.AJAX.AnonymousSaveSearch.alertRealNameSearch);
	            	    }
			}
			else {
				alert(CB.AJAX.AnonymousSaveSearch.alertEmailInvalidSearch);
			}
            	}
                else {
		        alert(CB.AJAX.AnonymousSaveSearch.alertEmailSearch);
                }                
            } 
	        else {
            	alert(CB.AJAX.AnonymousSaveSearch.alertNameSearch);
            }
        },
        savingOnShow: function(options) {
            var data;
            data = "SearchName=" + encodeURIComponent(options.searchName);
		        data += "&StrCrit=" + options.criteria;
		        data += "&Email=" + encodeURIComponent(options.email);
		        data += "&RealName=" + encodeURIComponent(options.realName);
		        data += "&cobrandCode=" + encodeURIComponent(options.cobrandCode);
		        data += "&searchPublicJobs=" + encodeURIComponent(options.searchPublicJobs);
		        data += "&searchPrivateJobs=" + encodeURIComponent(options.searchPrivateJobs);
		        data += "&searchInternalJobs=" + encodeURIComponent(options.searchInternalJobs);
		        CB.AJAX.submitCallback(data, "AnonymousSaveSearch.aspx", handleSaveJobSearchResponse,true);
        },
        confirmSaveOnHide: function() {
            CB.AJAX.AnonymousSaveSearch.onClose();
        },
        onClose: function() {
        },
        saveThisSearchOnClick: function(anchor, options) {
                CB.AJAX.AnonymousSaveSearch.saveSearchAC.show(anchor, options);
        },
        saveThisAnonymousSearchOnClick: function(anchor, options) {
                CB.AJAX.AnonymousSaveSearch.saveSearchAC.show(anchor, options);
        },
        initializePopups:function () {
	    CB.AJAX.AnonymousSaveSearch.saveSearchAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.AnonymousSaveSearch.saveSearchAC.initialize(CB.e('saveSearch'));
            CB.AJAX.AnonymousSaveSearch.saveSearchAC.onShow = CB.AJAX.AnonymousSaveSearch.saveSearchOnShow;
            CB.AJAX.AnonymousSaveSearch.saveSearchAC.onHide = CB.AJAX.AnonymousSaveSearch.saveSearchOnHide;           
            
            CB.AJAX.AnonymousSaveSearch.confirmSaveAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.AnonymousSaveSearch.confirmSaveAC.initialize(CB.e('confirmSave'));
            CB.AJAX.AnonymousSaveSearch.confirmSaveAC.onHide = CB.AJAX.AnonymousSaveSearch.confirmSaveOnHide;
            
            CB.AJAX.AnonymousSaveSearch.savingAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.AnonymousSaveSearch.savingAC.initialize(CB.e('ss_saving'));
            CB.AJAX.AnonymousSaveSearch.savingAC.onShow = CB.AJAX.AnonymousSaveSearch.savingOnShow;
            
            CB.AJAX.AnonymousSaveSearch.siteDownSavingAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.AnonymousSaveSearch.siteDownSavingAC.initialize(CB.e('siteDownSaving'));
            
            CB.Textbox.setupTextbox(CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'SSName'), function(){CB.e(CB.AJAX.AnonymousSaveSearch.prefix + 'btn_saveSS').click();});
	    }
    };
} ();


// The EmailJob object holds everything that is important to the EmailJob.ascx control
CB.AJAX.EmailJob = function () {
    var ej_pending = {jobDID: ''};
    
    	// handles the return signal from the AJAX page
	function handleEmailJobBoxResponse(success, responseText){
		if(success){
			switch(responseText){
				case 'SUCCESS':
	                CB.AJAX.EmailJob.resultAC.show(null, {mode:'success'});
		            break;
					
				case 'INVALID':
	                CB.AJAX.EmailJob.emailJobFormAC.show(null, {mode:'invalidEmail'});
					break;
					
				case 'FAILURE':
	                CB.AJAX.EmailJob.resultAC.show(null, {mode:'error'});
			}
		}
		else{
			CB.AJAX.EmailJob.resultAC.show(null, {mode:'error'});
		}
	}
    
    //window.onDomReady(initializePopups);
    
    return {
        emailJobFormOnShow: function (options) {
            if(options && options.mode == 'invalidEmail') {
                CB.e('bademail').style.display = 'inline';
                CB.e('prompt').style.display = 'none';
            }
            else {
                CB.e('prompt').style.display = 'inline';
                CB.e('bademail').style.display = 'none';
            }
            ej_pending.jobDID = options.jobDID;
        },
        sendingOnShow: function(options){
            var xavierToAddress = CB.e(emailJobBoxPrefix + 'tbXavierToAddress') ? CB.e(emailJobBoxPrefix + 'tbXavierToAddress').value : '';
            var normalToAddress = CB.e(emailJobBoxPrefix + 'ToAddress') ? CB.e(emailJobBoxPrefix + 'ToAddress').value : '';
            var toAddress = '';
            if (xavierToAddress != '') { toAddress = xavierToAddress; }
            else if (normalToAddress != '') { toAddress = normalToAddress; }
        
    		var data = 'JobDID=' + ej_pending.jobDID + '&' +
		   'FromAddress=' + CB.e(emailJobBoxPrefix + 'FromAddress').value + '&' +
		   'ToAddress=' + toAddress + '&' +
		   'FromName=' + CB.e(emailJobBoxPrefix + 'FromName').value + '&' +
		   'MessageBody=' + CB.e(emailJobBoxPrefix + 'MessageBody').value;
				   
		    CB.AJAX.submitCallback(data, 'EmailThisJob.aspx', handleEmailJobBoxResponse, true);
        },
        resultOnShow: function(options) {
            if (options && options.mode == 'success'){
                CB.e('sendSuccess').style.display = 'inline';
                CB.e('sendError').style.display = 'none';
            }
            else {
                CB.e('sendSuccess').style.display = 'none';
                CB.e('sendError').style.display = 'inline';
            }
        },
        initializePopups:function () {
            CB.AJAX.EmailJob.emailJobFormAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.EmailJob.emailJobFormAC.initialize(CB.e('emailJobForm'));
            CB.AJAX.EmailJob.emailJobFormAC.onShow = CB.AJAX.EmailJob.emailJobFormOnShow;

            CB.AJAX.EmailJob.sendingAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.EmailJob.sendingAC.initialize(CB.e('sending'));
            CB.AJAX.EmailJob.sendingAC.onShow = CB.AJAX.EmailJob.sendingOnShow;

            CB.AJAX.EmailJob.resultAC = CB.object(CB.AJAX.Popup);
            CB.AJAX.EmailJob.resultAC.initialize(CB.e('result'));
            CB.AJAX.EmailJob.resultAC.onShow = CB.AJAX.EmailJob.resultOnShow;
	    }
    };
}();

// Job Sort Box
CB.AJAX.JobSortBox = function () {                    	
    //window.onDomReady(initializePopups);	
	return {
	   formOnHide: function () {
            if (CB.AJAX.JobSortBox.onClose) {
                CB.AJAX.JobSortBox.onClose();
            }
            CB.AJAX.JobSortBox.ClearValues(); 
        },
        
        JobSortBoxOnClick: function (anchor) {                        
            CB.AJAX.JobSortBox.formAP.show(anchor);            
        },
              
        SetScSd:function (scVal,sdVal) {
           CB.e(jSort_FormID).sc.value = scVal;
           CB.e(jSort_FormID).sd.value = sdVal;
        },

        ShowLocBox:function (anchor) {
            CB.e('jSort_boxMessage').innerHTML = jSort_locMsg;
            if (CB.e(jSort_KeywordBox)) {
                CB.e(jSort_KeywordBox).style.display='none';
                CB.e(jSort_freeLocBox).style.display='inline';
            }
            CB.e(jSort_FormID).IPath.value = jSort_locIpathBase;
            CB.AJAX.JobSortBox.SetScSd(jSort_SClocVal,jSort_SDlocVal);
            CB.AJAX.JobSortBox.JobSortBoxOnClick(anchor);
        },

        ShowKeyBox:function (anchor) {
            CB.e('jSort_boxMessage').innerHTML = jSort_keyMsg;
            if (CB.e(jSort_freeLocBox)) {
                CB.e(jSort_KeywordBox).style.display='inline';
                CB.e(jSort_freeLocBox).style.display='none';
            }
            CB.e(jSort_FormID).IPath.value = jSort_keyIpathBase;
            CB.AJAX.JobSortBox.SetScSd(jSort_SCkeyVal,jSort_SDkeyVal);
            CB.AJAX.JobSortBox.JobSortBoxOnClick(anchor);
        },

        ClearValues:function () {
            if (CB.e(jSort_freeLocBox)){
                CB.e(jSort_freeLocBox).value = '';}
            if (CB.e(jSort_KeywordBox)){
                CB.e(jSort_KeywordBox).value = '';}
        },        

        initializePopups:function () {          
            CB.AJAX.JobSortBox.formAP = CB.object(CB.AJAX.Popup);
            CB.AJAX.JobSortBox.formAP.initialize(CB.e('SearchResult_form'));
            CB.AJAX.JobSortBox.formAP.onHide = CB.AJAX.JobSortBox.formOnHide;
        }
    };
} ();

