////////////////////////////////////////////////////////////////////////////////
// The code below for Publication List is much like that of the Curriculum
// Standards page.
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//
// This function toggles the +/- tree for Publication List.
//
// Typically executed from a <div> element (<div class="std" id="dALC-447301">).
// The <div> id has a 'd' appended to the <li> parent element id.  The
// <li> should be toggled as well as the first child <ul> with a previous
// className.  <ul> elements that should not be toggled will have no previous
// className.
//
// <li id="ALC-447301" class="open/close">
// 	<div class="std" id="dALC-447301">
// 	<ul class="open/close">
//
////////////////////////////////////////////////////////////////////////////////
var subjectID = "-1";
var ajaxCalled = false;
var callforallEbooks = false;
var count = 0;

function togglePublicationList() {

        var subject =this.innerHTML;
        var id = this.id.substring(1);
        subjectID = id;
        var element = document.getElementById(id);
       	if ( element.className == null || element.className == "" || element.className == "close") {

			var ul = element.getElementsByTagName("ul");
			var li = ul[0].getElementsByTagName("li");
			if (li.length == 0) {
				ajaxCalled = true;
		        getAjax(subject);
	    		element.className = "open";
			} else {
	    		element.className = "open";
			}
    	} else {
    		element.className = "close";
     	}

    	var foundChild = false;
    	var uls = element.getElementsByTagName("ul");
    	for ( var index = 0; index < uls.length; index++ ) {
    		var ul = uls[index];
    		if ( ul.className != null && ul.className != "" && !foundChild) {
    			if ( ul.className == "close" ) {
    				ul.className = "open";
    				foundChild = true;
    			} else if ( ul.className == "open" ) {
    				ul.className = "close";
    				foundChild = true;
    			}
    		}
    	}
}

