/*
######################################################################
#                                                                    #
#   Sortable Tables                                                  #
#   ---------------                                                  #
#                                                                    #
#   P.Whitrow                                                        #
#   03/05/2002                                                       #
#                                                                    #
#  11/4/2005 - Modified by Daniel Icart to work with Firefox         #
#  11/6/2005 - Allow for specifing individual column widths          #
######################################################################
*/
var ascChr = "^";			// Symbol for ascending sort
var desChr = "v";			// Symbol for descending sort
var isNav4, isIE4;
var SelectedCat = "";
var CurrTableName = ""

if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
  isNav4 = (navigator.appName == "Netscape") ? true : false
  isIE4 = (navigator.appName.indexOf("Microsoft" != -1)) ? true : false
}
document.write('<style>')
document.write('.arrow  {font-family:webdings;font-size:10;text-decoration:none;}')
document.write('table   {font-family:verdana;font-size:11;}')
document.write('button  {font-family:verdana;font-size:11;border:1 solid;}')
document.write('input   {font-family:verdana;font-size:11;border:1 solid;}')
document.write('.text   {font-family:verdana;font-size:10;}')
document.write('A       {text-decoration:none;}')
document.write('A:hover {text-decoration:none;}')
document.write('</style>')


// column assosiations (default 26 columns, but can be more)
function  dataArray(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) {
 this.col1=a;this.col2=b;this.col3=c;this.col4=d;this.col5=e;this.col6=f;this.col7=g;this.col8=h;this.col9=i;this.col10=j;this.col11=k;this.col12=l;this.col13=m;this.col14=n;this.col15=o;this.col16=p;this.col17=q;this.col18=r;this.col19=s;this.col20=t;this.col21=u;this.col22=v;this.col23=w;this.col24=x;this.col25=y;this.col26=z
}

function createTable(tableName,tableHolderName){
 SelectedCat = "" ; CurrTableName = tableName
 str='<table border=0 id="'+tableName+'" style="background:'+tableBgColor+';" onclick="hilightRow(event);blurMe(event)">'
 str+='<caption align=top>'+table_title
 str+='<div align=left><hr width="100%">'
 str+='<input type="text" id="findText">&nbsp;'
 str+='<button onclick="this.blur();findData()">Find</button>&nbsp;'
 str+='<button onclick="this.blur();findData()">Clear</button>'
 str+='<div id="findResult" class="text">(Search Results)</div><hr width="100%">'+extra_table_data+'<br>'
 str+='</div>'
 str+='</caption>'
 if(CategoriesEnabled=='yes'){
   	str+='<tr><td type="header" colspan="'+hd.length+'"><b>'
 // 	str+='<form name="category" method="get" onsubmit="return makeTable("'+tableName+'")">'
  	str+='<form name="category" method="get" onsubmit="return selCat()">'
    str+='<div align="center">'
    str+='Categories: <select name="choices" size="1" onchange="return selCat()">'
    for(a=0;a<cat.length;a++)
  		str+=cat[a]
  	str+='</select>'
  	if (isNav4) str+=' <input type="submit" value="Find Forms">'
  	str+='</div>' 
  	str+='</form>'
  	str+='</td></tr>'
} 
  for(a=0;a<hd.length;a++){
  if(a==0){
	if(rowNumbersEnabled=='yes'){
		str+='<tr><td type="header"><b>'+hd[a]+'</b></td>'
	}
  }else{
  	str+='<td type="header" style="color:'+headerTxtColor+';"><b>'+hd[a]+'</b>&nbsp;'
  	str+='<a href="#" onclick="return sortBy(\'col'+a+'\',\''+tableName+'\',this)" style="color:'+headerTxtColor+';" title="Ascending Order">'
  	if(a==1)
  		str+=desChr+'</a>'
	else  		
		str+=ascChr+'</a>'
  	str+='</td>'
  }
 }
 str+='</tr></table>'

 document.getElementById(tableHolderName).innerHTML=str
 makeTable(tableName)
}

function selCat() {
	SelectedCat = category.choices.value
	clearTable(CurrTableName)
	makeTable(CurrTableName)
	return false;
}

