﻿YAHOO.namespace("ADV.Search");  

YAHOO.ADV.Search.open = function(elTarget, targetName)
{
    target = $(targetName);    
    
    if (YAHOO.util.Dom.getStyle(target, "display") == "none")
    {
        openerSignObj = $C('openerSign', 'span', elTarget)[0];
        YAHOO.util.Dom.setStyle(target, "display", "inline");
        YAHOO.util.Dom.removeClass(openerSignObj, "openerSign"); 
        YAHOO.util.Dom.addClass(openerSignObj, "openerSignOpened");  
    } 
    else 
    {
        openerSignObj = $C('openerSignOpened', 'span', elTarget)[0];
        YAHOO.util.Dom.setStyle(target, "display", "none"); 
        YAHOO.util.Dom.removeClass(openerSignObj, "openerSignOpened");    
        YAHOO.util.Dom.addClass(openerSignObj, "openerSign");     
    }
} 

var onPage = function(pageIndex)
{
    var goToUrl = setSearchParam(location.href, "/pix", pageIndex, false);
        
    window.location.href = goToUrl;
}

var onSearch = function(pageIndex)
{
    ddl = $('ddlSearchType');
    searchType = ddl.options[ddl.selectedIndex].value;
    
    //var re = new RegExp("[.|/|\*|%]*");
    
    searchValue = trim($('txtSearchValue').value.replace(/[.|/|\*|%|\\]*/g, "").replace(/\+/g, "!p"));   
    
    var goToUrl = setSearchParam(location.href, "/pix", 1, false);
    
    goToUrl = setSearchParam(goToUrl, "/t", searchType, true);
    //goToUrl = setSearchParam(goToUrl, "/v-", searchValue, true);
    
    //alert('searchValue:'+searchValue);
    // txtSearch parameter az URL vegere kerul
    //if (searchValue.length>0)
    //{
        goToUrl = setUrlParam(goToUrl, "txtSearchValue", encodeURI(searchValue));
    //}
    
    
    if (($("sn")) && ($("sx")))
    {
        goToUrl = setUrlParam(goToUrl, "sn", $("sn").value);
        goToUrl = setUrlParam(goToUrl, "sx", $("sx").value);
    }
    
    window.location.href = goToUrl;
}

var setSearchParam = function(href, prefix, value, isText)
{
    var goToUrl = "";
    
    if (isText)
        regexValue = prefix + "[^/|^.]*";
    else
        regexValue = prefix + "[\\d]*";
    
    var re = new RegExp(regexValue);
    
    if (href.match(re)) 
    {
        goToUrl =  href.replace(re, prefix + value);
    } 
    else
    {
        if(href.indexOf(".aspx") != -1)
            if (prefix == '/pix')
            {
                if(href.indexOf("allashirdeteseink") != -1)
                {
                    goToUrl = href.replace("friss-allashirdeteseink/", "allasok" + prefix + value + "/");
                    goToUrl = goToUrl.replace("friss-allashirdeteseink.aspx", "allasok" + prefix + value + ".aspx");
                } else {
                    goToUrl = href.replace("allasok/", "allasok" + prefix + value + "/");
                    goToUrl = goToUrl.replace("allasok.aspx", "allasok" + prefix + value + ".aspx");
                }
            }
            else
                goToUrl = href.replace(".aspx", prefix + value + ".aspx");
        else
            goToUrl = href + "/" + prefix + value;
    }   
    
    return goToUrl;
}

var jobCookieValue = getCookie(jobCookieName);
var searchCookieValue = getCookie(searchCookieName);
    
var savedJobs = new jobs(jobCookieName, jobCookieValue, jobCookieExpireDay, recSep, fieldSep);
var savedSearches = new searches(searchCookieName, searchCookieValue, searchCookieExpireDay, recSep, fieldSep);

/*----------------------- JOB ----------------------*/
    
//set id in jobs object
function setJob(value)
{
    newJob = savedJobs.add(value);    
    printRate(newJob);
        
    YAHOO.util.Dom.addClass($('jobRow' + value), "active-row");  
    Element.hide('jobSaveCaption'+value);
    Element.show('jobSaveOption'+value);
    Element.toggle('addNoteBlock'+value);
}

