var opera = (navigator.appName.indexOf("Opera") != -1) ? true : false;
var firefox = navigator.userAgent.toLowerCase(); 
    firefox = (firefox.indexOf("firefox") != -1) ? true : false;
var safari = navigator.userAgent.toLowerCase();
    safari = ((safari.indexOf("safari") != -1) && (safari.indexOf("chrome") == -1)) ? true : false;
var chrome = navigator.userAgent.toLowerCase();
    chrome = (chrome.indexOf("chrome") != -1) ? true : false;
var msie_only = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
var msie_old = false; // MSIE older than 7.0
var msie_80  = false; // MSIE 8.0 or newer
var msie_70  = false; // MSIE 7.0
var msie_60  = false; // MSIE 6.0
var msie_55  = false; // MSIE 5.5

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_80  = (parseFloat(verStr) >= 8.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;
}

document.writeln('<style type="text/css">\n/*<![CDATA[*/\n');
if (msie_old == true) {
  document.writeln('.PublicNav {right:134px;}\n');
  document.writeln('#WidthBlock {height:430px;}\n');
}

if (document.URL.indexOf("globalNav=candidate_area") > -1) {
  document.writeln('#WidthBlock {min-height:770px;}\n');
}

if ((msie_old == true) && (document.URL.indexOf("globalNav=candidate_area") > -1)) {
  document.writeln('#WidthBlock {height:770px;}\n');
}

if (msie_only == true) {
}

if (opera == true) {
  document.writeln('.radio_texts_v2 label {top:0px;}\n');
  document.writeln('.radio_texts_v3 label {top:0px;}\n');
}

if (firefox == true) {
  document.writeln('.form_editbox_6a {width: 113px;}\n');
}

if (safari == true) {
  document.writeln('.PublicNav .Inactive .Centre a {padding:4px 1px 3px 1px;}\n');
  document.writeln('.PublicNav .Active .Centre a, .PublicNav .ActiveHover .Centre a, .PublicNav .InactiveHover .Centre a {padding:4px 1px 3px 1px;}\n');
  document.writeln('.PublicNav {right:134px;}\n');
  document.writeln('.radio_texts_v2 label {top:0px;}\n');
  document.writeln('.radio_texts_v3 label {top:0px;}\n');
 }
 
if (chrome == true) {

}
document.writeln('/*]]>*/\n</style>\n');


function globalNavOver(item_ref) {
  if ((item_ref.parentNode).parentNode.className == "Inactive")      (item_ref.parentNode).parentNode.className = "InactiveHover";
  if ((item_ref.parentNode).parentNode.className == "InactiveHover") (item_ref.parentNode).parentNode.className = "InactiveHover";
  if ((item_ref.parentNode).parentNode.className == "Active")        (item_ref.parentNode).parentNode.className = "ActiveHover";
  if ((item_ref.parentNode).parentNode.className == "ActiveHover")   (item_ref.parentNode).parentNode.className = "ActiveHover";
}

function globalNavOut(item_ref) {
  if ((item_ref.parentNode).parentNode.className == "Inactive")      (item_ref.parentNode).parentNode.className = "Inactive";
  if ((item_ref.parentNode).parentNode.className == "InactiveHover") (item_ref.parentNode).parentNode.className = "Inactive";
  if ((item_ref.parentNode).parentNode.className == "Active")        (item_ref.parentNode).parentNode.className = "Active";
  if ((item_ref.parentNode).parentNode.className == "ActiveHover")   (item_ref.parentNode).parentNode.className = "Active";  
}

//used on assessmentcentredates_area/add_page_1.ascx and assessmentcentredates_area/edit_page_1.ascx
function __CopyLine2(line_number) {
  source_line_number = parseInt(line_number);
  target_line_number = parseInt(line_number) + 1;
        
  if (document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtStartTime")) document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtStartTime").value = document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + source_line_number + "_txtStartTime").value;
  if (document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtLength")) document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtLength").value = document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + source_line_number + "_txtLength").value;
  if (document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtMaxCandidates")) document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + target_line_number + "_txtMaxCandidates").value = document.getElementById("_ctl4_rptAssessmentCentreDatesList__ctl" + source_line_number + "_txtMaxCandidates").value;
}

