function loader() {

  if(document.getElementById('comparewrap')) build_table_highlights(document.getElementById('comparewrap'));
  if(document.getElementById('fadewrap')) change_focus(focustab);
  if(document.getElementById('notebooks')) display_compare();
 // if(document.getElementById('gallery')) { set_opacity("gallery",0); document.getElementById('gallery').style.display='block'; }
  if(document.getElementById('featureswrap')) Dbook_selections();
  build_compare_list();
}

function build_table_highlights(obj) {
  if(obj.childNodes.length > 0) {
    for(var i = 0; obj.childNodes.length > i; i++) {
      if(obj.childNodes[i].tagName == "TD") {
        var classn = obj.childNodes[i].className;
        if(classn.length > 3 && classn.indexOf("col") == 0 && !isNaN(classn.substr(3))) classn = "col";
        switch(classn) {
          case "odd":
            obj.childNodes[i].onmouseover = specnameover;
            obj.childNodes[i].onmouseout = specnameout;
          break;
          case "col":
            obj.childNodes[i].onmouseover = speccolover;
            obj.childNodes[i].onmouseout = speccolout;
          break;
        }
      }
      build_table_highlights(obj.childNodes[i]);
    }
  }
  else return;
}

function specnameover() {
  this.parentNode.className = "hltrow";
}

function specnameout() {
  this.parentNode.className = "";
}

function speccolover() {
  document.getElementById('comparewrap').className = "hlt" + this.className;
  this.parentNode.className = "hltrow";
}

function speccolout() {
  document.getElementById('comparewrap').className = "";
  this.parentNode.className = "";
}

function remove_compare(name) {
  for(var i = 0; Dbooks.length > i; i++) { if(Dbooks[i] == name) { Dbooks.splice(i,1); i--; }}
  save_cookie();
}

function add_compare(name) {
	
  var save = true;
  for(var i = 0; Dbooks.length > i; i++) { if(Dbooks[i] == name) { save = false; break; }}
  if(save) {
    Dbooks.push(name);
    save_cookie();
    build_compare_list();
    box_trans(name);
    if(document.getElementById('comparison_save')) document.getElementById('comparison_save').style.display = 'none';
  }
}

function clear_compare() {
  Dbooks = new Array();
  save_cookie();
  build_compare_list();
  if(document.getElementById('comparison_save')) document.getElementById('comparison_save').style.display = 'block';
  if(document.getElementById('notebooks')) display_compare();
}

function submit_compare(obj) {
  var link = new Array();
  for(var i = 0; obj.childNodes.length > i; i++) {
    if(obj.childNodes[i].tagName == "INPUT" && obj.childNodes[i].checked && obj.childNodes[i].name.length > 0) {
      link.push(obj.childNodes[i].name);
    }
  }
  if(link.length < 2) {
    document.getElementById('comparewarningbox').innerHTML = "Comparison requires at least two Dbooks.";
  } else if(link.length > 4) {
    document.getElementById('comparewarningbox').innerHTML = "You may only compare up to 4 Dbooks.";
  }
  else {
    return true;
  }
  return false;
}

function build_compare_list() {

  var text = "";
  if(Dbooks.length > 0) {
    var url = String(window.location); 
url = url.split("/"); url = url[2];
    text += "<b>" + Dbooks.length + "</b> Dbooks saved for comparison. [ <span onClick='clear_compare()' style='cursor: pointer'>Reset</span> ]<br>";
    if(Dbooks.length >= 2) text += "<a href='http://localhost:8080/delonti/english/Compare.htm'>Compare</a>";

  }
  if(document.getElementById('compare_control').innerHTML != text) {
    document.getElementById('compare_control').innerHTML = text;
    compare_list_effect(0);
  }
}

var listeffect = new Array("#24ff00","#78ff62","#acff9e","#cefec6","#ebffe8","#ffffff");
var listeffect_timeout;
function compare_list_effect(ePos) {
  clearTimeout(listeffect_timeout);
  document.getElementById('compare_control').style.color = listeffect[ePos++];
  if(listeffect.length > ePos) { listeffect_timeout = setTimeout("compare_list_effect("+ePos+")",100); }
}

function last_need(id) {
  needsid = id;
  save_cookie();
}