//print saved rate value
function printRate(job)
{
    var ratingObj = $('rating_'+job.id);
            
    if (ratingObj != null)
    {
        var rating = job.rate;   
        var isNew = false;
        
        if (ratingObj.childNodes.length != 5 ) 
        {
            ratingObj.removeChild(ratingObj.firstChild);
            isNew = true;
        }
        
        for (var j = 0; j < NUMBER_OF_STARS; j++)
        {
            var star = $('star_'+job.id+'_'+j);
            if (isNew) 
                var star = document.createElement('img');
                
            if (rating >= 1)
            {
                star.setAttribute('src', '/skins/default/img/stars/rating_on.gif');
                star.className = 'on';            
                rating--;
            }
            else if(rating == 0.5)
            {
                star.setAttribute('src', '/skins/default/img/stars/rating_half.gif');
                star.className = 'half';
                rating = 0;
            }
            else
            {
                star.setAttribute('src', '/skins/default/img/stars/rating_off.gif');
                star.className = 'off';
            } 
            
            if (isNew)
            {
                star.setAttribute('id', 'star_'+job.id+'_'+j);
                
                star.onmouseover = new Function("evt", "displayRatingHover('"+job.id+"', "+j+");");
                star.onmouseout = new Function("evt", "displayRatingNormal('"+job.id+"', "+j+");");        
                star.onclick = new Function("evt", "setRating('"+job.id+"', "+j+");");
                
                ratingObj.appendChild(star);
            }
        } 
    }        
}


var displayRatingHover = function(webId, star)
{
    for (var i = 0; i <= star; i++)
    {
       $('star_'+webId+'_'+i).setAttribute('src', '/skins/default/img/stars/rating_over.gif');
    }
}

var displayRatingNormal = function(webId, star)
{
    for (var i = 0; i <= star; i++)
    {
        var status = $('star_'+webId+'_'+i).className;
        $('star_'+webId+'_'+i).setAttribute('src', '/skins/default/img/stars/rating_'+status+'.gif');
    }
} 

var setRating = function(webId, starNbr)
{
    var starValue = starNbr + 1;
    
    savedJobs.updateRate(webId, starValue);

    for (i = 0; i <= starNbr; i++)
        $('star_'+webId+'_'+i).className = "on";
    
    if (starNbr < 5)
    {
        for (i = parseInt(starNbr) + 1; i < 5; i++)
        {
            $('star_'+webId+'_'+i).className = "off";
            $('star_'+webId+'_'+i).setAttribute('src', '/skins/default/img/stars/rating_off.gif');
        }
    }        
}        

//delete job from cookie
function deleteJob(webId)
{
    if(webId)
    {
        YAHOO.util.Dom.removeClass($('jobRow' + webId), "active-row");  
        savedJobs.del(webId);
        //hide deleted job
        Element.hide('jobSaveOption'+webId);    
        
        if ($('jobSaveCaption'+webId))    
            Element.show('jobSaveCaption'+webId);
     }
     else
     {
        savedJobs.delAll();
        Element.hide('divSaveJob');
     }
}
    
//print saved note value
function printNote(job, toClose)
{
      Try.these(
            function() {
                Element.update('savedNoteValue' + job.id, job.note.replace(/\n/g,"<br>") );  
                
                if (toClose)              
                    Element.toggle('savedNoteValue' + job.id);
            },
            //function() { new Insertion.After('lnkAddNote' + job.id, "<span id='savedNoteValue"+ job.id +"'>: " + (job.note).substring(0,10) + '...'  + "</span>");} 
            function() { new Insertion.After('lnkAddNote' + job.id, "<div class='note' id='savedNoteValue"+ job.id +"'>" + job.note.replace(/\n/g,"<br>") + "</span>");} 
        );
}

//set note in jobs object and then save in the cookie
function setNote(webId)
{    
    savedJobs.updateNote(webId,$F('txtJobNote'+webId));    
    
    //hide note box
    Element.hide('addNoteBlock'+webId);
    //write saved value    
    printNote(savedJobs.getItemById(webId), true);
    //Element.toggle('savedNoteValue' + webId);
}

//show/hide note block
function toggleNote(webId)
{
    //Element.hide('addRateBlock'+webId);
    Element.toggle('addNoteBlock'+webId);
    Element.toggle('savedNoteValue' + webId);
    
    note = (savedJobs.getItemById(webId)).note;
    if(note)
        $('txtJobNote'+webId).value = note;
}

/*----------------------- /JOB ----------------------*/

var NUMBER_OF_STARS = 5;
    