function makeTable(tableName){
 tb=document.getElementById(tableName)
 ft=document.getElementById('findText')
 fr=document.getElementById('findResult')
//SelectedCat = category.choices.value
//alert('category='+SelectedCat+' tableName='+tableName)
var goodData
 for (a=0;a<da.length;a++){
   goodData = true;
   if(CategoriesEnabled=='yes' && hd.length>1) {
    tmp='da['+a+'].col'+hd.length
    tmp2=eval(tmp)
	 if (SelectedCat!="ALL" && SelectedCat!="") {
	 	if(tmp2.indexOf(SelectedCat)<0)
	  		goodData = false;
 		//alert('SelectedCat='+SelectedCat+'\ngoodData='+goodData+'\ntmp2='+tmp2+'\n tmp2.indexOf('+SelectedCat+')='+tmp2.indexOf(SelectedCat))
 	  }
  	}
  if(goodData==true) {
	  tb.insertRow(-1)  // DPI added -1 for firefox
	  r=tb.rows[tb.rows.length-1];r.type="tableDataRow";r.style.background=dataBgColor;
	  if(rowNumbersEnabled=='yes'){
	   c0 = r.insertCell(-1);c0.innerHTML=a+1;c0.type='header' // DPI added -1 for firefox
	  }
	  for(b=1;b<hd.length;b++){
	   tmp='da['+a+'].col'+b
	   tmp2=eval(tmp)
	   switch (true){
		// web address
		case (tmp2.indexOf('http://')>=0||tmp2.indexOf('https://')>=0):
			  com='c'+b+'=r.insertCell(-1);c'+b+'.innerHTML="<a href=\'#\' value=\''+tmp2+'\' style=\'color:'+linkTxtColor+';\' onmouseover=this.style.color=\''+linkHoverColor+'\' onmouseout=this.style.color=\''+linkTxtColor+'\' onclick=\'gotoAddress(this.value)\' type=\'linker\' title=\'Click here open a window for this location.\'>'+tmp2+'</a>";c'+b+'.width=\''+columnWidth[b]+'\'';
		      break;// DPI added -1 for firefox, made columnWidth an array
		// Categories are kept in a column which need not display
	 	case (tmp2.indexOf('Category:')>=0||tmp2.indexOf('category:')>=0):
	 	      com='';
		      break;// DPI added -1 for firefox, made columnWidth an array
	    // email
		case (tmp2.indexOf('@')>=0&&tmp2.indexOf('.')>=0):
			  com='c'+b+'=r.insertCell(-1);c'+b+'.innerHTML="<a style=\'color:'+linkTxtColor+';\' onmouseover=this.style.color=\''+linkHoverColor+'\' onmouseout=this.style.color=\''+linkTxtColor+'\' href=\'mailto:'+tmp2+'\' type=\'linker\' title=\'Click here to send email.\'>'+tmp2+'</a>";c'+b+'.width=\''+columnWidth[b]+'\'';
		      break;// DPI added -1 for firefox, made columnWidth an array
		// standard text
	    default:
			  com='c'+b+'=r.insertCell(-1);c'+b+'.innerHTML="'+tmp2+'";c'+b+'.width=\''+columnWidth[b]+'\'';
		      break;// DPI added -1 for firefox, made columnWidth an array
	   }
	   eval(com) 
	  }
  }
 }
 i=document.getElementsByTagName('TD')
 for(a=0;a<i.length;a++){
  if(i[a].type=='header'){
   i[a].style.background=headerBgColor
   i[a].style.color=headerTxtColor
   i[a].style.cursor='default'
  }
 }
 fr.innerHTML='(Search Results)'
}

function clearTable(tableName){
 tb=document.getElementById(tableName)
 i=tb.rows.length 
 for(a=2;a<i;a++){
  tb.deleteRow(2)
 }
}

var retVal=0

function sortBy(prop,tableName,dir) {
 ft=document.getElementById('findText')
 fr=document.getElementById('findResult')
 fr.innerHTML='Sorting Data .. Please Wait ...'
 tb=document.getElementById(tableName)
 retVal=0
 sortProp=prop;
 if(dir.innerHTML==ascChr){
  dir.innerHTML=desChr
  dir.title="Descending Order"
  da=da.sort(sortFuncUp)
 }else{
  dir.innerHTML=ascChr
  dir.title="Ascending Order"
  da=da.sort(sortFuncDn)
 }
 clearTable(tableName)
 makeTable(tableName)
 return false;
}

