/*********************************************************************
'***    Function:  
'***    Description:  
'***
'***    Parameters: 
'*** 
'***    Returns:  
'***    Remarks: none
'***
'***    Created by:  
'***    Changed by:  
'***    Last change: 11/18/10
'*********************************************************************/
function getQueryStringFromFilter() {

    var strCategorySelectedVarValues = getQueryStringSelectedValues("cg");
    var strPositionTypeSelectedVarValues = getQueryStringSelectedValues("pstn");
    var strStateSelectedVarValues = getQueryStringSelectedValues("st");
    var strCountrySelectedVarValues = getQueryStringSelectedValues("cn");
    var strContinentSelectedVarValues = getQueryStringSelectedValues("wrg");
    var strRegionSelectedVarValues = getQueryStringSelectedValues("rg");
    var strRevisedSelectedVarValues = getQueryStringSelectedValues("rvsd");
    var strOrderSelectedVarValues = getQueryStringSelectedValues("ordr");
    var strJobsOnPageSelectedVarValues = getQueryStringSelectedValues("pgl");

    var strKeywordSelectedVarValues = (getTextElementValue("kwrd") == "" ? "" : ("&kwrd=" + getTextElementValue("kwrd")));
    var strKeywordSelectedVarValues_AND = (getTextElementValue("kwrd_and") == "" ? "" : ("&kwrd_and=" + getTextElementValue("kwrd_and")));
    var strKeywordSelectedVarValues_OR = (getTextElementValue("kwrd_or") == "" ? "" : ("&kwrd_or=" + getTextElementValue("kwrd_or")));
    var strKeywordSelectedVarValues_NOT = (getTextElementValue("kwrd_not") == "" ? "" : ("&kwrd_not=" + getTextElementValue("kwrd_not")));
    var strKeywordSelectedVarValues_Ext = (getTextElementValue("kwrd_ext") == "" ? "" : ("&kwrd_ext=" + getTextElementValue("kwrd_ext")));
    var strKeywordTypeSelectedVarValues = (getTextElementValue("kwdt") == "" ? "" : ("&kwdt=" + getTextElementValue("kwdt")));

    var strCitySelectedVarValues = (getTextElementValue("acty") == "" ? "" : ("&acty=" + getTextElementValue("acty")));
    var strZipCodeSelectedVarValues = (getTextElementValue("zip1") == "" ? "" : ("&zip1=" + getTextElementValue("zip1")));    
    var strRadiusSelectedVarValues = (getTextElementValue("rdus") == "" ? "" : ("&rdus=" + getTextElementValue("rdus")));
    var strWorldCitySelectedVarValues = (getTextElementValue("city") == "" ? "" : ("&city=" + clearTextElement(getTextElementValue("city"))));
    var strCompanyNameSelectedVarValues = (getTextElementValue("cnam") == "" ? "" : ("&cnam=" + clearTextElement(getTextElementValue("cnam"))));

    var strNewQS = "ro=y" +
                   strKeywordSelectedVarValues +
                   strKeywordSelectedVarValues_AND +
                   strKeywordSelectedVarValues_OR +
                   strKeywordSelectedVarValues_NOT +
                   strKeywordSelectedVarValues_Ext +
                   strKeywordTypeSelectedVarValues +
                   strRevisedSelectedVarValues +
                   strOrderSelectedVarValues +
                   strJobsOnPageSelectedVarValues +
                   strCategorySelectedVarValues +
                   strPositionTypeSelectedVarValues +
                   strStateSelectedVarValues +
                   strCountrySelectedVarValues +
                   strContinentSelectedVarValues +
                   strRegionSelectedVarValues +
                   strCitySelectedVarValues +
                   strWorldCitySelectedVarValues +
                   strCompanyNameSelectedVarValues +
                   strZipCodeSelectedVarValues +
                   strRadiusSelectedVarValues

    return strNewQS;
}


/*********************************************************************
'***    Function:  
'***    Description:  
'***
'***    Parameters: 
'*** 
'***    Returns:  
'***    Remarks: none
'***
'***    Created by:  
'***    Changed by:  
'***    Last change: 11/18/10
'*********************************************************************/
function getHrefLocationRefine(strUrl) {

    var strLocation = strUrl + "?" + getQueryStringFromFilter();

    return strLocation;
}


