

var req = null;
var console = null;
var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;
var CurrentlyWorking = false;
var TargetEl = null;
var CopyPrefix = '_xx_';
var CopyCounter = 0;
var BadBrowser = ((navigator.userAgent.indexOf('MSIE') > -1)||(navigator.userAgent.indexOf('Opera') > -1));

var msgDataNotFound = 'Unable to find this information in the database.';
var msgLookingFor = 'Looking for ';
var msgDoingSearch = 'Searching...';

function StripQuotes(InString){
    var Result = InString.replace(/\u0022/g, '');
    Result = Result.replace(/\u0027/g, '');
    return Result;
}

function sendRequest(url, params, HttpMethod){
    if (!HttpMethod){HttpMethod='GET';} //both post and get seem to work.
    req = initXMLHTTPRequest();
    if (req){
        StepProgress(3, 'Setting req properties');
        req.onreadystatechange = onReadyState;
        req.open(HttpMethod, url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        StepProgress(4, 'About to send');
        req.send(params);
        StepProgress(5, 'Sent');
    }
}

function initXMLHTTPRequest(){
    StepProgress(2, 'Getting request object...');
    var xRequest = null;
    if (window.XMLHttpRequest){
    	xRequest = new XMLHttpRequest();
    }
    else{
    	if(window.ActiveXObject) {
       	    try {
        	        xRequest = new ActiveXObject('Msxml2.XMLHTTP');
      	    } 
      	    catch(e) {
        	        try {
                      xRequest = new ActiveXObject('Microsoft.XMLHTTP');
        	        }
        	        catch(e) {
          		xRequest = null;
                 }
	    }
        }
    }
    if (xRequest != null){   
        StepProgress(3, 'Got a request object');
    }
    return xRequest;
}

function onReadyState(){
    var ready = req.readyState;
    if (ready == READY_STATE_COMPLETE){
        var Incoming = req.responseText;
        if (Incoming.length < 4){
            alert(msgDataNotFound);
        }
        else{
            TargetEl.innerHTML = Incoming;
            CheckCompatibility(); //may need to lay out the page again for IE6.
        }
        TargetEl = null;
        CurrentlyWorking = false;
        StepProgress(10, 'Complete.');
    }
    else{
        StepProgress((ready + 5), 'loading...[' + ready + ']');
    }
}

function DoLookup(SenderId, Container, ItemType, ItemId, TargetElTag, DisplayClass){
   if (CurrentlyWorking){return;}
   CurrentlyWorking = true;
   var TargetId = 'lk_' + SenderId;
   var T = document.getElementById(TargetId);
   if (T != null){
       if (T.style.display != 'none'){
           T.style.display = 'none';
       }
       else{
           T.style.display = 'block';
       }
       CurrentlyWorking = false;
       return; //no need for anything more
   }
  
   TargetEl = document.createElement(TargetElTag);
   TargetEl.setAttribute('class', DisplayClass);
   TargetEl.setAttribute('id', TargetId);
   Container.appendChild(TargetEl);
   TargetEl.style.display = 'block';
   var LookupUrl = 'lookup.xq?type=' + ItemType + '&author_id='  + encodeURIComponent(ItemId);
   StartProgress(10, msgLookingFor + ' ' + ItemId + '...');
   sendRequest(LookupUrl, '', 'GET');
}

function Find(){
   if (CurrentlyWorking){return;}
   CurrentlyWorking = true;
   TargetEl = document.getElementById('SearchResults');
   var SearchUrl = 'find.xq?';
//Compose the search url components...
   var i;
   var NList = document.getElementsByTagName('select');
   for (i=0; i<NList.length; i++){
       if (NList[i].options[NList[i].selectedIndex].getAttribute('value') != null){
//           alert(NList[i].options[NList[i].selectedIndex].getAttribute('value'));
           SearchUrl = SearchUrl + NList[i].getAttribute('id') + '=' + encodeURIComponent(NList[i].options[NList[i].selectedIndex].getAttribute('value')) + '&';
       }
   }
   if (document.getElementById('searchString').value.length > 0){
       var SS = StripQuotes(document.getElementById('searchString').value);
       document.getElementById('searchString').value = SS;
       SearchUrl = SearchUrl + 'searchString=' + encodeURIComponent(SS);
   }
   StartProgress(10, msgDoingSearch);
   sendRequest(SearchUrl, '', 'GET');
}

function StartProgress(NumCells, Report){
    if (BadBrowser){
        window.status = Report;
        return;
    }
    var S = document.getElementById('StatusReport');
    if (S != null){
        var Cells = '';
        for (var i=0; i<NumCells; i++){
            Cells += '<td>&nbsp;</td>';
        }
            document.getElementById('ProgressBits').innerHTML = Cells;
        S.style.display = 'block';
        StepProgress(1, Report);
    }
}

function StepProgress(Step, Report){
    if (BadBrowser){
        window.status = Report;
        return;
    }
    var PB = document.getElementById('ProgressBits');
    if (PB != null){
        document.getElementById('StatusText').innerHTML = Report;
        for (var i=0; i<Step; i++){
            if (PB.getElementsByTagName('td').length > i){
                if (PB.getElementsByTagName('td')[i] != null){
                    PB.getElementsByTagName('td')[i].className = 'Stepped';
                }
            }
        }
        if (Step == PB.getElementsByTagName('td').length){
            window.setTimeout('document.getElementById("StatusReport").style.display = "none"', 1000);
        }
    }
}