function getAjax(subject) {
    var formObj=getDynamicSearchFormObj();
    var productId = formObj.prodId.value;
    var usrGrp = formObj.userGroupName.value;
    var subj=subject;
    xmlhttp = getXmlHttpRequest();
    var baseURL = "ajax.do?type=homePageWidgets&sub="+subj+"&inPS=true&userGroupName="+usrGrp+"&prodId="+productId;
    xmlhttp.onreadystatechange=newstateChanged;
    xmlhttp.open("GET", baseURL, true);
    xmlhttp.send(null);
    // xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}

function newstateChanged() {
    if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete")
    {
        var res=xmlhttp.responseText;
        if (subjectID == "-1") {
	        document.getElementById("widgets").innerHTML = xmlhttp.responseText;
	        initWidgets("stateChanged");
		} else {
		    var el = document.getElementById(subjectID);
			var ul = el.getElementsByTagName("ul");
			var divs = el.getElementsByTagName("div");
			ul[0].innerHTML = xmlhttp.responseText;
		    for (e = 0; e < divs.length;e++)
            {
              if (divs[e].className == "additionalLinks")
              {
                divs[e].style.display = 'none';
              }
            }
		    divs[0].className = "open";
		}
    } else if (xmlhttp.readyState==1) {
    		var el = document.getElementById(subjectID);
			var ul = el.getElementsByTagName("ul");
			ul[0].innerHTML = "Loading...";
    }
    ajaxCalled = false;
}



////////////////////////////////////////////////////////////////////////////////
//
// The 3 functions below expand/collapses everything in Publication List.
//
// All the <li> elements that have 'open' as class name should be changed to
// 'close', and all the child <ul> elements that have 'open' as class name
//  should be changed to 'close'.
//
// <ul id="standards">
// 	<li id="ALC-447301" class="open/close">
// 		<div class="std" id="dALC-447301">
// 		<ul class="open/close">
//
////////////////////////////////////////////////////////////////////////////////
function collapsePublicationList() {
    bulkModifyPublicationList("open","close");
}
function expandPublicationList() {
        callforallEbooks = true;
       bulkModifyPublicationList("close","open");
}

function ajaxCallforAllEbooks(){
              
    var formObj=getDynamicSearchFormObj();
    var productId = formObj.prodId.value;
    var usrGrp = formObj.userGroupName.value;
    xmlhttp = getXmlHttpRequest();
    var baseURL = "ajax.do?type=homePageWidgets&allEbooks=true&inPS=true&userGroupName="+usrGrp+"&prodId="+productId;
    xmlhttp.onreadystatechange=stateChangedforallEbooks;
    xmlhttp.open("GET", baseURL, true);
    xmlhttp.send(null);
}

function stateChangedforallEbooks() {
    if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete")
    {
      document.getElementById("widgets").innerHTML=xmlhttp.responseText;
      var divisions = document.getElementsByTagName("div");
      var j = 0;
      for(var i=0;i<divisions.length;i++)
      {
      	if(divisions[i].id != null && divisions[i].id == 'additionalLinks')
      	{
      		j=j+1;
      	}
      }
      if(j>1)
      {
      	document.getElementById("additionalLinks").style.display = 'none';  		  
      }
      bulkModifyPublicationList("close","open");
      initWidgets("stateChanged");
     } else if (xmlhttp.readyState==1) {
          document.getElementById("widgets").innerHTML=QUICK_SEARCH_LOADING_MESSAGE;
    }
     
}

function bulkModifyPublicationList(oldState, newState) {

    var subjectUl = document.getElementById("publicationList-subjects");
    var lis = subjectUl.getElementsByTagName("li");
        count++;
      if(callforallEbooks == true && count == 1){
         ajaxCallforAllEbooks();    
      }
    for (var i = 0; i < lis.length; i++) {
        var li = lis[i];
        
        if (li.className == oldState) {
            li.className = newState;
        
        }

        var uls = li.getElementsByTagName("ul");
        for (var j = 0; j < uls.length; j++) {
            var ul = uls[j];
        
            if (ul.className == oldState) {
                ul.className = newState;
            }
        }
    }
    callforallEbooks = false;
    return false;
}

////////////////////////////////////////////////////////////////////////////////
//
// This function initially sets the Publication List.
//
//
// The collapseAll method is added to the <a> elements with class 'collapseAll'.
//
// <select id="gradeSelect">
// 	<option value="6">Grade 6</option>
// 	...
//
// The togglePublicationList method is added to any <div> elements with className 'std'
// that have <ul> elements with className 'close'.  Furthermore, the <div> id
// is added with an appending 'd' to the parent <li> id.  Otherwise, parent <li>
// elements have a className 'leaf' added.  All <li> elements have className
// 'close' added.
//
// <ul id="standards">
// 	<li id="ALC-447301">
//              <div class="std" id="dALC-447301">
// 		<ul class="close">
// 	<li id="ALC-447302" class="leaf">
//              <div class="std" id="ALC-447301">
// 		<ul class="close">
//
////////////////////////////////////////////////////////////////////////////////
function setupPublicationList() {

    var modifyAllLinks = document.getElementsBySelector("a.publicationList-hideall");
    if ( modifyAllLinks ) {
        for( var j = 0; j < modifyAllLinks.length; j++ ) {
            modifyAllLinks[j].onclick = collapsePublicationList;
        }
    }

    modifyAllLinks = document.getElementsBySelector("a.publicationList-showall");
    if ( modifyAllLinks ) {
        for( var j = 0; j < modifyAllLinks.length; j++ ) {
            modifyAllLinks[j].onclick = expandPublicationList;
        }
    }

    var subjectUl = document.getElementById("publicationList-subjects");
    if(isValidObject(subjectUl)) {
		var lis = subjectUl.getElementsByTagName("li");
		for(var i = 0; i < lis.length; i++ )
	    {
			var element = lis[i];
	        if ( element.id != null && element.id != ""  )
	        {
					var divs = element.getElementsByTagName("div");
	                divs[0].id = "d" + element.id;
					divs[0].onclick = togglePublicationList;
	        }
	    }
        return true;
    } else {
        return false;
    }
}
// addWindowLoadEvent(setupPublicationList);

function initWidgets() {

	if (document.getElementById("docCountForSession") != null) {
	    document.getElementById("documentCount").innerHTML=document.getElementById("docCountForSession").innerHTML;
    }

    // not every page has publication lists
    if(setupPublicationList()) {
        if(COLLAPSE_EBOOK_TITLE != "true"){
            expandPublicationList();
        }
        attachPopupEvents();
    }
}