/**
 *  Most of the scripts below were found at
 *  www.alistapart.com and related sites.  They are used
 *  here because they are web standards compliant.  These
 *  scripts are all free to reuse and are not licensed as
 *  part of the software core.
 *
 *  All onload() events go at the bottom of this file.
 */

/**
 *  Function DisableSubmit() used to disable submit buttons
 *  after then have been depressed.  This is implemented to
 *  stop multiple click submissions of forms.
 */

var submitted = false;
var catalogueId = '';

function DisableSubmit(formname) {

     if(submitted == true) { return; }
     document.forms[formname].submit();
     document.forms[formname].SUBMIT.value = 'Please Wait...';
     document.forms[formname].SUBMIT.disabled = true;
     submitted = true;

}

var slideCatalogueForm = function(dir) {

	if(dir == 'r') {
		$('#catalogue_disp ul li').click(function() {
			catalogueId = $(this).attr('id');
			
			$('#catalogue_disp').animate({
			'margin-left' : '-495px'
			}, 1000);
		});
	} else {
		catalogueId = $(this).attr('id');
			
		$('#catalogue_disp').animate({
		'margin-left' : '0'
		}, 1000, function() {
			$('#catalogueLoading').css('display', 'none');
		});
	}
	
	$('#catalogueReturn').click(function() {
			
		$('#catalogue_disp').animate({
		'margin-left' : '0'
		}, 1000, function() {
			$('#catalogueLoading').css('display', 'none');
		});
	});
}

var submitCatalogueForm = function() {
	$('#catalogueSubmit').click(function() {
		var cName = $('input[name="c_name"]').val();
		var cEmail = $('input[name="c_email"]').val();
		var cCompany = $('input[name="c_company"]').val();
		
		if(cName == '' || cEmail == '' || cCompany == '') {
			$('#catalogueErrors').html('Please complete all fields before submitting the form.');
		} else {
			$('#catalogueLoading').css('display', 'inline');
			$.ajax({
				url: "/media/scripts/ajax/submitCatalogueData.php",
				type: "POST",
				data: {name : cName, email : cEmail, company : cCompany},
				async:false,
				success: function(r) {
					if(r == 'false') {
						$('#catalogueErrors').html('Unfortunately there was a problem submitting your data. Please try again.');
					} else {
						if($('#catalogueDownloadFrame').length <= 0) {
							$('body').append('<iframe id="catalogueDownloadFrame" src="/media/scripts/iframe/serve_file.php?id=' + catalogueId + '" style="display: none;"></iframe>');
							slideCatalogueForm('l');
						} else {
							$('#catalogueDownloadFrame').attr('src', '/media/scripts/iframe/serve_file.php?id=' + catalogueId);
						}
						
						slideCatalogueForm('l');
					}
				}
			}
		)
		}
	});
}

var checkAddressForCarriage = function() {
	var countyElem = $('.county');
	var countryElem = $('.country');
	
	if(countyElem.length > 0 || countryElem.length > 0) {
		if(countyElem.length > 0) {
			var county = $(countyElem[1]).text();
		}
		
		if(countryElem.length > 0) {
			var country = $(countryElem[1]).text();
		}
		
		var excludedCounties = new Array('County Tyrone', 'County Londonderry', 'County Fermanagh', 'County Down', 'County Armagh', 'County Antrim', 'Grampian', 'Highlands and Islands', 'Highland', 'Moray', 'Shetland Islands', 'Orkney Islands', 'Western Isles');
		
		var allowedCountries = new Array('UK - England', 'UK - Scottish Mainland', 'UK - Northern Ireland', 'UK - Wales');
			
		if($.inArray(county, excludedCounties) != -1 || $.inArray(country, allowedCountries) == -1) {
			$('#ecom--coform--gateway_select--1').attr('checked', 'checked');
			$('#ecom--coform--gateway_select--2').attr('disabled', 'disabled');
			$('#ecom--coform--gateway_select--3').attr('disabled', 'disabled');
			$('#coform--paymentmethodselection').prepend('<p>Due to your delivery location we will need to give you a quote for the delivery charge. Please complete the order process and someone will be in contact regarding your order shortly.</p>');
		}
		
	}
}

$(document).ready(function() {
	slideCatalogueForm('r');
	submitCatalogueForm();
	checkAddressForCarriage();
});

/**
 *  Function externalLinks() used to provide a standards
 *  compliant way of producing a pop-up link to another
 *  page.
 */

