Changeset 26397 for main


Ignore:
Timestamp:
2012-10-25T15:30:04+13:00 (12 years ago)
Author:
sjm84
Message:

Rewriting two more files using jQuery

Location:
main/trunk/greenstone3/web/interfaces/default/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/document_scripts.js

    r26390 r26397  
    3838    }
    3939   
    40     var ajax = gs.functions.ajaxRequest();
    41     ajax.open("GET", gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + sectionID + "?hl=" + hl + "&p.s=TextQuery&ilt=" + template.replace(" ", "%20"), true);
    42     ajax.onreadystatechange = function()
    43     {
    44         if(ajax.readyState == 4 && ajax.status == 200)
    45         {
    46             var response = ajax.responseText;
     40    var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + sectionID + "?hl=" + hl + "&p.s=TextQuery&ilt=" + template.replace(" ", "%20");
     41   
     42    $.ajax(url)
     43    .success(function(response)
     44    {
     45        if(response)
     46        {
     47            var textStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
     48            var textEnd = response.lastIndexOf("<");
    4749           
    48             if(response)
    49             {
    50                 var textStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
    51                 var textEnd = response.lastIndexOf("<");
    52                
    53                 if(textStart == 0 || textEnd == -1 || textEnd <= textStart)
    54                 {
    55                     callback("");
    56                 }
    57                
    58                 var text = response.substring(textStart, textEnd);
    59                 callback(text);
    60             }
    61             else
    62             {
    63                 callback(null);
    64             }
    65         }
    66         else if(ajax.readyState == 4)
     50            if(textStart == 0 || textEnd == -1 || textEnd <= textStart)
     51            {
     52                callback("");
     53            }
     54           
     55            var text = response.substring(textStart, textEnd);
     56            callback(text);
     57        }
     58        else
    6759        {
    6860            callback(null);
    6961        }
    70     }
    71     ajax.send();
     62    })
     63    .error(function()
     64    {
     65        callback(null);
     66    });
    7267}
    7368
     
    8883    template += '</xsl:template>';
    8984
    90     var ajax = gs.functions.ajaxRequest();
    9185    var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + sectionID + "?ilt=" + template.replace(" ", "%20");
    9286
     
    9589        url += "&dt=hierarchy";
    9690    }
    97     ajax.open("GET", url, true);
    98     ajax.onreadystatechange = function()
    99     {
    100         if(ajax.readyState == 4 && ajax.status == 200)
    101         {
    102             var response = ajax.responseText;
     91   
     92    $.ajax(url)
     93    .success(function(response)
     94    {
     95        if(response)
     96        {
     97            var sectionsStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
     98            var sectionsEnd = response.lastIndexOf("<");
    10399           
    104             if(response)
    105             {
    106                 var sectionsStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
    107                 var sectionsEnd = response.lastIndexOf("<");
    108                
    109                 if(sectionsStart == 0 || sectionsEnd == -1 || sectionsEnd <= sectionsStart)
    110                 {
    111                     callback(" ");
    112                     return;
    113                 }
    114                
    115                 var sections = response.substring(sectionsStart, sectionsEnd);
    116                 callback(sections);
    117             }
    118             else
    119             {
    120                 callback(null);
    121             }
    122         }
    123         else if(ajax.readyState == 4)
     100            if(sectionsStart == 0 || sectionsEnd == -1 || sectionsEnd <= sectionsStart)
     101            {
     102                callback(" ");
     103                return;
     104            }
     105           
     106            var sections = response.substring(sectionsStart, sectionsEnd);
     107            callback(sections);
     108        }
     109        else
    124110        {
    125111            callback(null);
    126112        }
    127     }
    128     ajax.send();
     113    })
     114    .error(function()
     115    {
     116        callback(null);
     117    });
    129118}
    130119
    131120function toggleSection(sectionID, callback, tocDisabled)
    132121{
    133     var docElem = document.getElementById("doc" + sectionID);
    134     var tocElem = document.getElementById("toc" + sectionID);
    135    
    136     var tocToggleElem = document.getElementById("ttoggle" + sectionID);
    137     var docToggleElem = document.getElementById("dtoggle" + sectionID);
    138    
    139     if(docElem.style.display == "none")
    140     {
    141         if(tocToggleElem && !tocDisabled)
    142         {
    143             tocToggleElem.setAttribute("src", gs.imageURLs.collapse);
    144         }
    145        
    146         if(tocElem && !tocDisabled)
    147         {
    148             tocElem.style.display = "block";
    149         }
    150        
    151         if(gs.functions.hasClass(docElem, "noText"))
     122    var docElem = gs.jqGet("doc" + sectionID);
     123    var tocElem = gs.jqGet("toc" + sectionID);
     124   
     125    var tocToggleElem = gs.jqGet("ttoggle" + sectionID);
     126    var docToggleElem = gs.jqGet("dtoggle" + sectionID);
     127   
     128    if(docElem.css("display") == "none")
     129    {
     130        if(tocToggleElem.length && !tocDisabled)
     131        {
     132            tocToggleElem.attr("src", gs.imageURLs.collapse);
     133        }
     134       
     135        if(tocElem.length && !tocDisabled)
     136        {
     137            tocElem.css("display", "block");
     138        }
     139       
     140        if(docElem.hasClass("noText"))
    152141        {
    153142            getTextForSection(sectionID, function(text)
     
    158147                    if(text.search("wrap" + nodeID) != -1)
    159148                    {
    160                         document.getElementById("zoomOptions").style.display = null;
    161                         document.getElementById("pagedImageOptions").style.display = null;
     149                        gs.jqGet("zoomOptions").css("display", null);
     150                        gs.jqGet("pagedImageOptions").css("display", null);
    162151                    }
    163152                    getSubSectionsForSection(sectionID, function(sections)
     
    165154                        if(sections)
    166155                        {
    167                             var textElem = document.getElementById("doc" + sectionID);
    168                             $(textElem).html(text + sections);
     156                            var textElem = gs.jqGet("doc" + sectionID);
     157                            textElem.html(text + sections);
    169158                           
    170                             docElem.setAttribute("class", docElem.getAttribute("class").replace(/\bnoText\b/g, ""));
    171                             docElem.style.display = "block";
    172                             docToggleElem.setAttribute("src", gs.imageURLs.collapse);
     159                            docElem.removeClass("noText");
     160                            docElem.css("display", "block");
     161                            docToggleElem.attr("src", gs.imageURLs.collapse);
    173162                           
    174163                            if(callback)
     
    177166                            }
    178167                           
    179                             if(document.getElementById("viewSelection"))
     168                            if(gs.jqGet("viewSelection").length)
    180169                            {
    181170                                changeView();
     
    184173                        else
    185174                        {
    186                             docToggleElem.setAttribute("src", gs.imageURLs.expand);
     175                            docToggleElem.attr("src", gs.imageURLs.expand);
    187176                            if(callback)
    188177                            {
     
    194183                else
    195184                {
    196                     docToggleElem.setAttribute("src", gs.imageURLs.expand);
     185                    docToggleElem.attr("src", gs.imageURLs.expand);
    197186                    if(callback)
    198187                    {
     
    202191            });
    203192       
    204             docToggleElem.setAttribute("src", gs.imageURLs.loading);
     193            docToggleElem.attr("src", gs.imageURLs.loading);
    205194        }
    206195        else
    207196        {
    208             docToggleElem.setAttribute("src", gs.imageURLs.collapse);
    209             docElem.style.display = "block";
     197            docToggleElem.attr("src", gs.imageURLs.collapse);
     198            docElem.css("display", "block");
    210199           
    211200            if(callback)
     
    217206    else
    218207    {
    219         docElem.style.display = "none";
     208        docElem.css("display", "none");
    220209       
    221210        //Use the page image if this is a leaf node and the chapter image if it not
    222         docToggleElem.setAttribute("src", gs.imageURLs.expand);
    223        
    224         if(tocToggleElem)
    225         {
    226             tocToggleElem.setAttribute("src", gs.imageURLs.expand);
    227         }
    228        
    229         if(tocElem)
    230         {
    231             tocElem.style.display = "none";
     211        docToggleElem.attr("src", gs.imageURLs.expand);
     212       
     213        if(tocToggleElem.length)
     214        {
     215            tocToggleElem.attr("src", gs.imageURLs.expand);
     216        }
     217       
     218        if(tocElem.length)
     219        {
     220            tocElem.css("display", "none");
    232221        }
    233222       
     
    288277function expandOrCollapseAll(expand)
    289278{
    290     var divs = document.getElementsByTagName("DIV");
     279    var divs = $("div");
    291280    var startCounter = 0;
    292281    var endCounter = 0;
     
    294283    for(var i = 0; i < divs.length; i++)
    295284    {
    296         if(divs[i].getAttribute("id") && divs[i].getAttribute("id").search(/^doc/) != -1)
    297         {
    298             var id = divs[i].getAttribute("id").replace(/^doc(.*)/, "$1");
     285        if($(divs[i]).attr("id") && $(divs[i]).attr("id").search(/^doc/) != -1)
     286        {
     287            var id = $(divs[i]).attr("id").replace(/^doc(.*)/, "$1");
    299288            if(isExpanded(id) != expand)
    300289            {
     
    344333function loadTopLevelPage(callbackFunction, customURL)
    345334{
    346     var ajax = gs.functions.ajaxRequest();
    347 
    348     var url = gs.xsltParams.library_name + "?a=d&c=" + gs.cgiParams.c + "&excerptid=gs-document";
    349     if(gs.cgiParams.d && gs.cgiParams.d.length > 0)
    350     {
    351         url += "&d=" + gs.cgiParams.d.replace(/([^.]*)\..*/, "$1");
    352     }
    353     else if(gs.cgiParams.href && gs.cgiParams.href.length > 0)
    354     {
    355         url += "&d=&alb=1&rl=1&href=" + gs.cgiParams.href;
    356     }
    357 
    358     if(customURL != null)
    359     {
    360         ajax.open("GET", customURL, true);
     335    var url;
     336    if(customURL)
     337    {
     338        url = customURL;
    361339    }
    362340    else
    363341    {
    364         ajax.open("GET", url, true);
    365     }
    366 
    367     ajax.onreadystatechange = function()
    368     {
    369         if(ajax.readyState == 4 && ajax.status == 200)
    370         {
    371             var response = ajax.responseText;
     342        url = gs.xsltParams.library_name + "?a=d&c=" + gs.cgiParams.c + "&excerptid=gs-document";
     343        if(gs.cgiParams.d && gs.cgiParams.d.length > 0)
     344        {
     345            url += "&d=" + gs.cgiParams.d.replace(/([^.]*)\..*/, "$1");
     346        }
     347        else if(gs.cgiParams.href && gs.cgiParams.href.length > 0)
     348        {
     349            url += "&d=&alb=1&rl=1&href=" + gs.cgiParams.href;
     350        }
     351    }
     352
     353    $.ajax(url)
     354    .success(function(response)
     355    {
     356        if(response)
     357        {
     358            var targetElem = gs.jqGet("gs-document");
     359            var docStart = response.indexOf(">") + 1;
     360            var docEnd = response.lastIndexOf("<");
     361            var doc = response.substring(docStart, docEnd);
     362
     363            targetElem.html(doc);
    372364           
    373             if(response)
    374             {
    375                 var targetElem = document.getElementById("gs-document");
    376                 var docStart = response.indexOf(">") + 1;
    377                 var docEnd = response.lastIndexOf("<");
    378                 var doc = response.substring(docStart, docEnd);
    379 
    380                 targetElem.innerHTML = doc;
    381                
    382                 if(callbackFunction)
    383                 {
    384                     callbackFunction();
    385                 }
    386             }
    387         }
    388         else if(ajax.readyState == 4)
    389         {
    390             setTimeout(function(){loadTopLevelPage(callbackFunction, customURL);}, 1000);
    391         }
    392     };
    393     ajax.send();
     365            if(callbackFunction)
     366            {
     367                callbackFunction();
     368            }
     369        }
     370    })
     371    .error(function()
     372    {
     373        setTimeout(function(){loadTopLevelPage(callbackFunction, customURL);}, 1000);
     374    });
    394375}
    395376
    396377function retrieveFullTableOfContents()
    397378{
    398     var ajax = gs.functions.ajaxRequest();
    399    
    400379    var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "?excerptid=tableOfContents&ed=1";
    401380    if(gs.cgiParams.d && gs.cgiParams.d.length > 0)
     
    407386        url += "&a=d&d=&alb=1&rl=1&href=" + gs.cgiParams.href;
    408387    }
    409    
    410     ajax.open("GET", url, true);
    411     ajax.onreadystatechange = function()
    412     {
    413         if(ajax.readyState == 4 && ajax.status == 200)
    414         {
    415             var newTOCElem = ajax.responseText;
    416             var tocStart = newTOCElem.indexOf(">") + 1;
    417             var tocEnd = newTOCElem.lastIndexOf("<");
    418            
    419             var newTOC = newTOCElem.substring(tocStart, tocEnd);
    420            
    421             //Add the "Expand document"/"Collapse document" links
    422             newTOC = "<table style=\"width:100%; text-align:center;\"><tr><td><a href=\"javascript:expandOrCollapseAll(true);\">Expand document</a></td><td><a href=\"javascript:expandOrCollapseAll(false);\">Collapse document</a></td></tr></table>" + newTOC;
    423            
    424             //Collapse the TOC
    425             newTOC = newTOC.replace(/display:block/g, "display:none");
    426             newTOC = newTOC.replace(/display:none/, "display:block");
    427             newTOC = newTOC.replace(/images\/collapse/g, "images/expand");
    428            
    429             var tocElem = document.getElementById("tableOfContents");
    430             tocElem.innerHTML = newTOC;
    431            
    432             gs.variables.tocLoaded = true;
    433         }
    434         else if(ajax.readyState == 4)
    435         {
    436             setTimeout(retrieveFullTableOfContents, 1000);
    437         }
    438     }
    439     ajax.send();
     388
     389    $.ajax(url)
     390    .success(function(newTOCElem)
     391    {
     392        var tocStart = newTOCElem.indexOf(">") + 1;
     393        var tocEnd = newTOCElem.lastIndexOf("<");
     394       
     395        var newTOC = newTOCElem.substring(tocStart, tocEnd);
     396       
     397        //Add the "Expand document"/"Collapse document" links
     398        newTOC = "<table style=\"width:100%; text-align:center;\"><tr><td><a href=\"javascript:expandOrCollapseAll(true);\">Expand document</a></td><td><a href=\"javascript:expandOrCollapseAll(false);\">Collapse document</a></td></tr></table>" + newTOC;
     399       
     400        //Collapse the TOC
     401        newTOC = newTOC.replace(/display:block/g, "display:none");
     402        newTOC = newTOC.replace(/display:none/, "display:block");
     403        newTOC = newTOC.replace(/images\/collapse/g, "images/expand");
     404       
     405        var tocElem = gs.jqGet("tableOfContents");
     406        tocElem.html(newTOC);
     407       
     408        gs.variables.tocLoaded = true;
     409    })
     410    .error(function()
     411    {
     412        setTimeout(retrieveFullTableOfContents, 1000);
     413    });
    440414}
    441415
    442416function isExpanded(sectionID)
    443417{
    444     var docElem = document.getElementById("doc" + sectionID);
    445     if(docElem.style.display == "block")
     418    var docElem = gs.jqGet("doc" + sectionID);
     419    if(docElem.css("display") == "block")
    446420    {
    447421        return true;
     
    450424}
    451425
    452 function isParentOf(parent, child)
    453 {
    454     if(child.indexOf(parent) != -1 && child.length > parent.length && child[parent.length] == '.')
    455     {
    456         return true;
    457     }
    458     return false;
    459 }
    460 
    461426function minimizeSidebar()
    462427{
    463     var toc = document.getElementById("contentsArea");
    464     var maxLink = document.getElementById("sidebarMaximizeButton");
    465     var minLink = document.getElementById("sidebarMinimizeButton");
    466    
    467     if(toc)
    468     {
    469         toc.style.display = "none";
    470     }
    471    
    472     maxLink.style.display = "block";
    473     minLink.style.display = "none";
     428    var toc = gs.jqGet("contentsArea");
     429    var maxLink = gs.jqGet("sidebarMaximizeButton");
     430    var minLink = gs.jqGet("sidebarMinimizeButton");
     431   
     432    if(toc.length)
     433    {
     434        toc.css("display", "none");
     435    }
     436   
     437    maxLink.css("display", "block");
     438    minLink.css("display", "none");
    474439}
    475440
    476441function maximizeSidebar()
    477442{
    478     var coverImage = document.getElementById("coverImage");
    479     var toc = document.getElementById("contentsArea");
    480     var maxLink = document.getElementById("sidebarMaximizeButton");
    481     var minLink = document.getElementById("sidebarMinimizeButton");
    482    
    483     if(coverImage)
    484     {
    485         coverImage.style.display = "block";
    486     }
    487    
    488     if(toc)
    489     {
    490         toc.style.display = "block";
    491     }
    492    
    493     maxLink.style.display = "none";
    494     minLink.style.display = "block";
     443    var coverImage = gs.jqGet("coverImage");
     444    var toc = gs.jqGet("contentsArea");
     445    var maxLink = gs.jqGet("sidebarMaximizeButton");
     446    var minLink = gs.jqGet("sidebarMinimizeButton");
     447   
     448    if(coverImage.length)
     449    {
     450        coverImage.css("display", "block");
     451    }
     452   
     453    if(toc.length)
     454    {
     455        toc.css("display", "block");
     456    }
     457   
     458    maxLink.css("display", "none");
     459    minLink.css("display", "block");
    495460}
    496461
     
    501466function changeView()
    502467{
    503     var viewList = document.getElementById("viewSelection");
    504     var currentVal = viewList.value;
     468    var viewList = gs.jqGet("viewSelection");
     469    var currentVal = viewList.val();
    505470   
    506471    var view;
     
    524489    }
    525490   
    526     var ajax = gs.functions.ajaxRequest();
    527     ajax.open("GET", gs.xsltParams.library_name + "?a=d&view=" + view + "&c=" + gs.cgiParams.c);
    528     ajax.send();
     491    var url = gs.xsltParams.library_name + "?a=d&view=" + view + "&c=" + gs.cgiParams.c;
     492    $.ajax(url);
    529493}
    530494
    531495function setImageVisible(visible)
    532496{
    533     var divs = document.getElementsByTagName("DIV");
     497    var divs = $("div");
    534498    var images = new Array();
    535499    for (var i = 0; i < divs.length; i++)
    536500    {
    537         if(divs[i].id && divs[i].id.search(/^image/) != -1)
    538         {
    539             images.push(divs[i]);
     501        if($(divs[i]).attr("id") && $(divs[i]).attr("id").search(/^image/) != -1)
     502        {
     503            images.push($(divs[i]));
    540504        }
    541505    }
     
    546510        if(visible)
    547511        {
    548             image.style.display = "block";
     512            image.css("display", "block");
    549513        }
    550514        else
    551515        {
    552             image.style.display = "none";
     516            image.css("display", "none");
    553517        }
    554518    }
     
    557521function setTextVisible(visible)
    558522{
    559     var divs = document.getElementsByTagName("DIV");
     523    var divs = $("div");
    560524    var textDivs = new Array();
    561525    for (var i = 0; i < divs.length; i++)
    562526    {
    563         if(divs[i].id && divs[i].id.search(/^text/) != -1)
    564         {
    565             textDivs.push(divs[i]);
     527        if($(divs[i]).attr("id") && $(divs[i]).attr("id").search(/^text/) != -1)
     528        {
     529            textDivs.push($(divs[i]));
    566530        }
    567531    }
     
    572536        if(visible)
    573537        {
    574             text.style.display = "block";
     538            text.css("display", "block");
    575539        }
    576540        else
    577541        {
    578             text.style.display = "none";
     542            text.css("display", "none");
    579543        }
    580544    }
     
    589553    ilt +=   '</xsl:for-each>';
    590554    ilt += '</xsl:template>';
    591 
    592     var ajax = gs.functions.ajaxRequest();
    593     ajax.open("GET", gs.xsltParams.library_name + "?a=d&ed=1&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&ilt=" + ilt.replace(/ /g, "%20"), true);
    594     ajax.onreadystatechange = function()
    595     {
    596         if(ajax.readyState == 4 && ajax.status == 200)
    597         {
    598             document.getElementById("tableOfContents").innerHTML = ajax.responseText;
    599             replaceLinksWithSlider();
    600             var loading = document.getElementById("tocLoadingImage");
    601             loading.parentNode.removeChild(loading);
    602         }
    603         else if(ajax.readyState == 4)
    604         {
    605             setTimeout(function(){retrieveTableOfContentsAndTitles();}, 1000);
    606         }
    607     }
    608     ajax.send();
     555   
     556    var url = gs.xsltParams.library_name + "?a=d&ed=1&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&ilt=" + ilt.replace(/ /g, "%20");
     557
     558    $.ajax(url)
     559    .success(function(response)
     560    {
     561        gs.jqGet("tableOfContents").html(response);
     562        replaceLinksWithSlider();
     563        var loading = gs.jqGet("tocLoadingImage");
     564        loading.remove();
     565    })
     566    .error(function()
     567    {
     568        setTimeout(function(){retrieveTableOfContentsAndTitles();}, 1000);
     569    });
    609570}
    610571
    611572function replaceLinksWithSlider()
    612573{
    613     var tableOfContents = document.getElementById("tableOfContents");
    614     var liElems = tableOfContents.getElementsByTagName("LI");
    615    
     574    var tableOfContents = gs.jqGet("tableOfContents");
     575    var liElems = tableOfContents.find("li");
     576
    616577    var leafSections = new Array();
    617578    for (var i = 0; i < liElems.length; i++)
    618579    {
    619         var section = liElems[i];
     580        var section = $(liElems[i]);
    620581        var add = true;
    621582        for(var j = 0; j < leafSections.length; j++)
     
    623584            if(leafSections[j] == undefined){continue;}
    624585           
    625             var leaf = leafSections[j];
    626             if(leaf.getAttribute("id").search(section.getAttribute("id")) != -1)
     586            var leaf = $(leafSections[j]);
     587            if(leaf.attr("id").search(section.attr("id")) != -1)
    627588            {
    628589                add = false;
    629590            }
    630591           
    631             if(section.getAttribute("id").search(leaf.getAttribute("id")) != -1)
     592            if(section.attr("id").search(leaf.attr("id")) != -1)
    632593            {
    633594                delete leafSections[j];
    634595            }
    635596        }
    636        
     597
    637598        if(add)
    638599        {
     
    644605    {
    645606        if(leafSections[i] == undefined){continue;}
    646         leafSections[i].style.display = "none";
    647         var links = leafSections[i].getElementsByTagName("A");
     607
     608        leafSections[i].css("display", "none");
     609        var links = leafSections[i].find("a");
     610
    648611        var widget = new SliderWidget(links);
    649         leafSections[i].parentNode.insertBefore(widget.getElem(), leafSections[i]);
    650     }
    651    
     612        leafSections[i].before(widget.getElem());
     613    }
     614
    652615    //Disable all TOC toggles
    653     var imgs = document.getElementsByTagName("IMG");
     616    var imgs = $("img");
    654617    for(var j = 0; j < imgs.length; j++)
    655618    {
    656         var currentImage = imgs[j];
    657         if(currentImage.getAttribute("id") && currentImage.getAttribute("id").search(/^ttoggle/) != -1)
    658         {
    659             currentImage.setAttribute("onclick", "");
    660         }
    661         else if(currentImage.getAttribute("id") && currentImage.getAttribute("id").search(/^dtoggle/) != -1)
    662         {
    663             currentImage.setAttribute("onclick", currentImage.getAttribute("onclick").replace(/\)/, ", null, true)"));
     619        var currentImage = $(imgs[j]);
     620        if(currentImage.attr("id") && currentImage.attr("id").search(/^ttoggle/) != -1)
     621        {
     622            currentImage.attr("onclick", "");
     623        }
     624        else if(currentImage.attr("id") && currentImage.attr("id").search(/^dtoggle/) != -1)
     625        {
     626            currentImage.attr("onclick", currentImage.attr("onclick").replace(/\)/, ", null, true)"));
    664627        }
    665628    }
     
    673636
    674637    //The container for the widget
    675     var _mainDiv = document.createElement("DIV");
    676     _mainDiv.setAttribute("class", "ui-widget-content pageSlider");
     638    var _mainDiv = $("<div>");
     639    _mainDiv.attr("class", "ui-widget-content pageSlider");
    677640   
    678641    //The table of images
    679     var _linkTable = document.createElement("TABLE");
    680     _mainDiv.appendChild(_linkTable);
     642    var _linkTable = $("<table>");
     643    _mainDiv.append(_linkTable);
    681644   
    682645    //The image row of the table
    683     var _linkRow = document.createElement("TR");
    684     _linkTable.appendChild(_linkRow);
     646    var _linkRow = $("<tr>");
     647    _linkTable.append(_linkRow);
    685648   
    686649    //The list of titles we can search through
    687650    var _titles = new Array();
     651   
     652    //Keep track of the slider position
     653    var _prevScroll = 0;
    688654
    689655    //****************
     
    741707                    for(var i = 0; i < _titles.length; i++)
    742708                    {
    743                         _titles[i][1].cell.style.display = "none";
     709                        $(_titles[i][1].cell).css("display", "none");
    744710                    }
    745711                   
    746712                    for(var i = 0; i < matchingTitles.length; i++)
    747713                    {
    748                         matchingTitles[i][1].cell.style.display = "table-cell";
     714                        $(matchingTitles[i][1].cell).css("display", "table-cell");
    749715                    }
    750716                }
     
    757723                    if(currentTitle[0].search(currentValue.replace(/\./g, "\\.")) != -1)
    758724                    {
    759                         currentTitle[1].cell.style.display = "table-cell";
     725                        $(currentTitle[1].cell).css("display", "table-cell");
    760726                    }
    761727                    else
    762728                    {
    763                         currentTitle[1].cell.style.display = "none";
     729                        $(currentTitle[1].cell).css("display", "none");
    764730                    }
    765731                }
     
    770736    var getImage = function(page, attemptNumber)
    771737    {
    772         var ajax = gs.functions.ajaxRequest();
    773 
    774738        var href = page.getAttribute("href");
    775739        var startHREF = href.indexOf("'") + 1;
     
    797761        template += '</xsl:template>';
    798762
    799         ajax.open("GET", href + "?ilt=" + template.replace(" ", "%20"));
    800         ajax.onreadystatechange = function()
    801         {
    802             if(ajax.readyState == 4 && ajax.status == 200)
    803             {
    804                 var text = ajax.responseText;
    805                 var hrefStart = text.indexOf("src=\"") + 5;
    806                 if(hrefStart == -1)
    807                 {
    808                     page.isLoading = false;
    809                     page.noImage = true;
    810                     page.image.setAttribute("src", gs.imageURLs.blank);
    811                     return;
    812                 }
    813                 var hrefEnd = text.indexOf("\"", hrefStart);
    814                 var href = text.substring(hrefStart, hrefEnd);
    815 
    816                 var image = document.createElement("IMG");
    817                 $(image).load(function()
    818                 {
    819                     page.link.innerHTML = "";
    820                     page.link.appendChild(image);
    821                     page.isLoading = false;
    822                     page.imageLoaded = true;
    823                 });
    824                 $(image).error(function()
    825                 {
    826                     if(!attemptNumber || attemptNumber < 3)
    827                     {
    828                         setTimeout(function(){getImage(page, ((!attemptNumber) ? 1 : attemptNumber + 1));}, 500);
    829                     }
    830                     else
    831                     {
    832                         page.isLoading = false;
    833                         page.noImage = true;
    834                         image.setAttribute("src", gs.imageURLs.blank);
    835                     }
    836                 });
    837                 image.setAttribute("src", href);
    838                
    839                 var titleStart = text.indexOf("<p>") + 3;
    840                 var titleEnd = text.indexOf("</p>");
    841                 var title = text.substring(titleStart, titleEnd);
    842             }
    843             else if (ajax.readyState == 4)
    844             {
    845                 page.failed = true;
     763        var url = href + "?ilt=" + template.replace(" ", "%20");
     764        $.ajax(url)
     765        .success(function(text)
     766        {
     767            var hrefStart = text.indexOf("src=\"") + 5;
     768            if(hrefStart == -1)
     769            {
     770                page.isLoading = false;
     771                page.noImage = true;
     772                $(page.image).attr("src", gs.imageURLs.blank);
     773                return;
     774            }
     775            var hrefEnd = text.indexOf("\"", hrefStart);
     776            var href = text.substring(hrefStart, hrefEnd);
     777
     778            var image = $("<img>");
     779            image.load(function()
     780            {
     781                $(page.link).html("");
     782                $(page.link).append(image);
     783                page.isLoading = false;
     784                page.imageLoaded = true;
     785            });
     786            image.error(function()
     787            {
    846788                if(!attemptNumber || attemptNumber < 3)
    847789                {
     
    850792                else
    851793                {
    852                     var image = document.createElement("IMG");
    853                     image.setAttribute("src", gs.imageURLs.blank);
    854                     page.link.innerHTML = "";
    855                     page.link.appendChild(image);
    856794                    page.isLoading = false;
    857795                    page.noImage = true;
     796                    image.attr("src", gs.imageURLs.blank);
    858797                }
    859             }
    860         }
    861         ajax.send();
     798            });
     799            image.attr("src", href);
     800           
     801            var titleStart = text.indexOf("<p>") + 3;
     802            var titleEnd = text.indexOf("</p>");
     803            var title = text.substring(titleStart, titleEnd);
     804        })
     805        .error(function()
     806        {
     807            page.failed = true;
     808            if(!attemptNumber || attemptNumber < 3)
     809            {
     810                setTimeout(function(){getImage(page, ((!attemptNumber) ? 1 : attemptNumber + 1));}, 500);
     811            }
     812            else
     813            {
     814                var image = document.createElement("IMG");
     815                image.setAttribute("src", gs.imageURLs.blank);
     816                page.link.innerHTML = "";
     817                page.link.appendChild(image);
     818                page.isLoading = false;
     819                page.noImage = true;
     820            }
     821        });
    862822    }
    863823   
    864824    var startCheckFunction = function()
    865825    {
    866         var checkFunction = function()
    867         {
    868             var widgetLeft = _mainDiv.scrollLeft;
    869             var widgetRight = _mainDiv.clientWidth + _mainDiv.scrollLeft;
    870 
    871             var visiblePages = new Array();
    872             for(var i = 0; i < _links.length; i++)
    873             {
    874                 var current = _links[i].cell;
    875                 var currentLeft = current.offsetLeft;
    876                 var currentRight = currentLeft + current.clientWidth;
    877                 if(currentRight > widgetLeft && currentLeft < widgetRight)
    878                 {
    879                     visiblePages.push(_links[i]);
    880                 }
    881             }
    882 
    883             for(var i = 0; i < visiblePages.length; i++)
    884             {
    885                 var page = visiblePages[i];
    886                 if(!page || page.imageLoaded || page.noImage || page.isLoading)
    887                 {
    888                     continue;
     826        var checkFunction = function(forced)
     827        {
     828            //Don't bother checking if we haven't scrolled very far
     829            if(Math.abs(_mainDiv.scrollLeft() - _prevScroll) > 100 || forced)
     830            {
     831                _prevScroll = _mainDiv.scrollLeft();
     832                _checking = true;
     833                var widgetLeft = _mainDiv.offset().left;
     834                var widgetRight = widgetLeft + _mainDiv.width();
     835               
     836                var visiblePages = new Array();
     837                for(var i = 0; i < _links.length; i++)
     838                {
     839                    var current = _links[i].cell;
     840                    var currentLeft = current.offset().left;
     841                    var currentRight = currentLeft + current.width();
     842
     843                    if(currentRight > widgetLeft && currentLeft < widgetRight)
     844                    {
     845                        visiblePages.push(_links[i]);
     846                    }
    889847                }
    890848               
    891                 page.isLoading = true;
    892                 getImage(page);
    893             }
    894         }
    895        
    896         checkFunction();
    897         setInterval(checkFunction, 1000);
     849                for(var i = 0; i < visiblePages.length; i++)
     850                {
     851                    var page = visiblePages[i];
     852                    if(!page || page.imageLoaded || page.noImage || page.isLoading)
     853                    {
     854                        continue;
     855                    }
     856                   
     857                    page.isLoading = true;
     858                    getImage(page);
     859                }
     860                _checking = false;
     861            }
     862        }
     863
     864        setTimeout(checkFunction, 250);
     865        setInterval(function(){checkFunction(true)}, 2000);
     866        _mainDiv.scroll(checkFunction);
    898867    }
    899868   
     
    904873    for(var i = 0; i < _links.length; i++)
    905874    {
    906         var col = document.createElement("TD");
    907         _linkRow.appendChild(col);
    908         col.setAttribute("class", "pageSliderCol");
     875        var col = $("<td>");
     876        _linkRow.append(col);
     877        col.addClass("pageSliderCol");
    909878        _links[i].cell = col;
    910879       
    911         var link = document.createElement("A");
    912         col.appendChild(link);
     880        var link = $("<a>");
     881        col.append(link);
    913882        _links[i].link = link;
    914         var href = _links[i].getAttribute("href");
    915         link.setAttribute("href", href.replace(/\)/, ", 0, true)"));
     883        var href = $(_links[i]).attr("href");
     884        link.attr("href", href.replace(/\)/, ", 0, true)"));
    916885       
    917886        if(!_linkCellMap[href])
     
    921890        _linkCellMap[href].push(_links[i]);
    922891       
    923         var image = document.createElement("IMG");
    924         link.appendChild(image);
    925         image.setAttribute("src", gs.imageURLs.loading);
     892        var loadingText = $("<p>Loading image</p>");
     893        link.append(loadingText);
     894       
     895        var image = $("<img>");
     896        link.append(image);
     897        image.attr("src", gs.imageURLs.loading);
    926898        _links[i].image = image;
    927899       
    928         var title = _links[i].innerHTML;
     900        var title = $(_links[i]).html();
    929901        if(title.search(/^[^ ]+ [^ ]+$/) != -1)
    930902        {
     
    938910        _titles.push([title, _links[i]]);
    939911       
    940         var text = document.createTextNode(title);
    941         col.appendChild(document.createElement("BR"));
    942         col.appendChild(text);
     912        col.append($("<br>"));
     913        col.append(title);
    943914    }
    944915   
     
    952923function swapHighlight(imageClicked)
    953924{
    954     var hlCheckbox = document.getElementById("highlightOption");
     925    var hlCheckbox = $("#highlightOption");
    955926
    956927    if(imageClicked)
     
    961932    var from;
    962933    var to;
    963     if(hlCheckbox.checked)
     934    if(hlCheckbox.attr("checked"))
    964935    {
    965936        from = "noTermHighlight";
     
    971942        to = "noTermHighlight";
    972943    }
    973    
    974     var spans = document.getElementsByTagName("span");
    975     for(var i = 0; i < spans.length; i++)
    976     {
    977         var currentSpan = spans[i];
    978         if(currentSpan.getAttribute("class") == from)
    979         {
    980             currentSpan.setAttribute("class", to);
    981         }
    982     }
     944
     945    var spans = $("span").each(function()
     946    {
     947        if($(this).hasClass(from))
     948        {
     949            $(this).removeClass(from);
     950            $(this).addClass(to);
     951        }
     952    });
    983953}
    984954
     
    997967function hideText()
    998968{
    999     var textDiv = document.getElementById("gs-document-text");
    1000     textDiv.style.visibility = "hidden";
     969    $("#gs-document-text").css("visibility", "hidden");
    1001970}
    1002971
    1003972function showText()
    1004973{
    1005     var textDiv = document.getElementById("gs-document-text");
    1006     textDiv.style.visibility = "visible";
     974    $("#gs-document-text").css("visibility", "visible");
    1007975}
    1008976
    1009977function hideBook()
    1010978{
    1011     var bookDiv = document.getElementById("bookdiv");
    1012     bookDiv.style.visibility = "hidden";
    1013     bookDiv.style.height = "0px";
    1014    
    1015     var bookObject = document.getElementById("bookObject");
    1016     bookObject.style.visibility = "hidden";
    1017     bookObject.style.height = "0px";
    1018    
    1019     var bookEmbed = document.getElementById("bookEmbed");
    1020     bookEmbed.style.visibility = "hidden";
    1021     bookEmbed.style.height = "0px";
     979    $("#bookDiv, #bookObject, #bookEmbed").css({"visibility": "hidden", "height": "0px"});
    1022980}
    1023981
    1024982function showBook()
    1025983{
    1026     var bookDiv = document.getElementById("bookdiv");
    1027     bookDiv.style.visibility = "visible";
    1028     bookDiv.style.height = "600px";
    1029    
    1030     var bookObject = document.getElementById("bookObject");
    1031     bookObject.style.visibility = "visible";
    1032     bookObject.style.height = "600px";
    1033    
    1034     var bookEmbed = document.getElementById("bookEmbed");
    1035     bookEmbed.style.visibility = "visible";
    1036     bookEmbed.style.height = "600px";
     984    $("#bookDiv, #bookObject, #bookEmbed").css({"visibility": "visible", "height": "600px"});
    1037985}
    1038986
    1039987function swapLinkJavascript(rbOn)
    1040988{
    1041     var option = document.getElementById("rbOption");
    1042     var optionImage = document.getElementById("rbOptionImage");
     989    var option = $("#rbOption");
     990    var optionImage = $("#rbOptionImage");
    1043991   
    1044992    if(rbOn)
    1045993    {
    1046         option.setAttribute("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
    1047         optionImage.setAttribute("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
     994        option.attr("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
     995        optionImage.attr("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
    1048996        $(option).attr("checked", false);
    1049997    }
    1050998    else
    1051999    {
    1052         option.setAttribute("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
    1053         optionImage.setAttribute("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
     1000        option.attr("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
     1001        optionImage.attr("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
    10541002        $(option).attr("checked", true);
    10551003    }
    1056 }
    1057 
    1058 //Helper function to create param elements
    1059 function createParam(name, value)
    1060 {
    1061     var param = document.createElement("PARAM");
    1062     param.setAttribute("name", name);
    1063     param.setAttribute("value", value);
    1064     return param;
    10651004}
    10661005
     
    10961035    flash_plug_html += '      type="application/x-shockwave-flash" width="70%" />\n';
    10971036    flash_plug_html += '</OBJECT>\n';
    1098     var flash_div = document.getElementById("bookdiv");
    1099     flash_div.innerHTML = flash_plug_html;
    1100 }
     1037    $("#bookdiv").html(flash_plug_html);
     1038}
     1039
     1040/************************
     1041* METADATA EDIT SCRIPTS *
     1042************************/
    11011043
    11021044function addEditMetadataLink(cell)
    11031045{
    1104     var id = cell.getAttribute("id").substring(6);
    1105     var metaTable = document.getElementById("meta" + id);
    1106 
    1107     var row = cell.parentNode;
    1108     var newCell = document.createElement("TD");
    1109     newCell.setAttribute("style", "font-size:0.7em; padding:0px 10px");
    1110     newCell.setAttribute("class", "editMetadataButton");
    1111    
    1112     var linkSpan = document.createElement("SPAN");
    1113     linkSpan.setAttribute("class", "ui-state-default ui-corner-all");
    1114     linkSpan.setAttribute("style", "padding: 2px; float:left;");
    1115    
    1116     var linkLabel = document.createElement("SPAN");
    1117     linkLabel.innerHTML = "edit metadata";
     1046    cell = $(cell);
     1047    var id = cell.attr("id").substring(6);
     1048    var metaTable = gs.jqGet("meta" + id);
     1049
     1050    var row = cell.parent();
     1051    var newCell = $("<td>", {"style": "font-size:0.7em; padding:0px 10px", "class": "editMetadataButton"});
     1052    var linkSpan = $("<span>", {"class": "ui-state-default ui-corner-all", "style": "padding: 2px; float:left;"});
     1053   
     1054    var linkLabel = $("<span>edit metadata</span>");   
     1055    var linkIcon = $("<span>", {"class": "ui-icon ui-icon-folder-collapsed"});
     1056    newCell.linkIcon = linkIcon;
    11181057    newCell.linkLabel = linkLabel;
    1119     var linkIcon = document.createElement("SPAN");
    1120     linkIcon.setAttribute("class", "ui-icon ui-icon-folder-collapsed");
    1121     newCell.linkIcon = linkIcon;
    1122    
    1123     var uList = document.createElement("UL");
    1124     var labelItem = document.createElement("LI");
    1125     var iconItem = document.createElement("LI");
    1126     uList.appendChild(iconItem);
    1127     uList.appendChild(labelItem);
    1128     labelItem.appendChild(linkLabel);
    1129     iconItem.appendChild(linkIcon);
    1130    
    1131     uList.setAttribute("style", "outline: 0 none; margin:0px; padding:0px;");
    1132     labelItem.setAttribute("style", "float:left; list-style:none outside none;");
    1133     iconItem.setAttribute("style", "float:left; list-style:none outside none;");
    1134    
    1135     var newLink = document.createElement("A");
    1136     newLink.setAttribute("href", "javascript:;");
    1137     newLink.onclick = function()
    1138     {
    1139         if(metaTable.style.display == "none")
    1140         {
    1141             linkLabel.innerHTML = "hide metadata";
    1142             linkIcon.setAttribute("class", "ui-icon ui-icon-folder-open");
    1143             metaTable.style.display = "block";
    1144             metaTable.metaNameField.style.display = "inline";
    1145             metaTable.addRowButton.style.display = "inline";
     1058   
     1059    var uList = $("<ul>", {"style": "outline: 0 none; margin:0px; padding:0px;"});
     1060    var labelItem = $("<li>", {"style": "float:left; list-style:none outside none;"});
     1061    var iconItem = $("<li>", {"style": "float:left; list-style:none outside none;"});
     1062
     1063    uList.append(iconItem);
     1064    uList.append(labelItem);
     1065    labelItem.append(linkLabel);
     1066    iconItem.append(linkIcon);
     1067   
     1068    var newLink = $("<a>", {"href": "javascript:;"});
     1069    newLink.click(function()
     1070    {
     1071        if(metaTable.css("display") == "none")
     1072        {
     1073            linkLabel.html("hide metadata");
     1074            linkIcon.attr("class", "ui-icon ui-icon-folder-open");
     1075            metaTable.css("display", "block");
     1076            metaTable.metaNameField.css("display", "inline");
     1077            metaTable.addRowButton.css("display", "inline");
    11461078        }
    11471079        else
    11481080        {
    1149             linkLabel.innerHTML = "edit metadata";
    1150             linkIcon.setAttribute("class", "ui-icon ui-icon-folder-collapsed");
    1151             metaTable.style.display = "none";
    1152             metaTable.metaNameField.style.display = "none";
    1153             metaTable.addRowButton.style.display = "none";
    1154         }
    1155     }
    1156     newLink.appendChild(uList);
    1157     linkSpan.appendChild(newLink);
    1158     newCell.appendChild(linkSpan);
    1159     row.appendChild(newCell);
     1081            linkLabel.html("edit metadata");
     1082            linkIcon.attr("class", "ui-icon ui-icon-folder-collapsed");
     1083            metaTable.css("display", "none");
     1084            metaTable.metaNameField.css("display", "none");
     1085            metaTable.addRowButton.css("display", "none");
     1086        }
     1087    });
     1088
     1089    newLink.append(uList);
     1090    linkSpan.append(newLink);
     1091    newCell.append(linkSpan);
     1092    row.append(newCell);
    11601093   
    11611094    addFunctionalityToTable(metaTable);
    1162     metaTable.metaNameField.style.display = "none";
    1163     metaTable.addRowButton.style.display = "none";
     1095    metaTable.metaNameField.css("display", "none");
     1096    metaTable.addRowButton.css("display", "none");
    11641097}
    11651098
     
    11681101    if(visible)
    11691102    {
    1170         document.getElementById("editContentButton").innerHTML = "Hide editor";
     1103        $("#editContentButton").html("Hide editor");
    11711104    }
    11721105    else
    11731106    {
    1174         document.getElementById("editContentButton").innerHTML = "Edit content";
    1175     }
    1176 
    1177     var saveButton = document.getElementById("saveButton");
    1178     var metadataListLabel = document.getElementById("metadataListLabel");
    1179     var metadataList = document.getElementById("metadataSetList");
     1107        $("#editContentButton").html("Edit content");
     1108    }
    11801109   
    11811110    var visibility = (visible ? "" : "none");
    1182     saveButton.style.display = visibility;
    1183     metadataListLabel.style.display = visibility;
    1184     metadataList.style.display = visibility;
    1185    
    1186     var buttons = gs.functions.getElementsByClassName("editMetadataButton");
    1187    
    1188     for(var i = 0; i < buttons.length; i++)
    1189     {
    1190         buttons[i].style.display = visibility;
    1191         buttons[i].linkLabel.innerHTML = "edit metadata";
    1192         buttons[i].linkIcon.setAttribute("class", "ui-icon ui-icon-folder-collapsed");
    1193     }
    1194    
    1195     var tables = document.getElementsByTagName("TABLE");
    1196     for(var i = 0; i < tables.length; i++)
    1197     {
    1198         var currentTable = tables[i];
    1199         if(currentTable.getAttribute("id") && currentTable.getAttribute("id").search(/^meta/) != -1)
    1200         {
    1201             currentTable.style.display = "none";
    1202             currentTable.metaNameField.style.display = "none";
    1203             currentTable.addRowButton.style.display = "none";
    1204         }
    1205     }
     1111    $("#saveButton, #metadataListLabel, #metadataSetList").css("display", visibility);
     1112   
     1113    $(".editMetadataButton").each(function()
     1114    {
     1115        $(this).css("display", visibility);
     1116        $(this.linkLabel).html("edit metadata");
     1117        $(this.linkIcon).attr("class", "ui-icon ui-icon-folder-collapsed");
     1118    });
     1119   
     1120    $("table").each(function()
     1121    {
     1122        if($(this).attr("id") && $(this).attr("id").search(/^meta/) != -1)
     1123        {
     1124            $(this).css("display", "none");
     1125            $(this.metaNameField).css("display", "none");
     1126            $(this.addRowButton).css("display", "none");
     1127        }
     1128    });
    12061129}
    12071130
    12081131function readyPageForEditing()
    12091132{
    1210     if(document.getElementById("metadataSetList"))
    1211     {
    1212         var setList = document.getElementById("metadataSetList");
    1213         if(!setList.style.display || setList.style.display == "")
     1133    if($("#metadataSetList").length)
     1134    {
     1135        var setList = $("#metadataSetList");
     1136        if(!setList.css("display") || setList.css("display") == "")
    12141137        {
    12151138            setEditingFeaturesVisible(false);
     
    12221145    }
    12231146
    1224     document.getElementById("editContentButton").innerHTML = "Hide Editor";
    1225    
    1226     var textDivs = gs.functions.getElementsByClassName("sectionText");
    1227     for(var i = 0; i < textDivs.length; i++)
    1228     {
    1229         de.doc.registerEditSection(textDivs[i]);
    1230     }
    1231    
    1232     var editBar = document.getElementById("editBarLeft");
    1233     var saveButton = document.createElement("BUTTON");
    1234     saveButton.onclick = save;
    1235     saveButton.innerHTML = "Save changes";
    1236     saveButton.setAttribute("id", "saveButton");
    1237     editBar.appendChild(saveButton);
    1238    
    1239     var visibleMetadataList = document.createElement("SELECT");
    1240     var allOption = document.createElement("OPTION");
    1241     allOption.innerHTML = "All";
    1242     visibleMetadataList.appendChild(allOption);
    1243     visibleMetadataList.setAttribute("id", "metadataSetList");
    1244     var metadataListLabel = document.createElement("SPAN");
    1245     metadataListLabel.setAttribute("id", "metadataListLabel");
    1246     metadataListLabel.setAttribute("style", "margin-left:20px;");
    1247     metadataListLabel.innerHTML = "Visible metadata: ";
    1248     editBar.appendChild(metadataListLabel);
    1249     editBar.appendChild(visibleMetadataList);
    1250     visibleMetadataList.onchange = onVisibleMetadataSetChange;
    1251    
    1252     var statusBarDiv = document.createElement("DIV");
    1253     editBar.appendChild(statusBarDiv);
    1254     _statusBar = new StatusBar(statusBarDiv);
    1255    
    1256     var titleDivs = gs.functions.getElementsByClassName("sectionTitle");
     1147    $("#editContentButton").html("Hide Editor");
     1148   
     1149    var textDivs = $(".sectionText").each(function(){de.doc.registerEditSection(this);});
     1150   
     1151    var editBar = $("#editBarLeft");
     1152    var saveButton = $("<button>", {"id": "saveButton"});
     1153    saveButton.click(save);
     1154    saveButton.html("Save changes");
     1155    editBar.append(saveButton);
     1156   
     1157    var visibleMetadataList = $("<select>", {"id": "metadataSetList"});
     1158    var allOption = $("<option>All</option>");
     1159    visibleMetadataList.append(allOption);
     1160
     1161    var metadataListLabel = $("<span>", {"id": "metadataListLabel", "style": "margin-left:20px;"});
     1162    metadataListLabel.html("Visible metadata: ");
     1163    editBar.append(metadataListLabel);
     1164    editBar.append(visibleMetadataList);
     1165    visibleMetadataList.change(onVisibleMetadataSetChange);
     1166   
     1167    var statusBarDiv = $("<div>");
     1168    editBar.append(statusBarDiv);
     1169    _statusBar = new StatusBar(statusBarDiv[0]);
     1170   
     1171    var titleDivs = $(".sectionTitle");
    12571172    for(var i = 0; i < titleDivs.length; i++)
    12581173    {
     
    12621177    _baseURL = gs.xsltParams.library_name;
    12631178}
     1179
     1180/***************
     1181* MENU SCRIPTS *
     1182***************/
    12641183
    12651184function floatMenu(enabled)
     
    13001219    }
    13011220   
    1302     var ajax = gs.functions.ajaxRequest();
    1303     ajax.open("GET", gs.xsltParams.library_name + "?a=d&ftoc=" + (enabled ? "1" : "0") + "&c=" + gs.cgiParams.c);
    1304     ajax.send();
    1305 }
     1221    var url = gs.xsltParams.library_name + "?a=d&ftoc=" + (enabled ? "1" : "0") + "&c=" + gs.cgiParams.c;
     1222   
     1223    $.ajax(url);
     1224}
     1225
     1226/********************
     1227* SLIDESHOW SCRIPTS *
     1228********************/
    13061229
    13071230function showSlideShow()
  • main/trunk/greenstone3/web/interfaces/default/js/documentmaker_scripts_util.js

    r25546 r26397  
    631631function addFunctionalityToTable(table)
    632632{
    633     var rows = table.getElementsByTagName("TR");
    634     for(var i = 0; i < rows.length; i++)
    635     {
    636         var cells = rows[i].getElementsByTagName("TD");
    637         var metadataName = cells[0].innerHTML;
     633    table.find("tr").each(function()
     634    {
     635        var cells = $(this).find("td");
     636        var metadataName = $(cells[0]).html();
    638637       
    639638        if(metadataName.indexOf(".") != -1)
     
    655654                _metadataSetList.push(metadataSetName);
    656655               
    657                 var metadataSetList = document.getElementById("metadataSetList");
    658                 var newOption = document.createElement("OPTION");
    659                 newOption.innerHTML = metadataSetName;
    660                 metadataSetList.appendChild(newOption);
     656                var metadataSetList = $("#metadataSetList");
     657                var newOption = $("<option>");
     658                newOption.html(metadataSetName);
     659                metadataSetList.append(newOption);
    661660            }
    662661        }
    663662           
    664663        asyncRegisterEditSection(cells[1]);
    665 
    666         addRemoveLinkToRow(rows[i]);
    667     }
    668 
    669     var metaNameField = document.createElement("INPUT");
    670     metaNameField.setAttribute("type", "text");
    671     insertAfter(metaNameField, table);
     664        addRemoveLinkToRow(this);
     665    });
     666
     667    var metaNameField = $("<input>", {"type": "text"});
     668    table.after(metaNameField);
    672669    table.metaNameField = metaNameField;
    673670   
    674     var addRowButton = document.createElement("BUTTON");
    675     addRowButton.innerHTML = gs.text.dse.add_new_metadata;
    676     addRowButton.onclick = function()
     671    var addRowButton = $("<button>");
     672    addRowButton.html(gs.text.dse.add_new_metadata);
     673    addRowButton.click(function()
    677674    {
    678         var name = metaNameField.value;
     675        var name = metaNameField.val();
    679676        if(!name || name == "")
    680677        {
     
    683680        }
    684681       
    685         var newRow = document.createElement("TR");
    686         var nameCell = document.createElement("TD");
    687         var valueCell = document.createElement("TD");
    688         nameCell.setAttribute("class", "metaTableCellName");
    689         nameCell.innerHTML = name;
    690         valueCell.setAttribute("class", "metaTableCell");
    691        
    692         newRow.appendChild(nameCell);
    693         newRow.appendChild(valueCell);
     682        var newRow = $("<tr>");
     683        var nameCell = $("<td>" + name + "</td>");
     684        nameCell.attr("class", "metaTableCellName");
     685        var valueCell = $("<td>", {"class": "metaTableCell"});
     686       
     687        newRow.append(nameCell);
     688        newRow.append(valueCell);
    694689        addRemoveLinkToRow(newRow);
    695         table.appendChild(newRow);
     690        table.append(newRow);
    696691       
    697692        var undo = new Array();
     
    702697       
    703698        //Threading this function here probably isn't necessary like the other times it is called
    704         de.doc.registerEditSection(valueCell);
    705     };
     699        de.doc.registerEditSection(valueCell[0]);
     700    });
    706701    table.addRowButton = addRowButton;
    707     insertAfter(addRowButton, metaNameField);
     702    metaNameField.after(addRowButton);
    708703}
    709704
    710705function addRemoveLinkToRow(row)
    711706{
    712     var newCell = document.createElement("TD");
    713     var removeLink = document.createElement("A");
    714     removeLink.innerHTML = "remove";
    715     removeLink.setAttribute("href", "javascript:;");
    716     removeLink.onclick = function()
     707    var newCell = $("<td>");
     708    var removeLink = $("<a>remove</a>", {"href": "javascript:;"});
     709    removeLink.click(function()
    717710    {
    718711        var undo = new Array();
     
    723716        _undoOperations.push(undo);
    724717        _deletedMetadata.push(row);
    725         row.style.display = "none";
    726     }
    727     newCell.appendChild(removeLink);
    728     newCell.setAttribute("class", "metaTableCell");
    729     newCell.setAttribute("style", "font-size:0.6em; padding-left: 3px; padding-right: 3px;");
    730     row.appendChild(newCell);
     718        row.css("display", "none");
     719    });
     720    newCell.append(removeLink);
     721    newCell.attr({"class": "metaTableCell", "style": "font-size:0.6em; padding-left: 3px; padding-right: 3px;"});
     722    $(row).append(newCell);
    731723}
    732724
Note: See TracChangeset for help on using the changeset viewer.