var arrCol = new Array();
var arrHeads = new Array();
var curPage = 0;
var pageSize = 15;
var xmlhttp;
function is_ws(nod) {
	return !(/[^\t\n\r ]/.test(nod.data));
}

function findWhiteSpace(node, nodeNo) {
	for (i=0; i<node.childNodes.length; i++) {
		if (node.childNodes[i].nodeType == 3 && is_ws(node.childNodes[i])) {
			nodesToDelete[nodesToDelete.length] = node.childNodes[i]
		}
		if (node.childNodes[i].hasChildNodes()) {
			findWhiteSpace(node.childNodes[i], i);
		}
	}
	node = node.parentNode;
	i = nodeNo;
}

function stripWhiteSpace(node) {
	nodesToDelete = Array();
	findWhiteSpace(node, 0);
	for(i=nodesToDelete.length-1;i>=0;i--) {
		nodeRef = nodesToDelete[i];
		nodeRef.parentNode.removeChild(nodeRef)
	}
}

function loadXMLDoc(url)
{
document.write("<div id='rc' name='rc'></div><div id='grd' name='grd'>Loading...<br /><img src='/catalogged/images/bar-loader.gif'></div>");
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for IE7, Firefox, Opera, etc.
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

var sortKey=1;
var sortType="String";
var sortDir=0;
function sortArr(a,b){
  if(sortDir==0){
    return (getValueFromString(a[sortKey],sortType) < getValueFromString(b[sortKey],sortType)) ? -1 : 1;
  }else{
    return (getValueFromString(a[sortKey],sortType) > getValueFromString(b[sortKey],sortType)) ? -1 : 1;
  }
}
function resort(t){
  if(t==sortType){
    if(sortDir==0){
      sortDir=1;
    }else{
      sortDir=0;
    }
  }else{
    sortDir=0;
  }
  sortType=t;
  arrCol.sort(sortArr);
  buildGrid();
}
function getValueFromString(sText, sType) {
/*	if (this._sortTypeInfo[sType])
		return this._sortTypeInfo[sType].getValueFromString( sText );
	return sText;*/
	switch (sType) {
		case "Number":
			return Number(sText);
		case "CaseInsensitiveString":
			return sText.toUpperCase();
		case "Date":
			var parts = sText.split("-");
			var d = new Date(0);
			d.setFullYear(parts[0]);
			d.setDate(parts[2]);
			d.setMonth(parts[1] - 1);
			return d.valueOf();
	}
	return sText;
}
	
function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = "OK"
    stripWhiteSpace(xmlhttp.responseXML);
      var bFirst = true;
      var xmlDoc=xmlhttp.responseXML;
      var e=xmlDoc.documentElement.getElementsByTagName("i");
      document.getElementById('rc').innerHTML=(e.length+ " records");
      for (var a = 0; a < e.length; a++) {
      
        if(bFirst){
          bFirst=false;
          for(var i = 0; i < e[a].childNodes.length; i++){
            var t = new Array();
            t[0]=e[a].childNodes[i].tagName;
            t[1]=e[a].childNodes[i].getAttribute("width");
            t[2]=e[a].childNodes[i].getAttribute("type");
            t[3]=e[a].childNodes[i].getAttribute("url");
            t[4]=e[a].childNodes[i].getAttribute("text");
            arrHeads[i]=t;
          }
        }
        var t = new Array();
        for(var i = 0; i < e[a].childNodes.length; i++){
          t[i]=e[a].childNodes[i].firstChild.nodeValue;
        }
        arrCol[a]=t;
      }
      
      buildGrid();
      return;
    }
  else
    {
    //Problem retrieving XML data:+ xmlhttp.statusText);
    }
  }
}
function buildGrid(){
  var d = document.getElementById('grd');
  var pLength=arrCol.length;
  var cLength=(curPage*pageSize) + pageSize;
  var s="";
  if(cLength>pLength){
    cLength=pLength;
  }
  s="<table class='infobox' cellspacing='0' id='srt' cellpadding='1'><tr>"
  for(i=0; i < arrHeads.length; i++){
    if(arrHeads[i][2]!="Action"){
      if(arrHeads[i][2]!="None"){
        s+="<td class='infoboxheader' width='"+arrHeads[i][1]+"px'><a href='#' onClick='sortKey="+i+";resort(\""+arrHeads[i][2]+"\");'>" + arrHeads[i][0] + "</a></td>";
      }else{
        s+="<td class='infoboxheader' width='"+arrHeads[i][1]+"px'>" + arrHeads[i][0] + "</td>";
      }
    }
  }
  s+="<td class='infoboxheader'>&nbsp;</td></tr>\n";
  for(i=(curPage*pageSize);i < cLength;i++){
    var sa="";
    s+="<tr>";
    for(x=0;x < arrCol[i].length;x++){
      if(arrHeads[x][2]!="Action"){
        s+="<td class='label' valign='top' width='"+arrHeads[x][1]+"px'>"+arrCol[i][x]+"</td>";
      }else{
        sa+="<a href=\"" + (arrHeads[x][3]).replace(/param/,arrCol[i][x]) + "\">" + arrHeads[x][4] + "</a> ";
      }
    }    
    s+="<td class='label'>" + sa + "&nbsp;</td></tr>\n";
  }
  if(pLength>cLength){
  }
  s+="</table>";
  if(arrCol.length>pageSize){
    s+="<div class='paging'>";
    if(curPage!=0){
      s+="<a href='#' onClick='curPage--;buildGrid();return false;'>prev</a> | ";
    }else{
      s+="prev | ";
    }
    if(pLength>cLength){
      s+="<a href='#' onClick='curPage++;buildGrid();return false;'>next</a>";
    }else{
      s+="next";
    }
    s+=" (";
    
    var paged =parseInt(pLength/pageSize);
    if(paged<pLength/pageSize){
      paged++;
    } 
    for(i=0;i<paged;i++){
      if(curPage==i){
        s+= " [" + (i+1) +  "] ";
      }else{
        s+= "<a href='#' onClick='curPage=" + (i) +  ";buildGrid();return false;'>" + (i+1) +  "</a> ";
      }
    }
    s+=" )</div>";
  }
  var wrappingElement = document.createElement('div');
  wrappingElement.innerHTML = s;
  //d.innerHTML=s;
  d.innerHTML = '';
  d.appendChild(wrappingElement);
}