var g_booklist=new Array();
var g_searchstr='';
var g_lastcount=0;

function get_booklist(){
    AJAX.execute('library/library.xml', ajax_response);
}

function getChildrenByTagName(element,name)
{
    var list = new Array();
    name = name.toUpperCase();
    for(var i=0; i<element.childNodes.length; i++)
        if (element.childNodes[i].nodeName.toUpperCase()==name)
            list.push( element.childNodes[i] );
    return list;
}

function getTextByName(element, name)
{
    name = name.toUpperCase();
    for(var i=0; i<element.childNodes.length; i++)
        if (element.childNodes[i].nodeName.toUpperCase()==name)
            return element.childNodes[i].firstChild.nodeValue;
    return '';
}


function ajax_response(ajaxobj)
{
    var xml = ajaxobj.responseXML;
    var doc = (xml.firstChild.nextSibling)? xml.firstChild.nextSibling : xml.firstChild;
    var booksxml = getChildrenByTagName(doc, 'book');

    if (booksxml!= null && booksxml.length>0)
    {
        g_booklist=new Array();
        for(var i=0; i<booksxml.length; i++)
        {
            t = getTextByName(booksxml[i],'searchString');
            a = getTextByName(booksxml[i],'searchStringManufDate');
            u = getTextByName(booksxml[i],'searchStringDateManuf');
            g_booklist.push( createBook(a,t,u) );
        }
        g_booklist.sort(sortBysearchStringManufDate);

        g_searchstr='';
        for (var i=0; i<g_booklist.length; i++)
            g_searchstr+= ' '+g_booklist[i].searchString+' - '+g_booklist[i].searchStringManufDate+' - '+g_booklist[i].searchStringDateManuf+'[|['+i+']|]';
        g_searchstr = g_searchstr.toLowerCase();
//		g_searchstr = g_searchstr.replace(/ /g, " ");
//		g_searchstrAlert = g_searchstr.substring(0,300);
		//alert(g_searchstrAlert);
        showlist(g_booklist);
    }
    
}

function showlist(booklist){
    
    var dom_tracklist = document.getElementById('id_booklist');
    removeChildren( dom_tracklist );

    var count = (booklist.length > 50000) ? 50000 : booklist.length;
    for(var i=0; i<count; i++)
    {
        dom_tracklist.appendChild( createBookElement(booklist[i]) );
    }
    g_lastcount=count;

    var dom_tracklist = document.getElementById('id_searchStringManufDate');
    removeChildren( dom_tracklist );
    dom_tracklist.appendChild( document.createTextNode( "showing " + count + " of " + booklist.length));
}
function createBookElement(bookobj)
{
    var tagText = bookobj.searchStringManufDate;
//    var tagText = bookobj.searchStringManufDate + ' - ' + bookobj.searchString + ' - ' + bookobj.searchStringDateManuf;
//    var tagText = '<tr><td>' + bookobj.searchStringManufDate + '</td><td>' + bookobj.searchString + '</td><td>' + bookobj.searchStringDateManuf + '</td></tr>';
    var element;
    try {
        element = document.createElement("<LI>");//IE
    } catch (e) {
        element = document.createElement( "LI" );
    }
    element.appendChild( createLinkElement(bookobj.searchStringDateManuf, tagText) );
    return element;
}
function createLinkElement(searchStringDateManuf,text)
{
    var element;
	var contact = "http://gistrategies.com/Technical_Library.php#Order";
    try {
        element = document.createElement("<A HREF='"+contact+"'>");//IE
    } catch (e) {
        element = document.createElement( "A" );
        element.setAttribute('href',contact);
    }
    element.appendChild( document.createTextNode( text ) );
    return element;
}

function searchkeyup(e)
{
    e   =fixevent(e);
    targ=findtarget(e);
    var searchtext = ' '+targ.value.toLowerCase();
    if (searchtext.length<=2)
    {
        if (g_lastcount!= g_booklist.length)
        {
            showlist(g_booklist);
        }
        return;
    }

    var booklist=new Array();
    var results =g_searchstr.split(searchtext);
    for(var i=1; i<results.length; i++)
    {
        var idx1 = results[i].indexOf('[|[');
        var idx2 = results[i].indexOf(']|]');
        if (idx1!=-1 && idx2!=-1 )
        {
           var idx = results[i].substring(idx1+3, idx2);
           if (isInt(idx))
           {
               booklist.push( g_booklist[idx] );
           }
        }
    }
    showlist(booklist);
}


//------------------------------------------------------
//------------------------------------------------------
//------------------------------------------------------
function isInt (str)
{
    var i = parseInt (str);
    if (isNaN (i))
        return false;
    if (i.toString() != str)
        return false;
    return true;
}
function fixevent(e) {
     return (!e) ? window.event : e;
}
function findtarget(e) {
     if (e.target) targ = e.target;
     else if (e.srcElement) targ = e.srcElement;
  if (targ.nodeType == 3) // defeat Safari bug
     targ = targ.parentNode;
     return targ;
}
function removeChildren(list){
    if (list==null) return;
    var child = list.firstChild;
    while(child!=null)
    {
        list.removeChild(child);
        child = list.firstChild;
    }
}
function sortBysearchStringManufDate(a,b)
{
        if (a.searchStringManufDate > b.searchStringManufDate) return 1;
        if (a.searchStringManufDate < b.searchStringManufDate) return -1;
        return 0;
}
function sortBysearchString(a,b)
{
        if (a.searchString > b.searchString) return 1;
        if (a.searchString < b.searchString) return -1;
        return 0;
}
function createBook(searchString,searchStringManufDate,searchStringDateManuf)
{
    var a = new Object();
    a.searchString = searchString;
    a.searchStringManufDate = searchStringManufDate;
    a.searchStringDateManuf = searchStringDateManuf;
    return a;
}

function print_r(obj)
{
    var str2='';
    for(s in obj)
    {
        str2+=  "Array["+s+"]"+obj[s]+"\n";
    }
    return str2;
}