function AjaxGetJobSearch(url, resultId, waitID, errorMessage, onSuccessFunc) {
    if (errorMessage == null)
        errorMessage = "error";

    if (waitID == null)
        waitID = resultId;

    jQuery("#" + waitID).addClass("wait");

    new Ajax.Request(url,
		    { method: 'get',
		        onSuccess: function(transport) {
		            var e = document.getElementById(resultId);
		            if (e != null) {
		                e.innerHTML = transport.responseText;

		                //need to call function here as well to populate stamp
		                showText( false );

		                jQuery("#" + waitID).removeClass("wait");

		                if (onSuccessFunc != null)
		                    onSuccessFunc();
		            }
		        },
		        onFailure: function() {
		            var e = document.getElementById(resultId);
		            if (e != null)
		                e.innerHTML = errorMessage;
		        }
		    });
}

function showText(interactiveChange) {

    if (interactiveChange == null)
        interactiveChange = true;

    var strText = new String("");
    var strTextHor = new String("");

    var strKeyWord_and = "";
    var strKeyWord_or = "";
    var strKeyWord_not = "";
    var strKeyWord_ext = "";
    var strCompany = "";
    var strWorldCity = "";
    var strCity = "";
    var strRadius = "";
    var strZipCode = "";
    var strRevised = "";
    var strDiscipline = "";
    var strPositionType = "";
    var strState = "";
    var strCountry = "";
    var strContinent = "";
    var strRegion = "";
    var strOrder = "";
    var strJobsOnPage = "";

    strKeyWord_and  = getElementText("kwrd_and");
    strKeyWord_or   = getElementText("kwrd_or");
    strKeyWord_not  = getElementText("kwrd_not");
    strKeyWord_ext  = getElementText("kwrd_ext");
    strCompany      = getElementText("cnam");
    strWorldCity    = getElementText("city");
    strCity         = getElementText("acty");
    strZipCode      = getElementText("zip1");
    strRadius       = jQuery("#rdus").val();
    strRevised      = getElementText("rvsd");
    strDiscipline   = getElementText("cg");
    strPositionType = getElementText("pstn");
    strState        = getElementText("st");
    strCountry      = getElementText("cn");
    strContinent    = getElementText("wrg");
    strRegion       = getElementText("rg");
    strOrder        = getElementText("ordr");
    strJobsOnPage   = getElementText("pgl");

    var strKeywordTxt = "";
    var showRemove = true;
    var noWrap = false;

    //these elements are dynamc
    var strKeywordTxt_and = getCriteriaText("All words: ", strKeyWord_and, "kwrd_and", showRemove, noWrap);
    var strKeywordTxt_or = getCriteriaText("One or more: ", strKeyWord_or, "kwrd_or", showRemove, noWrap);
    var strKeywordTxt_not = getCriteriaText("Without words: ", strKeyWord_not, "kwrd_not", showRemove, noWrap);
    var strKeywordTxt_ext = getCriteriaText("Exact phrase: ", strKeyWord_ext, "kwrd_ext", showRemove, noWrap);

    strKeywordTxt = strKeywordTxt_and + strKeywordTxt_or + strKeywordTxt_ext + strKeywordTxt_not;
    if (strKeywordTxt.length > 0)
        strKeywordTxt = "<div class='criteriaTextItem'>" + strKeywordTxt + "</div>"

    var strDisciplineTxt = getCriteriaText("Discipline: ", strDiscipline, "cg", showRemove);
    var strPositionTypeTxt = getCriteriaText("Position Type: ", strPositionType, "pstn", showRemove);
    var strStateTxt = getCriteriaText("State: ", strState, "st", showRemove);
    var strCountryTxt = getCriteriaText("Country: ", strCountry, "cn", showRemove);
    var strContinentTxt = getCriteriaText("Continent: ", strContinent, "wrg", showRemove);
    var strRegionTxt = getCriteriaText("Region: ", strRegion, "rg", showRemove);
    var strWorldCityTxt = getCriteriaText("In City/Town: ", strWorldCity, "city", showRemove);

    strZipCode = (strZipCode != "") ? " (" + strZipCode + ")" : "";
    strRadius = (strRadius != "" && strZipCode != "") ? " ~ " + strRadius + "mi" : "";
    var strCityTxt = getCriteriaText("Near City/Town: ", strCity + strZipCode + strRadius, "acty", showRemove);
    var strCompanyTxt = getCriteriaText("Company: ", strCompany, "cnam", showRemove);

    //these elments are static criteria their always present
    var strOrderTxt = getLabeledValue("Order: ", strOrder);
    var strRevisedTxt = getLabeledValue("Posted: ", strRevised);
    var strJobsOnPageTxt = getLabeledValue("Jobs on page: ", strJobsOnPage);

    //append text from each section here in the order in which they appear
    strText = strKeywordTxt + strCompanyTxt + strPositionTypeTxt + strDisciplineTxt +
              strContinentTxt + strCountryTxt + strRegionTxt + strStateTxt + strWorldCityTxt +
              strCityTxt;
    
    //horizonta text does not need Period, Jobs Per page, and Order by
    strTextHor = strText;

    //wrap these items in a container to separate it form the rest
    var staticBorder = "";
    strText += "<div class=\"staticCriteria\"" + staticBorder + ">" +
                    strRevisedTxt + strOrderTxt + strJobsOnPageTxt +
                "</div>";

    var strButtonClass = interactiveChange ? "litButton" : "button";

    //add a button to allow users to quickly search from criteria section
    var btnClear = "<a id=\"btnClear\" class=\"clear\" title=\"Clear entire search\" href=\"javascript:clearAll()\">Clear all</a>";
    var btnGo = "<input type=\"button\" id=\"btnGo\" class=\"" + strButtonClass + "\" value=\"Refine\" onclick=\"execRefineSearch();\" />";
    strText += "<div class=\"refine\">" + btnClear + btnGo + "</div>";

    //add criteria text to vertical elem
    var vText = document.getElementById("vCriteriaText");
    if (vText != null)
        vText.innerHTML = strText;


    // light up refine button if interactiveChange
    if (interactiveChange) {
        var refine = jQuery("#btnRefineSearch");
        if (!refine.hasClass("semiLitButton")) {
            refine.attr("class", "semiLitButton").fadeTo("slow", 1);
            jQuery("#btnGo").attr("class", "semiLitButton").fadeTo("slow", 1);
        }
    }
    else {
        jQuery("#btnRefineSearch").attr("class", "button").fadeTo("fast", 0.5);
        jQuery("#btnGo").attr("class", "button").fadeTo("fast", 0.5);
    }

    //set job search result stamp text
    updateJobSearchResultsStamp(strRevisedTxt, strJobsOnPageTxt, strOrderTxt, strTextHor);
}
/*returns criteria text wrapped in element friendly to styling*/
function getCriteriaText(label, value, id, showRemove, wrap ) {
    if (value.length == 0)
        return "";

    if (wrap == null)
        wrap = true;
        
	if (showRemove == null)
		showRemove = false;

    var RemoveLink = showRemove == true ? getRemoveLink(id) : "";
    //wrap these elements in its own container for proper styling
    var text = RemoveLink + getLabeledValue(label, value); 
    
    if (wrap)
        return "<div class='criteriaTextItem'>" + text + "</div>";

    return text;
}
/* returns labeled value */
function getLabeledValue(label, value) {
    return "<b>" + label + "</b>" + value + "<br>";
}

