/* detecting type of browser; seting up variables available globally */
var by_id = (document.getElementById) ? true : false; //new browsers should use getElementById('zzzz')
var by_all = (document.all) ? true : false; //some old browsers
var opera = (navigator.appName=="Opera") ? true : false;
var msie_only = (navigator.appName=="Microsoft Internet Explorer") ? true : false; //all versions of MSIE
var msie_old = false; // all versions of MSIE older than 7
var msie_70  = false; // MSIE vesrion 7.0 or newer
var msie_55  = false; // only MSIE 5.5
var msie_60  = false; // only MSIE 6.0

if (msie_only) {  
  fullVerStr=navigator.appVersion;
  verStr = fullVerStr.substring(fullVerStr.indexOf('MSIE')+4,fullVerStr.length);
  verStr = verStr.substring(0,verStr.indexOf(';'));
  msie_old = (parseFloat(verStr)< 7.0) ? true : false;
  msie_70  = (parseFloat(verStr)>=7.0) ? true : false;
  msie_60  = (parseFloat(verStr)==6.0) ? true : false;
  msie_55  = (parseFloat(verStr)==5.5) ? true : false;
}

function initialCorrections() {
  if (msie_old) {
    document.getElementById('MiddleBlock').style.height="515px";
  }
}

function showOrHide(container_id, radio_ref, action) {
  if (action=="show") 
    if (radio_ref.checked) document.getElementById(container_id).style.display="block";
  if (action=="hide") 
    if (radio_ref.checked) document.getElementById(container_id).style.display="none";
}

//Stores value in cookie with given id and given life time. No matter if cookie existed before or not.
function toCookie(cookie_id, value, exp_sec) {
  var exp = new Date();
  exp.setTime(exp.getTime() + (exp_sec * 1000)); // time is in ms
  var cookie_name = "pml" + cookie_id + "=" + value;
  var cookie_expires = "expires=" + exp.toGMTString();
  document.cookie = cookie_name + ";" + cookie_expires;
}

//Returns value stored in cookie with given id, or -1 if cookie didn't exist (or is expired), multi value cookies resistant.
function fromCookie(cookie_id) {
  var labelName="pml" + cookie_id;
  var labelLen = labelName.length;
  var cookieData = document.cookie;
  var cLen = cookieData.length;
  var i = 0;
  var cEnd;
  while (i < cLen) {
    var j = i + labelLen;
    if (cookieData.substring(i,j) == labelName) {
      cEnd = cookieData.indexOf(";",j);
      if (cEnd == -1) {
        cEnd = cookieData.length;
      }
      return unescape(cookieData.substring(j+1, cEnd));
    }
  i++;
  }
  return "-1";
}

/* Displays test time left, takes values from hidden form field and updates it, uses also cookie to store time value */
function countDown(visual_element_id, hidden_field_id, page_id) {
  var sec_all=parseInt(document.getElementById(hidden_field_id).value);
  var sec_all_from_cookie = parseInt(fromCookie(page_id));
  if (sec_all_from_cookie > -1) sec_all = (sec_all_from_cookie < sec_all) ? sec_all_from_cookie : sec_all;
  var min = Math.floor(sec_all / 60);
  var sec = sec_all % 60; 
  if (sec < 0) sec = 0;
  if (min < 0) min = 0;
  document.getElementById(visual_element_id).innerHTML = "Time Remaining:<br /> " + String(min) + " mins   " + String(sec) + " secs ";
  sec_all--;
  if (sec >= 0) {
    document.getElementById(hidden_field_id).value = String(sec_all);
    toCookie(page_id, String(sec_all), "1200"); //cookie life time 1200s from now (20min)
  }  
  if (sec_all >= 0) setTimeout("countDown(\"" + visual_element_id + "\", \"" + hidden_field_id + "\", \"" + page_id + "\")", 1030); /* set to 1030 */
  if (sec_all < 0) window.alert("Time is up!");
}

function clearField (field_to_clear) {
  var tmp_obj = field_to_clear.previousSibling;
  tmp_obj=tmp_obj.previousSibling;
  var initial_value = tmp_obj.value;
  if (initial_value == field_to_clear.value) field_to_clear.value="";
} 

function fillField (field_to_fill) {
  var tmp_obj = field_to_fill.previousSibling;
  tmp_obj=tmp_obj.previousSibling;
  var initial_value = tmp_obj.value;
  if (field_to_fill.value == "") field_to_fill.value=initial_value;
}

