﻿var _url;
var xmlHttp;
var _domain;
var _keyword;
var _enterSearchTerms;

function Search(url)
{
    var keyword = document.getElementById("job_input_text").value;
    SendRequest(url, keyword, "keyword", ShowPopup);
}

function ShowPopup()
{
    if (xmlHttp.readyState != 4) 
        return;
     
     if (xmlHttp.status == 200)
     {
        var divHTML = document.getElementById("searchHTML");
        var keyword = ClearKeyword(document.getElementById("job_input_text").value);
        if(xmlHttp.responseText.indexOf("<span class=\"close\"><a href=\"javascript:ClosePopup();\">") != -1 && keyword.length > 0)
            divHTML.innerHTML = xmlHttp.responseText;
        else
        {
            divHTML.innerHTML = "";           
        }
     }     
}

function SendRequest(url, parameter, queryString, nameFunction)
{
    var newURL = (url.indexOf(queryString+"=") != -1) ? url.substring(0, url.indexOf(queryString+"=")-1) : url;
    newURL = (newURL.indexOf("?") != -1) ? newURL + "&" + queryString + "=" + encodeURIComponent(parameter) : newURL + "?" + queryString + "=" + encodeURIComponent(parameter);
    var e;    
    if(xmlHttp != null)
        xmlHttp.abort();
    try
    {       
        xmlHttp = new XMLHttpRequest();
    }
    catch(e)
    {
        try
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {}
    }
    xmlHttp.open("GET", newURL, true);
    xmlHttp.onreadystatechange = nameFunction;
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
    xmlHttp.send(null);    
}

function ClosePopup()
{
    var divHTML = document.getElementById("searchHTML");
    divHTML.innerHTML = "";
    
    var inputKeyword = document.getElementById("job_input_text");
    inputKeyword.value = "";
    inputKeyword.onblur();
}

function GoSearch(url, closeText, displayText, headerText, imgsrc, filterkeywords)
{
    _url = url;    
    Search(closeText, displayText, headerText, imgsrc, filterkeywords);    
}

var searchDelay = null;
function Search(closeText, displayText, headerText, imgsrc, filterkeywords)
{
    if(searchDelay != null) clearTimeout(searchDelay);
    
    var keyword;
    if(filterkeywords == true)
        var keyword = ClearKeyword(document.getElementById("job_input_text").value);
    else
        var keyword = document.getElementById("job_input_text").value;

    //'-' is a spesial char and is ignpred in search
    keyword = keyword.replace(/-+/g, '');
    
    if(keyword.length > 1)
    {
       var searchTimeout = function()
       {
           SendRequest(_url, keyword, "keyword", ShowPopup);
       }
       
       ShowProgressMessage(closeText, displayText, headerText, imgsrc);   
       searchDelay = setTimeout(searchTimeout, 1000);
       //SendRequest(_url, keyword, "keyword", ShowPopup);
    }
    else
    {
        var divHTML = document.getElementById("searchHTML");
        divHTML.innerHTML = "";
    }
}