/* returns a correct remove criteria line link based on id */
function getRemoveLink( id ) {
	if (id == "city" || id == "acty" || id == "cnam" || id.substr(0, 5) == "kwrd_")
		return "<a title='clear' class='remove' href='javascript:cleanTextField(\"" + id + "\")'>&nbsp;</a>";

	return "<a title='clear' class='remove' href='javascript:unCheckAllBoxesRefresh(\"" + id + "\")'>&nbsp;</a>";
}

/* cleans text field in criteria based on id */
function cleanTextField(id) {
	var Elem = document.getElementById(id);
	if (Elem != null)
		Elem.value = "";
	
	if (id == "acty")
		return cleanTextField("zip1");

	showText();
}

/*********************************************************************
'***    Function: updateJobSearchResultsStamp
'***
'***    Parameters: several
'*** 
'***    Returns: void
'***    Remarks: updates job search results stamp info
'***
'***    Created by: niloa
'***    Changed by:  
'***    Last change: 12/20/10
'*********************************************************************/
function updateJobSearchResultsStamp(strPosted, strJobsPerPage, strOrderBy, strCriteriaText) {
    //update horizontal criteria elem, if status is false
    var oStatus = jQuery("#hStampCriteriaStatus");
    var stampStatus = parseInt(oStatus.val());
        stampStatus = isNaN(stampStatus) ? -1 : stampStatus;

    //update horizontal criteria elem, if status is false
    var objCount = jQuery("#jobResultsCount");

    //parse value, default to 0 if value is Not a Number(NaN)
    var jobCount = parseInt(objCount.val());
    
    //if value was not populated, then update search criteria stamp text
    if ( isNaN(jobCount) || (stampStatus == 0) ) {
        
        //update job count as well
        updateJobCountOnJobSearchResultsStamp(jobCount);        
        
        jQuery("#hSearchPeriod").html(strPosted);
        jQuery("#hJobsPerPage").html(strJobsPerPage);
        jQuery("#hOrderBy").html(strOrderBy);
        jQuery("#hCriteriaText").html(strCriteriaText);
                
        oStatus.val(1); //update status to true
    }
    oStatus = null;
}