//used on interviewvenuedates_area/add_page_1.ascx and interviewvenuedates_area/edit_page_1.ascx
function __CopyLine3(line_number) {
  source_line_number = parseInt(line_number);
  target_line_number = parseInt(line_number) + 1;
        
  if (document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtStartTime"))     document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtStartTime").value = document.getElementById("_ctl4_rptInterviewDatesList__ctl" + source_line_number + "_txtStartTime").value;
  if (document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtLength"))        document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtLength").value = document.getElementById("_ctl4_rptInterviewDatesList__ctl" + source_line_number + "_txtLength").value;
  if (document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtMaxCandidates")) document.getElementById("_ctl4_rptInterviewDatesList__ctl" + target_line_number + "_txtMaxCandidates").value = document.getElementById("_ctl4_rptInterviewDatesList__ctl" + source_line_number + "_txtMaxCandidates").value;
}

function __confirmDelete(strNoteID) {
  if (confirm('This action cannot be undone. Delete this note?')) { 
    document.getElementById('SiteForm').NoteIDtoDelete.value = strNoteID;
    document.getElementById('SiteForm').submit();
  }  
}

//FILTER FUNCTIONS
//function invoked onload on body tag
function initArrays() {
  select_objects = document.getElementsByTagName('select'); //must be global
  all_selects = new Array();  //must be global, 3 dimensional array
  options_selected = new Array(); //must be global, 2 dimensional array
   
  for(var i=0; i<select_objects.length; i++) {
    var index = select_objects[i].id;  // id of select tag
    all_selects[index]= new Array();
    options_selected[index]= new Array();
    for (var j=0; j<select_objects[i].length; j++) {  //number of options elements in given select tag
      all_selects[index][j]= new Array();
      all_selects[index][j]['value'] = select_objects[i].options[j].value;
      all_selects[index][j]['text'] = select_objects[i].options[j].text;
    }//for j
  }//for i
}

//function invoked onkeyup of input tag containing search phrase
function filterFunction(select_id, filter) {
  //filter - reference to input tag containing filter phrase
  if (options_selected[select_id].length == 0) 
     selectFunction(document.getElementById(select_id)); // remember already selected options, not only these selected manualy
  var sel = document.getElementById(select_id);   
  sel.options.length=0; 
  var k=0;
  for (var i=0; i<all_selects[select_id].length; i++) {
    var t = all_selects[select_id][i]['text'];
    var t_for_search = t.toLowerCase();
    var v = all_selects[select_id][i]['value'];
    var filter_text = (typeof filter == "object") ? filter.value.toLowerCase() : '';
    if (t_for_search.indexOf(filter_text) == 0)
       sel.options[k++] = new Option(t, v, false, (typeof options_selected[select_id][v] != "undefined"));
  }
}

//function invoked onchange at select tag
function selectFunction(this_select) {
  var sel = document.getElementById(this_select.id); 
  var number_of_options = sel.options.length;  //in given select
  for (var i=0; i<number_of_options; i++) {
    if (sel.options[i].selected == true) {
      options_selected[this_select.id][sel.options[i].value]=true;
    } else {
      if (typeof options_selected[this_select.id][sel.options[i].value] != "undefined") 
        delete options_selected[this_select.id][sel.options[i].value];
    }
  }   
}

//function invoked before sending the form
function sendForm() {
  for (var i=0; i<select_objects.length; i++) {
    if (options_selected[select_objects[i].id].length > 0) //only if filter was used on given select
      filterFunction(select_objects[i].id, '');
  }
}

//end FILTER FUNCTIONS

/* Displays time left, takes value from hidden field, uses global variable */
var end_time_in_ms = "-1";
function countDown(hidden_field_container_id, visual_element_id) {
  var sec_from_hidden = parseInt(document.getElementById(hidden_field_container_id).getElementsByTagName("input")[0].value);
  if (sec_from_hidden < 0) sec_from_hidden = 0;
  var dateObj = new Date();
  var current_time_in_ms = dateObj.getTime();

  if (end_time_in_ms == -1) {
    end_time_in_ms = dateObj.getTime() + sec_from_hidden * 1000;
  }

  time_left_calculated_sec_all = Math.floor((end_time_in_ms - current_time_in_ms)/1000);
  time_left_calculated_min = Math.floor(time_left_calculated_sec_all / 60);
  time_left_calculated_sec = time_left_calculated_sec_all % 60;
    
  document.getElementById(visual_element_id).innerHTML = "Time Remaining: " + String(time_left_calculated_min) + " mins   " + String(time_left_calculated_sec) + " secs ";
  if (time_left_calculated_sec_all > 0) {
    setTimeout("countDown('" + hidden_field_container_id + "', '" + visual_element_id + "' )", 500);
  } else {
    window.alert("Time is up, however you can still complete this page of questions");
  }
}

//additional address information on some pages
function showBox(obj_ref) {
  var inner_text=obj_ref.nextSibling.innerHTML;
  if (inner_text.length > 2)
    obj_ref.nextSibling.style.display="block";
}

//additional address information on some pages
function hideBox(obj_ref) {
  var inner_text=obj_ref.nextSibling.innerHTML;
  if (inner_text.length > 2)
    obj_ref.nextSibling.style.display="none";
}

function clearField (field_to_clear, initial_value) {
  if (initial_value == field_to_clear.value) field_to_clear.value="";
} 

function fillField (field_to_clear, initial_value) {
  if (field_to_clear.value == "") field_to_clear.value=initial_value;
}

//for search panel
function clearSearchField(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="";
} 

//for search panel
function fillSearchField(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;
}

//Content Change Checker class
function ContentChangeChecker(content_container_id) {
  this.content_container_ref = document.getElementById(content_container_id);
  this.all_the_values = this.getAllTheValues();
}

ContentChangeChecker.prototype.getAllTheValues = function() {
  var values_tmp = "";
  var ref_list;

  //textboxes, hidden fields, password fields, file uploads, radios, checkboxes  //test fileupload
  ref_list = this.content_container_ref.getElementsByTagName("input");
  for(var i=0; i<ref_list.length; i++) {
    values_tmp += ref_list[i].value + ref_list[i].checked;
  }
  
  //ddlists, listboxes
  ref_list = this.content_container_ref.getElementsByTagName("select");
  for(var i=0; i<ref_list.length; i++) {
    for (var j=0; j<ref_list[i].length; j++){
      values_tmp += ref_list[i].options[j].selected ? "1" : ".";
    }
  }

  //textareas
  ref_list = this.content_container_ref.getElementsByTagName("textarea");
  for(var i=0; i<ref_list.length; i++) {
    values_tmp += ref_list[i].value;
  }
        
  //alert(values_tmp);
  return (values_tmp);
}

ContentChangeChecker.prototype.assignClickHandler = function(button_container_id) {
  var button_ref = document.getElementById(button_container_id).getElementsByTagName("input")[0];
  if (button_ref != null)
    button_ref.onclick = function () {return theChecker.checkChanges();};   
}

ContentChangeChecker.prototype.checkChanges = function() {
  if (this.all_the_values == this.getAllTheValues()) {
    return true;
  } else {
    return confirm ("The form has changed.\nDo you want to proceed without saving the changes?");
  }
}
//end of Content Change Checker class

function mapChange(location){
  if (location == "none") {
    document.getElementById('maplocation').src = "/images/spacer.gif";
  } else {
  	document.getElementById('maplocation').src = "/images/default/p_map_" + location + ".gif";
  }
}

function viewObjById(show_place){
  document.getElementById("east").style.display = "none";
  document.getElementById("west").style.display = "none";
  document.getElementById("south").style.display = "none";
  document.getElementById("north").style.display = "none";
  
  if (show_place != "none")
    document.getElementById(show_place).style.display = "block";
}


//Limits length of text in textarea "element" (dom reference), writes information in "info" (id), counts characters
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);
    document.getElementById(info).innerHTML="You may enter "+ characters_left +" more characters.";
  }
}

//init a textarea for characters limit
function initLengthInfo(textarea_container, info_id, max_length) {
  if (document.getElementById(textarea_container)) {
    element_ref = document.getElementById(textarea_container).getElementsByTagName("textarea")[0];
    checkLength(element_ref, info_id, max_length);
  }
}