function ToSearchResult(domain, enterSearchTerms, trSearches, toUseSearch, filterkeywords)
{
    if(xmlHttp != null)
        xmlHttp.abort();
     var keyword = document.getElementById("job_input_text").value;
     if (filterkeywords == true) {
         _keyword = ClearKeyword(keyword);
         //handle reserved characters
         _keyword = _keyword.replace(/:+/g, '').replace(/\*+/g, '').replace(/%+/g, '').replace(/\?+/g, '');
         _keyword = _keyword.replace(/#+/g, '%23');
         _keyword = _keyword.replace(/ /g, '-').replace(/&+/g, '﹠').replace(/"+/g, '“');
     }
     else {
         _keyword = keyword;
         _keyword = encodeURIComponent(_keyword);
     }
     if(_keyword == "con")
        _keyword = _keyword + " ";
     _domain = domain;
     _enterSearchTerms = enterSearchTerms;

     
     

     if(keyword.length > 1 && keyword != enterSearchTerms)
     {
         window.location.href = "http://" + _domain + "/" + trSearches + "/" + _keyword;
     }
     else
     {
        alert(toUseSearch);
     }
     return false;
}

function Go(url, isSearchPaging, isDate)
{
    jobTitleKeyword = Trim(document.getElementById("jobTitleKeyword").value); 
    locationKeyword = Trim(document.getElementById("locationsKeyword").value);
    GetRequest(url, jobTitleKeyword, locationKeyword, isSearchPaging, isDate, 1);
}

function Reset(url, isSearchPaging, isDate)
{
    GetRequest(url, '', '', isSearchPaging, isDate, 1);
}

function GetRequest(url, jobTitleKeyword, locationKeyword, isSearchPaging, isDate, pagenumber)
{
    var newURL = url.replace(/&+/g, '﹠') + "&jobtitlekeyword=" + encodeURIComponent(jobTitleKeyword.replace(/&+/g, '﹠')) 
        + "&locationkeyword=" + encodeURIComponent(locationKeyword.replace(/&+/g, '﹠')) 
        + "&issearchpaging=" + encodeURIComponent(isSearchPaging) + "&isdate=" + encodeURIComponent(isDate)
        + "&pagenumber=" + encodeURIComponent(pagenumber);
    var e;    
    if(xmlHttp != null)
        xmlHttp.abort();
    try
    {       
        xmlHttp = new XMLHttpRequest();
    }
    catch(e)
    {
        try
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {}
    }
    
    xmlHttp.open("GET", newURL, true);
    xmlHttp.onreadystatechange = RefreshResults;
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
    xmlHttp.send(null); 
}

function RefreshResults()
{
    if (xmlHttp.readyState != 4) 
        return;
     
     if (xmlHttp.status == 200)
     {
        var divHTML = document.getElementById("conteinerForSearchResults");
        if(xmlHttp.responseText.indexOf("<table class=\"tableSearchResults\">") != -1)
            divHTML.innerHTML = xmlHttp.responseText;        
     }
}

function Paging(url, pagenumber, isSearchPaging, isDate)
{
    jobTitleKeyword = Trim(document.getElementById("jobTitleKeyword").value); 
    locationKeyword = Trim(document.getElementById("locationsKeyword").value);
    
    GetRequest(url, jobTitleKeyword, locationKeyword, isSearchPaging, isDate, pagenumber);
}

function ShowProgressMessage(closeText, displayText, headerText, imgsrc)
{
    var divHTML = document.getElementById("searchHTML");
    var indexStart = divHTML.innerHTML.toLowerCase().indexOf("<h4>");
    var indexEnd = divHTML.innerHTML.toLowerCase().indexOf("</h4>");
    var header = "";
    var newHeadr = "";
    
    var img = document.createElement("img");
    img.border = "0";
    img.src = imgsrc;
    img.style.height = "17px";
    img.style.width = "17px";
    img.style.padding = "0";
    img.style.margin = "-3px";
    
    if(indexStart != -1 && indexEnd != -1)
    {    
        header = divHTML.innerHTML.substring(indexStart + 4, indexEnd);        
        newHeadr = displayText + "&nbsp;&nbsp;&nbsp;";
        if(divHTML.innerHTML.indexOf(displayText) == -1)
        {
            divHTML.innerHTML = divHTML.innerHTML.replace(header, newHeadr);
            document.getElementById("srb").getElementsByTagName("h4")[0].appendChild(img);
        }
    }
    else
    {
        var str = "<div id=\"srb\"><div class=\"header\"><h4>" + displayText + "&nbsp;&nbsp;&nbsp;" +"</h4><span class=\"close\"><a href=\"javascript:ClosePopup();\">"+closeText+"</a></span></div></div>";   
        if(divHTML.innerHTML.indexOf(displayText) == -1)
        {
            divHTML.innerHTML = str;
            document.getElementById("srb").getElementsByTagName("h4")[0].appendChild(img);
        }
    }    
}

function ClearKeyword(keyword)
{
    keyword = " " + keyword.toLowerCase() + " ";
    keyword = keyword.replace(/:+/g, '');
    keyword = keyword.replace(/\.+/g, '');
    keyword = keyword.replace(/\/+/g, '');
    keyword = keyword.replace(/%+/g, '');
    keyword = keyword.replace(/\\+/g, '');
    keyword = keyword.replace(/<+/g, '');
    keyword = keyword.replace(/>+/g, '');
    keyword = keyword.replace(/\*+/g, '');
    keyword = keyword.replace(/@+/g, '');
    keyword = keyword.replace(/#+/g, '');
    keyword = keyword.replace(/\$+/g, '');
    keyword = keyword.replace(/\^+/g, '');
    keyword = keyword.replace(/;+/g, '');
    keyword = keyword.replace(/\|+/g, '');
    keyword = keyword.replace(/,+/g, '');
    keyword = keyword.replace(/\?+/g, '');
    keyword = keyword.replace(/"+/g, '');    
    keyword = keyword.replace(/`+/g, '');
    keyword = keyword.replace(/'+/g, '');
    keyword = keyword.replace(/_+/g, '');
    //keyword = keyword.replace(/&+/g, '');
    keyword = keyword.replace(/-+/g, '');
    keyword = keyword.replace(/~+/g, '');
    keyword = keyword.replace(/!+/g, '');
    //keyword = keyword.replace(/\++/g, '');
    keyword = keyword.replace(/\(+/g, '');
    keyword = keyword.replace(/\)+/g, '');
    keyword = keyword.replace(/\[+/g, '');
    keyword = keyword.replace(/\]+/g, '');
    keyword = keyword.replace(/{+/g, '');
    keyword = keyword.replace(/}+/g, '');
    keyword = keyword.replace(/˪+/g, '');
    keyword = keyword.replace(/¬+/g, '');
    keyword = keyword.replace(/·+/g, '');
    keyword = keyword.replace(/“+/g, '');
    keyword = keyword.replace(/ the /g, ' ');
    keyword = keyword.replace(/ www /g, ' ');
    keyword = keyword.replace(/ http /g, ' ');
    keyword = keyword.replace(/ that /g, ' ');
    keyword = keyword.replace(/ will /g, ' ');
    keyword = keyword.replace(/ where /g, ' ');
    keyword = keyword.replace(/ has /g, ' ');
    keyword = keyword.replace(/ with /g, ' ');
    keyword = keyword.replace(/ at /g, ' ');
    keyword = keyword.replace(/ are /g, ' ');    
    keyword = keyword.replace(/ your /g, ' ');
    keyword = keyword.replace(/ you /g, ' ');
    keyword = keyword.replace(/ etc /g, ' ');
    keyword = keyword.replace(/ as /g, ' ');
    keyword = keyword.replace(/ is /g, ' ');
    keyword = keyword.replace(/ for /g, ' ');
    keyword = keyword.replace(/ on /g, ' ');
    keyword = keyword.replace(/ an /g, ' ');
    keyword = keyword.replace(/ or /g, ' ');
    keyword = keyword.replace(/ and /g, ' ');    
    keyword = keyword.replace(/ by /g, ' ');
    keyword = keyword.replace(/ to /g, ' ');
    keyword = keyword.replace(/ from /g, ' ');
    keyword = keyword.replace(/ of /g, ' ');
    keyword = keyword.replace(/ in /g, ' ');
    keyword = keyword.replace(/ a /g, ' ');
    keyword = keyword.replace(/ job /g, ' ');
    keyword = keyword.replace(/ jobs /g, ' ');
    keyword = keyword.replace(/ popular /g, ' ');
    
    keyword = keyword.replace(/\\s+/g, ' ');    
    keyword = keyword.replace(/(^\s+)|(\s+$)/g, '');
    
    return keyword;
}

function Trim(str)
{
    str = str.replace('\\s+', ' ');    
    str = str.replace(/(^\s+)|(\s+$)/g, '');
    
    return str;
}
