// this function is used for add event 
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); };
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

function getEventTarget(event)
{
    var targetElement = null;
    if (typeof event.target != "undefined")
    {
        targetElement = event.target;
    }
    else
    {
        targetElement = event.srcElement;
    }
    while (targetElement.nodeType == 3 && targetElement.parentNode != null)
    {
        targetElement = targetElement.parentNode;
    }
    return targetElement;
}

//kills the default action..
function cancelClick(e) { 
 if (window.event && window.event.returnValue) { 
    window.event.returnValue = false; 
     } 
      if (e && e.preventDefault) { 
         e.preventDefault(); 
          } 
 } 
function cancelClickSafari() { 
           return false; 
 } 

function setCookie(name, value, opts) {
    opts = opts || {};

    var today = new Date();
    today.setTime(today.getTime());

    var expires = 14 * 1000 * 60 * 60 * 24;
    var expires_date = new Date(today.getTime() + expires);

    var path = "/";
    if (opts.useFullPath) {
        // IE can't store cookies with a path name that ends in a
        // file, so instead, remove anything after the last '/'
        path = document.location.pathname;
        path = path.replace( /^(.*\/).*$/, "$1" );
    }

    document.cookie = name + "=" + escape(value) +
        ";expires=" + expires_date.toGMTString() +
        ";path=" + path;
}
// cookies
function rememberMe() {
    var element = document.getElementById('rememberme');
    if (element && element.checked) {
        setCookie('username',document.getElementById('username').value);
    }
    else {
        deleteCookie('username');
    }
    return true;
}

function getCookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }
    if (start == -1) return null;
    var end = document.cookie.indexOf(";", len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len, end));
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" + 
            ";path=/" + 
            ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}
function getPosition(theElement)
{
  var positionX = 0;
  var positionY = 0;

  while (theElement != null)
  {
    positionX += theElement.offsetLeft;
    positionY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }

  return [positionX, positionY];
}

function selectCompany( oSel )
{
    var aVals       = oSel.value.split("||");
    var sComId      = aVals[0];
    var sComStatus  = aVals[1];
    var sComCreated = aVals[2];
    var sComMod     = aVals[3];

    var oDispComId      = document.getElementById("com_id").firstChild;
    var oDispComStatus  = document.getElementById("com_status").firstChild;
    var oDispComCreated = document.getElementById("com_cust").firstChild;
    var oDispComMod     = document.getElementById("com_mod").firstChild;
    
    oDispComId.nodeValue      = sComId;
    oDispComCreated.nodeValue = sComCreated;
    oDispComMod.nodeValue     = sComMod;

    switch ( sComStatus ) {
        case "0":
        case "3":
            oDispComStatus.nodeValue = "Not used";
            break;
        case "1":
            oDispComStatus.nodeValue = "Unpublished";
            break;
        case "2":
            oDispComStatus.nodeValue = "Published";    
            break;
    }
    
    var oViewForm = document.getElementById("com_view");
    oViewForm.setAttribute("action", "/recruiting/company/" + sComId);

    var oDelForm = document.getElementById("com_del");
    oDelForm.setAttribute("action", "/recruiting/admin/company_delete/" + sComId);
}

function selectOnOther( oSel )
{
    var sOtherId = '_other_' + oSel.name;
    var oOther   = document.getElementById( sOtherId ); 
    var oDel     = document.getElementById('deletebtn'); 

    if ( oOther ) { 
        if ( oSel.value == sOtherId ) { 
            oOther.style.display = 'block';
            oOther.focus(); 
            if ( oDel ) { oDel.disabled = 1; } 
        } else { 
            oOther.style.display = 'none';
            if ( oDel ) { oDel.disabled = 0; } 
        } 
    }
}

function getElementsByAttribute(attribute, attributeValue)
{
  var elementArray = new Array();
  var matchedArray = new Array();

  if (document.all)
  {
    elementArray = document.all;
  }
  else
  {
    elementArray = document.getElementsByTagName("*");
  }

  for (var i = 0; i < elementArray.length; i++)
  {
    if (attribute == "class")
    {
      var pattern = new RegExp("(^| )" + attributeValue + "( |$)");

      if (elementArray[i].className.match(pattern))
      {
        matchedArray[matchedArray.length] = elementArray[i];
      }
    }
    else if (attribute == "for")
    {
      if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for"))
      {
        if (elementArray[i].htmlFor == attributeValue)
        {
          matchedArray[matchedArray.length] = elementArray[i];
        }
      }
    }
    else if (elementArray[i].getAttribute(attribute) == attributeValue)
    {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }

  return matchedArray;
}
function doLoadingFilters(objSelect,optionalObj) {
    ACI.Dialog.loading_candidates.show();
    dofilters(objSelect,optionalObj);
}
function dofilters(objSelect,optionalObj) {
    var objOpt;
    var isVal = (objSelect.type == 'radio' || objSelect.type == 'text');
    var val;
    
    if ( isVal ) {
        val = objSelect.value;
    } else {
        if (objSelect.selectedIndex<0) return false;
        objOpt = objSelect.options[objSelect.selectedIndex];
    }
    var currURL = window.location.href;
    var anchor = currURL.replace(/.*(\#.*)/,"$1");
    if (anchor == currURL) {
        anchor = "";
    }
    currURL = currURL.replace(anchor,"");
    var params = currURL.replace(/.*\?(.*)/,"$1");
    var newURL = currURL.replace(/(.*)\?(.*)/,"$1");
    if (params == currURL) {
        params = '';
    }
    var tokens = params.split("&");
    var list = {};
    for (i = 0; i < tokens.length; i++) {
        var paramname = tokens[i].replace(/(.*)=.*/,"$1");
        var paramval = tokens[i].replace(/.*=(.*)/,"$1");
        if (paramval != '') {
            list[paramname] = paramval;
        }
    }
        
    var name = objSelect.name;
    list[name] = isVal ? val : objOpt.value;
    if (optionalObj) {
        list[optionalObj.name] = optionalObj.value;
    }
    var newparams = '';
    for (var i in list) {
        if (!(i.match(/start/) || i.match(/page/))) {
            newparams += i+"="+list[i]+"&";
        }
    }
    newparams = newparams.replace(/&$/,"");
    window.location.href = newURL + "?" + newparams + anchor;
}

function doFiltersOnEnter( elem, event ) {
    var k = 0; 
    if ( window.event ) { 
        k = event.keyCode; 
    } else if ( event.which ) { 
        k = event.which; 
    } 
    if ( k == 13 ) { 
        doLoadingFilters( elem );
        return false; 
    } 
    return true;    
}
