// JavaScript Document

"use strict";
(function () {

var addListener = document.addEventListener ?
  function (node, type, listener, phase) {
    node.addEventListener(type, listener, !! phase);
  } :
  function (node, type, listener) {
    node.attachEvent("on" + type, listener);
  } ;

var removeListener = document.removeEventListener ?
  function (node, type, listener, phase) {
    node.removeEventListener(type, listener, !! phase);
  } :
  function (node, type, listener) {
    node.detachEvent("on" + type, listener);
  } ;
  
var thwart = function (e) {
  if (e.preventDefault) {
    thwart = function (e) {
      e.preventDefault();
    };
  } else {
    thwart = function (e) {
      e.returnValue = false;
    };
  }
  thwart(e);
};

var burst = function (e) {
  if (e.stopPropagation) {
    burst = function (e) {
      e.stopPropagation();
    };
  } else {
    burst = function (e) {
      e.cancelBubble = true;
    };
  }
  burst(e);
};

var traverseTree = document.documentElement.firstElementChild ?
  function traverseTree (node, func) {
    func(node);
    node = node.firstElementChild;
    while (node !== null) {
      traverseTree(node, func);
      node = node.nextElementSibling;
    }
  } :
  function traverseTree (node, func) {
    func(node);
    node = node.firstChild;
    while (node !== null) {
      traverseTree(node, func);
      node = node.nextSibling;
    }
  } ;

var findClass = document.getElementsByClassName ?
  function (name, root) {
    root = root || document.documentElement;
    return root.getElementsByClassName(name);
  } : 
  document.querySelectorAll ?
  function (name, root) {
    root = root || document.documentElement;
    return root.querySelectorAll("." + name);
  } :
  function (name, root) {
    var found = [];
    root = root || document.documentElement;
    traverseTree(root, function (node) {
      if (!! node.className) {
        for (var names = node.className.split(/\s+/), i = names.length; i --; ) {
          if (names[i] === name) {
            found.push(node);
          }
        }
      }
    });
    return found;
  } ;

var queryCascade = window.getComputedStyle ?
  function (element, property) {
    return getComputedStyle(element, null)[property];
  } :
  function (element, property) {
    return element.currentStyle[property];
  } ;

var doZ = function () {
  var z = 400;
  return function () {
    return z ++;
  };
}();

var getCookie = function (name) {
  var batch = document.cookie, i, firstCut, secondCut;
  i = batch.indexOf(name + "=");
  if (i !== -1) {
    firstCut = i + name.length + 1;
    secondCut = batch.indexOf(";", firstCut);
    if (secondCut === -1) secondCut = batch.length;
    return decodeURIComponent(batch.substring(firstCut, secondCut));
  } else {
    return false;
  }
};

var createElem = function (name, members, children) {
  var elem = document.createElement(name), m;
  if (members instanceof Object) {
    for (m in members) {
      elem[m] = members[m];
    }
  }
  if (children instanceof Array) {
    for (var i = 0; i < children.length; i ++ ) {
      elem.appendChild(typeof children[i] === "object" ? 
        children[i] : document.createTextNode(children[i]));
    }
  }
  return elem;
};

var createXHR = typeof XMLHttpRequest !== "undefined" ?
  function () {
    return new XMLHttpRequest();
  } :
  typeof ActiveXObject !== "undefined" ?
  function () {
    var versions = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", 
      "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
    for (var i = 0, j = versions.length, version = ""; i < j; i ++) {
      try {
        new ActiveXObject(versions[i]);
        version = versions[i];
        break;
      }
      catch(e) {
      }
    }
    if (version !== "") {
      return function () {
        return new ActiveXObject(version);
      };
    } else {
      return null;
    }
  }() :
  null ;

var getData = function (url, callback) {
  if (createXHR !== null) {
    var req = createXHR();
    req.onreadystatechange = function () {
      if (req.readyState === 4) {
        callback(req);
      }
    }
    req.open("GET", url, true);
    req.send(null);
  }
};

var prepSprites = window.getComputedStyle ?
  function () {
    var elements = findClass("sprite"), sprites = {};
    var slideSprite = function (e) {
      if (e.type == "mouseover") {
        e.target.style.backgroundPosition = 
          sprites[e.target.id || e.target.className][1];
      } else {
        e.target.style.backgroundPosition = 
          sprites[e.target.id || e.target.className][0];
      }
    };
    for (var i = elements.length, offsets = null, member; i --; ) {
      member = elements[i].id || elements[i].className;
      if (! sprites[member]) {
        sprites[member] = [];
        sprites[member][0] = queryCascade(elements[i], "backgroundPosition");
        offsets = sprites[member][0].split(/\s+/);
        sprites[member][1] = 1 - parseInt(queryCascade(elements[i], "width")) +
          "px " + offsets[1];
      }
      addListener(elements[i], "mouseover", slideSprite);
      addListener(elements[i], "mouseout", slideSprite);
    }
  } :
  function () {
    var elements = findClass("sprite"), sprites = {};
    var slideSprite = function () {
      var e = window.event;
      if (e.type == "mouseover") {
        e.srcElement.style.backgroundPosition = 
          sprites[e.srcElement.id || e.srcElement.className][1];
      } else {
        e.srcElement.style.backgroundPosition = 
          sprites[e.srcElement.id || e.srcElement.className][0];
      }
    };
    for (var i = elements.length, offsets = null, member; i --; ) {
      member = elements[i].id || elements[i].className;
      if (! sprites[member]) {
        sprites[member] = [];
        offsets = [queryCascade(elements[i], "backgroundPositionX"), 
          queryCascade(elements[i], "backgroundPositionY")];
        sprites[member][0] = offsets.join(" ");
        sprites[member][1] = 1 - parseInt(queryCascade(elements[i], "width")) + 
          "px " + offsets[1];
      }
      addListener(elements[i], "mouseover", slideSprite);
      addListener(elements[i], "mouseout", slideSprite);
    }
  } ;

var drag = function (e) {
  if (!e) e = window.event;
  if (!e.target) e.target = e.srcElement;
  var wrapper = e.target.parentNode;
  var left = parseInt(queryCascade(wrapper, "left"));
  var top = parseInt(queryCascade(wrapper, "top"));
  var clientX = e.clientX;
  var clientY = e.clientY;
  wrapper.style.zIndex = doZ();
  var move = function (e) {
    if (!e) e = window.event;
    wrapper.style.left = left + e.clientX - clientX + "px";
    wrapper.style.top = top + e.clientY - clientY + "px";
    burst(e);
  };
  var drop = function (e) {
    if (!e) e = window.event;
    removeListener(document, "mousemove", move, true);
    removeListener(document, "mouseup", drop, true);
    if (parseInt(wrapper.style.left) < 0) wrapper.style.left = "0px";
    if (parseInt(wrapper.style.top) < 0) wrapper.style.top = "0px";
    burst(e);
    thwart(e);
  };
  addListener(document, "mousemove", move, true);
  addListener(document, "mouseup", drop, true);
  burst(e);
  thwart(e);
};

var prepDrag = function () {
  var elements = findClass("drag");
  for (var i = elements.length; i --; ) {
    addListener(elements[i], "mousedown", drag);
  }
};

var presetSkin = function () {
  var pref = getCookie("skin");
  if (pref !== false) {
    document.getElementById("skin").href = pref + ".css";
  }
};

var prepSkinKeys = function () {
  var sheet = document.getElementById("skin");
  var swapSkinByKey = function (e) {
    if (!e) e = window.event;
    if (!e.target) e.target = e.srcElement;
    if (e.target.nodeName.toLowerCase() === "input" || 
      e.target.nodeName.toLowerCase() === "textarea") return;
    e.letter = String.fromCharCode(e.charCode || 
      e.keyCode).toLowerCase();
    var pref;
    if (e.letter === "f") {
      pref = "fuchsia";
    } else if (e.letter === "g") {
      pref = "green";
    } else if (e.letter === "b") {
      pref = "blue";
    } else {
      return;
    }
    sheet.href = pref + ".css";
    document.cookie = "skin=" + pref + "; max-age=" + (60*60*24*30);
  };
  addListener(document, "keypress", swapSkinByKey, true);
};

var prepScrollers = function () {
  var elements = findClass("scroller");
  for (var i = elements.length; i --; ) {
    (function (scroller) {
      var wrapper = findClass("wrapper", scroller)[0];
      var slide = findClass("slide", scroller)[0];
      var w1 = parseInt(queryCascade(wrapper, "width"));
      var w2 = parseInt(queryCascade(slide, "width"));
      var timer = null;
      slide.style.left = queryCascade(slide, "left");
      
      var press = function (e) {
        if (!e) e = window.event;
        if (!e.target) e.target = e.srcElement;
        var jump = e.target.jump;
      
        var animate = function animate () {
          var x = parseInt(slide.style.left) + jump;
          if (x >= w1 - w2 && x <= 0) {
            slide.style.left = x + "px";
            timer = setTimeout(animate, 15);
          } else if (x < w1 - w2) {
            slide.style.left = w1 - w2 + "px";
          } else {
            slide.style.left = "0px";
          }
        };
      
        var release = function (e) {
          clearTimeout(timer);
          removeListener(document, "mouseup", release, true);
          removeListener(document, "mouseout", release, true);
        };
        addListener(document, "mouseup", release, true);
        addListener(document, "mouseout", release, true);
        animate();
        burst(e);
        thwart(e);
      };
      for (var arrows = findClass("arrow", scroller), 
        i = arrows.length, re = /\bright\b/; i --; ) {
          addListener(arrows[i], "mousedown", press);
          arrows[i].jump = (re.test(arrows[i].className)) ? -10 : 10;
      }
    })(elements[i]);
  }
};

var parseHTML = function (req) {
  	if (req.status === 200 || req.status === 304) {
    	var div = createElem("div");
		var destination = document.getElementById("mainbar"), sidebar = document.getElementById("sidebar"), loadingAnimMain=document.getElementById("loading-animation-main"), loadingAnimSide=document.getElementById("loading-animation-side");
    	div.innerHTML = req.responseText;
		var allDivisions=div.getElementsByTagName("div"), allTitles=div.getElementsByTagName("h1"), allLinks;
		var entryDivisions=[], entryTitles=[], presentEntry;
		
		for (var i=0, j=allTitles.length, k=0; i < j ;i++) {
			if (allTitles[i].className === "entry-title") {
				entryTitles[k] = allTitles[i];
				allLinks = entryTitles[k].getElementsByTagName("a");
				for (var t = 0; t < allLinks.length; t++) {
					allLinks[t].setAttribute('target', '_blank');
				}
				k++;
			}
		}
		for (var i=0, j=allDivisions.length, k=0; i < j ;i++) {
			if (allDivisions[i].className === "entry-content") {
				entryDivisions[k]= allDivisions[i];
				k++;
			}
		}
		loadingAnimSide.style.display='none';
		for (var i=0, j=entryTitles.length; i < j ; i++) {
			sidebar.appendChild(entryTitles[i]);
		}
		for (var i=0, j=entryTitles.length, k=0; i < j ;i++) {
			if (i==0) {
				destination.appendChild(entryTitles[i].cloneNode(true));
				destination.appendChild(entryDivisions[i]);
			}
			k++;
			if ( k >= 3 ) {
				loadingAnimMain.style.display = 'none';
				return;
			}
		}
  	}
	loadingAnimMain.style.display = 'none';
/*  getData("data/s3.xml", parseXML);  */
};

var parseXML = function (req) {
  if (req.status === 200 || req.status === 304) {
    var domTree = req.responseXML,
      m = "getElementsByTagName";
    var elements = domTree[m]("shoe");
    var div, ul = createElem("ul", {className: "slide"}), li;
    for (var i = 0, j = elements.length; i < j; i ++) {
      li = createElem("li", null, [
        createElem("a", {href: elements[i][m]("href")[0].firstChild.data}, [
        createElem("img", {src: elements[i][m]("src")[0].firstChild.data, 
        alt: elements[i][m]("alt")[0].firstChild.data})])]);
      ul.appendChild(li);
    }
    div = createElem("div", {className: "scroller", id: "s3"}, [
      createElem("div", {className: "wrapper"}, [ul]),
      createElem("div", {className: "left arrow sprite"}),
      createElem("div", {className: "right arrow sprite"})]);
    document.body.appendChild(div);
  }
  getData("data/s4.xml", parseSimpleXML);
};

var parseSimpleXML = function (req) {
  if (req.status === 200 || req.status === 304) {
    var domTree = req.responseXML;
    var elements = domTree.getElementsByTagName("div");
    var div, ul = createElem("ul", {className: "slide"}), li;
    for (var i = 0, j = elements.length; i < j; i ++) {
      li = createElem("li", null, [
        createElem("a", {href: elements[i].getAttribute("href")}, [
        createElem("img", {src: elements[i].getAttribute("src"), 
        alt: elements[i].getAttribute("alt")})])]);
      ul.appendChild(li);
    }
    div = createElem("div", {className: "scroller", id: "s4"}, [
      createElem("div", {className: "wrapper"}, [ul]),
      createElem("div", {className: "left arrow sprite"}),
      createElem("div", {className: "right arrow sprite"})]);
    document.body.appendChild(div);
  }
  getData("data/s5.js", parseJSON);
};

var prep = function () {
  var mojo = [prepSprites, prepDrag, prepSkinKeys, prepScrollers];
  setTimeout(function yieldthread () {
    (mojo.shift())();
    if (mojo.length !== 0) {
      setTimeout(yieldthread, 30);
    }
  }, 30);
};


addListener(window, "load", function (e) {
    setLocation("NONE");
	setListeners();
  });

var setListeners = function() {
	var uksite=document.getElementById("danuk");
	addListener(uksite, "click", function (e) { 
		setLocation("GB");
	});
	
	var ussite=document.getElementById("danus");	
	addListener(ussite, "click", function (e) { 
		setLocation("US");
	});
	
	var casite=document.getElementById("danca");	
	addListener(casite, "click", function (e) { 
		setLocation("CA");
	});	
	
};

var setLocation = function (toLoc) {
	var location, footerAd, headerAd, boyJames, galootsMars, wolfieBurrows, changeElems, i, j;
	var kindleiPhone, kindlePC, kindleMAC, kindleBlackberry, kindleiPad, kindleAndroid, kindleWin7;
	var kindleAuthorPage;
	if (toLoc === "NONE") {
		location = getCookie("Location");
		if (location === false) {
			location = geoip_country_code();
			document.cookie="Location = "+ location;
		}
	}
	else
	{
		location = toLoc;
		document.cookie="Location = "+ location;		
	}
	
	if (location === "GB") {
		changeElems = findClass("advertsUS");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}		

		changeElems = findClass("advertsUK");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "block";
			}
		}		


		changeElems = findClass("priceGB");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "inline";
			}
		}		

		changeElems = findClass("priceUS");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}		
		
		changeElems = findClass("GB");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "inline";
			}
		}		

		changeElems = findClass("CA");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}		

		changeElems = findClass("US");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}
		
		changeElems = findClass("danuk");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}		

		changeElems = findClass("danca");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "inline";
			}
		}		

		changeElems = findClass("danus");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "inline";
			}
		}
		
	} else {
		if (location === "CA") {
			footerAd="http://rcm-ca.amazon.ca/e/cm?t=danmos00-20&o=15&p=13&l=ur1&category=books&banner=1GHJ7AV15AH855X0ECG2&f=ifr";
			headerAd="http://rcm-ca.amazon.ca/e/cm?t=danmos00-20&o=15&p=13&l=ur1&category=books&banner=1QQ1S5MDMK6025QSG4R2&f=ifr";

			changeElems = findClass("GB");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}		

			changeElems = findClass("CA");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}		

			changeElems = findClass("US");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}
					
			changeElems = findClass("danuk");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}		

			changeElems = findClass("danca");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}		

			changeElems = findClass("danus");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}
		}
		else
		{
			changeElems = findClass("advertsUS");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "block";
				}
			}		

			changeElems = findClass("advertsUK");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}	
			
			footerAd="http://rcm.amazon.com/e/cm?t=danmos-20&o=1&p=26&l=ur1&category=books&banner=0RCQ1NEMQDJP2TWJBJG2&f=ifr";
			headerAd="http://rcm.amazon.com/e/cm?t=danmos-20&o=1&p=26&l=ur1&category=kindle&banner=1VW4WBP63FJN3CB2ETG2&f=ifr";

			changeElems = findClass("GB");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}		

			changeElems = findClass("CA");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}		

			changeElems = findClass("US");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}
					
			changeElems = findClass("danuk");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}		

			changeElems = findClass("danca");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "inline";
				}
			}		

			changeElems = findClass("danus");
			if (changeElems) {
				for (i=0, j=changeElems.length; i < j; i++) {
					changeElems[i].style.display = "none";
				}
			}	
		}

		boyJames="http://www.amazon.com/dp/B005LH4JM2";
		galootsMars="http://www.amazon.com/dp/B005Z6LWN8";
		wolfieBurrows="http://www.amazon.com/dp/B005MGGEZM";
		kindleiPhone="http://www.amazon.com/gp/feature.html/ref=kcp_iph_ln_ar?docId=1000301301"
		kindlePC="http://www.amazon.com/gp/feature.html/ref=kcp_pc_ln_ar?docId=1000426311";
		kindleMAC="http://www.amazon.com/gp/feature.html/ref=kcp_mac_ln_ar?docId=1000464931";
		kindleBlackberry="http://www.amazon.com/gp/feature.html/ref=kcp_bb_ln_ar?docId=1000468551";
		kindleiPad="http://www.amazon.com/gp/feature.html/ref=kcp_ipa_ln_ar?docId=1000490441";
		kindleAndroid="http://www.amazon.com/gp/feature.html/ref=kcp_and_ln_ar?docId=165849822";
		kindleWin7="http://www.amazon.com/gp/feature.html/ref=kcp_wp_ln_ar?docId=1000623751";	
		kindleAuthorPage="http://www.amazon.com/D.R.-Moses/e/B005MXFUSW/ref=ntt_dp_epwbk_0";
		
		changeElems = findClass("priceGB");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "none";
			}
		}		

		changeElems = findClass("priceUS");
		if (changeElems) {
			for (i=0, j=changeElems.length; i < j; i++) {
				changeElems[i].style.display = "inline";
			}
		}
	}
	
	changeElems = findClass("boyJames");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = boyJames;
		}
	}
	
	changeElems = findClass("wolfieBurrows");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = wolfieBurrows;
		}
	}
	
	changeElems = findClass("galootsMars");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = galootsMars;
		}
	}
	
	changeElems = findClass("kindleiPhone");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleiPhone;
		}
	}
	
	changeElems = findClass("kindlePC");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindlePC;
		}
	}
	
	changeElems = findClass("kindleMAC");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleMAC;
		}
	}
	
	changeElems = findClass("kindleBlackberry");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleBlackberry;
		}
	}
	
	changeElems = findClass("kindleiPad");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleiPad;
		}
	}	
	
	changeElems = findClass("kindleAndroid");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleAndroid;
		}
	}
	
	changeElems = findClass("kindleWin7");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleWin7;
		}
	}	

	changeElems = findClass("kindleAuthorPage");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].href = kindleAuthorPage;
		}
	}
	
	changeElems = findClass("header-ad-iframe");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].src = headerAd;
		}
	}
	
	changeElems = findClass("footer-ad-iframe");
	if (changeElems) {
		for (i=0, j=changeElems.length; i < j; i++) {
			changeElems[i].src = footerAd;
		}
	}
	
	
	
};



}());

