﻿// JScript File

    var http = getXMLHTTP();
    var writebackHttp ;
    var savemoduleHttp ;
    var sendmoduleHttp ;
    var deleteHttp ;
    var deleteModuleHttp ;

    function writebackPage ( asNew ) {
        var postString = Sortable.serialize("firstlist") ;
        postString = postString + "&" + Sortable.serialize("secondlist") ;
        postString = postString + "&" + Sortable.serialize("thirdlist") ;
        pageId = document.getElementById("PageID").value ;
        //alert ( postString );
        //Use local HTTP if we are not debugging and don't care about getting status changes
        //(this messes with the spawn function which uses the same HTTP var)
        writebackHttp = getXMLHTTP();
        if ( asNew == 2 ) {
            //Creating a new Page
            retVal = prompt("Please type a name for the new page:","New Page");
            window.location = "/WriteBack.aspx?Redirect=1&PageName=" + escape( retVal ) + "&Layout=&UID=" + UniqueDate() ;
        } else if ( asNew == 1 ) {
            //Creating a new Page
            retVal = prompt("Please type a name for the new page:","New Page");
            window.location = "/WriteBack.aspx?Redirect=1&PageName=" + escape( retVal ) + "&Layout=" + escape( postString ) + "&UID=" + UniqueDate() ;
            //writebackHttp.send(null);
            //writebackHttp.onreadystatechange = reloadWriteback ;
        } else {
            //Writing back the contents of an existing page
            writebackHttp.open("GET", "/WriteBack.aspx?PageID=" + pageId + "&Layout=" + escape( postString ) + "&UID=" + UniqueDate() , true);
            writebackHttp.onreadystatechange = ModuleCallback ;
            writebackHttp.send(null);
        }
        //http.onreadystatechange = ModuleCallback ;
        //alert ( "/WriteBack.aspx?PageID=" + pageId + "&Layout=" + escape( postString ) ) ;
    }

    function saveModuleType ( palateid , moduleid ) {
        sendmoduleHttp  = getXMLHTTP();
        sendmoduleHttp.open("GET", "/WriteBack.aspx?Palate=" + palateid + "&Module=" + moduleid + "&UID=" + UniqueDate() , true);
        sendmoduleHttp.send(null);
        //alert ("here");
    }
    
    function sendModuleToPage ( pageid , moduleid ) {
        savemoduleHttp = getXMLHTTP();
        savemoduleHttp.open("GET", "/WriteBack.aspx?Page=" + pageid + "&Module=" + moduleid + "&UID=" + UniqueDate() , true);
        savemoduleHttp.send(null);
        removeModule ( moduleid ) ;
        //alert ("here");
    }
    
    function deleteModule ( moduleid ) {
        deleteModuleHttp = getXMLHTTP();
        deleteModuleHttp.open("GET", "/WriteBack.aspx?Delete=1&Module=" + moduleid + "&UID=" + UniqueDate() , true);
        deleteModuleHttp.send(null);
        removeModule ( moduleid ) ;
        //alert ("here");
    }
    
    function deleteTab ( tabId ) {
        //alert ( postString );
        //Use local HTTP if we are not debugging and don't care about getting status changes
        //(this messes with the spawn function which uses the same HTTP var)
        var deleteHttp = getXMLHTTP();
        window.location = "/WriteBack.aspx?Redirect=1&DeleteTab=" + tabId ;
        //deleteHttp.send(null);
        //deleteHttp.onreadystatechange = reloadDelete ;
    }

    function reloadWriteback ( div ) {
	    if ( writebackHttp.readyState == 4) {
	        //alert ( http.status ) ;
		    if ( writebackHttp.status == 200) {
                window.location.reload();
            }
        }
    }

    function reloadDelete ( div ) {
	    if ( deleteHttp.readyState == 4) {
	        //alert ( http.status ) ;
		    if ( deleteHttp.status == 200) {
                window.location.reload();
            }
        }
    }
    function removeModule ( div ) {
    //alert ( div ) ;
        //alert ( document.all( div ) );
        var d = document.getElementById ( div ) ;
        d.parentNode.removeChild( d ) ;     
        writebackPage( false );
    }

    function updateModuleOLD ( div , moduleID ) {

        var d = document.getElementById ( div ) ;
        var s = document.createElement("div");
        s.id = "reload" + UniqueDate() ;
        d.parentNode.insertBefore ( s , d )
        d.parentNode.removeChild( d ) ;     

        if (http.readyState != 0) {
            http.abort();
        }
        http = getXMLHTTP();
        http.open("GET", "/wrapper.aspx?UID=" + UniqueDate() + "&ModuleID=" + moduleID + "&Parent=" + s.id , true);
        //http.open("GET", "/xmlfile.xml?" + UniqueDate() , true);
        http.onreadystatechange = ModuleCallback ;
        http.send(null);
        spawnCreate = false ;        
        writebackPage( false );
    }

	function updateModule ( moduleid , title , url , typeid , returnDiv ) { 
        //window.location = "/Create.aspx?InPlace=True&Title=" + title + "&SearchURL=" + escape( url ) + "&TypeID=" + typeid + "&Parent=CreateSrchr&Replace=true&UID=" + UniqueDate() ;
        if (http.readyState != 0) { 
            http.abort(); 
        } 
        http = getXMLHTTP() ;
        http.open("GET", "/Wrapper.aspx?Update=True&ModuleID=" + moduleid + "&Title=" + title + "&SearchURL=" + escape( url ) + "&TypeID=" + typeid + "&Parent=" + returnDiv + "&Replace=true&UID=" + UniqueDate() , true );
        http.onreadystatechange = ModuleCallback ;
        http.send(null);
        //alert ( http.readyState );
        //alert ( http.responseText ) ;
    }

	function updateModule2 ( moduleid , title , domain , engineid , typeid , returnDiv ) { 
        //window.location = "/Create.aspx?InPlace=True&Title=" + title + "&SearchURL=" + escape( url ) + "&TypeID=" + typeid + "&Parent=CreateSrchr&Replace=true&UID=" + UniqueDate() ;
        if (http.readyState != 0) { 
            http.abort(); 
        } 
        http = getXMLHTTP() ;
        http.open("GET", "/Wrapper.aspx?Update=True&ModuleID=" + moduleid + "&Title=" + encodeURIComponent(title) + "&DomainName=" + encodeURIComponent(domain) + "&EngineID=" + engineid + "&TypeID=" + typeid + "&Parent=" + returnDiv + "&Replace=true&UID=" + UniqueDate() , true );
        http.onreadystatechange = ModuleCallback ;
        http.send(null);
        //alert ( http.readyState );
        //alert ( http.responseText ) ;
    }

	function newModule ( title , url , typeid , returnDiv ) { 
        //window.location = "/Create.aspx?InPlace=True&Title=" + title + "&SearchURL=" + escape( url ) + "&TypeID=" + typeid + "&Parent=CreateSrchr&Replace=true&UID=" + UniqueDate() ;
        http.open("GET", "/Wrapper.aspx?Title=" + title + "&SearchURL=" + escape( url ) + "&TypeID=" + typeid + "&Parent=" + returnDiv + "&Replace=true&UID=" + UniqueDate() , false );
        http.onreadystatechange = ModuleCallback ;
        http.send(null);
        //setTimeout ( writebackPage( false ) , 3000 );
    }
    
    function quickCreate ( domain ) { 

        window.location = "/WriteBack.aspx?Redirect=1&Domain=" + domain + "&PageID=" + document.getElementById("PageID").value + "&q=" + encodeURIComponent(document.getElementById('SearchText').value) + "&UID=" + UniqueDate() ;
        
        //http.open("GET", "/Wrapper.aspx?Domain=" + domain + "&Parent=firstlist&UID=" + UniqueDate() , false );
        //http.onreadystatechange = ModuleCallback ;
        //http.send(null);
    }
    
	function loginXXX ( email , password , returnDiv ) { 
        http.open("GET", "/wrapper.aspx?Email=" + email + "&Password=" + password + "&Parent=CreateSrchr" , true);
        http.onreadystatechange = ModuleCallback ;
        http.send(null);
    }

    function ModuleCallback ( div ) {
        //alert ( 'here1' );
	    if ( http.readyState == 4) {
	        //alert ( http.status ) ;
		    if ( http.status == 200) {
                //alert ( http.status ) ;

                var xmlDoc ;
                var isLoaded ;
                if (window.ActiveXObject) {
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async=false;
                    isLoaded = xmlDoc.load( http.responseBody );
                    if ( ! ( isLoaded ) ) {
                        alert ( isLoaded ) ;
                        //alert ( http.getAllResponseHeaders() ) ;
                        alert ( http.responseText ) ;
                    }                    
                    else
                    { //alert ( "here" ) ; 
                    }
                }
                else if ( document.implementation && document.implementation.createDocument ) {
                    /*
                    oxmlhttp = null;
                    try
                      { oxmlhttp = new XMLHttpRequest();
                        //oxmlhttp.overrideMimeType("text/xml");
                      }
                    catch(e)
                      { try
                          { oxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                          alert ( "here 4 " );
                          }
                        catch(e)
                          { ;
                          alert ( "here 2 " );
                          }
                      }
                    if(!oxmlhttp) {
                         alert ( "here 3 " );
                         }
                     */
                    try
                      { 
                      //var parser = new DOMParser();
                        //var xmlDoc = parser.parseFromString( http.responseText , "text/xml");
                        xmlDoc = http.responseXML;
                        
                        //alert ( xmlDoc ) ;
                        var p = xmlDoc.getElementsByTagName("parent")[0] ;
                        //alert ( p.firstChild.nodeValue ) ;
                        var div = p.firstChild.nodeValue ;
                        //var d = xmlDoc.getElementsByTagName("div")[0] ;
                        //alert ( d.firstChild.nodeValue ) ;
                        //var c = document.getElementById( div ) ;
                        //c.innerText = "" ;
                        //c.appendChild ( d );
                         }
                    catch(e)
                      { 
                          alert ( e.message );      }

        //alert (  http.responseText ) ;
      
    //                    xmlDoc = document.implementation.createDocument("","doc",null);
    //                    xmlDoc.async=false;
                        //http.overrideMimeType("text/xml");
    //                    isLoaded = xmlDoc.load( oxmlhttp.responseText );
    //                    if ( isLoaded == false ) { 
    //                        alert ( http.responseText ) ;
    //                    } ;
                        
                        //alert ( xmlDoc.readyState ) ;
                }        
                
                //alert ( http.responseText ) ;
                var replace; 
                if ( xmlDoc.getElementsByTagName("parent").length > 0 ) {

                    var p = xmlDoc.getElementsByTagName("parent")[0] ;
                    div = p.firstChild.nodeValue ;

                    //div = xmlDoc.getElementsByTagName("parent")[0].text
                    
                    //alert ( xmlDoc.getElementsByTagName("parent") ) ;
                    replace = new Boolean ( p.getAttribute("replace") ) ;
                    
                    //alert (replace);
                } else {
                    //alert ( "no parent node" ) ;
                }

                if ( document.implementation && document.implementation.createDocument ) {
                    if ( xmlDoc.getElementsByTagName("div").length > 0 ) {
                        var XMLs = new XMLSerializer () ;
                        var d = xmlDoc.getElementsByTagName("div")[0] ;
                        var c = document.getElementById( div ) ;
                        var str ;
                        //alert ( d.innerHTML );
                        if ( replace ) {
                            str = XMLs.serializeToString ( d ) ;
                        } else {
                            str = XMLs.serializeToString ( d ) ;
                        }
                        str = str.replace( /AMPERSANDAMPERSAND/g , "\&" ) ; 
                        c.innerHTML = str ;
                    } 
                    else {
                        //alert ( "No div" ) ;
                    }
                } else { 
                    if ( xmlDoc.getElementsByTagName("div").length > 0 ) {
                        str = xmlDoc.getElementsByTagName("div")[0].xml
                        str = str.replace( /AMPERSANDAMPERSAND/g , "\&" ) ; 
                        
                        if ( div == 'firstlist' ) {
                            document.getElementById( div ).innerHTML = str + document.getElementById( div ).innerHTML ;
                        } else {
                            if ( replace ) {
                                document.getElementById( div ).innerHTML = str ; //document.getElementById( div ).innerHTML ;
                            } else {
                                document.getElementById( div ).innerHTML = str ; //document.getElementById( div ).innerHTML ;
                            }
                        }
                        if ( replace ) {
                            //document.getElementById( div ).outerHTML = document.getElementById( div ).innerHTML + str ;
                        } else {
                            //document.getElementById( div ).innerHTML = document.getElementById( div ).innerHTML + str ;
                        }
                    } 
                    else {
                        //alert ( "No div" ) ;
                    }                
                }

                //RunSortables () ;
                
                var s = document.createElement("script");
                s.language = "javascript" ;
                //alert( xmlDoc.getElementsByTagName("script").length ) ;
                if ( xmlDoc.getElementsByTagName("script").length > 0 ) {
                    if ( document.implementation && document.implementation.createDocument ) {
                        var XMLs = new XMLSerializer () ;
                        var sc = xmlDoc.getElementsByTagName("script")[0]
                        //alert ( sc.firstChild.data ) ;
                        var str = XMLs.serializeToString ( sc ) ;                        
                        str = str.replace( "<script language=\"javascript\">", "" ) 
                        str = str.replace( "</" + "script>", "" ) 
                        //alert ( str ) ;
                        var ct = document.createTextNode( str ) ;
                        //str= XMLs.serializeToString ( ct.firstChild ) ;
                        //alert ( ct.data ) ;
                        s.appendChild ( ct ) ;
                        str= XMLs.serializeToString ( s ) ;
                        //alert (str ) ;
                        h = document.getElementsByTagName("body")[0]; 
                        h.appendChild ( s ) ;
                    } else { 
                        var sc = xmlDoc.getElementsByTagName("script")[0]
                        s.text = sc.text ; 
                        var b ;  
                        b = document.getElementsByTagName("body")[0]; 
                        b.appendChild ( s ) ;
                    }
                }

                
 		    }
        }
    }

    var spawnCreate = true;
    /*
	window.onload = function() {
		list = document.getElementById("CreateSrchr");
		list.spawn = function () {
            if ( spawnCreate ) {
                if (http.readyState != 0) {
	                http.abort();
                }
                http = getXMLHTTP();
                http.open("GET", "/wrapper.aspx?UID=" + UniqueDate() + "&Parent=CreateSrchr" , true);
                //http.open("GET", "/webreference/xmlfile.xml?" + UniqueDate() , true);
                http.onreadystatechange = ModuleCallback ;
                http.send(null);
                spawnCreate = false ;
    		    //alert ("here");
            }
        }        
	};

	*/