/*********************************************************************
'***    Function: updateJobCountOnJobSearchResultsStamp
'***
'***    Parameters: intJobCount - job search results count
'*** 
'***    Returns: void
'***    Remarks: updates job count info on search results stamp
'***
'***    Created by: niloa
'***    Changed by:  
'***    Last change: 12/20/10
'*********************************************************************/
function updateJobCountOnJobSearchResultsStamp(intJobCount) {
    intJobCount = parseInt(intJobCount);
    intJobCount = isNaN(intJobCount) ? 0 : intJobCount;
    
    //based on this constant: MAXIMUM_RESULT_ROWS_FOR_JOBSEEKER_SEARCH_SC = 3000;
    var intMaxJobs = 3000;
    var strJobLabel = (intJobCount > 1) ? "jobs" : "job";
    var strJobCount = intJobCount + ((intJobCount < intMaxJobs) ? "" : "+");
    
    jQuery("#hJobsCount").text(strJobCount);
    jQuery("#hJobsCountLabel").text(strJobLabel);
}


function setFilterFromHashLocation(strLocation) {

    if (strLocation != null && strLocation != "") {
        setElementValue("kwrd_and", getURLParam(strLocation, "kwrd_and"));
        setElementValue("kwrd_or", getURLParam(strLocation, "kwrd_or"));
        setElementValue("kwrd_not", getURLParam(strLocation, "kwrd_not"));
        setElementValue("kwrd_ext", getURLParam(strLocation, "kwrd_ext"));
        setElementValue("cnam", getURLParam(strLocation, "cnam"));
        setElementValue("acty", getURLParam(strLocation, "acty"));
        setElementValue("rvsd", getURLParam(strLocation, "rvsd"));
        setElementValue("cg", getURLParam(strLocation, "cg"));
        setElementValue("pstn", getURLParam(strLocation, "pstn"));
        setElementValue("st", getURLParam(strLocation, "st"));
        setElementValue("cn", getURLParam(strLocation, "cn"));
        setElementValue("wrg", getURLParam(strLocation, "wrg"));
        setElementValue("rg", getURLParam(strLocation, "rg"));
        setElementValue("ordr", getURLParam(strLocation, "ordr"));
        setElementValue("pgl", getURLParam(strLocation, "pgl"));
        setElementValue("city", getURLParam(strLocation, "city"));
        setElementValue("zip1", getURLParam(strLocation, "zip1"));
        setElementValue("rdus", getURLParam(strLocation, "rdus"));
    }
}

