// JavaScript Document
//improve bar support
var strElemOpen = "";//element in improve bar that is currently open
var CLASS_OPEN_HREF = "twiddle_open";
var CLASS_CLOSED_HREF = "twiddle_closed";

function PageQuery(q)
{
    if(q.length > 1) this.q = q.substring(1, q.length);
    else this.q = null;
    this.keyValuePairs = new Array();
    if(q) {
        for(var i=0; i < this.q.split("&").length; i++) {
        this.keyValuePairs[i] = this.q.split("&")[i];
        }
    }
    this.getKeyValuePairs = function() { return this.keyValuePairs; }
    this.getValue = function(s)
    {
      for(var j=0; j < this.keyValuePairs.length; j++)
      {
          if(this.keyValuePairs[j].split("=")[0].toLowerCase() == s.toLowerCase())
          {
              return this.keyValuePairs[j].split("=")[1];
          }
      }
      return false;
    }
    
    this.getValues = function(s) {
        var retVal = "";
        for(var j=0; j < this.keyValuePairs.length; j++) {
            if(this.keyValuePairs[j].split("=")[0].toLowerCase() == s.toLowerCase()) {
                retVal += this.keyValuePairs[j].split("=")[1] + ",";
            }
        }
        if (retVal != "")  return retVal.substring(0,retVal.length-1);
        else return false;
    }
    
    this.containsValue = function(k,v)
    {
      for(var j=0; j < this.keyValuePairs.length; j++) 
      {
          if(this.keyValuePairs[j].split("=")[0].toLowerCase() == k.toLowerCase())
          {
              if(this.keyValuePairs[j].split("=")[1] == v)
              {
                  return true;
              }
              
              //the value may be comma separated 
              var ls_val = this.keyValuePairs[j].split("=")[1];
              ls_val = decodeURIComponent(ls_val);
              var arrValues = ls_val.split(",");
              for(li_index in arrValues)
              {
                  if(v == arrValues[li_index])
                  {
                      return true;
                  }
              }
          }
      }
      return false;    
    }

    this.getParameters = function() {
    var a = new Array(this.getLength());
    for(var j=0; j < this.keyValuePairs.length; j++) {
    a[j] = this.keyValuePairs[j].split("=")[0];
    }
    return a;
    }
    this.getLength = function() { return this.keyValuePairs.length; }
}
function queryString(key)
{
    var page = new PageQuery(window.location.search);
    return page.getValue(key);
}
function hasKeyValue(a_key, a_value)
{
    var page = new PageQuery(window.location.search);
    return page.containsValue(a_key, a_value);
}
var ls_cpiUrlRight = 'http://media.monster.com/id/js/mons/JSRD/IpvSrc_Closed_arrow_opn.gif';
var ls_cpiUrlDown  = 'http://media.monster.com/id/js/mons/JSRD/IpvSrc_arow_opn.gif';


function hideElement(strElem)
{
    var obj = document.getElementById(strElem);
	var objHref = document.getElementById('cpa_' + strElem);
    if (obj == null){return;}
	if (objHref == null){return;}

	//show elm
    objHref.className = CLASS_CLOSED_HREF;
    obj.style.display = "none";    

    strElemOpen = "";
}

function showElementExclusively(strElem)
{
    var blnClosing = false;
    if(strElem == strElemOpen)//clicked the same elem twice, so hide it and do not show
    {
        blnClosing = true;
    }
    hideElement(strElemOpen);
    if(blnClosing)//clicked the same elem twice, so hide it and do not show
    {
        return;
    }

    var obj = document.getElementById(strElem);
    if (obj == null){return;}
    var objHref = document.getElementById('cpa_' + strElem);
    if (objHref == null){return;}

	//show elm
    objHref.className = CLASS_OPEN_HREF;
    obj.style.display = "";

    //save the ref so we can hide it the next time
    strElemOpen = strElem;  
}

