function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function overlay() {
  el = document.getElementById("overlay");
  el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
}

function getDocHeight() {
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
  	}
	return yWithScroll;
}

function setDocHeight()
{
  mdh = document.getElementById("lefttable");
  mdh.style.height = getDocHeight()+"px";
  dw = document.getElementById("leftmenu").offsetHeight;
  document.getElementById("lefttable").style.height = dw + "px";
}

function filterlist()
{
  this.set = function(pattern, filterorselect)
  {
    pattern = pattern.toLowerCase();
    if (filterorselect == true)
    {
      index = 0;
      document.add.titles.options.length = 0;
      for (loop=0; loop < this.optionscopy.length; loop++)
      {
        var option = this.optionscopy[loop];
        if (option.text.toLowerCase().indexOf(pattern) > -1)
        {
          document.add.titles.options[index++] = new Option(option.text, option.value, false);
        }
      }
    }
    else
    {
      if (pattern == "")
      {
        document.add.titles.selectedIndex = -1;
        return;
      }
      for (loop=0; loop < this.optionscopy.length; loop++)
      {
        if (this.optionscopy[loop].text.toLowerCase().indexOf(pattern) > -1)
        {
          document.add.titles.selectedIndex = loop;
          summarise();
          document.add.titles.focus();
          return;
        }
      }
    }
  }

  this.optionscopy = new Array();
  sel = document.add.titles;
  for (var i=0; i < sel.options.length; i++)
  {
    this.optionscopy[i] = new Option();
    this.optionscopy[i].text = sel.options[i].text;
    this.optionscopy[i].value = sel.options[i].value;
  }

  // Restoring basket from cookie
  if (document.cookie.length>0)
  {
    c_start=document.cookie.indexOf("basket=");
    if (c_start!=-1)
    { 
      c_end=document.cookie.indexOf(";",c_start+7);
      if (c_end==-1) c_end=document.cookie.length;
      val = unescape(document.cookie.substring(c_start+7,c_end));
      document.add.basket.options.length = 0; i = 0;
      while ((b1 = val.indexOf("<")) > -1)
      {
        b2 = val.indexOf(">");
        opt = val.substring(b1+1, b2);
        c = opt.indexOf("~");
        document.add.basket.options[i++] = new Option(opt.substring(0, c), opt.substring(c+1), false);
        if (b2 == val.length-1) break;
        val = val.substring(b2+1);
      }
    } 
  }
}

function createXMLHttpRequest()
{
   try { return new XMLHttpRequest(); } catch(e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   return null;
}

var xhReq;

function summarise()
{
  document.getElementById("summary").innerHTML = "Loading summary... <img border='0' src='spinner.gif'>";
	xhReq = createXMLHttpRequest();
  xhReq.open("GET", "summary.php?title="+escape(document.add.titles.options[document.add.titles.selectedIndex].value), true);
  xhReq.onreadystatechange = callback;
  xhReq.send(null);
}

function callback()
{
  if (xhReq.readyState != 4 || xhReq.status != 200) return;
  resp = xhReq.responseText;
  ci = resp.substring(resp.indexOf(":")+1, resp.indexOf(";"));
  if (ci.toLowerCase() == "not yet published") ci = 1; else ci = parseInt(ci) + 1;
  document.getElementById("stitle").innerHTML = "<font color='orange'>Summary of " +
                                                document.add.titles.options[document.add.titles.selectedIndex].text +
                                                "</font>";

  document.getElementById("summary").innerHTML = "<table><tr><td><a href='javascript:bigger(\""+resp.substring(0, resp.indexOf("@"))+"\");'>" +
                                                 "<img id='cover' border='0' src='images/covers/thumbs/"+resp.substring(0, resp.indexOf("@"))+"'></a></td>" +
                                                 "<td><font color='orange'>"+resp.substring(resp.indexOf("#")+1)+"</font><br><a href='#'><font color='yellow'>Read More...</font></a></td></tr></table>" +
                                                 "<br><font color='orange'>Publisher: "+resp.substring(resp.indexOf("@")+1, resp.indexOf(":")) +
                                                 "<br>Current Issue: "+resp.substring(resp.indexOf(":")+1, resp.indexOf(";")) +
                                                 "<br>Estimated price: &pound;"+resp.substring(resp.indexOf(";")+1, resp.indexOf("#")) + "</font>";

  document.add.from.options.length = 0;
  for (i = ci; i < ci + 13; i++)
    document.add.from.options[i-ci] = new Option(i, i, false);
  document.add.until.options.length = 0;
  for (i = ci; i < ci + 13; i++)
    document.add.until.options[i-ci] = new Option(i, i, false);
  document.add.until.options[13] = new Option("Ongoing", "ongoing", true);
  document.add.copies.value = "1";
}

function setUntil()
{
  document.add.until.options.length = 0;
  ci = parseInt(document.add.from.options[document.add.from.selectedIndex].value);
  for (i = ci; i < ci + 13; i++)
    document.add.until.options[i-ci] = new Option(i, i, false);
  document.add.until.options[13] = new Option("Ongoing", "ongoing", true);
}

function bigger(id)
{
  bv = window.open("images/covers/full/"+id, "CoverImage", "height=500,width=325");
  bv.focus();
}

function addToBasket()
{
  f = document.add;
  for (i = 0; i < f.basket.length; i++)
  {
    if (f.basket.options[i].text == f.titles.options[f.titles.selectedIndex].text)
    {
      alert("Sorry, you can't add the same title twice");
      return;
    }
  }
  f.basket.options[f.basket.length] = new Option(f.titles.options[f.titles.selectedIndex].text,
                                                 f.titles.options[f.titles.selectedIndex].value + "@" +
                                                 f.from.value + ":" +
                                                 f.until.value + ":" +
                                                 f.copies.value + "#" +
                                                 f.special.value, false);
}

function removeFromBasket()
{
  b = document.add.basket;
  if (b.selectedIndex < 0) return;
  index = b.selectedIndex; tot = b.options.length;
  for (loop=b.selectedIndex+1; loop < tot; loop++)
  {
    var option = b.options[loop];
    b.options[index++] = new Option(option.text, option.value, false);
  }
  b.options.length = index;
}

function compose()
{
  b = document.add.basket;
  val = "";
  for (i = 0; i < b.options.length; i++)
  {
    var option = b.options[i];
    val += "<" + option.text + "~" + option.value + ">";
  }
  document.add.mysub.value = val;
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+1);
  document.cookie="basket="+escape(val)+";expires="+exdate.toGMTString();
}

function clearBasket()
{
  document.add.basket.options.length = 0;
  document.cookie="basket=";
}

function initMenus() {
  $.each($('ul.menu'), function() { document.getElementById(this.id).style.visibility="visible"; });
  $.each($('ul.menu'), function() { $('#' + this.id + ' ul').hide(); });
	$.each($('ul.menu'), function() { $('#' + this.id + ' ul.expand').show(); });
	$('ul.menu li a').click(
		function() {
			var checkElement = $(this).next();
			var parent = this.parentNode.parentNode.id;

			if($('#' + parent).hasClass('noaccordion')) { $(this).next().slideToggle('normal');	return false;	}
			if((checkElement.is('ul')) && (checkElement.is(':visible'))) { if($('#' + parent).hasClass('collapsible')) { $('#' + parent + ' ul:visible').slideUp('normal');	}	return false;	}
			if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {	$('#' + parent + ' ul:visible').slideUp('normal'); checkElement.slideDown('normal'); return false; }
		}
	);
}

var jfilter;
var xhReq;

$(document).ready(function() {initMenus(); });