/*********************************************************************
'***    Function: initAutoCompleteForCity
'***
'***    Parameters: none
'*** 
'***    Returns: void
'***    Remarks: intializes the city field for autocomplete
'***
'***    Created by: niloa
'***    Changed by:  
'***    Last change: 12/30/10
'*********************************************************************/
function initAutoCompleteForRadiusCity() {
    var selector = "#acty";
    var minChars = 3;
    //callback function to get input value
    var getInputValue = function() {
        return jQuery(selector).val();
    }

    //prepare object with data
    var lookupData = { City: getInputValue };

    //validate city input
    var validateOnSearch = function(inputValue) {
        //no db trips if not more than min chars
        if (inputValue.length < minChars)
            return false;

        //reg exp to validate city entry
        //prevent search (db trip), if city is invalid
        var re = /(?:[\d+\s]*[a-zA-Z]+[\.|\'|\s|\d+]?)/gi;
        var blnValid = re.test(inputValue);

        return blnValid;
    }

    var url = "/Components/CityRadiusLookup.asp";
    addAutoCompleteForRadiusField(url, selector, lookupData, validateOnSearch, minChars);
}

/*********************************************************************
'***    Function: initAutoCompleteForZipCode
'***
'***    Parameters: none
'*** 
'***    Returns: void
'***    Remarks: intializes the zip code field for autocomplete
'***
'***    Created by: niloa
'***    Changed by:  
'***    Last change: 12/30/10
'*********************************************************************/
function initAutoCompleteForRadiusZipCode() {
    var selector = "#zip1";
    var minChars = 3;

    //callback function to get input value
    var getInputValue = function() {
        return jQuery(selector).val();
    }

    //prepare object with data
    var lookupData = { ZipCode: getInputValue };

    //validate city input
    var validateZipOnSearch = function(inputValue) {
        //no db trips if not more than min chars
        if (inputValue.length < minChars)
            return false;

        //reg exp to validate postal code entry
        //prevent search (db trip), if zip/postal code is invalid
        var re = /((([A-Z]{1,1})([0-9]{1,1})){1,3})|([0-9]{2,})/gi

        var blnValid = (re.test(inputValue));

        return blnValid;
    }

    // init autocomplete
    var url = "/Components/ZipCodeRadiusLookup.asp";
    addAutoCompleteForRadiusField(url, selector, lookupData, validateZipOnSearch, minChars);
}

/*********************************************************************
'***    Function: addAutoCompleteForRadiusField
'***
'***    Parameters: none
'*** 
'***    Returns: void
'***    Remarks: intializes radius field for autocomplete
'***
'***    Created by: niloa
'***    Changed by:  
'***    Last change: 12/30/10
'*********************************************************************/
function addAutoCompleteForRadiusField(url, selector, lookupData, onSearch, minChars) {
    // min chars to trigger autocomplete
    minChars = isNaN(parseInt(minChars)) ? 3 : minChars;

    // map for the autocomplete items
    var getItemsMapInfo = function(item) {
        var City = toProperCase(item.City);
        var itemMap = {
            label: City + ", " + item.State + ", " + item.ZipCode,
            value: City + "," + item.State + "," + item.ZipCode
        }
        return itemMap;
    }

    // add selection function
    var populateFieldOnSelect = function(inputValue, itemValue) {
        var arrValues = itemValue.split(",");

        var city = arrValues[0];
        city = toProperCase(city);
        var state = arrValues[1];
        var zipCode = arrValues[2];

        //need to populate these fields as well
        jQuery("#city").val(""); //clear world city
        jQuery("#acty").val(city + ", " + state);
        jQuery("#zip1").val(zipCode);
    }

    var options = getAutoCompleteOptions(url, lookupData, getItemsMapInfo, minChars, populateFieldOnSelect, onSearch);

    jQuery(selector).autocomplete(options);
}

function getParameterFromHiddenQs(name) {

    var strQs = getTextElementValue('qs');

    var strValue = "";

    if (strQs != "")
        strValue = getURLParam(strQs, name);

    return strValue;
}


// from refine.js
function setTextElementValue(id, value) {

    blnResult = false;

    if (value == null)
        value = "";

    var element = document.getElementById(id);

    if (element != null) {
        element.value = value;
        blnResult = true;
    }

    return blnResult;
}

function getTextElementValue(id) {

    var value = "";

    var element = document.getElementById(id);

    if (element != null)
        value = element.value;

    return value;
}

function getQueryStringSelectedValues(Name) {

    var objCheckBoxArray = document.getElementsByName(Name);
    var strQS = "";

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (objCheckBoxArray[i].checked) {
                strQS += "&" + Name + "=" + objCheckBoxArray[i].value;
            }
        }
    }
    return strQS;
}

