function realPreviousSibling(node){
  var tempNode=node.previousSibling;
  while(tempNode.nodeType!=1){
    tempNode=tempNode.previousSibling;
  }
  return tempNode;
}

function realNextSibling(node){
  var tempNode=node.nextSibling;
  while(tempNode.nodeType!=1){
    tempNode=tempNode.nextSibling;
  }
  return tempNode;
}

function rollout(objMenuitem, objEvent)
{
    var iKeyCode;

    // Check if from a keyboard - non IE, but
    // irrelevant as tab doesn't trigger the 
    // keypress event in IE
    if (objEvent && objEvent.type == 'keypress')
    {
        if (objEvent.keyCode)
            iKeyCode = objEvent.keyCode;
        else if (objEvent.which)
            iKeyCode = objEvent.which;

        // If it's not the enter key or space key, 
        // pass control back to the browser
        if (iKeyCode != 13 && iKeyCode != 32)
            return true;
    }

    // Work out what we need to do
    if (realNextSibling(objMenuitem).style.display == 'block')
        var strDisplay = 'none'
    else
        var strDisplay = 'block';

    // Close any nested lists that are open
    var objMenu = document.getElementById('mainnav');
    var objNested = objMenu.getElementsByTagName('ul');

    for (var i=0; i<objNested.length; i++) {
       if (objNested[i].parentNode.parentNode.id==objMenu && objNested.getAttribute("rel") != "display"){
          if (objNested[i].style.display == 'block') {
             objNested[i].style.display = 'none';
          }
       }
       else{continue;}
    }
    realNextSibling(objMenuitem).style.display = strDisplay;

    // Stop the browser requesting the link
    return false;
}

function rollup()
{
    var bRollup, objLinks, objNode, objAnchor;

    // Check we're working with a DOM compliant browser
    if (document.getElementById && document.createElement)
    {
     if (!document.getElementById("mainnav")) return true;
        var strLocation = window.location;
        var objMenu = document.getElementById('mainnav');
        var objNested = objMenu.getElementsByTagName('ul');



        // Hide each of the nested unordered list
        for (var i=0; i<objNested.length; i++)
        {
            // Only hide, if the current location is not found in the list
            bRollup = true;
            objLinks = objNested[i].getElementsByTagName('a');

            for (var j=0; j<objLinks.length; j++)
            {
                if (objLinks[j].href == strLocation)
                    bRollup = false;
            }

            if (bRollup == true && objNested[i].getAttribute("rel") != "display")
                objNested[i].style.display ='none';
            else if(objNested[i].getAttribute("rel") != "display")
                objNested[i].style.display ='block';
	    

            // Place the top-level text in an anchor tag
            if(objNested[i].getAttribute("rel") != "display") {
            realPreviousSibling(objNested[i]).onclick=function(event){return rollout(this, event);}
            realPreviousSibling(objNested[i]).onkeypress=function(event){return rollout(this, event);}
	    }            
        }
    }
}


// Check we're working with a DOM compliant browser
var compatible = (
   document.getElementById && document.getElementsByTagName && document.createElement
   &&
   !(navigator.userAgent.indexOf('MSIE 5') != -1 && navigator.userAgent.indexOf('Mac') != -1)
   );


function movepic(img_name,img_src) {
document[img_name].src=img_src;
}

function showPic(whichpic) {
  if (!document.getElementById("placeholder")) return true;
  var source = whichpic.getAttribute("href");
  var placeholder = document.getElementById("placeholder");
  placeholder.setAttribute("src",source);
  if (!document.getElementById("description")) return false;
  if (whichpic.getAttribute("title")) {
    var text = whichpic.getAttribute("title");
  } else {
    var text = "";
  }
  var description = document.getElementById("description");
//  if (description.firstChild.nodeType == 3) {
//    description.firstChild.nodeValue = text;
//  }
//  return false;
}

