
var xmlhttpX;
var xmlDoc;
var semaphore;
var socialForm;
var xmlhttp;

function queryProxy(query){
    query = "query="+query;
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null){
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="queryProxy.php";
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    //alert(query);
    xmlhttp.send(query);   
}
//USED FOR ONE ISBN 
function autoFill(f){
    var str = getFormValues(f);
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null){
        alert ("Browser does not support HTTP Request")
        return
    }
    var url="curl.php";
    
    xmlhttp.onreadystatechange=state_Change;
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    //alert(str);
    xmlhttp.send(str)	
}

//USED FOR A SINGLE ISBN - FILLS FORM WHICH CAN THEN BE SUBMITTED
function state_Change(){
    if (xmlhttp.readyState==4){// 4 = "loaded"
        if (xmlhttp.status==200){// 200 = "OK"
            
           // alert(xmlhttp.responseText.replace("\&","and"));
            
            
            xmlDoc=loadXMLString(xmlhttp.responseText.replace("\&","and"));
        
            if(xmlDoc.getElementsByTagName("BookList")[0].getAttribute("total_results") == 0){
                alert('Sorry data for this book was not available');
            }else{
        
                var x=xmlDoc.getElementsByTagName("BookData")[0].childNodes;
        
                for (i=0;i<x.length;i++){
                    //alert(x[i].nodeName);
                    if(x[i].nodeName =="TitleLong" && x[i].nodeValue){
                        document.getElementById('Title').value=xmlDoc.getElementsByTagName("TitleLong")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="Westminster" && x[i].hasChildNodes()){
                        document.getElementById('Westminster').value=xmlDoc.getElementsByTagName("Westminster")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="book_id" && x[i].hasChildNodes()){
                        document.getElementById('book_id').value=xmlDoc.getElementsByTagName("book_id")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="PubYear" && x[i].hasChildNodes()){
                        document.getElementById('PubYear').value=xmlDoc.getElementsByTagName("PubYear")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="Format" && x[i].hasChildNodes()){
                        document.getElementById('Format').value=xmlDoc.getElementsByTagName("Format")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="Media" && x[i].hasChildNodes()){
                        document.getElementById('Media').value=xmlDoc.getElementsByTagName("Media")[0].childNodes[0].nodeValue; 
                    }
                    else if(x[i].nodeName =="Volume" && x[i].hasChildNodes()){
                        document.getElementById('Volume').value=xmlDoc.getElementsByTagName("Volume")[0].childNodes[0].nodeValue; 
                    }
            
                    else if(x[i].nodeName =="Title" && x[i].hasChildNodes()){
                        document.getElementById('Title').value=xmlDoc.getElementsByTagName("Title")[0].childNodes[0].nodeValue; 
                    }
            
                    else if(x[i].nodeName =="AuthorsText" && x[i].hasChildNodes()){
                        document.getElementById('Author').value= xmlDoc.getElementsByTagName("AuthorsText")[0].childNodes[0].nodeValue;
                    }
            
                    else if(x[i].nodeName =="PublisherText" && x[i].hasChildNodes()){
                        document.getElementById('Publisher').value=xmlDoc.getElementsByTagName("PublisherText")[0].childNodes[0].nodeValue;
                    }
            
                    else if(x[i].nodeName =="Subjects"){
                        //get all the child subject nodes
                        var s=xmlDoc.getElementsByTagName("Subjects")[0].childNodes;
                        var subjects ="";
                        //concatenate all the content of the subject nodes and write to subject form field
                        for (j=0;j<s.length;j++){
                            //Display only element nodes
                            if (s.item(j).nodeType==1){
                                subjects = subjects + s.item(j).childNodes[0].nodeValue;
                            }                                   
                        }
                        document.getElementById('tags').value = subjects;
                    }
            
                    else if(x[i].nodeName =="Details"){
                        //document.getElementById('Title').value=xmlDoc.getElementsByTagName("TitleLong")[0].childNodes[0].nodeValue; 
                    }
                }

            }


        }else{
            alert("Problem retrieving XML data:" + xmlhttp.statusText);
        }
    }
}