function switchElement(strElem)
{
    var obj = document.getElementById(strElem);
     var objHref = document.getElementById('cpa_' + strElem);
    if (obj == null){return;}
    if (objHref == null){return;}
    if (obj.style.display == "none")
    {
      objHref.className = CLASS_OPEN_HREF;
      obj.style.display = "";
    }
    else
    {
      objHref.className = CLASS_CLOSED_HREF;
      obj.style.display = "none";
    }
}

function HasAllOptions(as_id)
{
    if("jts" == as_id)
    {
        if(hasKeyValue("jt","2") && hasKeyValue("jt","1") && hasKeyValue("jt","26"))
        {
            return true;
        }
    }
    if("jtt" == as_id)
    {
        if(hasKeyValue("jt","4") && hasKeyValue("jt","3") && hasKeyValue("jt","5") && hasKeyValue("jt","20"))
        {
            return true;
        }
    }

    return false;
}

function buildLinksList(as_id, as_list, as_title, ai_re, as_closeLink, ignore_refinement)
{
  var realKey = as_id;
  if((realKey == 'jts')||(realKey == 'jtt')){realKey = 'jt';}

  //determine if this block should be open
  var blnOpen = false;

  if(realKey == 'jt')
  {
      if(as_id == 'jts')
      {
          blnOpen = ((hasKeyValue('jt','2') || hasKeyValue('jt','1') || hasKeyValue('jt','26')) && !HasAllOptions("jts"))
      }
      else
      {
          blnOpen = ((hasKeyValue('jt','4') || hasKeyValue('jt','3') || hasKeyValue('jt','5') || hasKeyValue('jt','20')) && !HasAllOptions("jtt"))
      }
  }
  else
  {
      if (queryString(realKey))
      {
          blnOpen = true;
      }
  }

  document.write('<div class="JSR_refine_wrapper">');
  document.write('<a class="' + CLASS_CLOSED_HREF + '" id="cpa_cp_' + as_id + '" href="javascript:showElementExclusively(\'cp_'+ as_id +'\');">');
  document.write(as_title + '</a>');

	var cells=as_list.split('|');
	var strListOfSelectedItems = "";

  document.write('<div id="cp_'+as_id+'" class=\"ImpBoxLinksOuter\" '+ (false ? 'style="border:red solid 1px;z-index: 1000;"' : 'style="display:none;z-index: 1000;"') +' ><div class="ImpBoxLinksBetween"><table><tr><td>');
  document.write('<table border="0" width="100%"><tr><td>');
  document.write("<div class=\"ImpBoxLinksTitle\">" + as_title + "</div>"); 
  document.write('</td><td align="right">');
  document.write('<div class="ImpCloseButton"><a href="javascript:hideElement(\'cp_' + as_id + '\')">' + as_closeLink + '</a></div>');
  document.write('</td></tr></table>');
  document.write('<div class="ImpBoxLinksInner">');

//write all items
  for(var i=0; i<cells.length; i+=2)
  {
    var intId = cells[i];
    var strDesc = cells[i + 1];

	if (strDesc == undefined)
	{
		break;//maybe the list ends with a |
	}

    var realVal = intId;
    var realValToCall = intId 
    if(realKey == "jt")
    {
		var tempArr = intId.split("[");
		realVal = tempArr[0];
		realValToCall = "[" + tempArr[1];
    }
    
    //removing this for .NET, seems the trailing d is not in use anymore
    //if((realKey == 'tm')&&(realVal != "")){realVal += 'd';}

    //determine if this item has been selected
    var blnSel = false;
    // Temporary solution to ignore certain refinements until the search index is revamped
    if (ignore_refinement)
    {
		if (i==0) blnSel = true;
    }
    else
    {
		if(realVal == "0")
		{
			if(!queryString(realKey) || ((realKey == "jt") && (!blnOpen)))
			{
				blnSel = true;
			}
		}
		else
		{
			if((hasKeyValue(realKey, realVal)) && (!HasAllOptions(as_id)))
			{
				blnSel = true;
			}
			else if(as_id == 'SRID')
			{
				var ls_SRID = realVal.split(",")[0];
				if(hasKeyValue(realKey, ls_SRID))
				{
					blnSel = true;
				}
				else if((ls_SRID == 0) && (!queryString(realKey)))
				{
					blnSel = true;
				}
			}
		}
	}
    
    document.write("<div" + (blnSel ? " class=\"ImpLinkSel\" " :"") + ">" + (blnSel ? "<img src=\"http://media.monster.com/id/njs/58/other_images/orange_solid_rt_arrow_4x6.gif\" border=\"0\"> " : "") + "<a href=\"javascript:_jsevt(['re'," + ai_re + "],['" + as_id + "'," + realValToCall.toString() + "]);\">" + strDesc + "</a></div>\n");
    
    if(blnSel)
    {
        strListOfSelectedItems += fixDisplayString(strDesc);
    }
  }
  document.write('</div></td></tr></table></div></div>');
  document.write(strListOfSelectedItems);
  
  document.write('</div>');
}