function unCheckAllBoxes(Name) {
    var objCheckBoxArray = document.getElementsByName(Name);
    var CheckBox_all = document.getElementById(Name + "_all");

    if (objCheckBoxArray.length) {
        // Array
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            objCheckBoxArray[i].checked = false;
        }
    }

    if (CheckBox_all != null) {

        if (isAnyCheckBoxChecked(Name)) {
            CheckBox_all.checked = false;
        }
        else {
            CheckBox_all.checked = true;
        }
    }

}

function checkSelectedBoxes(Name, strSelValues) {
    var strSelectedValues = new String(strSelValues);
    var SelectedArray = strSelectedValues.split(",");
    var CheckBox_all = document.getElementById(Name + "_all");

    if (SelectedArray.length) {
        // Array
        for (var i = 0; i < SelectedArray.length; i++) {
            checkOneCheckBox(Name, SelectedArray[i]);
        }
    }

    if (CheckBox_all != null) {
        if (isAnyCheckBoxChecked(Name)) {
            CheckBox_all.checked = false;
        }
        else {
            CheckBox_all.checked = true;
        }
    }
}

function checkOneCheckBox(Name, strItemValue) {

    var objCheckBoxArray = document.getElementsByName(Name);

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (objCheckBoxArray[i].value == strItemValue) {
                objCheckBoxArray[i].checked = true;
                break;
            }
        }
    }
}

function checkMe(name, n) {
    checkOne(name, n);
    showText();
}

function checkOne(name, n) {
    var CheckBox = document.getElementById(name + n);
    var CheckBox_all = document.getElementById(name + "_all");

    if (CheckBox != null) {

        if (CheckBox.checked) {
            CheckBox_all.checked = false;
        }
        else {
            if (!isAnyCheckBoxChecked(name)) {
                CheckBox_all.checked = true;
            }
            
            unCheckRegion(name, n);
        }
    }
}


function unCheckRegion(name, n) {

    var strNorthEastStates      = "ME,NH,VT,MA,CT,RI";
    var strSouthEastStates      = "VA,WV,KY,TN,NC,SC,GA,FL,AL,MS,AR,LA";
    var strWestStates           = "CO,WY,MT,UT,CA,ID,OR,WA,AK,HI";
    var strMidAtlanticStates    = "NY,NJ,PA,DE,DC,MD";
    var strMidWestStates        = "OH,MI,IN,WI,IL,MN,IA,ND,SD,KS,NE,CO";
    var strSouthWestStates      = "TX,OK,NM,AZ,NV";
    var strCanadaStates         = "AB,BC,MB,NB,NF,NT,NS,NU,ON,PE,PQ,SK,YU";

    var strAfrica  = "23,24,25,27,29,30,34,39,44,46,48,53,54,56,63,64,79,83,88,89,92,96,97,101,102,103,108,109,";
        strAfrica += "123,125,127,128,129,131,132,135,137,141,143,146,152,153,154,158,171,202,206,217,219,230,233,238,246";
  
    var strAsia  = "11,12,18,32,36,67,70,71,77,78,80,82,87,90,91,104,112,113,119,122,130,134,140,144,151,156,157,160,";
        strAsia += "161,162,165,166,168,172,173,178,191,197,198,199,200,201,205,213,214,215,216,236,237,244";

    var strEurope  = "9,14,22,37,38,47,50,51,55,57,68,69,72,75,81,84,85,86,93,99,105,111,120,121,124,133,138,139,147,155,163,167,169,";
        strEurope += "176,183,194,195,203,208,209,218,221,225,231,235,240,243";

    var strNorthAmerica = "1,2,5,7,10,13,15,17,28,35,40,42,45,58,59,61,66,76,95,98,100,107,115,142,145,159,180,181,190,193,204,211,222,226,227,228,234";
    var strOceania = "8,49,60,94,106,114,116,164,170,174,175,177,179,182,184,185,186,187,188,220,223,224,229,239,242,245";
    var strSouthAmerica = "6,19,21,31,33,43,52,65,117,118,136,149,150,207";
    var strMiddleEast   = "74,126,148";

    if (name == "st") {
        if (IsStingInSeparatedValues(n, strNorthEastStates, ",")) {
            jQuery("#rg1").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strSouthEastStates, ",")) {
            jQuery("#rg2").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strWestStates, ",")) {
            jQuery("#rg3").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strMidAtlanticStates, ",")) {
            jQuery("#rg4").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strMidWestStates, ",")) {
            jQuery("#rg5").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strSouthWestStates, ",")) {
            jQuery("#rg6").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strCanadaStates, ",")) {
            jQuery("#rg7").attr("checked", false);
        }
        
        if(isAnyCheckBoxChecked("rg"))
            jQuery("#rg_all").attr("checked", false);
        else
            jQuery("#rg_all").attr("checked", true);
    }

    if (name == "cn") {
        if (IsStingInSeparatedValues(n, strAfrica, ",")) {
            jQuery("#wrgAF").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strAsia, ",")) {
            jQuery("#wrgAS").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strEurope, ",")) {
            jQuery("#wrgEU").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strNorthAmerica, ",")) {
            jQuery("#wrgNA").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strOceania, ",")) {
            jQuery("#wrgOC").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strSouthAmerica, ",")) {
            jQuery("#wrgSA").attr("checked", false);
        }
        else if (IsStingInSeparatedValues(n, strMiddleEast, ",")) {
            jQuery("#wrgME").attr("checked", false);
        }

        if (isAnyCheckBoxChecked("wrg"))
            jQuery("#wrg_all").attr("checked", false);
        else
            jQuery("#wrg_all").attr("checked", true);
    }
}