var initJobs = function()
{
    if(savedJobs)
    {
            for(i = 0 ;i < savedJobs.items.length; i++)
            {
                job = savedJobs.items[i];

                YAHOO.util.Dom.addClass($('jobRow' + job.id), "active-row");  

                if($('jobSaveCaption' + job.id) != null)
                {
                    //Element.update('jobSaveCaption' + job.id,"Mentve");
                    Element.hide('jobSaveCaption' + job.id);
                    Element.show('jobSaveOption' + job.id);
               }
        
                //set existing note and rate values
                if(job.note)
                    printNote(job, false);
                if(job.rate)                
                    printRate(job);
            };
    }

    //if(savedSearches.items.length > 0)
    //    Element.show('savedSearchMenu');   
    updateSavedSearchListBox();
  
  // init Salary Slider  
     
  if ($('salary-handle-1')!=null)
  {
  new Control.Slider(
  ['salary-handle-1','salary-handle-2'],'salaryBGDiv',
    {
        sliderValue:[minSalary, maxSalary], 
        range:$R(0, 2550),
        values:[0,50,100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000,
                1000,1050,1100,1150,1200,1250,1300,1350,1400,1450,1500,1550,1600,1650,1700,1750,1800,1850,1900,1950,
                2000,2050,2100,2150,2200,2250,2300,2350,2400,2450,2500,2550],
        restricted:true, 
        onSlide : function(v)
            {
                $('salaryHelper').innerHTML = v[0] + "-" + v[1];
                $('sn').value = v[0];
                $('sx').value = v[1];
            } 
    });
    }
 
}

/*----------------------- SEARCH ----------------------*/
    
var reloadSavedSearchList = false;

//set id in search object
function setSearch()
{
    var errorMsg = '';
    
    var searchName = $F('searchName');
    
    if (searchName.length > 20)
        searchName = searchName.substring(0,20) + "...";
        
    searchName = escape(trim(searchName).replace(/[.|/|\*|%|\\|<|>|']*/g, ""));   
    
    if(!searchName)
    {
       Element.update('saveSearchMsg',"Nevet kötelezõ megadni.")
       return;
    }
    savedSearches.items.each(function(search){
        //validating
        if(search.id == $F('searchName'))
        {
            errorMsg += 'Ez a név már létezik \n';
            throw $break;
        }
        
        if(search.url == window.location.href)
        {
            errorMsg += 'Ez a keresési feltétel már szerepel a listán!\n';
            throw $break;
        }
    });

    if(errorMsg.length > 0)
    {
        Element.update('saveSearchMsg',errorMsg);
        return;
    }
                
    savedSearches.add(searchName,window.location.href);
    
    if ($('savedSearchBox'))
        Element.toggle('savedSearchBox');
        
    //Element.show('savedSearchMenu');
    
    //
    if(reloadSavedSearchList)
        toggleSearchListBox();
    
    updateSavedSearchListBox();
    
    reloadSavedSearchList = false;
}

function toggleSearchSaveBox(reload)
{
    reloadSavedSearchList = reload;

    if ($('savedSearchBox'))
        Element.toggle('savedSearchBox');
        
    Element.update('saveSearchMsg','');
    //Element.hide('savedSearchListBox');
    
    if ($('savedSearchBox'))
    {
        if($('savedSearchBox').style.display=='')
        {
           Field.clear('searchName');
           $('searchName').focus();                  
        }
    }
}

function toggleSearchListBox()
{
    updateSavedSearchListBox();
    
    Element.toggle('savedSearchListBox');
    
    if ($('savedSearchBox'))
        Element.hide('savedSearchBox');
}

function deleteSavedSearch(id)
{
    if(id)
    {
        savedSearches.del(id);
        Element.hide(id);
    }
    else
    {
        //Element.toggle('savedSearchMenu');
        //deleteCookie(searchCookieName);
        savedSearches.delAll();
    }
    
   updateSavedSearchListBox();
}

function close(element)
{
    Element.hide(element);
}

function updateSavedSearchListBox()
{
    table = $('savedSearchListBoxContent');
    Element.update('savedSearchListBoxContent','');
    
    var savedSearchList='';
    savedSearches.items.each(function(search){
       
        row = document.createElement("ul");
        row.setAttribute("id",search.id)
        
        columnDelete = document.createElement("SPAN");
        //Element.setStyle(columnDelete, {float: "right"});
        columnDelete.innerHTML = " <a href=javascript:deleteSavedSearch('"+ search.id +"')><img src='/skins/default/img/del.gif' border='0'/></a>";
        
        columnItem = document.createElement("li");
        columnItem.innerHTML = "<a href='"+ search.url +"'>"+ search.id +"</a>";
                                    
        row.appendChild(columnItem);
        columnItem.appendChild(columnDelete);
        table.appendChild(row);
        
    });
        //test
        //alert(table.innerHTML);
        
    if ($('savedSearchListBoxContent'))
    {
        if(savedSearches.items.length == 0)
        {
            Element.update('savedSearchListBoxContent','Nincs elmentett keresés');
            Element.hide('objSavedSearchDelete');
        } 
        else 
        {
            Element.show('objSavedSearchDelete');
        }
    }
}

/*----------------------- /SEARCH ----------------------*/

function noenter(e) 
{
    var key = (window.event) ? event.keyCode : e.which;
    return (key != 13);
}
    
YAHOO.util.Event.onDOMReady(initJobs);  