function arrayContains(arr, value){
  for(i=0;i<arr.length;i++)
    if (arr[i]==value)
      return true;
  return false;
}
function addClass(what, className){
  what.className+=" "+className;
}
function removeClass(what, className){
  var classes=what.className.split(" ");
  var newClasses=new Array();
  for(var i=0;i<classes.length;i++)
    if (classes[i]!=className)
      newClasses[newClasses.length]=classes[i];
  what.className=newClasses.join(" ");
}
function over(what) {
  addClass(what,"over");
}

function out(what) {
  removeClass(what,"over");
}

function fireEvent(control, event){
  if (document.all) {
    control.fireEvent("on"+event); 
  }else {
    var event = window.document.createEvent("Event"); 
    event.initEvent(event, false, true); 
    control.dispatchEvent(event); 
  }
} function addEvent( obj, type, fn ) {
  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] );
  } else
    obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}
function linkDepartmentToOrganizationList(department_id,organization_id){
  var organization_list=document.getElementById(organization_id);
  var department_list=document.getElementById(department_id);
  if (organization_list){
    if (department_list){
      var original_organization_id=organization_list.value;
      var original_department_id=department_list.value;
      addEvent(organization_list,"change",
               function(){
                 new HttpRequest().start("get_organization_departments.html?organization_id="+organization_list.value,
                                         function(response_text){
                                           if (response_text.length>0){
                                             var result = eval('('+ response_text +')');
                                             if (result){
                                               department_list.options.length=0;
                                               department_list.options[department_list.options.length]=new Option("--Any--", 0);
                                               for(var i=0;i<result.length;i++){
                                                 var department=result[i];
                                                 var selected=false;
                                                 if (organization_list.value==original_organization_id && department.department_id==original_department_id){
                                                   selected=true;
                                                 }
                                                 department_list.options[department_list.options.length]=new Option(department.department_name, department.department_id,selected,selected);
                                               }
                                             }
                                           }
                                         }
                                         );
               });
    }else
      alert("Could not find department list "+department_id);
  }else
    alert("Could not find organization list "+organization_id);
}
function linkDepartmentAndUserToOrganizationList(department_id,user_id,organization_id){
  var organization_list=document.getElementById(organization_id);
  var department_list=document.getElementById(department_id);
  var user_list=document.getElementById(user_id);
  if (organization_list){
    if (department_list){
      if (user_list){
        var original_organization_id=organization_list.value;
        var original_department_id=department_list.value;
        var original_user_id=user_list.value;
        addEvent(organization_list,"change",
                 function(){
                   new HttpRequest().start("get_organization_departments.html?organization_id="+organization_list.value,
                                           function(response_text){
                                             if (response_text.length>0){
                                               var result = eval('('+ response_text +')');
                                               if (result){
                                                 department_list.options.length=0;
                                                 department_list.options[department_list.options.length]=new Option("--Any--", 0);
                                                 for(var i=0;i<result.length;i++){
                                                   var department=result[i];
                                                   var selected=false;
                                                   if (organization_list.value==original_organization_id && department.department_id==original_department_id){
                                                     selected=true;
                                                   }
                                                   department_list.options[department_list.options.length]=new Option(department.department_name, department.department_id,selected,selected);
                                                 }
                                               }
                                             }
                                           }
                                           );
                   new HttpRequest().start("get_organization_users.html?organization_id="+organization_list.value+"&department_id="+department_list.value,
                                           function(response_text){
                                             if (response_text.length>0){
                                               var result = eval('('+ response_text +')');
                                               if (result){
                                                 user_list.options.length=0;
                                                 user_list.options[user_list.options.length]=new Option("--Any--", 0);
                                                 for(var i=0;i<result.length;i++){
                                                   var user=result[i];
                                                   var selected=false;
                                                   if (organization_list.value==original_organization_id && user.user_id==original_user_id){
                                                     selected=true;
                                                   }
                                                   user_list.options[user_list.options.length]=new Option(user.name, user.user_id,selected,selected);
                                                 }
                                               }
                                             }
                                           }
                                           );
                 }
                 );
        
        addEvent(department_list,"change",
                 function(){
                   new HttpRequest().start("get_organization_users.html?organization_id="+organization_list.value+"&department_id="+department_list.value,
                                           function(response_text){
                                             if (response_text.length>0){
                                               var result = eval('('+ response_text +')');
                                               if (result){
                                                 user_list.options.length=0;
                                                 user_list.options[user_list.options.length]=new Option("--Any--", 0);
                                                 for(var i=0;i<result.length;i++){
                                                   var user=result[i];
                                                   var selected=false;
                                                   if (organization_list.value==original_organization_id && user.user_id==original_user_id){
                                                     selected=true;
                                                   }
                                                   user_list.options[user_list.options.length]=new Option(user.name, user.user_id,selected,selected);
                                                 }
                                               }
                                             }
                                           }
                                           );
                 }
                 );
        
      }else
        alert("Could not find user list "+user_id);
    }else
      alert("Could not find department list "+department_id);
  }else
    alert("Could not find organization list "+organization_id);
}
var g_ExpandedBoxes=new Array();
function addIfNotPresent(arr, value){
  if (arrayContains(arr, value)==false)
    arr[arr.length]=value;
}
function removeFromArray(arr, value){
  for(i=0;i<arr.length;i++)
    if (arr[i]==value){
      arr.splice(i,1);
      break;
    }
}
var g_ShowBoxLists=new Array();
function registerShowBoxList(showbox_list_id){
  addIfNotPresent(g_ShowBoxLists, showbox_list_id);
}
function updateShowBoxLists(){
  var innerhtml="";
  for(var i=0;i<g_ExpandedBoxes.length;i++){
    innerhtml+="<input type='hidden' name='show_box[]' value='"+g_ExpandedBoxes[i]+"'/>\n";
  }
  for(var i=0;i<g_ShowBoxLists.length;i++){
    var showboxlist=document.getElementById(g_ShowBoxLists[i]);
    if (showboxlist){
      showboxlist.innerHTML=innerhtml;
    }
  }
}
function toggleBox(expanding_box_id){
  var expanding_box=document.getElementById(expanding_box_id);
  if (expanding_box){
    var expanding_box_expander=document.getElementById(expanding_box_id+"_expander");
    var expanding_box_expander_toggle=document.getElementById(expanding_box_id+"_expander_toggle");
    if (expanding_box.style.display=="block"){
      expanding_box.style.display="none";
      expanding_box_expander_toggle.innerHTML="+";
      expanding_box_expander.title="Show this box";
      removeFromArray(g_ExpandedBoxes, expanding_box_id);
    }else{
      expanding_box.style.display="block";
      expanding_box_expander_toggle.innerHTML="-";
      expanding_box_expander.title="Hide this box";
      addIfNotPresent(g_ExpandedBoxes, expanding_box_id);
    }
  }
  updateShowBoxLists();
  return false;
}
function numbersonly(e) {
  var controlKeys=[8,9,35,36,37,39,46,13];
  var unicode=e.charCode? e.charCode : e.keyCode;
  return (arrayContains(controlKeys, unicode) || (unicode>=48 && unicode<=57));
} 
function getSelectedItems(list){
  var items=new Array();
  for(var i=0;i<list.options.length;i++)
    if (list.options[i].selected)
      items[items.length]=list.options[i].value;
  return items;
}
function linkDepartmentToOrganizationListMultiple(department_id,organization_id){
  var organization_list=document.getElementById(organization_id);
  var department_list=document.getElementById(department_id);
  if (organization_list){
    if (department_list){
      var original_department_ids=getSelectedItems(department_list);
      addEvent(organization_list,"change",
               function(){
                 var organization_ids=getSelectedItems(organization_list);
                 new HttpRequest().start("get_organizations_departments.html?organization_ids="+encodeURIComponent(organization_ids.join(",")),
                                         function(response_text){
                                           if (response_text.length>0){
                                             var result = eval('('+ response_text +')');
                                             if (result){
                                               department_list.options.length=0;
                                               department_list.options[department_list.options.length]=new Option("--Any--", 0);
                                               for(var i=0;i<result.length;i++){
                                                 var department=result[i];
                                                 var selected=false;
                                                 if (arrayContains(original_department_ids, department.department_id))
                                                   selected=true;
                                                 department_list.options[department_list.options.length]=new Option(department.department_name, department.department_id,selected,selected);
                                               }
                                             }
                                           }
                                         }
                                         );
               });
    }else
      alert("Could not find department list "+department_id);
  }else
    alert("Could not find organization list "+organization_id);
}
function sortByColumn(column, direction){
  document.getElementById('sort_column').value=column;
  document.getElementById('sort_direction').value=direction;
  document.getElementById('change_page').submit();
}
function setDateFilter(field, value){
  document.getElementById('page_num').value=0;
  var change_page_form=document.getElementById('change_page');
  var filter_hidden_field=document.getElementById("filter_"+field);
  if (filter_hidden_field){
    filter_hidden_field.value=value;
  }else{
    var hidden=document.createElement("input");
    hidden.setAttribute("type","hidden");
    hidden.setAttribute("name","filter_"+field);
    hidden.setAttribute("id","filter_"+field);
    hidden.setAttribute("value",value);
    change_page_form.appendChild(hidden);
  }
  change_page_form.submit();
}