function isAnyCheckBoxChecked(Name) {
    var objCheckBoxArray = document.getElementsByName(Name);

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (objCheckBoxArray[i].checked) {
                return true;
                break;
            }
        }
    }
    return false;
}

function clearAll(interactiveChange) {
    if (interactiveChange == null)
        interactiveChange = true;

    unCheckAllBoxes('cg');
    unCheckAllBoxes('pstn');
    unCheckAllBoxes('st');
    unCheckAllBoxes('cn');
    unCheckAllBoxes('wrg');
    unCheckAllBoxes('rg');

    setElementValue("kwdt", "1");
    setElementValue("rvsd", "-1");
    setElementValue("ordr", "1");
    setElementValue("pgl", "10");
    setElementValue("kwrd", "");
    setElementValue("kwrd_and", "");
    setElementValue("kwrd_or", "");
    setElementValue("kwrd_not", "");
    setElementValue("kwrd_ext", "");
    setElementValue("city", "");
    setElementValue("cnam", "");
    setElementValue("acty", "");
    setElementValue("zip1", "");
    setElementValue("rdus", "");

    showText(interactiveChange);
}

function getCheckedNames(groupName, divider) {

    if (divider == null)
        divider = ", ";

    var objCheckBoxArray = document.getElementsByName(groupName);
    var res = new String("");

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (objCheckBoxArray[i].checked) {
                res += jQuery("i.x" + groupName).eq(i).text() + divider;
            }
        }
    }

    res = res.substr(0, res.length - 2);

    return res;
}

function setCountryLabel() {

    var strStatesUSA = "AL,AK";
    var strStatesCAN = "AB,BC";

    var objCheckBoxArray = document.getElementsByName("st");

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (IsStingInSeparatedValues(objCheckBoxArray[i].value, strStatesUSA)) {
                jQuery("#st" + objCheckBoxArray[i].value).before("<b>USA</b>");
                break;
            }
        }

        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (IsStingInSeparatedValues(objCheckBoxArray[i].value, strStatesCAN)) {
                jQuery("#st" + objCheckBoxArray[i].value).before("<b>CANADA</b>");
                break;
            }
        }
    }
}


function IsStingInSeparatedValues(strToSearchFor, strSearched, strSeparator) {
    if (strSeparator == null || strSeparator == "")
        strSeparator = ",";

    strSearched = strSeparator + strSearched + strSeparator;
    strToSearchFor = strSeparator + strToSearchFor + strSeparator;

    var strTempString = new String(strSearched);

    return (strTempString.indexOf(strToSearchFor) > -1);

}

