var remove = new Array('lang');
var optionsWindow;
var banners = new Array();

function addLoadEvent(func) {
	//alert('load event');
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/***********************************************************
* Logout
************************************************************/
function logout_check(del){
	var agree=confirm('By logging out, your shopping basket will be lost');
	if (agree) {
		return true;
	} else {
		return false;
	}
}

/***********************************************************
* Pop-up Window
************************************************************/
function showPopup(url,name,options)
{
	if(optionsWindow!=null && !optionsWindow.closed && optionsWindow.location) {
		optionsWindow.location.href = url;
	} else {
		optionsWindow = window.open(url,name,options);
		if(!optionsWindow.opener) {
			optionsWindow.opener = self;
		}
	}

	if(window.focus) {
		optionsWindow.focus();
	}
}

/***********************************************************
* Banner Rotation
************************************************************/
var speed = 10000;

function rotateBanners(){
	//Start rotation with second banner
	setTimeout("displayBanner(1)", speed);
}

function displayBanner(count){
	//alert('Banners Length: '+banners.length-1);
	//alert('Count: '+count);
	document.getElementById('banner').href = banners[count][0];
	var img = document.getElementById('banner').getElementsByTagName('img')[0];
	img.alt = banners[count][1];
	img.src = banners[count][2];
	if(count==banners.length-1){
		count = 0;
		//alert('set count to zero');
	} else {
		count = count+1;
	}
	setTimeout("displayBanner("+count+")", speed);
}

/***********************************************************
* Form Validation
************************************************************/
var node_text = 3;	// DOM text node-type
var emptyString = new RegExp(/^\s*$/ );

function trim(str){
	return str.replace(/^\s+|\s+$/g, '');
}

function msg(fld, msgtype, messtext, messnumber){
	var dispmessnumber;
	if (emptyString.test(messtext))
		dispmessnumber = String.fromCharCode(160);
	else
		dispmessnumber = messtext;
	var elem = document.getElementById(fld);
	elem.firstChild.nodeValue = dispmessnumber;
	elem.className=msgtype;
}

var proceed = 2;
	
function commonCheck(valfield, infoID)
{
	//alert('Value Field: '+valfield+', Info Field: '+infoID);
	if (!document.getElementById)
		return true;  // not available on this browser - leave validation to the server
	var elem = document.getElementById(infoID);
	//if (!elem.firstChild) return true;  // not available on this browser
	//if (elem.firstChild.nodeType != node_text) return true;  // infoID is wrong type of node
	return proceed;
}

function validaterequired(valfield, infoID)
{
  var stat = commonCheck (valfield, infoID);
  if (stat != proceed) return stat;

    if (emptyString.test(valfield.value)) {
      msg (infoID, "warning", 'This is a required field', 1);
      return false;
    }

  msg (infoID, "valid", "*", 3);
  return true;
}

function validateemail  (valfield, infoID)
{
  var stat = commonCheck (valfield, infoID);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
  var email = new RegExp(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i);
  if (!email.test(tfld)) {
    msg (infoID, "warning", 'Please enter a valid email address', 1);
    return false;
  } else {
  	msg (infoID, "valid", "*", 3);
  	return true;
	}
}

function validatenumber (valfield, infoID)
{
	var stat = commonCheck (valfield, infoID);
	if (stat != proceed) return stat;

	var tfld = trim(valfield.value);

	if (emptyString.test(valfield.value)) {
		msg (infoID, "warning", 'This is not a valid number', 1);
		return false
	}

	var numberRE = new RegExp(/^[0-9 ]*$/);
	if (!numberRE.test(tfld)) {
		msg (infoID, "warning", 'This is not a valid number', 1);
		return false;
	}
	msg (infoID, "valid", "*", 3);
	return true;
}

function validateagreed (valfield, infoID)
{
	var stat = commonCheck (valfield, infoID);
	if (stat != proceed) return stat;

	if (valfield.checked!=true) {
		msg (infoID, "warning", valfield.title, 1);
		return false;
	}
	msg (infoID, "valid", "*", 3);
	return true;
}

function validateOnSubmit(form) {
	var elem;
	var errs=0;
	
	//var infoLinks = getElementsByClassName('required','span', form);
	//for (var i=0; i < infoLinks.length; i++){	
	var infoLinks = $('#'+form.id+' span.required');
	infoLinks.each(function(i) {
		//alert(infoLinks[i].id);
		//infoLinks[i].className = '';
		$(this).innerHTML = '*';
	});

	//var dateLinks = getElementsByClassName('date','input', form);
	//for (var i=0; i < dateLinks.length; i++){
	var dateLinks = $('#'+form.id+' input.date');
	dateLinks.each(function(i) {
		//alert('info_'+dateLinks[i].name);
		el = document.getElementById($(this).attr('id'));
		if (!validatedate(el, 'info_'+$(this).attr('name'))) errs +=1;
	});

	//var numberLinks = getElementsByClassName('number','input', form);
	//for (var i=0; i < numberLinks.length; i++){
	var numberLinks = $('#'+form.id+' input.number');
	numberLinks.each(function(i) {
		//alert('info_'+numberLinks[i].name);
		el = document.getElementById($(this).attr('id'));
		if (!validatenumber(el, 'info_'+$(this).attr('name'))) errs +=1;
	});

	//var emailLinks = getElementsByClassName('email','input', form);
	//for (var i=0; i < emailLinks.length; i++){
	var emailLinks = $('#'+form.id+' input.email');
	emailLinks.each(function(i) {
		//alert('info_'+emailLinks[i].name);
		el = document.getElementById($(this).attr('id'));
		if (!validateemail(el, 'info_'+$(this).attr('name'))) errs +=1;
	});

	//var requireLinks = getElementsByClassName('require','input', form);
	//var requireLinks1 = getElementsByClassName('require','textarea', form);
	//for (var i=0; i < requireLinks.length; i++){
	var requireLinks = $('#'+form.id+' input.require');
	requireLinks.each(function(i) {
		//alert(requireLinks[i].id);
		el = document.getElementById($(this).attr('id'));
		if (!validaterequired(el, 'info_'+$(this).attr('name'))) errs +=1;
	});
	
	//for (var i=0; i < requireLinks1.length; i++){
	var requireLinks1 = $('#'+form.id+' textarea.require');
	requireLinks1.each(function(i) {
		//alert('info_'+requireLinks[i].name);
		el = document.getElementById($(this).attr('id'));
		if (!validaterequired(el, 'info_'+$(this).attr('name'))) errs +=1;
	});

	//var agreeLinks = getElementsByClassName('agree','input', form);
	//for (var i=0; i < agreeLinks.length; i++){
	var agreeLinks = $('#'+form.id+' input.agree');
	agreeLinks.each(function(i) {
		el = document.getElementById($(this).attr('id'));
		if (!validateagreed(el, 'info_'+$(this).attr('name'))) errs +=1;
	});

	return (errs==0);
};

/***********************************************************
* Set up the links in the page with their onblur and onsubmit handlers
************************************************************/
function preparePage(){

	if(document.getElementById('del_same_as_bill')){
		var del_same_as_bill = document.getElementById('del_same_as_bill');
		del_same_as_bill.onclick = function(){
			if(del_same_as_bill.checked==true){
				document.getElementById('del_address1').className = '';
				document.getElementById('info_del_address1').className = '';
				document.getElementById('info_del_address1').firstChild.nodeValue = '';

				document.getElementById('del_town').className = '';
				document.getElementById('info_del_town').className = '';
				document.getElementById('info_del_town').firstChild.nodeValue = '';

				document.getElementById('del_county').className = '';
				document.getElementById('info_del_county').className = '';
				document.getElementById('info_del_county').firstChild.nodeValue = '';

				document.getElementById('del_postcode').className = '';
				document.getElementById('info_del_postcode').className = '';
				document.getElementById('info_del_postcode').firstChild.nodeValue = '';

				document.getElementById('del_country').className = '';
				document.getElementById('info_del_country').className = '';
				document.getElementById('info_del_country').firstChild.nodeValue = '';
			} else {
				document.getElementById('del_address1').className = 'require';
				document.getElementById('info_del_address1').className = 'required';
				document.getElementById('info_del_address1').firstChild.nodeValue = '*';

				document.getElementById('del_town').className = 'require';
				document.getElementById('info_del_town').className = 'required';
				document.getElementById('info_del_town').firstChild.nodeValue = '*';

				document.getElementById('del_county').className = 'require';
				document.getElementById('info_del_county').className = 'required';
				document.getElementById('info_del_county').firstChild.nodeValue = '*';

				document.getElementById('del_postcode').className = 'require';
				document.getElementById('info_del_postcode').className = 'required';
				document.getElementById('info_del_postcode').firstChild.nodeValue = '*';

				document.getElementById('del_country').className = 'require';
				document.getElementById('info_del_country').className = 'required';
				document.getElementById('info_del_country').firstChild.nodeValue = '*';
			}
		}
	}

	if(document.getElementById('agree_terms')){
		var agree_terms = document.getElementById('agree_terms');
		agree_terms.onclick = function(){
			if(agree_terms.checked==true){
				document.getElementById('info_agree_terms').className = '';
				document.getElementById('info_agree_terms').firstChild.nodeValue = '';
				document.getElementById('agree_terms_1').checked = true;
				document.getElementById('info_agree_terms_1').className = '';
				document.getElementById('info_agree_terms_1').firstChild.nodeValue = '';
			} else {
				document.getElementById('info_agree_terms').className = 'agree';
				document.getElementById('info_agree_terms').firstChild.nodeValue = '*';
				document.getElementById('agree_terms_1').checked = false;
				document.getElementById('info_agree_terms_1').className = 'agree';
				document.getElementById('info_agree_terms_1').firstChild.nodeValue = '*';
			}
		}
	}
	
	if(document.getElementById('agree_terms_1')){
		var agree_terms_1 = document.getElementById('agree_terms_1');
		agree_terms_1.onclick = function(){
			if(agree_terms_1.checked==true){
				document.getElementById('info_agree_terms_1').className = '';
				document.getElementById('info_agree_terms_1').firstChild.nodeValue = '';
				document.getElementById('agree_terms').checked = true;
				document.getElementById('info_agree_terms').className = '';
				document.getElementById('info_agree_terms').firstChild.nodeValue = '';
			} else {
				document.getElementById('info_agree_terms_1').className = 'agree';
				document.getElementById('info_agree_terms_1').firstChild.nodeValue = '*';
				document.getElementById('agree_terms').checked = false;
				document.getElementById('info_agree_terms').className = 'agree';
				document.getElementById('info_agree_terms').firstChild.nodeValue = '*';
			}
		}
	}
	
	// Toggle
	if ($("#login_form_toggle") && $("#login_form_display")) {
		$("#login_form_toggle").click(function () {
			$("#login_form_display").slideToggle("fast");
		});
		$("#login_form_toggle").text('Purchased from Sky Lanterns before? Click here to login.');
		$('#login_form_toggle').css('cursor', 'pointer'); 
		$('#login_form_toggle').css('text-decoration', 'underline');
		$("#login_form_display").hide();
		createCookie('hide', 1, 1);
	}
	
	

	//var forms = getElementsByClassName('validate','form');
	var forms = $('form.validate');
	//for (var i=0; i < forms.length; i++){
	forms.each(function(i) {
		$(this).bind('submit',function(){	
			return validateOnSubmit(this);
		});
	});

	$('select.rrp_check').change(function(i) {
			var update = $(this).parent().parent().parent().children('div.price_details');
		
			jQuery.ajax({
				type: 'get', 
				data: 'product_ID='+$(this).val(),
				url: '/rrp_check.php',
				timeout: 2000,
				error: function() {
					alert("The RRP could not be found. The server returned a " + textStatus + " error.");
				},
				success: function(html) { 
					//alert(html);
					//return false;
					//alert(.attr('className'));
					update.html(html);
				}
			});
			return false;
	});

	//var asyncforms = getElementsByClassName('async','form');
	var asyncforms = $('form.async');
	//for (var i=0; i < asyncforms.length; i++){
	asyncforms.each(function(i) {
		$('#'+this.id).bind('submit',function(){			
			var inputs = [];
			$(':input', this).each(function() {
				inputs.push(this.name + '=' + escape(this.value));
			});
			inputs.push('type=async');
		  
			jQuery.ajax({
				type: this.method, 
				data: inputs.join('&'),
				url: this.action,
				timeout: 2000,
				error: function() {
					alert("The product could not be added to your basket. The server returned a " + textStatus + " error.");
				},
				success: function(html) { 
					$('#basket_status').html(html);

					if($(window).scrollTop()==0){
						var top = 95;	
						var close_top = 120;
					} else {
						var top = $(window).scrollTop()+30;
						var close_top = $(window).scrollTop()+55;
					}
					top = top +'px';
					close_top = close_top +'px';
									
					$("#status").css("top", top);
					$("#close").css("top", close_top);
				}
			});
			return false;
		});
	});

	//var pop_ups = getElementsByClassName('pop','a');
	var pop_ups = $('a.pop');
	//for (var i=0; i < pop_ups.length; i++){
	pop_ups.each(function(i) {
		$(pop_ups[i]).bind('click',function(){	
			showPopup(this.href+'?pop_up=true','popup','toolbar=no, scrollbars=yes, resizable=yes, menubar=no, width=500, height=500');
			return false;
		});
	});

	//var logoutLinks = getElementsByClassName('logout', 'a');
	var logoutLinks = $('a.logout');
	//for (var i=0; i < logoutLinks.length; i++){
	logoutLinks.each(function(i) {
		$('#'+this.id).bind('click',function(){	
			return logout_check(this);
		});
	});

	if(banners!='' && banners.length!=1){
		rotateBanners();
	}

}

function closeElement(el){
	(document.getElementById(el.id)).style.display = 'none';
	return false;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

addLoadEvent(preparePage);