function prepareGallery() {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("imagegallery")) return false;
  var gallery = document.getElementById("imagegallery");
  var links = gallery.getElementsByTagName("a");
  for ( var i=0; i < links.length; i++) {
    links[i].onclick = function() {
      return showPic(this);
	}
    links[i].onkeypress = links[i].onclick;
  }
}


sfHover = function() {
        if(!document.getElementById("mainnav")) { return false; }
	var sfEls = document.getElementById("mainnav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" over";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp("\\bover\\b"), "");
		}
	}
}

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

/** ULTRA-SIMPLE EVENT ADDING **/
function addEventSimple(obj,evt,fn) {
 if (obj.addEventListener)
 obj.addEventListener(evt,fn,false);
 else if (obj.attachEvent)
 obj.attachEvent('on'+evt,fn);
}

 function removeEventSimple(obj,evt,fn) {
 if (obj.removeEventListener)
 obj.removeEventListener(evt,fn,false);
 else if (obj.detachEvent)
 obj.detachEvent('on'+evt,fn);
}

// BOOKMARK PAGE
function bookmarksite(title, url){
if (document.all)
window.external.AddFavorite(url, title);
else if (window.sidebar)
window.sidebar.addPanel(title, url, "")
}

function change(id, newClass) {
identity=document.getElementById(id);
identity.className=newClass;
}

// POPUPS
function PopupPic(sPicURL) {
    window.open( "/templates/popup.html?static=1&"+sPicURL, "",
    "resizable=1,scrollbars=1,height=200,width=200");
}
function sendtofriend(sPicURL) {
    window.open(sPicURL, "",
    "resizable=1,scrollbars=1,height=500,width=400");
}
function size_guide(sPicURL) {
    window.open(sPicURL, "",
    "resizable=1,scrollbars=1,height=500,width=570");
}
function hosiery_guide(sPicURL) {
    window.open(sPicURL, "",
    "resizable=1,scrollbars=1,height=500,width=570");
}

// FORM VALIDATION
var validationErrorMessage = new Object();
validationErrorMessage['required'] = 'This information is required';
validationErrorMessage['numeric'] = 'This field requires a number';
validationErrorMessage['postcode'] = 'This field must hold a UK postal code';
validationErrorMessage['pattern'] = 'Pattern incorrect';
validationErrorMessage['email'] = 'Incorrect email address';

// CARD VALIDATION
validationErrorMessage['cardtype'] = 'Choose a card type';
validationErrorMessage['cardholdername'] = 'Enter the cardholder name';
validationErrorMessage['cardnumber'] = 'Enter a valid 16 digit card number without spaces or dashes';
validationErrorMessage['expirymonth'] = 'Select the expiry month';
validationErrorMessage['expiryyear'] = 'Select the expiry year';

var validationFunctions = new Object();
validationFunctions["required"] = isRequired;
validationFunctions["pattern"] = isPattern;
validationFunctions["postcode"] = isPostCode;
validationFunctions["numeric"] = isnumeric;
validationFunctions["email"] = isEmail;

// CARD VALIDATION
validationFunctions["cardtype"] = isRequired;
validationFunctions["cardholdername"] = isRequired;
validationFunctions["cardnumber"] = isCardNumber;
validationFunctions["expirymonth"] = isRequired;
validationFunctions["expiryyear"] = isRequired;



function isRequired(formField) {
	switch (formField.type) {
		case 'text':
		case 'textarea':
		case 'select-one':
			if (formField.value)
				return true;
			return false;
		case 'radio':
			var radios = formField.form[formField.name];
			for (var i=0;i<radios.length;i++) {
				if (radios[i].checked) return true;
			}
			return false;
		case 'checkbox':
			return formField.checked;
	}	
}

function isPattern(formField,pattern) {
	var pattern = pattern || formField.getAttribute('pattern');
	var regExp = new RegExp("^"+pattern+"$","");
	var correct = regExp.test(formField.value);
	if (!correct && formField.getAttribute('patternDesc'))
		correct = formField.getAttribute('patternDesc');
	return correct;
}

function isPostCode(formField) {
	return isPattern(formField,"\\d{4}\\s*\\D{2}");
}

