/****************************
js/Util.js
Copyright Fortinet, Inc.
All rights reserved.
****************************/

var IE=navigator.userAgent.indexOf("MSIE")>0;
var FF=navigator.userAgent.indexOf("Gecko")>0;
var IE6= /MSIE (\d+\.\d+);/.test(navigator.userAgent)&&Number(RegExp.$1)==6;
var FF2= /Firefox\/(\d+\.\d+)/.test(navigator.userAgent)&&Number(RegExp.$1)==2;
function check(obj)
{
obj.checked=true; 
}
function uncheck(obj)
{
obj.checked=false;
}
function enable(obj)
{
obj.disabled=false;
}
function disable(obj)
{
obj.disabled=true;
}
function show(obj)
{
obj.style.display="";
}
function hide(obj)
{
obj.style.display="none";
}
function display(obj,isYes)
{
if(isYes)show(obj);
else hide(obj);
}
function isChecked(obj)
{
return(obj.checked==true);
}
function isUnchecked(obj)
{
return(obj.checked==false);
}
function isEnabled(obj)
{
return(obj.disabled==false);
}
function nobubble(event)
{
if(event.stopPropagation)
event.stopPropagation();
else
event.cancelBubble=true;
return false;
}
function popup_generic_i(link,windowName,width,height,attrs)
{
var x=((document.body.clientWidth?document.body.clientWidth+140:800)-width)/2; 
var y=((document.body.clientHeight?document.body.clientHeight+55+23:600)-height)/2; 
var popupWindow=window.open(link,windowName,attrs+',width='+width+',height='+height+',top='+y+',left='+x+',screenX='+x+',screenY='+y);
if(!popupWindow)
return;
popupWindow.resizeTo(width,height);
popupWindow.moveTo(x,y);
popupWindow.focus();
return popupWindow;
}
function popup_resizable(link,windowName,width,height)
{
return popup_generic_i(link,windowName,width,height,'dependent=yes,scrollbars=yes,resizable=1');
}
function popup(link,windowName,width,height)
{
return popup_generic_i(link,windowName,width,height,'scrollbars=yes,location=0');
}
function popup_nonscrollable(link,windowName,width,height)
{
return popup_generic_i(link,windowName,width,height,'dependent=yes,scrollbars=no,resizable=1');
}
function popupdlg(obj,link,width,height){
window.inputcontainer=obj;
popup(link,null,width,height);
}
function dlg_close(url)
{
if(window.opener){
window.close();
}else if(parent&&parent.wij_in_modal_op&&parent.wij_in_modal_op()){
parent.wij_end_modal_dialog();
}else if(url){
document.location=url;
}
}
function appendFormField(thisForm,name,value){
var obj=thisForm.elements[name];
if(!obj){
obj=document.createElement("input");
obj.type="hidden";
obj.name=name;
obj.id=name; 
thisForm.appendChild(obj);
}
obj.value=value;
return obj;
}
function passwd_change(thePasswd){
new_passwd=thePasswd.form["_"+thePasswd.name];
if(!new_passwd)
new_passwd=appendFormField(thePasswd.form,"_"+thePasswd.name,"");
new_passwd.value=thePasswd.value;
}
if(typeof(newObj)=="undefined"){
var newObj=null;
}
function addFieldOption(){
insertOption(newObj.field,new Option(newObj.name?newObj.name:newObj.value,newObj.value),null,true);
if(newObj.action)newObj.action(newObj.field);
}
function checkCreateObj(field,url,width,height,dlgname,action){
if(field.value!=""||field.selectedIndex!=1)
return false;
field.selectedIndex=0;
newObj=new Object();
newObj.addNewObj=addFieldOption;
newObj.field=field;
newObj.action=action;
if(dlgname)
popup(url,dlgname,width,height);
else
popup(url,"create_new_dlg",width,height);
}
function dlgButtonClick(link)
{
if(window.opener){
if(opener.inputcontainer)opener.inputcontainer=null;
if(opener.newObj)opener.newObj=null;
window.close();
return;
}
if(link&&link.length>0)document.location=link;
else history.back();
}
function dlgSubmitClick(val){
if(window.opener){
if(opener.newObj)
opener.newObj.value=typeof(val)=="String"?val:val.value;
if(val.form)
appendFormField(val.form,'retval',typeof(val)=="String"?val:val.value);
}
}
function insertOption(selectField,oOption,compareFn,selectOption){
var i=selectField.length;
if(compareFn){
for(i=0;i<selectField.length;i++){
if(compareFn(oOption,selectField.options[i])<0){
break;
}
}
}
try{
selectField.add(oOption,selectField.options[i]); 
}
catch(e){
selectField.add(oOption,i); 
}
if(selectOption){
selectField.options[i].selected=true;
}
return i;
}
function removeDupListItems(src_list,dest_list) 
{
var i,k;
for(i=0;i<src_list.length;i++){
for(k=0;k<dest_list.length;k++){
if(dest_list.options[k].value==src_list.options[i].value){
src_list.options[i].value=dest_list.options[k].value;
dest_list.options[k].selected=true;
}
}
}
deleteFromDestList(dest_list);
}
function removeDupListItemsSub(src_list,dest_list,sub_size) 
{
var i,k;
for(i=0;i<src_list.length;i++){
for(k=0;k<dest_list.length;k++){
if(dest_list.options[k].value.substring(sub_size)==src_list.options[i].value){
src_list.options[i].value=dest_list.options[k].value;
dest_list.options[k].selected=true;
}
}
}
deleteFromDestList(dest_list);
}
function pad_digit(num,len)
{
var str=''+num;
while(str.length<len)
str='0'+str;
return str;
}
function inactiveCountDown() 
{
if(window.opener){window.opener.top.location='/logout?timeout=1';self.close();}
else top.location="/logout?timeout=1";
return;
}
function clearInactiveCountDown()
{
var twind=null;
try{
if(window.opener)
twind=window.opener.top.window;
else
twind=top.window;
if(twind.inactiveOpenerTimer!=null){
window.clearTimeout(twind.inactiveOpenerTimer);
twind.inactiveOpenerTimer=null;
}
if(twind.inactiveTimer!=null){
if(window.opener)
window.opener.clearTimeout(twind.inactiveTimer);
else
window.clearTimeout(twind.inactiveTimer);
twind.inactiveTimer=null;
}
}catch(e){}
}
function setInactiveCountDown(secs)
{
var twind=null;
try{
if(window.opener)
twind=window.opener.top.window;
else
twind=top.window;
if(twind.inactiveOpenerTimer!=null){
window.clearTimeout(twind.inactiveOpenerTimer);
twind.inactiveOpenerTimer=null;
}
if(twind.inactiveTimer!=null){
if(window.opener)
window.opener.clearTimeout(twind.inactiveTimer);
else
window.clearTimeout(twind.inactiveTimer);
twind.inactiveTimer=null;
}
if(window.opener)
twind.inactiveOpenerTimer=window.setTimeout("inactiveCountDown()",secs*1000);
else
twind.inactiveTimer=window.setTimeout("inactiveCountDown()",secs*1000);
}catch(e){}
}
function get_xmlhttp(){
return window.XMLHttpRequest||!window.ActiveXObject?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
} 
function send_request(str_url,str_body){
var xmlhttp=get_xmlhttp();
var str_method=str_body?"POST":"GET";
xmlhttp.open(str_method,str_url,false);
xmlhttp.send(str_body);
return xmlhttp.responseText;
} 
var Request=new Object();
Request.send=function(url,method,callback,data,urlencoded){
var req=window.XMLHttpRequest||!window.ActiveXObject?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
var readychange=function(){
if(req.readyState<4) 
return;
req.onreadystatechange=function(){}; 
if(!callback)callback=function(){};
if(req.errorDetect)
callback(req);
else try{
if(req&&req.status&&req.status==200){
if(method=="POST")
callback(req);
else
callback(req,data);
}else if(typeof req=="undefined"||typeof req.status=="undefined"){
}else if(req.status==404){ 
alert('Request URL was not found.');
callback(req);
}
}catch(e){}
}
function do_request(){
if(method=="POST"){
req.open("POST",url,true);
if(urlencoded)req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.onreadystatechange=readychange;
req.send(data);
}else{
req.open("GET",url,true);
req.onreadystatechange=readychange;
req.send(null);
}
}
do_request();
return req;
}
Request.sendRawPOST=function(url,data,callback){
return Request.send(url,"POST",callback,data,false);
}
Request.sendPOST=function(url,data,callback){
return Request.send(url,"POST",callback,data,true);
}
Request.sendGET=function(url,callback,args){
return Request.send(url,"GET",callback,args);
}
var HTTPRequest={}; 
HTTPRequest.sendGET=function(url,callback,args){
var req=Request.send(url,"GET",callback,args);
try{req.errorDetect=true}catch(e){}; 
return req;
}
function obj_del(obj,msg){
var row_obj=obj.parentNode.parentNode;
var row_mout;
if(row_obj&&row_obj.config)
{
row_mout=row_obj.onmouseout;
row_obj.onmouseout=null;
}
var ret=confirm(msg);
if(row_obj&&row_obj.config)
{
row_obj.onmouseout=row_mout;
row_obj.onmouseout();
}
return ret;
}
function getValuesByName(nameExp,includeAll){
var i;
var re=new RegExp(nameExp);
var objElementArray=document.getElementsByTagName("input");
var values=new Array();
for(i=0;i<objElementArray.length;i++){
if(re.test(objElementArray[i].name)){
if(objElementArray[i].type=="checkbox"){
if(!includeAll&&!objElementArray[i].checked)continue;
if(includeAll&&!objElementArray[i].checked){
values[values.length]=0;
continue;
}
if(objElementArray[i].value=="on"){
values[values.length]=1;
}
else{
values[values.length]=objElementArray[i].value;
}
}else{
values[values.length]=objElementArray[i].value;
}
}
}
return values;
}
function setProperty(obj,property,value){
var evalStr="obj."+property+"="+value+";";
eval(evalStr);
}
function setPropertyByName(rootObj,elementNames,nameExp,property,value,use_id){
var i,j;
var re=new RegExp(nameExp);
var objElementArray;
var obj_ref;
if(use_id==null)
use_id=false;
for(i=0;i<elementNames.length;i++){
objElementArray=rootObj.getElementsByTagName(elementNames[i]);
for(j=0;j<objElementArray.length;j++){
obj_ref=use_id?objElementArray[j].id:objElementArray[j].name;
if(re.test(obj_ref)&&(!objElementArray[j].disabled||property=="disabled")){
setProperty(objElementArray[j],property,value);
}
}
}
}
function checkInputByName(rootObj,nameExp,checked){
setPropertyByName(rootObj,['input'],nameExp,"checked",checked);
}
function twistSection(controlObj,idArray){
if(!idArray||!idArray.length)
return;
var disp=$(idArray[0]).style.display=="none";
for(var i=0;i<idArray.length;i++)
$(idArray[i]).style.display=disp?"":"none";
if(controlObj.src)
controlObj.src="/theme/images/"+(disp?"twistie_expanded.gif":"twistie_collapsed.gif");
}
function selectOptions(selectObj,optionArray,compareFn,selectValue,scroll){
var numberSelected=0;
var objOption=null;
for(var i=0;i<selectObj.length;i++){
for(var j=0;j<optionArray.length;j++){
if(compareFn(selectObj[i],optionArray[j])==0){
selectObj[i].selected=selectValue;
numberSelected++;
objOption=selectObj[i];
break;
}
}
}
if(scroll&&objOption)objOption.scrollIntoView();
return numberSelected;
}
function optionsToArray(selectObj,mode,remove,startIndex,endIndex){
var optionArray=new Array();
var i=startIndex?startIndex:0;
endIndex=endIndex?endIndex:selectObj.length;
while(i<endIndex){
switch(mode){
case 0: 
if(!selectObj[i].selected){
optionArray[optionArray.length]=selectObj[i];
if(remove){
selectObj.removeChild(selectObj[i]);
endIndex--;
break;
}
}
i++;
break;
case 1: 
if(selectObj[i].selected){
optionArray[optionArray.length]=selectObj[i];
if(remove==1){
selectObj.removeChild(selectObj[i]);
endIndex--;
break;
}
}
i++;
break;
case 2:
default: 
optionArray[optionArray.length]=selectObj[i];
if(remove==1){
selectObj.removeChild(selectObj[i]);
endIndex--;
break;
}
i++;
}
}
return optionArray;
}
function arrayToOptions(selectObj,optionArray){
for(var i=0;i<optionArray.length;i++){
selectObj.options[selectObj.options.length]=new Option(optionArray[i].text,optionArray[i].value,optionArray[i].selected);
selectObj.options[selectObj.options.length-1].selected=optionArray[i].selected;
}
}
function stringToOption(stringArray){
var optionArray=new Array();
for(var i=0;i<stringArray.length;i++){
optionArray[i]=new Option(stringArray[i],stringArray[i],false);
optionArray[i].selected=false;
}
return optionArray;
}
function optionToString(optionArray){
var stringArray=[];
for(var i=0;i<optionArray.length;i++){
stringArray[i]=optionArray[i].value;
}
return stringArray;
}
function compareObjTextString(a,b){
if(a.text<b.text)return-1;
if(a.text>b.text)return 1;
return 0;
}
function compareObjValueString(a,b){
if(a.value<b.value)return-1;
if(a.value>b.value)return 1;
return 0;
}
function sortOptions(selectObj,compareFn){
var optionArray=optionsToArray(selectObj,2,1);
optionArray.sort(compareFn);
arrayToOptions(selectObj,optionArray);
}
function send_soap_request(request,callback)
{
var prefix="<?xml version='1.0' encoding='UTF-8'?>"+
'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"'+
'xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"'+
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'+
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+
'xmlns:ns2="urn:FortiAnalyzerWS"'+ 
'xmlns:ns1="http://localhost:8080/FortiAnalyzerWS.wsdl">'+
'<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><req>';
var suffix='</req></SOAP-ENV:Body></SOAP-ENV:Envelope>';
var message=prefix+request+suffix;
var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open('POST','/FortiAnalyzerWS',true);
xmlhttp.setRequestHeader("MessageType","CALL");
xmlhttp.setRequestHeader("Content-Type","text/xml");
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status>=200&&xmlhttp.status<300){
var xmldoc=xmlhttp.responseXML;
if(!xmldoc)
{
alert("Error \n")
return;
}
var env=xmldoc.getElementsByTagName('Envelope').item(0);
if(!env||env.childNodes.length<=0){
alert("Invalid reply, no SOAP body");
return;
}
var body=env.childNodes[0];
if(body.childNodes.length<=0){
alert("Invalid reply, no FortiResponse");
return;
}
var response=body.childNodes[0];
callback(response);
}else{
alert('There was a problem with the request.'+xmlhttp.status);
}
}
}
xmlhttp.send(message);
}
function clear_table(tablename)
{
var tbl=document.getElementById(tablename);
if(!tbl)
return;
var lastRow=tbl.rows.length;
var start_index=1; 
for(var r=lastRow-1;r>=start_index;r--)
{
tbl.deleteRow(r);
}
}
function add_row(tablename,arr)
{
var tbl=document.getElementById(tablename);
if(!tbl)
return;
var lastRow=tbl.rows.length;
var row=tbl.insertRow(lastRow);
for(r=0;r<arr.length;r++)
{
var cell=row.insertCell(r);
cell.innerHTML=arr[r];
}
}
function set_req_header(req,username,password,domain)
{
req=req+'<ns2:Header>'+
'<ns2:UserName>'+username+'</ns2:UserName>'+
'<ns2:Password>'+password+'</ns2:Password>'+
'<ns2:Domain>'+domain+'</ns2:Domain>'+
'</ns2:Header>';
return req;
}
function set_req_top_users(req,top_type,devicename,timeframe,maxmatch,start,search,resolve)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerNetworkSummary>'+
'<ns2:TopUsers>';
if(top_type==0){
req=req+'<ns2:Type>WebTraffic</ns2:Type>';
}else if(top_type==1){
req=req+'<ns2:Type>EmailTraffic</ns2:Type>';
}else if(top_type==2){
req=req+'<ns2:Type>FTPTraffic</ns2:Type>';
}else if(top_type==3){
req=req+'<ns2:Type>IM_P2PTraffic</ns2:Type>';
}
req=req+'<ns2:DeviceName>'+devicename+'</ns2:DeviceName>';
if(timeframe=='hour')
{
req=req+'<ns2:TimeFrame>Hour</ns2:TimeFrame>';
}else if(timeframe=='day')
{
req=req+'<ns2:TimeFrame>24 Hours</ns2:TimeFrame>';
}else if(timeframe=='week')
{
req=req+'<ns2:TimeFrame>7 Days</ns2:TimeFrame>';
}else if(timeframe=='month')
{
req=req+'<ns2:TimeFrame>30 Days</ns2:TimeFrame>';
}
req=req+'<ns2:MaxNumMatches>'+maxmatch+'</ns2:MaxNumMatches>';
req=req+'<ns2:StartIndex>'+start+'</ns2:StartIndex>';
req=req+'<ns2:SearchCriteria>'+search+'</ns2:SearchCriteria>';
if(resolve){
req=req+'<ns2:ResolveHostName>Yes</ns2:ResolveHostName>';
}else{
req=req+'<ns2:ResolveHostName>No</ns2:ResolveHostName>';
}
req=req+'</ns2:TopUsers></ns2:FortiAnalyzerNetworkSummary></ns2:Body>';
return req;
}
function list_top_users(fortiresponse)
{
var totalfound,totaldata,totalDownloads,totalMessages,totalfileTrans,totalUploads;
var table='datatable';
var no=1;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var topusers=fortiresponse.childNodes[0];
if(!topusers||topusers.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
var topusers_results=topusers.childNodes[0];
if(!topusers_results||topusers_results.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
clear_table(table);
for(var i=0;i<topusers_results.childNodes.length;i++)
{
if(topusers_results.childNodes[i].tagName=="ns2:TotalResultsFound"){
totalfound=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TotalDataInMB"){
totaldata=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TotalDownloads"){
totalDownloads=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TotalMessages"){
totalMessages=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TotalFileTransfers"){
totalfileTrans=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TotalUploads"){
totalUploads=topusers_results.childNodes[i].textContent;
}else if(topusers_results.childNodes[i].tagName=="ns2:TrafficSummariesEntries"){
var report_entry=topusers_results.childNodes[i];
var num_col=report_entry.childNodes.length+1;
var arr=new Array(num_col);
arr[0]=no++;
for(var x=1;x<num_col;x++)
{
arr[x]=""; 
if(report_entry.childNodes[x-1].tagName=="ns2:Traffic")
{
var v=report_entry.childNodes[x-1].textContent;
v=v/(1024*1024);
var val=v.toFixed(2);
}else if(report_entry.childNodes[x-1].tagName=="ns2:LastActivity")
{
var v=report_entry.childNodes[x-1].textContent;
var val1=v.replace("T"," ");
var val=val1.replace("Z","");
}else
{
val=report_entry.childNodes[x-1].textContent;
}
arr[x]=val;
}
add_row(table,arr);
}
}
var l=document.getElementById('datasummary');
if(totalUploads&&totalDownloads)
{
l.innerHTML=totaldata+" MB, "+totalDownloads+" Downloads, "+totalUploads+" Uploads";
}else if(totalMessages&&totalfileTrans)
{
l.innerHTML=totaldata+" MB, "+totalMessages+" Messages,"+totalfileTrans+" File transfers";
}else
{
l.innerHTML=totaldata+" MB";
}
}
function set_req_security_events(req,top_type,devicename,timeframe,maxmatch,start)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerNetworkSummary><ns2:SecurityEvent>';
if(top_type==1){
req=req+'<ns2:Type>VirusActivity</ns2:Type>';
}else if(top_type==2){
req=req+'<ns2:Type>IntrusionActivity</ns2:Type>';
}else if(top_type==3){
req=req+'<ns2:Type>SuspiciousTrafficActivity</ns2:Type>';
}else if(top_type==4){
req=req+'<ns2:Type>SuspiciousSessionsActivity</ns2:Type>';
}else if(top_type==5){
req=req+'<ns2:Type>AdministrativeActivity</ns2:Type>';
}
req=req+'<ns2:DeviceName>'+devicename+'</ns2:DeviceName>';
if(timeframe=="hour"){
req=req+'<ns2:TimeFrame>Hour</ns2:TimeFrame>';
}else if(timeframe=="day"){
req=req+'<ns2:TimeFrame>24 Hours</ns2:TimeFrame>';
}else if(timeframe=="week"){
req=req+'<ns2:TimeFrame>7 Days</ns2:TimeFrame>';
}else if(timeframe=="month"){
req=req+'<ns2:TimeFrame>30 Days</ns2:TimeFrame>';
}
req=req+'<ns2:MaxNumMatches>'+maxmatch+'</ns2:MaxNumMatches>';
req=req+'<ns2:StartIndex>'+start+'</ns2:StartIndex>';
req=req+'</ns2:SecurityEvent></ns2:FortiAnalyzerNetworkSummary></ns2:Body>';
return req;
}
function list_security_events(fortiresponse)
{
var totalfound,startindex;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var topusers=fortiresponse.childNodes[0];
if(!topusers||topusers.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
var topusers_results=topusers.childNodes[0];
if(!topusers_results||topusers_results.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
clear_table("datatable");
for(var i=0;i<topusers_results.childNodes.length;i++)
{
if(topusers_results.childNodes[i].tagName=="ns2:TotalResultsFound"){
totalfound=topusers_results.childNodes[i].textContent;
}else{
var report_entry=topusers_results.childNodes[i];
var num_col=report_entry.childNodes.length+1;
var arr=new Array(num_col);
arr[0]=i;
for(var x=1;x<num_col;x++)
{
arr[x]=""; 
if(report_entry.childNodes[x-1].tagName=="ns2:Usage")
{
var v=report_entry.childNodes[x-1].textContent;
v=v/(1024*1024);
var val=v.toFixed(2);
}else if(report_entry.childNodes[x-1].tagName=="ns2:LastActivity")
{
var v=report_entry.childNodes[x-1].textContent;
var val1=v.replace("T"," ");
var val=val1.replace("Z","");
}else
{
val=report_entry.childNodes[x-1].textContent;
}
arr[x]=val;
}
add_row("datatable",arr);
}
}
}
function list_security_events2(fortiresponse)
{
var totalfound,startindex;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var topusers=fortiresponse.childNodes[0];
if(!topusers||topusers.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
var topusers_results=topusers.childNodes[0];
if(!topusers_results||topusers_results.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
clear_table("datatable2");
for(var i=0;i<topusers_results.childNodes.length;i++)
{
if(topusers_results.childNodes[i].tagName=="ns2:TotalResultsFound"){
totalfound=topusers_results.childNodes[i].textContent;
}else{
var report_entry=topusers_results.childNodes[i];
var num_col=report_entry.childNodes.length+1;
var arr=new Array(num_col);
arr[0]=i;
for(var x=1;x<num_col;x++)
{
arr[x]=""; 
if(report_entry.childNodes[x-1].tagName=="ns2:Usage")
{
var v=report_entry.childNodes[x-1].textContent;
v=v/(1024*1024);
var val=v.toFixed(2);
}else if(report_entry.childNodes[x-1].tagName=="ns2:LastActivity")
{
var v=report_entry.childNodes[x-1].textContent;
var val1=v.replace("T"," ");
var val=val1.replace("Z","");
}else
{
val=report_entry.childNodes[x-1].textContent;
}
arr[x]=val;
}
add_row("datatable2",arr);
}
}
}
function set_req_device_summary(req,type,devicename,timeframe)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerNetworkSummary>'+
'<ns2:DeviceSummary>';
if(type==0){
req=req+'<ns2:Type>ProtocolDistribution</ns2:Type>';
}else if(type==1){
req=req+'<ns2:Type>WebFTP</ns2:Type>';
}else if(type==2){
req=req+'<ns2:Type>Email</ns2:Type>';
}else if(type==3){
req=req+'<ns2:Type>Multi-media</ns2:Type>';
}
req=req+'<ns2:DeviceName>'+devicename+'</ns2:DeviceName>';
if(timeframe=="hour"){
req=req+'<ns2:TimeFrame>Hour</ns2:TimeFrame>';
}else if(timeframe=="day"){
req=req+'<ns2:TimeFrame>24 Hours</ns2:TimeFrame>';
}else if(timeframe=="week"){
req=req+'<ns2:TimeFrame>7 Days</ns2:TimeFrame>';
}else if(timeframe=="month"){
req=req+'<ns2:TimeFrame>30 Days</ns2:TimeFrame>';
}
req=req+'</ns2:DeviceSummary></ns2:FortiAnalyzerNetworkSummary></ns2:Body>';
return req;
}
function list_device_summary(fortiresponse)
{
var totalfound,startindex;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");return;
}
var device_summary=fortiresponse.childNodes[0];
if(!device_summary||device_summary.childNodes.length<=0)
{
alert("Invalid syntax");return;
}
var device_summary_results=device_summary.childNodes[0];
if(!device_summary_results||device_summary_results.childNodes.length<=0)
{
alert("Invalid syntax");return;
}
for(var i=0;i<device_summary_results.childNodes.length;i++)
{
if(device_summary_results.childNodes[i].tagName=="ns2:DeviceSummaryGraph")
{
var img_entry=device_summary_results.childNodes[i];
var fields=img_entry.childNodes.length;
if(fields<2)
{
continue;
}
var img=document.getElementById('dataimg'+i);
img.src='data:image/png;base64,'+img_entry.childNodes[1].textContent;
}
}
}
function set_req_traffic_report(req,reportname,deletereport,config,devicename,timeframe,includetop,pdf,rtf)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerNetworkSummary>'+
'<ns2:TrafficReport>';
req=req+'<ns2:ReportName>'+reportname+'</ns2:ReportName>';
if(deletereport){
req=req+'<ns2:Command>Delete</ns2:Delete>';
}else{
req=req+'<ns2:Command>ConfigureAndRun</ns2:Delete>';
}
if(config){
req=req+'<ns2:Configure>';
if(timeframe=='hour')
{
req=req+'<ns2:TimeFrame>Hour</ns2:TimeFrame>';
}else if(timeframe=='day')
{
req=req+'<ns2:TimeFrame>24 Hours</ns2:TimeFrame>';
}else if(timeframe=='week')
{
req=req+'<ns2:TimeFrame>7 Days</ns2:TimeFrame>';
}else if(timeframe=='month')
{
req=req+'<ns2:TimeFrame>30 Days</ns2:TimeFrame>';
}
if(includetop){
req=req+'<ns2:IncludeTopUserSummary>Yes</ns2:IncludeTopUserSummary>';
}else{
req=req+'<ns2:IncludeTopUserSummary>No</ns2:IncludeTopUserSummary>';
}
req=req+'<ns2:DeviceName>'+devicename+'</ns2:DeviceName>';
if(pdf){
req=req+'<ns2:Output>PDF</ns2:Output>';
}
if(rtf){
req=req+'<ns2:Output>MSWord</ns2:Output>';
}
req=req+'</ns2:Configure>';
}
req=req+'</ns2:TrafficReport></ns2:FortiAnalyzerNetworkSummary></ns2:Body>';
return req;
}
function list_traffic_report(fortiresponse)
{
var totalfound,startindex;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");return;
}
var traffic_report=fortiresponse.childNodes[0];
if(!traffic_report||traffic_report.childNodes.length<=0)
{
alert("Invalid syntax");return;
}
var traffic_report_results=traffic_report.childNodes[0];
if(!traffic_report_results||traffic_report_results.childNodes.length<=0)
{
alert("Invalid syntax");return;
}
for(var i=0;i<traffic_report_results.childNodes.length;i++)
{
if(traffic_report_results.childNodes[i].tagName=="ns2:Status")
{
}
}
}
function set_req_browser_report(req,reporttype,starttime,endtime)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerListGeneratedReports>';
req=req+'<ns2:Type>'+reporttype+'</ns2:Type>';
req=req+'<ns2:CreateDateStart>'+starttime+'</ns2:CreateDateStart>';
req=req+'<ns2:CreateDateEnd>'+endtime+'</ns2:CreateDateEnd>';
req=req+'</ns2:FortiAnalyzerListGeneratedReports></ns2:Body>';
return req;
}
function list_browser_report(fortiresponse)
{
var val;
var table='datatable';
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var reports_results=fortiresponse.childNodes[0];
if(!reports_results||reports_results.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
clear_table(table);
for(var i=0;i<reports_results.childNodes.length;i++)
{
if(reports_results.childNodes[i].tagName=="ns2:ReportList"){
var report_entry=reports_results.childNodes[i];
var num_col=report_entry.childNodes.length+1;
var arr=new Array(num_col);
arr[0]=i;
for(var x=1;x<num_col;x++)
{
arr[x]=""; 
if(report_entry.childNodes[x-1].tagName=="ns2:GeneratedReport"){
val=report_entry.childNodes[x-1].textContent;
}else if(report_entry.childNodes[x-1].tagName=="ns2:StartTime"){
var v=report_entry.childNodes[x-1].textContent;
var val1=v.replace("T"," ");
val=val1.replace("Z","");
}else if(report_entry.childNodes[x-1].tagName=="ns2:EndTime"){
var v=report_entry.childNodes[x-1].textContent;
var val1=v.replace("T"," ");
val=val1.replace("Z","");
}else if(report_entry.childNodes[x-1].tagName=="ns2:ReportProgressPercent"){
val=report_entry.childNodes[x-1].textContent;
if(val!=100){
val+="%";
arr[x-1]=val;
}
val="";
}else if(report_entry.childNodes[x-1].tagName=="ns2:Size"){
val="";
}else if(report_entry.childNodes[x-1].tagName=="ns2:Formats"){
var var1="";
val=report_entry.childNodes[x-1].textContent;
if(val.indexOf("P")>=0)
var1+="PDF ";
if(val.indexOf("R")>0)
var1+="MSWord ";
if(val.indexOf("T")>0)
var1+="TXT ";
if(val.indexOf("M")>0)
var1+="MHT ";
val=var1;
}else if(report_entry.childNodes[x-1].tagName=="ns2:ActivityReports"){
}
arr[x]=val;
}
add_row(table,arr); 
}
}
}
function set_req_get_systemstatus(req)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerGetSystemStatus>';
req=req+'</ns2:FortiAnalyzerGetSystemStatus></ns2:Body>';
return req;
}
function list_get_systemstatus(fortiresponse)
{
var val;
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var system_status=fortiresponse.childNodes[0];
if(!system_status||system_status.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
for(var i=0;i<system_status.childNodes.length;i++)
{
if(system_status.childNodes[i].tagName=="ns2:SerialNumber"){
document.getElementById('SerialNumber').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:UpTime"){
document.getElementById('UpTime').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:HostName"){
document.getElementById('HostName').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:FirmwareVersion"){
document.getElementById('FirmwareVersion').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:LicenseInfo_RVSEngine"){
document.getElementById('LicenseInfo_RVSEngine').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:LicenseInfo_RVPPlugins"){
document.getElementById('LicenseInfo_RVPPlugins').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:DeviceLicense_FortiGateSyslogs_reg"){
document.getElementById('DeviceLicense_FortiGateSyslogs_reg').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:DeviceLicense_FortiGateSyslogs_unreg"){
document.getElementById('DeviceLicense_FortiGateSyslogs_unreg').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:DeviceLicense_FortiManagers_reg"){
document.getElementById('DeviceLicense_FortiManagers_reg').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:DeviceLicense_FortiManagers_unreg"){
document.getElementById('DeviceLicense_FortiManagers_unreg').innerHTML=system_status.childNodes[i].textContent;
}else if(system_status.childNodes[i].tagName=="ns2:SystemResources_mem"){
document.getElementById('SystemResources_mem').innerHTML=system_status.childNodes[i].textContent+"%";
}else if(system_status.childNodes[i].tagName=="ns2:SystemResources_cpu"){
document.getElementById('SystemResources_cpu').innerHTML=system_status.childNodes[i].textContent+"%";
}else if(system_status.childNodes[i].tagName=="ns2:SystemResources_HD"){
document.getElementById('SystemResources_HD').innerHTML=system_status.childNodes[i].textContent+"%";
}
}
}
function set_search(req,search_type,format,filter,maxmatch,start)
{
req=req+'<ns2:Body><ns2:FortiAnalyzerSearch>';
req=req+'<ns2:Content>'+search_type+'</ns2:Content>';
req=req+'<ns2:Format>'+format+'</ns2:Format>';
req=req+'<ns2:SearchCriteria>'+filter+'</ns2:SearchCriteria>';
req=req+'<ns2:MaxNumMatches>'+maxmatch+'</ns2:MaxNumMatches>';
req=req+'<ns2:StartIndex>'+start+'</ns2:StartIndex>';
req=req+'</ns2:FortiAnalyzerSearch></ns2:Body>';
return req;
}
function list_search(fortiresponse)
{
var totalfound=0,matchreturn,startindex;
var table='datatable'
if(!fortiresponse||fortiresponse.childNodes.length<=0)
{
alert("Data not available");
return;
}
var search_results=fortiresponse.childNodes[0];
if(!search_results||search_results.childNodes.length<=0)
{
alert("Invalid syntax");
return;
}
clear_table(table);
for(var i=0;i<search_results.childNodes.length;i++)
{
if(search_results.childNodes[i].tagName=="ns2:TotalResultsFound"){
totalfound=search_results.childNodes[i].textContent;
document.getElementById('totalmatch').innerHTML="total found:"+totalfound;
}else if(search_results.childNodes[i].tagName=="ns2:MatchesReturned"){
matchreturn=search_results.childNodes[i].textContent;
document.getElementById('current').innerHTML="current show:"+matchreturn;
}else if(search_results.childNodes[i].tagName=="ns2:StartIndex"){
startindex=search_results.childNodes[i].textContent;
}else if(search_results.childNodes[i].tagName=="ns2:Logs"){
var logs=search_results.childNodes[i];
for(var j=0;j<logs.childNodes.length;j++){
var data=logs.childNodes[j].childNodes[0];
if(data.tagName=="ns2:LogEntry"){
var arr=new Array(2);
arr[0]=j;
arr[1]=data.textContent;
}else{
var num_col=data.childNodes.length+1;
var arr=new Array(num_col);
arr[0]=j;
for(var x=1;x<num_col;x++){
arr[x]=data.childNodes[x-1].textContent;; 
}
}
add_row(table,arr);
} 
}
}
if(totalfound==0)
document.getElementById('totalmatch').innerHTML="total found:"+0;
}
function pwdChangeCB(flg_field){
if(flg_field==null)
{
flg_field=document.getElementById('pwdchg');
if(flg_field==null)
{
flg_field=document.forms[0].pwdchg;
}
}
if(flg_field!=null&&flg_field.value==0)
{
flg_field.value=1;
}
}
function removeOptions(field){
var removedOptions=document.createElement("select");
var i;
var j=0;
for(i=0;i<field.options.length;i++){
if(field.options[i].selected){
removedOptions.options[j]=new Option();
removedOptions.options[j].text=field.options[i].text;
removedOptions.options[j].value=field.options[i].value;
removedOptions.options[j].selected=true;
field.options[i]=null;
i--;
j++;
}
}
return removedOptions;
}
function moveOptionField(fromField,toField){
var insertIndex=toField.options.length;
var selectedOptions;
var insertNumber=0;
var i;
for(i=0;i<toField.options.length;i++){
if(toField.options[i].selected){
insertIndex=i+1;
toField.options[i].selected=false;
}
}
selectedOptions=removeOptions(fromField);
toField.options.length+=selectedOptions.options.length;
for(i=(toField.options.length-1);i>=(insertIndex+selectedOptions.options.length);i--){
toField.options[i].text=toField.options[i-selectedOptions.options.length].text;
toField.options[i].value=toField.options[i-selectedOptions.options.length].value;
}
for(i=0;i<selectedOptions.options.length;i++,insertIndex++){
toField.options[insertIndex].text=selectedOptions.options[i].text;
toField.options[insertIndex].value=selectedOptions.options[i].value;
toField.options[insertIndex].selected=true;
}
}
function moveOptionUp(selectField){
var i;
var oOption=new Option();
var length=selectField.options.length;
if(length==0||selectField.options[0].selected){
return 0;
}
for(i=1;i<length;i++){
if(selectField.options[i].selected){
oOption.text=selectField.options[i-1].text;
oOption.value=selectField.options[i-1].value;
selectField.options[i-1].text=selectField.options[i].text;
selectField.options[i-1].value=selectField.options[i].value;
selectField.options[i-1].selected=true;
selectField.options[i].text=oOption.text;
selectField.options[i].value=oOption.value;
selectField.options[i].selected=false;
}
}
}
function moveOptionDown(selectField){
var i;
var oOption=new Option();
var length=selectField.options.length;
if(length==0||selectField.options[length-1].selected){
return 0;
}
for(i=length-1;i>=0;i--){
if(selectField.options[i].selected){
oOption.text=selectField.options[i+1].text;
oOption.value=selectField.options[i+1].value;
selectField.options[i+1].text=selectField.options[i].text;
selectField.options[i+1].value=selectField.options[i].value;
selectField.options[i+1].selected=true;
selectField.options[i].text=oOption.text;
selectField.options[i].value=oOption.value;
selectField.options[i].selected=false;
}
}
}
function initOptionField(avail_list,sel_list,selarray)
{
for(var i=0;i<avail_list.options.length;i++){
for(var j=0;j<selarray.length;j++)
if(avail_list.options[i].value==selarray[j]){
avail_list.options[i].selected=true;
break;
}
}
moveOptionField(avail_list,sel_list);
}
function getElementsByNameRegex(rootObj,elementNames,re){
var i,j;
var objElementArray;
var coll=new Array();
for(i=0;i<elementNames.length;i++){
objElementArray=rootObj.getElementsByTagName(elementNames[i]);
for(j=0;j<objElementArray.length;j++){
if(re.test(objElementArray[j].name)){
coll.push(objElementArray[j]);
}
}
}
return coll;
}
function submit_all_selected(confirm_msg,result_id,separator,use_index,form_index,re)
{
var count=0;
var obj,objArray;
var checked_lines="";
if(!result_id)result_id="checked_lines";
if(!form_index)form_index=0;
if(!re)re= /^line_checkbox/;
if(!separator)separator=",";
objArray=getElementsByNameRegex(document,['input'],re);
for(i=objArray.length-1;i>=0;i--){
obj=objArray[i];
if(isChecked(obj)&&isEnabled(obj)){
if(count!=0)
checked_lines=checked_lines+separator;
checked_lines=checked_lines+(use_index?i:obj.value);
count=count+1;
}
}
if(count!=0){
var form=document.forms[form_index];
var em=document.getElementById(result_id);
if(em)
em.value=checked_lines;
else
appendFormField(form,result_id,checked_lines);
if(!confirm_msg||(confirm(confirm_msg)==true)){
if(!form.onsubmit||form.onsubmit())
form.submit();
}
}
return false;
}
function delete_all_selected(del_all_msg,separator,use_index,result_id,form_index,re)
{
submit_all_selected(del_all_msg,result_id,separator,use_index,form_index,re);
}
function show_download_all_button()
{
var obj=document.getElementById('download_all');
if(obj)
{
obj.className='button';
obj.parentNode.className='downloadAll';
}
}
function getCheckedCount(re)
{
var objArray;
var count=0;
if(!re)re= /^line_checkbox/;
objArray=getElementsByNameRegex(document,['input'],re);
for(var i=0;i<objArray.length;i++){
if(isChecked(objArray[i])&&isEnabled(objArray[i]))
count++;
}
return count;
}
function check_all()
{
var chk,checked_value;
var obj,objArray;
chk=document.getElementById('checkallbox');
checked_value=isChecked(chk);
objArray=document.getElementsByTagName("input");
for(i=0;i<objArray.length;i++){
obj=objArray[i];
if(obj.type=="checkbox"&&obj.name.indexOf("line_checkbox")>=0&&isEnabled(obj)){
obj.checked=checked_value;
}
}
}
function check_row(e){
while(e&&e.tagName!='TR')
e=e.parentNode;
if(!e)return false;
var elmts=e.getElementsByTagName('INPUT');
for(var i=0;i<elmts.length;i++){
if(elmts[i].type!='checkbox')
continue;
elmts[i].checked=true;
return true;
}
return false;
}
function line_checkbox_clicked()
{
var chk,checked_value=true;
var obj,objArray;
objArray=document.getElementsByTagName("input");
for(i=0;i<objArray.length;i++){
obj=objArray[i];
if(obj.type=="checkbox"&&obj.name.indexOf("line_checkbox")>=0){
if(isUnchecked(obj)&&isEnabled(obj)){
checked_value=false;
break;
}
}
}
chk=document.getElementById('checkallbox');
chk.checked=checked_value;
}
function scrollTableHeader(headerID,containerID)
{
var containerDiv=document.getElementById(containerID);
var headerTable=document.getElementById(headerID);
if(containerDiv&&headerTable)
{
headerTable.style.left=-1*containerDiv.scrollLeft;
}
}
function matchTables(headerID,contentID,containerID,headerContainerID)
{
var contentTable=document.getElementById(contentID);
var headerTable=document.getElementById(headerID);
var containerDiv=document.getElementById(containerID);
var headerDiv=headerContainerID?document.getElementById(headerContainerID):null;
if(contentTable&&headerTable&&containerDiv)
{
var tableHeader=contentTable.getElementsByTagName('thead');
var tableBody=contentTable.getElementsByTagName('tbody');
var tableHeadings=null;
var tableRows=null;
var tableCells=null;
var headingsCount=null;
if(tableHeader.length)
{
tableHeader=tableHeader[0]
tableHeadings=tableHeader.getElementsByTagName('th');
headingsCount=tableHeadings.length;
}
if(tableBody.length)
tableRows=tableBody[0].getElementsByTagName('tr');
if(!tableHeadings||!headingsCount||!tableRows)
return;
for(var j=0;j<tableRows.length;j++)
{
tableCells=tableRows[j].cells; 
if(tableCells.length==headingsCount)
break; 
}
if(!tableCells||tableCells.length!=headingsCount){
containerDiv.style.height='auto';
return;
}
for(var i=0;i<tableHeadings.length;i++)
{
tableHeadings[i].width=tableHeadings[i].offsetWidth;
tableCells[i].width=tableCells[i].offsetWidth-4;
}
headerTable.style.width=contentTable.offsetWidth+'px';
contentTable.style.width=contentTable.offsetWidth+'px';
containerDiv.style.overflow='auto';
if((contentTable.offsetWidth+20)>document.body.clientWidth)
containerDiv.style.width=document.body.clientWidth-(Prototype.Browser.IE?20:0)+'px';
else
containerDiv.style.width=contentTable.offsetWidth+(Prototype.Browser.IE?20:0)+'px';
if((contentTable.offsetHeight)>document.body.clientHeight)
containerDiv.style.height=(document.body.clientHeight-40)+'px';
else
containerDiv.style.height=(contentTable.offsetHeight+10)+'px';
if(headerDiv)
{
containerDiv.onscroll=function(){scrollTableHeader(headerID,containerID);};
headerDiv.style.width=containerDiv.style.width;
headerTable.style.position='relative';
headerDiv.style.overflow='hidden';
}
var clonedHeader=tableHeader.cloneNode(true);
headerTable.appendChild(clonedHeader);
headerTable.style.margin='0';
headerTable.style.padding='0';
contentTable.removeChild(tableHeader);
}
}
function tbl_realign_columns(tbl_hdr,tbl)
{
var hdrElems;
function get_hdr_elems()
{
hdrElems=tbl_hdr.getElementsByTagName("th");
if(hdrElems.length)return true;
hdrElems=tbl_hdr.getElementsByTagName("td");
if(hdrElems.length)return true;
return false;
}
if(!get_hdr_elems())
return;
var aRows=tbl.getElementsByTagName("tr");
if(aRows.length<1)return;
var tblElems;
for(var j=0;j<aRows.length;j++)
{
tblElems=aRows[j].getElementsByTagName("td");
if(tblElems.length==hdrElems.length)break;
}
if(tblElems.length!=hdrElems.length)return;
var len=tblElems.length;
for(var i=0;i<len;i++)
{
tblElems[i].style.width=hdrElems[i].style.width;
} 
}
function relocate_tbl_hdr(contentTable,headerTable)
{
if(!contentTable)return;
var tableHeadings=null;
var hdr=null;
function locate_table_header()
{
var thdr=contentTable.getElementsByTagName("thead");
if(thdr.length)
{
hdr=thdr[0];
tableHeadings=hdr.getElementsByTagName("th");
return true;
}
thdr=document.getElementsByClassName("heading");
if(thdr.length)
{
hdr=thdr[0];
tableHeadings=hdr.getElementsByTagName("td");
return true;
}
return false;
}
if(!locate_table_header())
return;
for(var i=0;i<tableHeadings.length;i++)
{
tableHeadings[i].style.width=tableHeadings[i].offsetWidth+"px";
}
var clonedHeader=hdr.cloneNode(true);
headerTable.appendChild(clonedHeader);
headerTable.style.margin='0';
headerTable.style.padding='0';
hdr.parentNode.removeChild(hdr);
tbl_realign_columns(headerTable,contentTable);
}
function addEvent(obj,type,fn)
{
if(obj.addEventListener)
obj.addEventListener(type,fn,false);
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]);
}
}
function removeEvent(obj,type,fn)
{
if(obj.removeEventListener)
obj.removeEventListener(type,fn,false);
else if(obj.detachEvent){
obj.detachEvent("on"+type,obj[type+fn]);
obj[type+fn]=null;
obj["e"+type+fn]=null;
}
}
function get_last_child_of_type(obj,type)
{
var i;
try
{
var len=obj.childNodes.length;
}
catch(e)
{
return null;
}
for(i=len-1;i>=0;i--)
{
if(obj.childNodes[i].nodeName==type)
{
return obj.childNodes[i];
}
}
return null;
}
function arrayContains(array,item)
{
for(var i=0;i<array.length;i++)
{
if(array[i]==item)
return true;
}
return false;
}
function arrayUnique(array){
var tmp=new Array(0);
for(var i=0;i<array.length;i++)
{
if(!arrayContains(tmp,array[i]))
{
tmp.length+=1;
tmp[tmp.length-1]=array[i];
}
}
return tmp;
}
function removeFromArray(array,item)
{
for(var i=0;i<array.length;i++)
{
if(array[i]==item)
{
array.splice(i,1);
}
}
}
function refreshSelects(listObjects,usedObjects,avail,used)
{
if(avail&&used&&listObjects&&usedObjects)
{
avail.length=0;
used.length=0;
for(var i=0;i<listObjects.length;i++)
{
var catObjs=listObjects[i][2];
var catValues=listObjects[i][3];
if(listObjects[i][0]==-1)
{
var hidden=new Option(listObjects[i][1],listObjects[i][2]);
hidden.className='multiListOptHidden';
avail.options[avail.options.length]=hidden;
continue;
}
else if(listObjects[i][1]!='')
{
avail.options[avail.options.length]=new Option('------ '+listObjects[i][1]+' ------','');
used.options[used.options.length]=new Option('------ '+listObjects[i][1]+' ------','');
}
for(var j=0;j<catObjs.length;j++)
{
var objID=catValues?catValues[j]:(listObjects[i][0]+catObjs[j]);
if(arrayContains(usedObjects,objID))
{
used.options[used.options.length]=new Option(catObjs[j],objID);
continue;
}
avail.options[avail.options.length]=new Option(catObjs[j],objID);
}
}
if(avail.onchange)avail.onchange();
if(used.onchange)used.onchange();
}
}
function addOptionsToUsedList(listObjects,usedObjects,avail,used)
{
if(avail&&listObjects&&usedObjects)
{
for(var i=0;i<avail.length;i++)
{
var option=avail[i];
if(option.selected&&option.value!=''&&option.className!='multiListOptHidden')
{
usedObjects[usedObjects.length++]=option.value;
}
}
refreshSelects(listObjects,usedObjects,avail,used);
avail.selectedIndex=-1;
}
}
function removeOptionsFromUsedList(listObjects,usedObjects,avail,used)
{
if(used&&listObjects&&usedObjects)
{
for(var i=0;i<used.length;i++)
{
var option=used[i];
if(option.selected&&option.value!='')
{
removeFromArray(usedObjects,option.value);
}
}
refreshSelects(listObjects,usedObjects,avail,used);
used.selectedIndex=-1;
}
}
function setupMultiSelectLists(listObjects,usedObjects,availID,usedID,leftID,rightID)
{
var avail=document.getElementById(availID);
var used=document.getElementById(usedID);
var left=document.getElementById(leftID);
var right=document.getElementById(rightID);
if(listObjects&&usedObjects&&avail&&used&&left&&right)
{
left.onclick=function(){
removeOptionsFromUsedList(listObjects,usedObjects,avail,used);
return false;
};
right.onclick=function(){ 
addOptionsToUsedList(listObjects,usedObjects,avail,used);
return false;
};
refreshSelects(listObjects,usedObjects,avail,used);
}
}
function getRadioValue(radioObj){
var i;
for(i=0;i<radioObj.length;i++){
if(radioObj[i].checked){
if(radioObj[i].value){
return radioObj[i].value;
}else{
return i;
}
}
}
return null;
}
function setRadioValue(radioObj,value,set_default){
var i;
var set_flag=0;
var ret_value;
if(!radioObj)return ret_value;
for(i=0;i<radioObj.length;i++){
if(radioObj[i].value==value) 
{
radioObj[i].checked=true;
set_flag=1;
ret_value=value;
}
else
radioObj[i].checked=false;
}
if(set_default&&!set_flag&&radioObj.length)
{
radioObj[0].checked=true;
ret_value=radioObj[0].value;
}
return ret_value;
}
function setSelectValue(selectObj,value,set_default)
{
var set_flag=0;
var ret_value;
if(!selectObj)return ret_value;
for(var i=0;i<selectObj.length;i++)
{
var option=selectObj.options[i];
if(option.value==value)
{
selectObj.selectedIndex=i;
set_flag=1;
ret_value=value; 
break;
}
}
if(set_default&&!set_flag&&selectObj.length)
{
selectObj.selectedIndex=0;
ret_value=selectObj.options[0].value;
}
return ret_value;
}
function set_elt_value(elt,type,value)
{
var obj;
if(type=='radio') 
obj=document.getElementsByName(elt);
else 
obj=document.getElementById(elt);
if(!obj) 
obj=document.getElementsByName(elt);
if(!obj) 
return; 
switch(type){
case 'text':
obj.value=value;
break;
case 'checkbox':
obj.checked=value;
break;
case 'radio':
setRadioValue(obj,value,1); 
break;
case 'select':
setSelectValue(obj,value,1); 
break;
default:
break;
}
}
function check_opt_dep(obj_id,dep_obj_id)
{
var master_obj=document.getElementById(obj_id);
var dep_obj=document.getElementById(dep_obj_id);
if(master_obj&&dep_obj)
if(master_obj.checked==true)
dep_obj.disabled=false; 
else 
dep_obj.disabled=true; 
}
function findInArray(thisArray,elementToFind){
var index=-1;
for(var i=0;i<thisArray.length;i++){
if(thisArray[i]==elementToFind){
index=i;
break;
}
}
return index;
}
function get_checked(buttons)
{
var val=new Array();
if(!buttons.length){ 
if(typeof(buttons.checked)=='undefined'||buttons.checked)
val.push(buttons.value);
}
else{
var radio=buttons[0].type=='radio';
for(var i=0;i<buttons.length;i++)
if(buttons[i].checked){
val.push(buttons[i].value);
if(radio)break;
}
}
return val;
}
function set_checked(buttons,values)
{
if(!buttons.length){
buttons.checked=buttons.value==values;
return;
}
for(var i=0;i<buttons.length;i++)
if(!values.length||typeof(values)!="object")
buttons[i].checked=buttons[i].value==values;
else{
buttons[i].checked=false;
var s=buttons[i].value;
for(var j=0;j<values.length;j++)
if(s==values[j]){
buttons[i].checked=true;
break;
}
}
}
function update_widget_image(prefix,img_url)
{
var img=document.getElementById(prefix+'_img');
var width=null;
if(!img)
return;
if(img.parentNode)
{
width=img.parentNode.offsetWidth-20;
}
img_url+='&nocache='+Math.random();
if(width)img_url+='&width='+width;
img.src=img_url;
}
function form_data(f,elt_list)
{
var data='';
for(var i=0;f[i];i++) 
{
if(f[i].name&&(!elt_list||arrayContains(elt_list,f[i].name))&&f[i].style.display!='none'&&(f[i].type!='checkbox'&&f[i].type!='radio'||f[i].checked))
{
data+='&'+f[i].name+'='+encodeURIComponent(f[i].value);
}
}
return data.substr(1);
}
function setCookie(key,value)
{
var pathname=location.pathname.substring(0,location.pathname.lastIndexOf('/'))+'/';
var expireDate=new Date();
expireDate.setTime(expireDate.getTime()+(365*24*3600*1000));
document.cookie=key+"="+escape(value)+"; expires="+expireDate.toGMTString()+"; path="+pathname;+";";
}
function update_url_component(url,attr,val)
{
function append_url_fragment()
{
var idx=url.indexOf("?");
var sep_char=(idx<0?"?":"&");
url+=sep_char+attr+"="+val;
return url;
}
function replace_url_fragment(idx)
{
var end_idx=url.indexOf("&",idx+attr.length);
var new_url=url.substring(0,idx+1)+attr+"="+val;
if(end_idx>0)
new_url+=url.substring(end_idx);
return new_url;
}
var srch_str="?"+attr+"=";
var idx=url.indexOf(srch_str);
if(idx>=0)
{
return replace_url_fragment(idx);
}
srch_str="&"+attr+"=";
idx=url.indexOf(srch_str);
if(idx>=0)
{
return replace_url_fragment(idx);
}
return append_url_fragment();
}
function extract_url_parameter(url,name)
{
var search_str=name+'=';
var len=search_str.length;
var idx=url.indexOf(search_str);
if(idx>0)
{
idx+=len;
var idx2=url.indexOf("&",idx);
if(idx2>0)
{
return url.substring(idx,idx2);
}
else
{
return url.substring(idx);
}
}
return null;
}
function enhanceListVisualEffect(list_id)
{
var tables=[];
if(list_id)
{
tables.push(list_id)
}
else
{
$j('table[class=list]').each(function()
{
if(this.id)
{
tables.push(this.id);
}
});
}
$j.each(tables,function(n,value)
{
$j('table#'+value+' tr:nth-child(even)').addClass('odd');
hlight_table(value,1,0,'over');
});
}