function doit(){	
    var sortTag = document.getElementById("sort");
    var selVal = sortTag.selectedIndex;                        
    document.getElementById("selectedId").value = selVal;
}

function  viewAll(buttonId){
    var buttonObj = document.getElementById(buttonId);
    document.getElementById("viewAllField").value = buttonObj.name;
    buttonObj.form.submit();
}            

function tagIt(formIn,ref){	
    //alert(ref +\" \"+tag_church);
    var subs = prompt('Please help our library by telling us what subjects this books contains separated by spaces or hit cancel to skip:');
    //if person entered string and it is not null
    if(subs){
    	var flag = confirm('You said '+subs+ ' Is this correct?' );
        //if person confirms their entry
        if(flag){
            //social tagging may need moderator intercession
            addTags(formIn,subs ,ref);
    	}	
    }else{
        //if the user does not add any tags submit the return        
        formIn.submit(); 
    }
            
}    
	
function addTags(formIn, tagsIn, book){ 
    var str = "number="+book+"&tags="+tagsIn+"&social=true&save=true";	
    xmlhttpX=GetXmlHttpObject();
    if (xmlhttpX==null){
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="bookedit.php";
    xmlhttpX.onreadystatechange=working;
    xmlhttpX.open("POST",url,true);
    xmlhttpX.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");	
    //alert(str);
    socialForm = formIn;
    xmlhttpX.send(str);
    	
}

function working(){
    if (xmlhttpX.readyState==4){// 4 = "loaded"
        //alert(xmlhttpX.responseText);
        if (xmlhttpX.status==200){// 200 = "OK"   
            //alert('status OK '+xmlhttpX.responseText);
            socialForm.submit();     

            
        }        
    }
}

function addBook(f){
    var str = f;
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null){
        alert ("Browser does not support HTTP Request");
        return;
    }
    var url="bookadd.php";
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    //alert(str);
    xmlhttp.send(str);
}

//USED FOR A BATCH OF ISBN'S
function batch_State_Change(){
    if (xmlhttp.readyState==4){// 4 = "loaded"
        if (xmlhttp.status==200){// 200 = "OK"
            alert(xmlhttp.responseText);
        
        
            xmlDoc=loadXMLString(xmlhttp.responseText);
            //IF THE DATABASE DOES NOT HAVE THIS BOOK IT RETURNS total_results = 0
            //CHECK IF THE DB HAS THE BOOK
            if(xmlDoc.getElementsByTagName("BookList")[0].getAttribute("total_results") == 0){
                //DO A POPUP TO NOTIFY USER THAT NO DATA IS AVAILABLE
                alert('Sorry data for this book was not available');
            }else{
        
        
                //ELEMENT HAS DATA - GET IT, AN ISBN WILL ALWAYS RETURN ONLY ONE BOOK
                var x=xmlDoc.getElementsByTagName("BookData")[0].childNodes;
                var queryString = "";
                for (i=0;i<x.length;i++){
        
                    if(x[i].nodeName =="TitleLong" && x[i].nodeValue){
                        queryString += "Title="+ xmlDoc.getElementsByTagName("TitleLong")[0].childNodes[0].nodeValue.replace(/,/g," "); 
                    }
            
                    else if(x[i].nodeName =="Title" && x[i].childNodes[0].nodeValue){
                        queryString += "Title="+ xmlDoc.getElementsByTagName("Title")[0].childNodes[0].nodeValue.replace(/,/g," "); 
                    }
            
                    else if(x[i].nodeName =="AuthorsText" && x[i].childNodes[0].nodeValue){
                        queryString += "&Author="+ xmlDoc.getElementsByTagName("AuthorsText")[0].childNodes[0].nodeValue.replace(/,/g," ");;
                    }
            
                    else if(x[i].nodeName =="PublisherText" && x[i].childNodes[0].nodeValue){
                        queryString += "&Publisher="+ xmlDoc.getElementsByTagName("PublisherText")[0].childNodes[0].nodeValue.replace(/,/g," ");
                    }
            
                    else if(x[i].nodeName =="Subjects"){
                        //get all the child subject nodes
                        var s=xmlDoc.getElementsByTagName("Subjects")[0].childNodes;
                        var subjects ="";
                        //concatenate all the content of the subject nodes 
                        for (j=0;j<s.length;j++){
                            //Display only element nodes
                            if (s.item(j).nodeType==1){
                                subjects = subjects + s.item(j).childNodes[0].nodeValue.replace(/,/g," ");
                            }                                   
                        }
                        queryString += "&Subject"+ subjects;
                    }
            
                    else if(x[i].nodeName =="Details"){
                        //document.getElementById('Title').value=xmlDoc.getElementsByTagName("TitleLong")[0].childNodes[0].nodeValue.replace(/,/g," "); 
                    }
                }
            
                /*
                 *
            IS RETURNING :
            Title,Author,Pulisher,Subject
                 */
            
                document.getElementById('isbnArea').value= queryString;
                semaphore = true;
            }


        }else{
            alert("Problem retrieving XML data:" + xmlhttp.statusText);
        }
    }
}