function getURLParam(strUrl, strParamName) {
    var strReturn = "";

    if (strUrl == null)
        strUrl = "";

    if (strUrl != "") {

        var strQueryString = strUrl.substr(strUrl.indexOf("?") + 1);

        var arrQueryString = strQueryString.split("&");

        for (var i = 0; i < arrQueryString.length; i++) {

            if (arrQueryString[i].indexOf(strParamName.toLowerCase() + "=") == 0) {
                var arrParam = arrQueryString[i].split("=");
                strReturn += "," + arrParam[1];
            }
        }
        strReturn = strReturn.substring(1);
    }
    return unescape(strReturn);
}


function cleanIt(string) {
    var strCleanString = new String(string);
    return strCleanString.replace("'", "`");
}


function clearText(sValue) {
    sValue = sValue.replace(/[\++]/gim, " ");
    return sValue;
}

function clearTextElement(sValue) {
    sValue = sValue.replace(/\&/gim, "%26");
    return sValue;
}


// sets url for rss button
function setRssUrl(qs) {
    var RssLink = document.getElementById("rss");
    if (RssLink != null)
        RssLink.href = "/JobSeekerX/SearchJobsRSS.asp?" + qs;
}

function unselectListBoxItems(id) {

    var objListBoxArray = document.getElementById(id);

    for (var i = 0; i < objListBoxArray.length; i++) {
        objListBoxArray.options.item(i).selected = false;
    }
}


function selectListBoxItems(id) {

    var objListBoxArray = document.getElementById(id);

    for (var i = 0; i < objListBoxArray.length; i++) {
        objListBoxArray.options.item(i).selected = true;
    }
}

/*when searching by North Ame. city, clear global fields*/
function searchByRadiusCity() {

    //set value to empty string
    var oCity = jQuery("#acty");
    if (oCity.val().length == 0)
        return;

    //clear global fields
    jQuery("#city").val("");

}
function searchByRadiusZip() {

    //set value to empty string
    var oZip = jQuery("#zip1");
    if (oZip.val().length == 0)
        return;

    //clear global fields
    jQuery("#city").val("");
}
/*when searching by Global city, clear North Am. fields*/
function searchGlobalRegionCity() {
    //set value to empty string
    var oCity = jQuery("#city");
    if (oCity.val().length == 0)
        return;

    //clear north ame. fields
    jQuery("#acty").val("");
    jQuery("#zip1").val("");
}

function getSelectedValuesString(Name) {
    var objCheckBoxArray = document.getElementsByName(Name);
    var strQS = "";

    if (objCheckBoxArray.length) {
        for (var i = 0; i < objCheckBoxArray.length; i++) {
            if (objCheckBoxArray[i].checked) {
                strQS += "," + objCheckBoxArray[i].value;
            }
        }

        if (strQS.length > 0)
            strQS = strQS.substring(1);
    }

    return strQS;
}


function setElementValue(name, value) {

    var blnResult = false;

    if (name == null)
        return false;

    if (value == null)
        value = "";

    var e = document.getElementsByName(name);

    if (e.item(0) != null) {

        type = e.item(0).type;

        if (type == "text" || type == "hidden") {
            setTextElementValue(name, value);
            blnResult = true;
        }
        else if (type == "checkbox") {
            checkSelectedBoxes(name, value);
            blnResult = true;
        }
        else if (type == "radio") {
            checkOneCheckBox(name, value);
            blnResult = true;
        }
        else if (type == "select-one") {
            selectListItemElement(name, value);
            blnResult = true;
        }
    }
    return blnResult;
}


function getElementText(name) {

    var value = "";

    if (name == null)
        return value;

    var e = document.getElementsByName(name);

    if (e.item(0) != null) {

        type = e.item(0).type;

        if (type == "text" || type == "hidden") {
            value = getTextElementValue(name);
        }
        else if (type == "checkbox" || type == "radio" || type == "select-one") {
            value = getCheckedNames(name);
        }
    }
    return value;
}

function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}


