// JavaScript Document

var $$ = function(id) {
  return document.getElementById(id);
};

var $$$ = function(tagName, className) {
  var allTags = document.getElementsByTagName(tagName);
  var ret = new Array();
  for (var i = 0 ; i < allTags.length; i++) {
    if (allTags[i].className && allTags[i].className == className) {
	  ret.push(allTags[i]);
	}
  }
  return ret;
};

function checkCartSummary() {
  var theSummary = $$('cart');
  var items = getCartItem(3);
  if (items == 0) theSummary.style.display = "none";
  else {
     changeOpac(0, "cart");
     theSummary.style.display = "block";
     doOpacity("cart", 0, 100, 800);
  }
}

function doOpacity(id, opacStart, opacEnd, millisec) {
  var speed = Math.round(millisec / 100);
  var timer = 0;

  if (opacStart > opacEnd) {
    for(var i = opacStart; i >= opacEnd; i--) {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
	timer++;
    }
  } 
  else if (opacStart < opacEnd) {
    for (var i = opacStart; i <= opacEnd; i++) {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
	timer++;
    }
  }
}

function changeOpac(opacity, id) {
  var object = document.getElementById(id).style; 
  object.opacity = (opacity / 100);
  object.MozOpacity = (opacity / 100);
  object.KhtmlOpacity = (opacity / 100);
  object.filter = "alpha(opacity=" + opacity + ")";
}

if (window.attachEvent) { 
  window.attachEvent("onload", checkCartSummary); 
}
else {  
  window.addEventListener("load", checkCartSummary, false); 
}

function quantityChanged() {
  var source = $$('quant');
  if (source) {
    var i = source.options[source.selectedIndex].value;
	for (var j = 1; j <= 4; j++) {
      var drop = $$('bboff' + j);
	  if (drop) {
        drop.style.display = (j == i ? 'block' : 'none');
	  }
	}
  }
}

if (window.attachEvent) { 
  window.attachEvent("onload", quantityChanged); 
} 
else {  
  window.addEventListener("load", quantityChanged, false); 
}


function checkColourBoxes() {
  var colours = $$$("DIV", "colourBox");
  var temp = new Array();
  for (var i = 0; i < colours.length; i++) {
	temp.push(colours[i]);
    if ((i + 1) % 3 == 0) {
	  var theHighest = 0;
	  for (var j = 0; j < temp.length; j++) {
	    if (temp[j].offsetHeight > theHighest) theHighest = temp[j].offsetHeight;
	  }
	  
	  for (var j = 0; j < temp.length; j++) {
	    temp[j].style.height = theHighest + "px";
	  }
	  temp = new Array();
	}
  }
}

if (window.attachEvent) { 
  window.attachEvent("onload", checkColourBoxes); 
} 
else {  
  window.addEventListener("load", checkColourBoxes, false); 
}

//checkout newspaper tracking functionality
var request = null;
var theURL = "http://www.happypuzzle.co.uk/acatalog/HappyNewspaperData.php";
var thePaper = null;

function trackingData(requestQuery) {
  //Mozilla
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  }
  //Microsoft
  else if (window.ActiveXObject) {
    request = new ActiveXObject("Msxml2.XMLHTTP");
    if (!request) request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (request) {
    //request.onreadystatechange = trackingInfoCallback;
	request.onreadystatechange = trackingCallback;
    try {
      request.open("POST", theURL, true);
      request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
      request.send(requestQuery);
    }
    catch (e) {alert(e);}
  }
}

function submitMainHowFound() {
  var mainHowFound = $$('MainHowFoundSelect');
  if (mainHowFound) {
    var selOpt = mainHowFound.options[mainHowFound.selectedIndex].value;
	if (isNaN(selOpt)) {
	  trackingData("MainHowFound=" + selOpt);
	}
	else if (parseInt(selOpt) == -1) {
	  mainHowFound.form.onsubmit = function() { return checkSubmit(); };
	}
  }
}

function submitNewspaper() {
  var newsHowFound = $$('NewspaperSelect');
  if (newsHowFound) {
    var selOpt = newsHowFound.options[newsHowFound.selectedIndex].value;
	if (isNaN(selOpt)) {
	  trackingData("NewsHowFound=" + selOpt);
	}
  }
}