function capture(x){
    document.getElementById(x).select();
}

function clearForm(x){
    x.reset();
}

function selectForm(x){
    document.getElementById(x).select();
}
	
function GetXmlHttpObject(){
    var xmlhttp=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlhttp=new XMLHttpRequest();
    }
    catch (e)
    {
        //Internet Explorer
        try
        {
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlhttp;
}

function loadXMLString(txt){
    try //Internet Explorer
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(txt);
        return(xmlDoc); 
    }
    catch(e)//{alert(e.message)}
    {
        try //Firefox, Mozilla, Opera, etc.
        {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(txt,"text/xml");
           // alert(txt);
            return(xmlDoc);
        }
        catch(e) {alert(e.message)}
    }
    return(null);
}

function getFormValues(fobj,valFunc){

    var str = "";
    var valueArr = null;
    var val = "";
    var cmd = "";

    for(var i = 0;i < fobj.elements.length;i++){
        switch(fobj.elements[i].type){

            case "text":
                if(valFunc){
                    //use single quotes for argument so that the value of
                    //fobj.elements[i].value is treated as a string not a literal
                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
                    val = eval(cmd)
                }
                str += fobj.elements[i].name +
                    "=" + escape(fobj.elements[i].value) + "&";
                break;

            case "select-one":
                str += fobj.elements[i].name +
                    "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
                break;             
            case "textarea":
                str += fobj.elements[i].name +
                    "=" + escape(fobj.elements[i].value) + "&";
                break;

        }

    }

    str = str.substr(0,(str.length - 1));

    return str;

}    
  
function getFormValuesArea(fobj){

    var str = "";
    for(var i = 0;i < fobj.elements.length;i++){
        switch(fobj.elements[i].type){                            
            case "textarea":
                str += fobj.elements[i].name +
                    "=" + escape(fobj.elements[i].value);
                break;
        }
    }
    return str;
}

//USED FOR A LIST OF ISBN'S
function autoFillBatch(f){
    //str is a \n seperated string of isbn's
    var str = getFormValuesArea(f);
    str = str.replace(/isbnArea=/g,"");
    var strArr = str.split("%0A");//split over new lines
    //alert("SPLIT "+strArr.length);
    semaphore = true;
    var i =0;
    while(i<strArr.length){
        if(semaphore){
            xmlhttp=GetXmlHttpObject();
            if (xmlhttp==null){
                alert ("Browser does not support HTTP Request");
                return;
            }
            var url="curl.php";
            xmlhttp.onreadystatechange=batch_State_Change;
        	
            xmlhttp.open("POST",url,true);
            xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        	
            //alert("isbnArea="+strArr[i]);
            xmlhttp.send("isbnArea="+strArr[i]);
            i++;
            semaphore = false;
    	}
    	
    }	
}