//alert('buildRefinementBox')
// buildRefinementBox is an alternative to buildLinksList.
// The key improvements are: 
//  1) use a javascript literal (array of arrays) instead of pipe-delim string.
//  2) determine the selected item on the server, not the client.
// Here is an example:
// var list_tm = [['-1','All jobs','',0],['0','Today','',1],['1','Yesterday','',0],['3','Last 3 days','',0],['5','Last 5 days','',0],['10','Last 10 days','',0],['30','Last 30 days','',0],['60','Last 60 days','',0]];
// buildRefinementBox('tm', list_tm, '<B>Job Posting Date</B>', 13);
function buildRefinementBox(as_id, as_list, as_title, ai_re, as_closeLink)
{
  document.write('<div class="JSR_refine_wrapper">');  
  document.write('<a class="' + CLASS_CLOSED_HREF + '" id="cpa_cp_' + as_id + '" href="javascript:showElementExclusively(\'cp_'+ as_id +'\');">');
  document.write(as_title + '</a>');
  document.write('<div id="cp_'+as_id+'" class=\"ImpBoxLinksOuter\" '+ (false ? 'style="border:red solid 1px;z-index: 1000;"' : 'style="display:none;z-index: 1000;"') +' ><div class="ImpBoxLinksBetween"><table><tr><td>');
  document.write('<table border="0" width="100%"><tr><td>');
  document.write("<div class=\"ImpBoxLinksTitle\">" + as_title + "</div>"); 
  document.write('</td><td align="right">');
  document.write('<div class="ImpCloseButton"><a href="javascript:hideElement(\'cp_' + as_id + '\')">' + as_closeLink + '</a></div>');
  document.write('</td></tr></table>');
  document.write('<div class="ImpBoxLinksInner">');

//write all items
	var strListOfSelectedItems = "";
	
  // process the list
  for ( var k in as_list ) {
	var oneitem = as_list[k];
	var strNavValue = oneitem[0]; // the navigation value 
	var strDesc = oneitem[1]; // item description
	var strCount = oneitem[2]; // the count portion of the description
	var bSelected = oneitem[3]; // 1 if selected, 0 otherwise
	// append the count to the desc
	strDesc = strDesc+" "+strCount;
	// write the item to the page
    document.write( "<div" + 
		(bSelected ? " class=\"ImpLinkSel\" " :"") + 
		">" + 
		(bSelected ? "<img src=\"http://media.monster.com/id/njs/58/other_images/orange_solid_rt_arrow_4x6.gif\" border=\"0\"> " : "") + 
		"<a href=\"javascript:_jsevt(['re'," + ai_re + "],['" + as_id + "','" + strNavValue + "']);\">" + 
		strDesc + 
		"</a></div>\n"
		);
    
    if(bSelected)
    {
		strListOfSelectedItems += fixDisplayString(strDesc);
    }
  }

  document.write('</div></td></tr></table></div></div>');
  document.write(strListOfSelectedItems);
  
  document.write('</div>');
}

function fixDisplayString(displayString)
{
	// Add a <wbr> tag after each / in the string to suggest to the browser that it is OK to break the string
	// after a / character
	return displayString.replace(/\//g,'/<wbr>');
}