function checkOtherCodeOption() {
  var codeDrop = $$('NewspaperCodeSelect');
  if (codeDrop) {
    var selOpt = codeDrop.options[codeDrop.selectedIndex].value;
	if (selOpt == "Other") {
	  $$('OtherCodeOpt').style.display = "block";
	  $$('OtherCodeInput').focus();
	}
	else $$('OtherCodeOpt').style.display = "none";
  }
}

function trackingCallback() {
  if (request.readyState == 4 && request.status == 200) {
    try {
	  eval(request.responseText);
	}
	catch (e) {
	  alert(e + "\n" + request.responseText);
	}
  }
}

function formatNewspaperTracking() {
  if (thePaper != null) {
    var tracking = thePaper + ", offer code: ";
	var theDrop = $$('OfferCodeOption');
	var theHidden = $$('GENERALHOWFOUND');
	if (theDrop && theHidden) {
	  tracking += theDrop.options[theDrop.selectedIndex].value;
	  theHidden.value = tracking;
	  alert(theHidden.value);
	}
  }
}

function checkDelivery() {
  var d = $$('delinst');
  if (d) {
    if (d.value.length > 30) { 
	  alert('Please enter delivery instructions no longer than 30 characters long.');
	  d.value = d.value.substring(0, 30);
	  d.focus(); 
	  d.select();
	  return false;
	}
  }
  return true;
}


/* Final checkout page form submission checks */
function checkSubmit() {
  var mainHowFound = $$('MainHowFoundSelect');
  if (mainHowFound) {
    var selOpt = mainHowFound.options[mainHowFound.selectedIndex].value;
	if (!isNaN(selOpt) && parseInt(selOpt) == -1) {
	  window.alert("Please select how you found our site.");
	  mainHowFound.focus();
	  return false;
	}
  }
  return true;
}

function submitFromCatalogue() {
  var howF = $$('GENHOWFOUND');
  if (howF) {
    var howFStr = "Catalogue";
	var catName = $$('CatalogeCodesInput').value;
	howFStr =  (catName == "" ? "Unknown" : catName);
	howF.value = howFStr;
  }
  return true;
}

function submitFromNewspaper() {
  var newsHowFound = $$('NewspaperSelect');
  if (newsHowFound) {
    var selOpt = newsHowFound.options[newsHowFound.selectedIndex].value;
	if (!isNaN(selOpt) && parseInt(selOpt) == -1) {
	  window.alert("Please select the newspaper where you found the offer.");
	  newsHowFound.focus();
	  return false;
	}
	else {
	
	  var howF = $$('GENHOWFOUND');
      if (howF) {
        var howFStr = "" + selOpt;
		var codeSelect = $$('NewspaperCodeSelect');
		var selectedCode = codeSelect.options[codeSelect.selectedIndex].value;
		if (!isNaN(selectedCode) && parseInt(selectedCode) == -1) {
		  window.alert("Please select the appropriate newspaper code.");
		  codeSelect.focus();
		  return false;
		}
		
		if (selectedCode == "Other") {
		  selectedCode = $$('OtherCodeInput').value;
		  //check if empty
		  if (selectedCode == "") {
		    window.alert("Please enter the appropriate newspaper code.");
			$$('OtherCodeInput').focus();
			return false;
		  }
		}
	    howFStr = selectedCode;
	    howF.value = howFStr;
      }
	  
	}
  }
  return true;
}

function submitFromSearchEngine() {
  var searchHowFound = $$('InternetSelect');
  if (searchHowFound) {
    var selOpt = searchHowFound.options[searchHowFound.selectedIndex].value;
	if (!isNaN(selOpt) && parseInt(selOpt) == -1) {
	  var searchText = $$('FurtherInfoRec').value;
	  if (searchText == "") {
	    window.alert("Select the search engine you have visited us from.\n--OR--\nEnter further information on how you found our site.");
		searchHowFound.focus();
		return false;
	  }
	}
	
	var howF = $$('GENHOWFOUND');
    if (howF) {
	  var howFStr = "";
	  if (selOpt == "Other") {
	    if ($$('FurtherInfoRec').value == "") {
		  window.alert("Please enter the search engine name.");
	      $$('FurtherInfoRec').focus();
		  return false;
		}
	    howFStr += $$('FurtherInfoRec').value;
	  }
	  else {
	    howFStr += selOpt;
	  }
	  howF.value = howFStr;
	}
  }
  return true;
}