/*Clicks "register" button if enter is pressed on project id field text area (instead of login button)*/
/*It doesn't work in FireFox... yet*/
function enterActionLogin() {
  var charCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
  if (charCode == 13) {
    //document.getElementById("ProjLoginInside").childNodes[1].style.display="none";
    document.getElementById("ProjLoginInside").childNodes[1].click();
    return false;            
  }
  return true;
}

/*Clicks search button if enter is pressed on any of text areas (instead of logout button)*/
/*It doesn't work in FireFox... yet*/
function enterActionSearch() {
  var charCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
  if (charCode == 13) {
    obj_tmp=document.getElementById("SearchBoxesInside");
    obj_tmp=obj_tmp.childNodes[obj_tmp.childNodes.length - 2]; //2 is relative position of send button in DOM tree
    //obj_tmp.style.display="none";
    obj_tmp.click();
    return false;            
  }
  return true;
}

/*assigns enterActionLogin() and enterActionSearch() to appropriate HTML elements*/
function assignFunctionsToEvents() {
  if (document.getElementById("ProjLoginInside")) {
    document.getElementById("ProjLoginInside").childNodes[0].onkeypress = enterActionLogin;
  }
  
  var obj_tmp;
  var str_tmp;
  if (document.getElementById("SearchBoxesInside")) {
    var SearchBoxRef=document.getElementById("SearchBoxesInside");
    for(var i=0; i<SearchBoxRef.childNodes.length; i++ ) {
      str_tmp = SearchBoxRef.childNodes[i].id;
      if (typeof str_tmp == "string") {
        if (str_tmp.substring(str_tmp.length-9, str_tmp.length) == "SearchBox")
          SearchBoxRef.childNodes[i].onkeypress = enterActionSearch;
      }
    }
  }
}


/*Job profiler functions*/
function sliderChange(row, col) {
  var text_version;
  var job_profile_container_ref;
  var text_1_ver_1_ref, text_1_ver_2_ref, text_1_ver_3_ref;
  var text_2_ver_1_ref, text_2_ver_2_ref, text_2_ver_3_ref;
  var text_3_ver_1_ref, text_3_ver_2_ref, text_3_ver_3_ref;
  var text_4_ver_1_ref, text_4_ver_2_ref, text_4_ver_3_ref;
  var hid_1_ref, hid_2_ref, hid_3_ref, hid_4_ref;
  
  if ((row<1)||(row>4)) {alert("Invalid JS function parameter"); return;}
  if ((col<1)||(col>10)) {alert("Invalid JS function parameter"); return;}
  
  job_profile_container_ref = document.getElementById("JobProfilerContainer");
  job_profile_container_ref.getElementsByTagName("img")[row].className="Row"+row+"Col"+col;
  //alert(  job_profile_container_ref.getElementsByTagName("img")[row].id);
  
  if ((col==1)||(col==2)||(col==3)||(col==4)) text_version="1";
  if ((col==5)||(col==6)) text_version="2";
  if ((col==7)||(col==8)||(col==9)||(col==10)) text_version="3";
  
  text_1_ver_1_ref=job_profile_container_ref.getElementsByTagName("div")[0]; 
  text_1_ver_2_ref=job_profile_container_ref.getElementsByTagName("div")[1]; 
  text_1_ver_3_ref=job_profile_container_ref.getElementsByTagName("div")[2]; 
  text_2_ver_1_ref=job_profile_container_ref.getElementsByTagName("div")[3]; 
  text_2_ver_2_ref=job_profile_container_ref.getElementsByTagName("div")[4]; 
  text_2_ver_3_ref=job_profile_container_ref.getElementsByTagName("div")[5]; 
  text_3_ver_1_ref=job_profile_container_ref.getElementsByTagName("div")[6]; 
  text_3_ver_2_ref=job_profile_container_ref.getElementsByTagName("div")[7]; 
  text_3_ver_3_ref=job_profile_container_ref.getElementsByTagName("div")[8]; 
  text_4_ver_1_ref=job_profile_container_ref.getElementsByTagName("div")[9]; 
  text_4_ver_2_ref=job_profile_container_ref.getElementsByTagName("div")[10]; 
  text_4_ver_3_ref=job_profile_container_ref.getElementsByTagName("div")[11]; 
  
  hid_1_ref=job_profile_container_ref.getElementsByTagName("input")[0];
  hid_2_ref=job_profile_container_ref.getElementsByTagName("input")[1];
  hid_3_ref=job_profile_container_ref.getElementsByTagName("input")[2];
  hid_4_ref=job_profile_container_ref.getElementsByTagName("input")[3];
  
  if (row==1) {
    text_1_ver_1_ref.style.display="none";
    text_1_ver_2_ref.style.display="none"; 
    text_1_ver_3_ref.style.display="none";
    if (text_version==1) {text_1_ver_1_ref.style.display="block";}
    if (text_version==2) {text_1_ver_2_ref.style.display="block";}
    if (text_version==3) {text_1_ver_3_ref.style.display="block";}
    hid_1_ref.value=col;
  }
  if (row==2) {
    text_2_ver_1_ref.style.display="none";
    text_2_ver_2_ref.style.display="none"; 
    text_2_ver_3_ref.style.display="none";
    if (text_version==1) {text_2_ver_1_ref.style.display="block";}
    if (text_version==2) {text_2_ver_2_ref.style.display="block";}
    if (text_version==3) {text_2_ver_3_ref.style.display="block";}
    hid_2_ref.value=col;
  }
  if (row==3) {
    text_3_ver_1_ref.style.display="none";
    text_3_ver_2_ref.style.display="none"; 
    text_3_ver_3_ref.style.display="none";
    if (text_version==1) {text_3_ver_1_ref.style.display="block";}
    if (text_version==2) {text_3_ver_2_ref.style.display="block";}
    if (text_version==3) {text_3_ver_3_ref.style.display="block";}
    hid_3_ref.value=col;
    
  }
  if (row==4) {
    text_4_ver_1_ref.style.display="none";
    text_4_ver_2_ref.style.display="none"; 
    text_4_ver_3_ref.style.display="none";
    if (text_version==1) {text_4_ver_1_ref.style.display="block";}
    if (text_version==2) {text_4_ver_2_ref.style.display="block";}
    if (text_version==3) {text_4_ver_3_ref.style.display="block";}
    hid_4_ref.value=col;    
  }
}