function load_cookie() {

  var temp = document.cookie.split("; ");
  var text = "";
  cookie = new Array();
  for(var i = 0; temp.length > i; i++) {
    if(temp[i].substring(0,8) == "Dbooks" && temp[i].length > 9) Dbooks = temp[i].substring(9).split(":");
    if(temp[i].substring(0,7) == "needsid" && temp[i].length > 8) needsid = temp[i].substring(8);
  }
}

function save_cookie() {

  if(Dbooks && Dbooks.length > 0) document.cookie = "Dbooks=" + Dbooks.join(":") + "; path=/";
  else document.cookie = "Dbooks=" + "; path=/";
  if(needsid && needsid > 0) document.cookie = "needsid=" + needsid + "; path=/";
  else document.cookie = "needsid=" + "; path=/";
}

function display_compare() {

  var spans = document.getElementsByTagName("span");
  for(var i = 0; spans.length > i; i++) {
    if(spans[i].id.substring(0,4) == "cmp_") {
      var display = true;
      for(var j = 0; Dbooks.length > j; j++) {
        if(spans[i].id.substring(4) == Dbooks[j]) {
          display = false;
          break;
        }
      }
      if(display) spans[i].style.display = 'block';
      else spans[i].style.display = 'none';
    }
  }
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

var x_speed = 0;
var y_speed = 0;
var x_size = 0;
var y_size = 0;
var trans_interval;
function box_trans(name) {
  clearTimeout(trans_interval);
  if(document.getElementById('boxtrans')) document.body.removeChild(document.getElementById('boxtrans'));
  var obj1 = document.getElementById('compare_control');
  if(document.getElementById('comparison_save')) var obj2 = document.getElementById('comparison_save').firstChild;
  else if(document.getElementById('cmp_'+name)) var obj2 = document.getElementById('cmp_'+name);
  else return;
  var screenWidth;
  if(document.documentElement && document.documentElement.clientWidth) screenWidth = document.documentElement.clientWidth;
  else  if(self.innerWidth) screenWidth = self.innerWidth;
  else if(document.body) screenWidth = document.body.clientWidth;
  else { return; }
  if(!obj1.offsetWidth) return;
  
  var x1 = 99999;
  var x2 = 0;
  var y1 = 99999;
  var y2 = 0;
  
  var obj1_pos = findPos(obj1);
  var obj2_pos = findPos(obj2);
  if(obj1_pos[0] < x1) x1 = obj1_pos[0];
  if(obj2_pos[0] < x1) x1 = obj2_pos[0];
  if(obj1_pos[0] + obj1.offsetWidth > x2) x2 = obj1_pos[0] + obj1.offsetWidth;
  if(obj2_pos[0] + obj2.offsetWidth > x2) x2 = obj2_pos[0] + obj2.offsetWidth;
  if(obj1_pos[1] < y1) y1 = obj1_pos[1];
  if(obj2_pos[1] < y1) y1 = obj2_pos[1];
  if(obj1_pos[1] + obj1.offsetHeight > y2) y2 = obj1_pos[1] + obj1.offsetHeight;
  if(obj2_pos[1] + obj2.offsetHeight > y2) y2 = obj2_pos[1] + obj2.offsetHeight;
  
  x_size = x2 - x1;
  y_size = y2 - y1;
  var newdiv = document.createElement('div');
  newdiv.setAttribute('id','boxtrans');
  newdiv.style.position = "absolute";
  newdiv.style.top = y1 + "px";
  newdiv.style.right = (screenWidth - x2) + "px";
  newdiv.style.width = x_size + "px";
  newdiv.style.height = y_size + "px";
  document.body.appendChild(newdiv);
  x_speed = parseInt(x_size / 9);
  y_speed = parseInt(y_size / 9);
  trans_interval = setTimeout("shrink_trans()",50);
}

function shrink_trans() {
  x_size -= x_speed;
  y_size -= y_speed;
  if(x_size < 0) x_size = 0;
  if(y_size < 0) y_size = 0;
  obj = document.getElementById('boxtrans');
  obj.style.width = x_size + "px";
  obj.style.height = y_size + "px";
  if(x_size > 0) trans_interval = setTimeout("shrink_trans()",50);
  else document.body.removeChild(obj);
}

var Dbooks = new Array();
var needsid;
load_cookie();