function sortFuncUp(dataArray1,dataArray2) {
var colNum = sortProp.substring(3,5)
var val1, val2
 if (columnType[colNum]!="N") {
 	 val1 = dataArray1[sortProp] ; val2 = dataArray2[sortProp]
 	 if (val1.indexOf("href")>=0) val1 = val1.split(">")[1]
 	 if (val2.indexOf("href")>=0) val2 = val2.split(">")[1]
	 if (val1>val2) retVal=1;
	 else if (val1<val2) retVal=-1;
	 else retVal=1;
	 return retVal;
  }
  else
  {
  	return dataArray1[sortProp]-dataArray2[sortProp]
  }
}

function sortFuncDn(dataArray1,dataArray2) {
var colNum = sortProp.substring(3,5)
var val1, val2
 if (columnType[colNum]!="N") {
 	 val1 = dataArray1[sortProp] ; val2 = dataArray2[sortProp]
 	 if (val1.indexOf("href")>=0) val1 = val1.split(">")[1]
 	 if (val2.indexOf("href")>=0) val2 = val2.split(">")[1]
	 if (val1 < val2) return (retVal ? -1: 1);  
	 else if (val1 > val2) return (retVal ? 1: -1);		
	 else return 0;    
  }
  else
  {
  	return dataArray2[sortProp]-dataArray1[sortProp]
  }
}

var clearingTable=false

function findData(){ 
 var seperator='~'
 ft=document.getElementById('findText')
 fr=document.getElementById('findResult')
 if(event.srcElement.innerHTML=='Clear'){
  clearingTable=true
 }
 if(ft.value!=''){
  var dataQty=0
  var searchString = ft.value.toString().toUpperCase()
  i=document.getElementsByTagName('TR')
  for(a=0;a<i.length;a++){
    if(i[a].type!='header'){
	 var startNum
	 if(rowNumbersEnabled=='yes'){
	  startNum=1
	 }else{
	  startNum=0
	 }
	   tmp=''
	   for(x=startNum;x<i[a].childNodes.length;x++){
		tmp+=i[a].childNodes[x].innerHTML+seperator
	   }
	   tmp = tmp.toString().toUpperCase()
     if(tmp.indexOf(searchString)>=0){
      i(a).style.background=hilightBgColor
      //i(a).scrollIntoView(true); 
	  dataQty++
     }else{
      i(a).style.background=dataBgColor
     }
    }
  }
 fr.innerHTML=dataQty+" occurences of '"+ft.value+"' were found."
  if(clearingTable){
   ft.value=''
   fr.innerHTML='(Search Results)'
   clearingTable=false
  }
 }
}

var lastColor

function hilightRow(aEvent){
	if (!window.Event){
		var eventfired = event.srcElement.parentElement.tagName=='TR'&&event.srcElement.parentElement.type=='tableDataRow'
  		bgc=event.srcElement.parentElement
		 if(eventfired){
		  if(bgc.style.background==hilightRowColor){
		   bgc.style.background=lastColor
		  }else{
		   lastColor=bgc.style.background
		   bgc.style.background=hilightRowColor
		  }
		}
	}
	else {
		var eventfired = aEvent.target.parentNode.tagName=='TR'&&aEvent.target.parentNode.type=='tableDataRow'
  		bgc=aEvent.target.parentNode.style.backgroundColor
		 if(eventfired){
		 	
		  if(bgc==hilightRowColor){
		   bgc=lastColor
		  }else{
		   lastColor=bgc
		   bgc=hilightRowColor
		  }
		}
	}

}

function blurMe(aEvent){
	if (!window.Event){
		if(event.srcElement.tagName=='A'){
		   event.srcElement.blur()
		}
			}
	else {
		if(aEvent.target.tagName=='A'){
		   aEvent.target.blur()
		}
	}
}

function gotoAddress(val){
 blurMe(event)
 window.open(val,'','')
}
function rgb(rrr, ggg, bbb)
{
	rrr=parseInt(rrr);
	ggg=parseInt(ggg);
	bbb=parseInt(bbb);

	rrrHex=rrr.toString(16).toUpperCase();
	gggHex=ggg.toString(16).toUpperCase();
	bbbHex=bbb.toString(16).toUpperCase();

	if (rrrHex.length == 1) rrrHex='0'+rrrHex;
	if (gggHex.length == 1) gggHex='0'+gggHex;
	if (bbbHex.length == 1) bbbHex='0'+bbbHex;

	rgbVal='#'+rrrHex+gggHex+bbbHex;
	return rgbVal;
}