function updateJobProfiler() {
  var job_profile_container_ref;
  var hid_1_ref, hid_2_ref, hid_3_ref, hid_4_ref;
  
  job_profile_container_ref = document.getElementById("JobProfilerContainer");
  hid_1_ref=job_profile_container_ref.getElementsByTagName("input")[0];
  hid_2_ref=job_profile_container_ref.getElementsByTagName("input")[1];
  hid_3_ref=job_profile_container_ref.getElementsByTagName("input")[2];
  hid_4_ref=job_profile_container_ref.getElementsByTagName("input")[3];
  
  sliderChange("1", hid_1_ref.value);
  sliderChange("2", hid_2_ref.value);
  sliderChange("3", hid_3_ref.value);
  sliderChange("4", hid_4_ref.value);
}

/*Limites length of text in textarea "element", writes information in "info" */
function checkLength(element, info, max_length){
  var actual_length = element.value.length;
  var characters_left = max_length - actual_length;
  if (characters_left < 0) characters_left = 0;

  if (actual_length == 0) {
    document.getElementById(info).innerHTML="Maximum text length is "+ max_length +" characters.";
  }
  if ((actual_length > 0)&&(actual_length <= max_length)) {
    document.getElementById(info).innerHTML="You may enter "+ characters_left +" more characters.";
  }
  if (actual_length > max_length) {
    element.value = element.value.substr(0, max_length);
  }
}

/*Initializing "number of chcracters left" fields*/
function initLengthInfo(textarea_container, info_id, max_length ) {
  element_ref = document.getElementById(textarea_container).getElementsByTagName("textarea")[0];
  checkLength(element_ref, info_id, max_length);
}

/*Initializing "number of chcracters left" fields - older but still used version*/
function initCharactersLeft(parent_id){
  var parent_ref = document.getElementById(parent_id);
  document.getElementsByTagName("textarea")[0].focus();
}

function popupHelp(url) {
  window.open (url,"HelpWindow","toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,width=800,height=600");
}

function clearField2 (field_to_clear, initial_value) {
  if (initial_value == field_to_clear.value) field_to_clear.value="";
} 

function fillField2 (field_to_clear, initial_value) {
  if (field_to_clear.value == "") field_to_clear.value=initial_value;
}