function isCardNumber(formField) {
	return isPattern(formField,"\\d{16}");
}

function isnumeric(formField) {
	return isPattern(formField,"\\d+");
}

function isEmail(formField) {
	return isPattern(formField,"\\w*@\\w*\.\\w{2,4}")
}

function emptyFunction() {
	return true;
}

/*********************************/

var W3CDOM = document.createElement && document.getElementsByTagName;

function validateForms() {
	if (!W3CDOM) return;
	var forms = document.forms;
	for (var i=0;i<forms.length;i++) {
		forms[i].onsubmit = validate;
	}
}



function validate() {
	var els = this.elements;
	var validForm = true;
	var firstError = null;
	for (var i=0;i<els.length;i++) {
		if (els[i].removeError)
			els[i].removeError();
		var req = els[i].getAttribute('rel');
		if (!req) continue;
		var reqs = req.split(' ');
		if (els[i].getAttribute('pattern'))
			reqs[reqs.length] = 'pattern';
		for (var j=0;j<reqs.length;j++) {
			if (!validationFunctions[reqs[j]])
				validationFunctions[reqs[j]] = emptyFunction;
			var OK = validationFunctions[reqs[j]](els[i]);
			if (OK != true) {
				var errorMessage = OK || validationErrorMessage[reqs[j]];
				writeError(els[i],errorMessage)
				validForm = false;
				if (!firstError)
					firstError = els[i];
				break;
			}
		}
	}

	if (!validForm) {
		//alert("Sorry, there was a problem submitting this information \nPlease ensure all fields marked * have been completed");
		location.hash = '#startOfForm';
	}
   return validForm;
   document.getElementById("process").disabled = true;
}

function writeError(obj,message) {
	if(obj.parentNode.className.match('errorMessage') == null){
		obj.parentNode.className += ' errorMessage';
	}
	obj.onchange = removeError;
	if (obj.errorMessage || obj.parentNode.errorMessage) return;
	var errorMessage = document.createElement('span');
	errorMessage.className = 'errorMessage';
	//errorMessage.setAttribute('for',obj.id);
	//errorMessage.setAttribute('htmlFor',obj.id);
	errorMessage.appendChild(document.createTextNode(message));
	obj.parentNode.appendChild(errorMessage);
	obj.errorMessage = errorMessage;
	obj.parentNode.errorMessage = errorMessage;
}

function removeError() {
	//this.className = this.className.replace(/errorMessage/,'');
	this.parentNode.className = this.parentNode.className.replace(/errorMessage/,'');
	if (this.errorMessage) {
		this.parentNode.className = this.parentNode.className.replace(/errorMessage/,'');
		this.parentNode.removeChild(this.errorMessage);
		this.errorMessage = null;
		this.parentNode.errorMessage = null;
	}
	this.onchange = null;
}

function checkWeHaveQuantity() {
    if($('frm_quantity')) {
        var proceed = false;
        var qty_boxes = $$("#frm_quantity .qty");
        var qty_message = $('qty_message');
        qty_boxes.each(function(item) {
            var val = item.value;
            if(val !=='0' && val !=="") {
                proceed = true;
				item.removeClass('qty_message');
            } else { 
                item.addClass('qty_message');
            }	
        });
        if(proceed) {
            qty_message.setHTML('&nbsp;');
            return true;
        } else {
            qty_message.setHTML("Enter the quantity you want adding to your basket.");
			qty_message.setStyle('display', 'block');
			
            return false;
        }
    }
}


	window.addEvent('domready', function(){
			/* Tips 2 */
			var Tips2 = new Tips($$('.Tips2'), {
				initialize:function(){
					this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
				},
				onShow: function(toolTip) {
					this.fx.start(1);
				},
				onHide: function(toolTip) {
					this.fx.start(0);
				}
			});
		}); 



// addEventSimple(window,"load",validateForms);
addLoadEvent(rollup);
addLoadEvent(sfHover);
addLoadEvent(validateForms);
