/**
 * Job Search Block for Canada - French ca_services_fr
 *
 * This is currently initialized in the page as follows:
 <script type="text/javascript">
 <!--
  var sJobSearch = { btn_type:"search" , btn_lbl:"Search" , kw_lbl:"Keywords" , cat_lbl:"Job Category" , loc_lbl:"Location" , div_lbl:"Employment Type" };
  JSEARCH.create( sJobSearch , "jsearch" , "lb01" );        
 //-->
 </script>
 */

var JSEARCH = {
  requiredAttrParams: ["btn_type" , "btn_lbl" , "kw_lbl" , "cat_lbl" , "loc_lbl" , "div_lbl" ],
  //declare some params - easier to reference later
  SO:null,
  objTarget:null,
  objParent:null,
  /**
   * Start the the Job Search dropdown(s) creation process
   *
   * @param object SO - an object containing the form parameters
   * @param string id - the document element ID to put the search into
   * @param string parentid - The top level 'containing element'
   */
  create: function( SO , id , parentid ) {
    //stop if the browser is too old
    if( !document.getElementById || !document.getElementsByTagName ) return;
    
    //initialize the object params
    this.SO = SO;
    this.objTarget = document.getElementById(id);
    this.objParent = document.getElementById(parentid);
    
    //hides the parent element
    DROP.setElementDisplay(parentid, "none");
    //adds this load function to the window.onload event
    var me = this; //closure
    var loadfn = function() {
      /*
      checks the params passed in against the DROP required params
      which is actually a smaller set than the 'required' params for
      this object
      */
      if (DROP.hasRequiredAttrParams(SO)) {
        //use the closure to reduce memory usage
        me.init();
      }
      //show the parent block again
      DROP.setElementDisplay(parentid, "block");
    };
    DROP.addLoadEvent(loadfn);
  },
  /**
   * Creates the dropdown list(s)
   */
  init: function(){
    //not sure why this check is here?
    if (typeof this.objTarget.innerHTML == "undefined" || typeof this.objParent.innerHTML == "undefined") { return; }
    
    var id = this.objTarget.id;
    //use an array - string concatenation is very slow for large strings of data
    var strOutPut = [];
    strOutPut = [
      '<form action="" method="post">',
      ' <span class="wrapper">',
      '   <label for="' + id + '_keywords">' + this.SO.kw_lbl + '</label>',
      '   <input type="text" id="' + id + '_keywords" class="txt" maxlength="30" />',
      ' </span>',
      ' <span class="wrapper">',
      '   <label for="' + id + '_category" class="hide">' + this.SO.cat_lbl + '</label>',
      '   <select id="' + id + '_category">',
      '     <option value="">' + this.SO.cat_lbl + '</option>'
    ];
    //categories
    var strOptions = [];
    //optimize the loop by declaring a length var in the initial conditions
    for(var x = 0, len = this.CatItems.length; x < len ; ++x ) {
      var dat = this.CatItems[x]; //var used for convenience
      strOptions.push('     <option value="' + dat.val + '">' + unescape(dat.txt) + '</option>');
    } 
    strOutPut = strOutPut.concat([
      strOptions.join("\n"),
      '   </select>',
      ' </span>',
      ' <span class="wrapper">',
      '   <label for="' + id + '_location" class="hide">' + this.SO.loc_lbl + '</label>',
      '   <select id="' + id + '_location" onchange="JSEARCH.changeArea(this);">',
      '     <option value="">' + this.SO.loc_lbl + '</option>'
    ]);
    //location
    strOptions = [];
    for( x = 0, len = this.LocItems.length; x < len; ++x ) {
      var dat = this.LocItems[x];
      strOptions.push('   <option value="' + dat.val + '">' + unescape(dat.txt) + '</option>');
    }
    strOutPut = strOutPut.concat([
      strOptions.join("\n"),
      '   </select>',
      ' </span>',
      //add the areas dropdown
      ' <span class="wrapper">',
      '   <label for="' + id + '_areas" class="hide">Par secteur</label>',
      '   <select id="' + id + '_areas">',
      '     <option value="0">Toutes les villes</option>',
      '   </select>',
      ' </span>',
      //done with areas dropdown
      ' <span class="wrapper">',
      '   <label for="' + id + '_division" class="hide">' + this.SO.loc_lbl + '</label>',
      '   <select id="' + id + '_division">',
      '     <option value="">' + this.SO.div_lbl + '</option>'
    ]);
    //division
    strOptions = [];
    for( x = 0, len = this.DivisionItems.length; x < len; ++x ) {
      var dat = this.DivisionItems[x];
      strOptions.push('   <option value="' + dat.val + '">' + unescape(dat.txt) + '</option>');
    } 
    strOutPut = strOutPut.concat([
      strOptions.join("\n"),
      '   </select>',
      ' </span>',
      ' <a href="#" title="' + this.SO.btn_lbl + '" class="btn btn' + this.SO.btn_type + '" id="' + id + '_btn" target="_blank"><span>' + this.SO.btn_lbl + '</span></a>',
      '</form>'
    ]);

    this.objTarget.innerHTML = strOutPut.join("\n");

    objButton = document.getElementById( id + '_btn' );
    if( objButton ){
      addEvent( objButton , 'click' , JSEARCH.processClick , false );
    }

    addclass( this.objTarget , 'selector' );
    this.objParent.style.overflow = 'visible';
    this.objParent.style.overflow = '';
  },

  addOption: function(obj){
    var dat = obj.split("|");
    //strIdAttrib = id != '' ? ' id="' + id + '"' : '';
    return '<option value="' + dat[1] + '">' + unescape(dat[0]) + '</option>';
  },
  
  changeArea:function(elem) {
    var id = elem.id.split("_")[0];
    var val = elem[elem.selectedIndex].value
    
    //get the area select element and trunc it
    var sel = document.getElementById(id + '_areas');
    sel.options.length = 0;;
    sel.options[0] = new Option('Toutes les villes',0);
    if (val == "" || val == 0) { 
      return;
    } else {
      //get the object data based on the value of the dropdown
      var areas = this.AreaItems["area" + val];
      
      //fill the select box
      for (var i = 0, len = areas.length; i < len; ++i) {
        sel.options[sel.options.length] = new Option(unescape(areas[i].txt),areas[i].val);
      }
    }
  },

  processClick: function(e){
    var curNode = window.event ? window.event.srcElement: e ? e.target : null;
    if( curNode == null ) return;

    divBase = ascendDOM( curNode , 'div' );
    if( divBase.nodeName.toLowerCase() != 'div' || !divBase.id ) return;

    strSelected = 'http://ca.livejobs.recruitadvantage.com/job/job_search_result.cfm?cLang=Canadian';

    objKw = document.getElementById( divBase.id + '_keywords' );
    objCat = document.getElementById( divBase.id + '_category' );
    objLoc = document.getElementById( divBase.id + '_location' );
    objArea = document.getElementById( divBase.id + '_areas' );
    objDivision = document.getElementById( divBase.id + '_division' );

    strKw = objKw ? escape( objKw.value ) : '';
    strCat = objCat ? objCat.options[objCat.selectedIndex].value : '';
    strLoc = objLoc ? objLoc.options[objLoc.selectedIndex].value : '';
    strArea = objArea ? objArea.options[objArea.selectedIndex].value : '';
    strDivision = objDivision ? objDivision.options[objDivision.selectedIndex].value : '';
    

    if( strKw == '' && strCat == '' && strLoc == '' && strDivision == '' && strArea == '' ){
      curNode.href = 'http://ca.livejobs.recruitadvantage.com/job/job_search.cfm?cLang=Canadian';
    }
    else {

             { 
              if (strCat == '' ){ (strCat = '0' );}
              if (strLoc == '') { (strLoc = '0');}
              if (strDivision == '') {(strDivision = '0' );}
              if (strArea == '') { (strArea = '0');}
             }
           curNode.href = strSelected + '&frm_loc_id=' + strLoc + '&frm_ind_id=' + strCat + '&frm_job_type_id=' + strDivision + '&frm_keyword=' + strKw + '&frm_area_id=' + strArea;

         }

    return true;
  },
  CatItems:[{"val":0,"txt":"Tous"},{"val":3447,"txt":"Administration"},{"val":3463,"txt":"Agences%20de%20placement%20de%20personnel"},{"val":3448,"txt":"Agriculture"},{"val":3466,"txt":"Aliments%20et%20breuvages"},{"val":3491,"txt":"Approvisionnement"},{"val":3462,"txt":"Assemblage%20%E9lectronique"},{"val":3477,"txt":"Assurances"},{"val":3499,"txt":"Atelier"},{"val":3488,"txt":"Autres"},{"val":3451,"txt":"Biotechnologie/Pharmaceutique"},{"val":3452,"txt":"Centre%20d%27appels"},{"val":3455,"txt":"Clinique%20m%E9dicale"},{"val":3446,"txt":"Comptabilit%E9"},{"val":3475,"txt":"Conduite%20de%20camions%20et%20de%20chariots"},{"val":3492,"txt":"Contr%F4le%20de%20la%20qualit%E9"},{"val":3478,"txt":"Droit"},{"val":3461,"txt":"%C9ducation"},{"val":3481,"txt":"Fabrication%20et%20production"},{"val":3465,"txt":"Finance"},{"val":3467,"txt":"Gestion%20g%E9n%E9rale"},{"val":3468,"txt":"Gouvernement"},{"val":3449,"txt":"Industrie%20automobile"},{"val":3479,"txt":"Industrie%20l%E9g%E8re"},{"val":3471,"txt":"Industrie%20lourde"},{"val":3457,"txt":"Informatique-Logiciel"},{"val":3456,"txt":"Informatique-Mat%E9riel"},{"val":3464,"txt":"Ing%E9nierie"},{"val":3490,"txt":"Ing%E9nieur%20de%20projet"},{"val":3454,"txt":"Ing%E9nieur%20en%20chef"},{"val":3480,"txt":"Logistique"},{"val":3483,"txt":"Manutention"},{"val":3482,"txt":"Marketing"},{"val":3484,"txt":"M%E9dias"},{"val":3500,"txt":"M%E9tiers%20sp%E9cialis%E9s"},{"val":3502,"txt":"M%E9tiers/Autres"},{"val":3487,"txt":"P%E9trole/Gaz%20naturel/Commodit%E9s"},{"val":3489,"txt":"Professionnel%20%28autres%29"},{"val":3494,"txt":"Promotion%20des%20ventes"},{"val":3493,"txt":"Recrutement"},{"val":3474,"txt":"Ressources%20humaines"},{"val":3453,"txt":"Restauration/Aliments%20et%20breuvages"},{"val":3496,"txt":"Sciences%20environnementales"},{"val":3498,"txt":"Scientifique"},{"val":3460,"txt":"Services%20%E0%20la%20client%E8le"},{"val":3450,"txt":"Services%20bancaires%20et%20financiers"},{"val":3459,"txt":"Services%20de%20cr%E9ation"},{"val":3458,"txt":"Services-conseils"},{"val":3497,"txt":"Siences"},{"val":3472,"txt":"Soins%20%E0%20domicile"},{"val":3469,"txt":"Soins%20de%20sant%E9"},{"val":3470,"txt":"Soins%20de%20sant%E9-Laboratoire/Pathologie"},{"val":3485,"txt":"Soins%20infirmiers"},{"val":3501,"txt":"Technicien/Ing%E9nierie"},{"val":3476,"txt":"Technologies%20de%20l%27information"},{"val":3473,"txt":"Tourisme%20d%27accueil"},{"val":3503,"txt":"Transport"},{"val":3486,"txt":"Travail%20de%20bureau"},{"val":3495,"txt":"Ventes/D%E9tail"}],
  LocItems:[{"val":0,"txt":"Tous"},{"val":1303,"txt":"Alberta"},{"val":1304,"txt":"Colombie-Britannique"},{"val":1312,"txt":"%CEle-du-Price-%C9douard"},{"val":1305,"txt":"Manitoba"},{"val":1306,"txt":"Nouveau-Brunswick"},{"val":1309,"txt":"Nouvelle-%C9cosse"},{"val":1310,"txt":"Nunavut"},{"val":1311,"txt":"Ontario"},{"val":1313,"txt":"Qu%E9bec"},{"val":1314,"txt":"Saskatchewan"},{"val":1307,"txt":"Terre-Neuve-et-Labrador"},{"val":1308,"txt":"Territoire%20du%20Nord-Ouest"},{"val":1315,"txt":"Yukon"},{"val":-1,"txt":"International"}],
  AreaItems:{"area1304":[{"val":489,"txt":"Abbotsford%20et%20les%20environs"},{"val":490,"txt":"Kamloops%20et%20les%20environs"},{"val":491,"txt":"Kelowna%20et%20les%20environs"},{"val":492,"txt":"Nanaimo%20et%20les%20environs"},{"val":488,"txt":"Nelson%20et%20les%20environs"},{"val":493,"txt":"Prince%20George%20et%20les%20environs"},{"val":494,"txt":"Vancouver%20et%20les%20environs"},{"val":495,"txt":"Victoria%20et%20les%20environs"},{"val":538,"txt":"Autre"}],"area1311":[{"val":503,"txt":"Barrie%20et%20les%20environs"},{"val":504,"txt":"Belleville%20et%20les%20environs"},{"val":554,"txt":"Bolton%20et%20les%20environs"},{"val":555,"txt":"Brampton%20et%20les%20environs"},{"val":505,"txt":"Brantford%20et%20les%20environs"},{"val":556,"txt":"Cambridge%20et%20les%20environs"},{"val":557,"txt":"Chatham%20et%20les%20environs"},{"val":506,"txt":"Guelph%20et%20les%20environs"},{"val":507,"txt":"Hamilton%20et%20les%20environs"},{"val":508,"txt":"Kingston%20et%20les%20environs"},{"val":509,"txt":"Kitchener%20et%20les%20environs"},{"val":510,"txt":"London%20et%20les%20environs"},{"val":511,"txt":"Markham%20et%20les%20environs"},{"val":512,"txt":"Mississauga%20et%20les%20environs"},{"val":558,"txt":"Newmarket%20et%20les%20environs"},{"val":513,"txt":"North%20Bay%20et%20les%20environs"},{"val":559,"txt":"North%20York%20et%20les%20environs"},{"val":514,"txt":"Oakville%20et%20les%20environs"},{"val":515,"txt":"Oshawa%20et%20les%20environs"},{"val":516,"txt":"Ottawa%20et%20les%20environs"},{"val":517,"txt":"Peterborough%20et%20les%20environs"},{"val":560,"txt":"Sarnia%20et%20les%20environs"},{"val":518,"txt":"Sault%20Ste.%20Marie%20et%20les%20environs"},{"val":561,"txt":"Scarborough%20et%20les%20environs"},{"val":519,"txt":"Simcoe%20et%20les%20environs"},{"val":520,"txt":"St.%20Catharines%20et%20les%20environs"},{"val":521,"txt":"Sudbury%20et%20les%20environs"},{"val":522,"txt":"Thunder%20Bay%20et%20les%20environs"},{"val":523,"txt":"Toronto%20et%20les%20environs"},{"val":524,"txt":"Windsor%20et%20les%20environs"},{"val":562,"txt":"Woodstock%20et%20les%20environs"},{"val":543,"txt":"Autre"}],"area1305":[{"val":496,"txt":"Brandon%20et%20les%20environs"},{"val":497,"txt":"Winnipeg%20et%20les%20environs%20"},{"val":539,"txt":"Autre"}],"area1303":[{"val":481,"txt":"Calgary%20et%20les%20environs"},{"val":482,"txt":"Edmonton%20et%20les%20environs"},{"val":483,"txt":"Fort%20McMurray%20et%20les%20environs"},{"val":484,"txt":"Grande%20Prairie%20et%20les%20environs"},{"val":485,"txt":"Lethbridge%20et%20les%20environs"},{"val":486,"txt":"Medicine%20Hat%20et%20les%20environs"},{"val":487,"txt":"Red%20Deer%20et%20les%20environs"},{"val":537,"txt":"Autre"}],"area1309":[{"val":547,"txt":"Cap-Breton%20et%20les%20environs"},{"val":502,"txt":"Halifax%20et%20les%20environs"},{"val":542,"txt":"Autre"}],"area1312":[{"val":525,"txt":"Charlottetown%20et%20les%20environs"},{"val":544,"txt":"Autre"}],"area1313":[{"val":526,"txt":"Drummondville%20et%20les%20environs"},{"val":527,"txt":"Gatineau%20et%20les%20environs"},{"val":563,"txt":"Granby%20et%20les%20environs"},{"val":528,"txt":"Laval%20et%20les%20environs"},{"val":529,"txt":"Longueuil%20et%20les%20environs"},{"val":530,"txt":"Montr%E9al%20et%20les%20environs"},{"val":531,"txt":"Qu%E9bec%20et%20les%20environs"},{"val":532,"txt":"Saguenay%20et%20les%20environs"},{"val":533,"txt":"Sherbrooke%20et%20les%20environs"},{"val":534,"txt":"Trois-Rivi%E8res%20et%20les%20environs"},{"val":545,"txt":"Autre"}],"area1306":[{"val":498,"txt":"Fredericton%20et%20les%20environs"},{"val":499,"txt":"Moncton%20et%20les%20environs"},{"val":500,"txt":"Saint-Jean%20et%20les%20environs"},{"val":540,"txt":"Autre"}],"area1310":[{"val":552,"txt":"Iqaluit%20et%20les%20environs"},{"val":553,"txt":"Autre"}],"area1314":[{"val":535,"txt":"Regina%20et%20les%20environs"},{"val":536,"txt":"Saskatoon%20et%20les%20environs"},{"val":546,"txt":"Autre"}],"area1307":[{"val":501,"txt":"St.%20John%27s%20et%20les%20environs"},{"val":541,"txt":"Autre"}],"area1315":[{"val":550,"txt":"Whitehorse%20et%20les%20environs"},{"val":551,"txt":"Autre"}],"area1308":[{"val":548,"txt":"Yellowknife%20et%20les%20environs"},{"val":549,"txt":"Autre"}]},
  DivisionItems:[{"val":0,"txt":"Tous"},{"val":16,"txt":"Postes internes permanents"},{"val":3,"txt":"Contrat"},{"val":5,"txt":"Occasionnel"},{"val":13,"txt":"Permanent"},{"val":12,"txt":"Saisonnier"},{"val":15,"txt":"Temporaire"},{"val":2,"txt":"Temps%20complet"},{"val":4,"txt":"Temps%20partiel"}]
};