function externalLinks() {

     if (!document.getElementsByTagName) return;
     var anchors = document.getElementsByTagName("a");
     for (var i=0; i<anchors.length; i++) {
     var anchor = anchors[i];
     if (anchor.getAttribute("href") &&
     anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
     }

}

/**
 *  Function to add multiple onload() events to a page. 
 *  Authored by Scott Andrew.  Visit www.scottandrew.com
 *  for info.
 */

function addWindowEvent(elm, evType, fn, useCapture) {

     if (elm.addEventListener) {
     elm.addEventListener(evType, fn, useCapture);
     return true;
     } else if (elm.attachEvent) {
     var r = elm.attachEvent('on' + evType, fn);
     return r;
     } else {
     elm['on' + evType] = fn;
     }

}

/**
 *	Whatever:hover - V1.42.060206 - hover & active
 *	------------------------------------------------------------
 *	(c) 2005 - Peter Nederlof
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
 *
 *	Whatever:hover is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Lesser General Public
 *	License as published by the Free Software Foundation; either
 *	version 2.1 of the License, or (at your option) any later version.
 *
 *	Whatever:hover is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *	Lesser General Public License for more details.
 *
 *	Credits and thanks to:
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	------------------------------------------------------------
 */

var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,

currentSheet, doc = window.document, hoverEvents = [], activators = {
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {

     if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
     window.attachEvent('onunload', unhookHoverEvents);
     var sheets = doc.styleSheets, l = sheets.length;
     for(var i=0; i<l; i++) 
     parseStylesheet(sheets[i]);

}

function parseStylesheet(sheet) {

     if(sheet.imports) {
     try {
     var imports = sheet.imports, l = imports.length;
     for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
     } catch(securityException){}
     }
     try {
     var rules = (currentSheet = sheet).rules, l = rules.length;
     for(var j=0; j<l; j++) parseCSSRule(rules[j]);
     } catch(securityException){}

}

function parseCSSRule(rule) {

     var select = rule.selectorText, style = rule.style.cssText;
     if(!csshoverReg.test(select) || !style) return;
     var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
     var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
     var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
     var affected = select.replace(/:(hover|active).*$/, '');
     var elements = getElementsBySelect(affected);
     if(elements.length == 0) return;
     currentSheet.addRule(newSelect, style);
     for(var i=0; i<elements.length; i++)
     new HoverElement(elements[i], className, activators[pseudo]);

}

function HoverElement(node, className, events) {

     if(!node.hovers) node.hovers = {};
     if(node.hovers[className]) return;
     node.hovers[className] = true;
     hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
     hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });

}

function hookHoverEvent(node, type, handler) {

     node.attachEvent(type, handler);
     hoverEvents[hoverEvents.length] = { 
     node:node, type:type, handler:handler 
     };

}

function unhookHoverEvents() {

     for(var e,i=0; i<hoverEvents.length; i++) {
     e = hoverEvents[i]; 
     e.node.detachEvent(e.type, e.handler);
     }
}

function getElementsBySelect(rule) {

     var parts, nodes = [doc];
     parts = rule.split(' ');
     for(var i=0; i<parts.length; i++) {
     nodes = getSelectedNodes(parts[i], nodes);
     }
     return nodes;

}

function getSelectedNodes(select, elements) {

     var result, node, nodes = [];
     var identify = (/\#([a-z0-9_-]+)/i).exec(select);
     if(identify) {
     var element = doc.getElementById(identify[1]);
     return element? [element]:nodes;
     }
     var classname = (/\.([a-z0-9_-]+)/i).exec(select);
     var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
     var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
     for(var i=0; i<elements.length; i++) {
     result = tagName? elements[i].all.tags(tagName):elements[i].all; 
     for(var j=0; j<result.length; j++) {
     node = result[j];
     if(classReg && !classReg.test(node.className)) continue;
     nodes[nodes.length] = node;
     }
     }	
     return nodes;

}

/**
 *  Function to show or hide an id within an XHTML page.
 */

function idShowHide(obj) {

     var el = document.getElementById(obj);
     if ( el.style.display != "none" ) {
     el.style.display = 'none';
     } else {
     el.style.display = 'block';
     }

}

/**
 *  WYSIWYG Editors.
 */

function wysiwygLoad(id) {

     var pid = id + '--wysiwyglink';
     var el  = document.getElementById(pid);

     if ( el.style.display != "none" ) {
     el.style.display = 'none';
     $(id).mooEditable({buttons: 'bold,italic,underline,strikethrough,|,insertunorderedlist,insertorderedlist,indent,outdent,|,undo,redo,|,toggleview'});
     }

}

function setSideNav() {
	var contentHeight = document.getElementById("content").offsetHeight - (32);
	var sideNavHeight = document.getElementById("side_nav").offsetHeight - (32);
	
	if(contentHeight > sideNavHeight) {
		document.getElementById("side_nav").style.height = contentHeight + "px";
	} else {
		document.getElementById("content").style.height = sideNavHeight + "px";
	}
}


/**
 *  LOAD EVENT
 */

addWindowEvent(window,'load',externalLinks,false);

/**
 *  LOAD EVENT
 */

var IE6   = false /*@cc_on || @_jscript_version < 5.7 @*/;

if ((IE6) && (window.MochaUI === undefined)) {addWindowEvent(window,'load',parseStylesheets,false);}


/**
 *  End.
 */
