/*
 *
 */
$(document).ready(function(){

	/* Checkout validations */
	$("#errorHolder:empty").hide();
	$.validator.addMethod("expiry", function(value, element) {
		if($("#endmonth").val() !="" && $("#endyear").val() !="") {
			return true;
		} else {
			return false;
		}
	}, "Please provide the expiry date of your card");
	$.validator.addClassRules("requiredIfNotSameAsDelivery", {
	  	required: function() {
	   		return $("#sameasdelivery:checked").size() ==0 ? true : false;
	 	}
	});
	$(".validate").validate({
		success: "valid",
		rules: {
		    password1: "required",
		    password2: {
		      equalTo: "#password1"
		    }
		},
		groups: {
			enddate: "endmonth endyear"
		},
	  	errorPlacement: function(error, element) {
		     if (element.attr("name") == "endmonth" || element.attr("name") == "endyear" )
		       error.insertAfter("#endyear");
		     else
		       error.insertAfter(element);
		},
		invalidHandler: function(form, validator) {
			var errors = validator.numberOfInvalids();
			var errorPlural = errors==1 ? "error" : "errors";
			var errMsg = 	'<div id="errorMessage">';
				errMsg += 	'<p><strong>We found '+errors+' '+errorPlural+' in your form. The errors have been highlighted below.</strong></p>';
				errMsg += 	'</div>';
			$("#errorHolder").html(errMsg).fadeIn();
			window.location = "#errorHolder";
		}

	});
	$("select:not(.ignoreValidation),input").change(function() {
		if($(this).hasClass("ignoreValidation")) return;
	  $(this).valid();
	});
	$("#sameasdelivery").click(function() {
		if($(this).is(':checked')) {
			$("#billingAddressHolder").hide();
		} else {
			$("#billingAddressHolder").show();
		}
	})


    /**
     * Basket Code
     */
    $("div#basket_dropdown_button, a#slideup_button").click(function(){
        if ($("div#navigation_basket_dropdown").is(":hidden")) {
            $("div#navigation_basket").css('backgroundPosition','0 -43px');
            $("div#navigation_basket_dropdown").slideDown("slow");
        } else {
            $("div#navigation_basket").css('backgroundPosition','0 0');
            $("div#navigation_basket_dropdown").slideUp("slow");
        }
    });
    // on basket no items
    $("div#navigation_basket.noitems").css("backgroundImage", "url(images/image_navigation_basket_noitems_button.png)"); // Change button background
    $("div#navigation_basket.noitems div#basket_dropdown_button").hide();
    $("div#navigation_basket.noitems div#basket_checkout").hide();
    $("div#navigation_basket.noitems div#navigation_basket_dropdown").hide();

    /**
     * Search Input Clear
     */
    $("input#searchquery").focus(function() {
        if ($(this).val() == "Search our site") {
            $(this).val('');
        }
    });
    $("input#searchquery").blur(function() {
        if ($(this).val() == "") {
            $(this).val('Search our site');
        }
    });



    /**
     * Dropdown Logic
     */
    // Display / Hide dropdown options
    $("div.dropdown_button").click(function(){
        if ($(this).siblings("div.scrollarea").is(":hidden")){
           $(this).siblings("div.scrollarea").slideDown("slow");
        } else {
            $(this).siblings("div.scrollarea").slideUp("fast");
        }
    });

	/* Stripes */
	$(".stripe li:odd").addClass("alt");

	/* Progress bar */
	$(".progressbar a").hover(function(){$(this).parent("li").addClass("active")},function(){$(this).parent("li").removeClass("active")});

	// ie6 png fix
	if($.browser.msie && parseInt(jQuery.browser.version.substr(0,1))<=6) {
		var blank = new Image();
	 	blank.src = '../js/s.gif';
		$("img[src*='.png'],input[src*='.png']").each(function() {
			png = this;
			var src = png.src;
		   if (!png.style.width) { png.style.width = $(png).width(); }
		   if (!png.style.height) { png.style.height = $(png).height(); }
		   png.src = blank.src;
		   png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='image')";
		})
	}


	//HIDE AND SHOW TEAMWARE FORM

	$('a[href*=#]').click(function() {
		if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
		&& location.hostname == this.hostname) {
			var $target = $(this.hash);
			$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
			if ($target.length) {
				var targetOffset = $target.offset().top;
				setTimeout(function() {
					$('html,body').animate({scrollTop: targetOffset}, 1000);
					return false;
				}, 300)

			}
		}
	});


	$('div.form').hide();
	//$('div.thank_you').hide();
	$('#get_in_touch').bind('click', function(event) {
		var form = $('.form');
		if(form.is(':visible')) {
			return false;
		} else {
			$('.form').slideDown('slow');
			$(this).hide();
		}
	});

	$('a#submit').bind('click', function(event){
		$('.form form').hide();
		$('.thank_you').fadeIn();
	});


	//FAQ's
	$('p.answer').hide();
	$('ul.faq li:even').css('background-color','#3e3a38');

	$('li.question').click(function(event){
		var answer = $(this).children('p.answer');
		if(answer.is(':visible')){
			$(answer).slideUp();
			$(this).removeClass('faqOpen');
		} else {
			$(answer).slideDown();
			$(this).addClass('faqOpen');
		}
	});

	/* Set up bundle panels */
	$("#bundleRight .panel").hide();
	$("#bundleRight .panel:first").slideDown();
	try {
		eval(bundleConfig.setup)
	} catch(error) {}
	
	if($('#homeHero2').length > 0)
		bannerInterval=setInterval("swapBanner()", duration);
		
	if($('#isClub').length > 0) {
		codes = $('#isClub').html().split(',');
		if(minimumordersize > 1) ordersize = minimumordersize;
		else ordersize = 1;
		$('#bundleQtySelector').val(ordersize);
		addBundleRows(ordersize,codes[0],codes[1]); checkUpSell(ordersize,codes[2]);
		customiseEmbroidery();
	}
	
	if($('#deliveryCountry').length > 0) {
		$('#deliveryCountry').bind('change', function() {
		$('#totalCost').fadeOut();
		$('#deliveryCost').fadeOut(function(){ 
				$.getJSON('/ajax/getDelivery.php', { country: $('#deliveryCountry').val() }, function(data) {
					$('#deliveryCost').html(data.delivery);
					$('#totalCost').html(data.total);
					$('#deliveryCost').fadeIn();
					$('#totalCost').fadeIn();
				});
			})
		});
	}
	
	/*if($('#sportselect').length > 0) {
		$('SELECT:not(#sportselect)').uniform();
	}*/

});

function customiseShorts(that) {
	if(that) customiseShorts.value = that.value;
	if(!customiseShorts.value) customiseShorts.value = 'number';
	if(customiseShorts.value == 'number') {
		$('#NumberHdr, td.shirtnumbers').show();
		
	} else {
		$('#NumberHdr, td.shirtnumbers').hide();
	}
}

function bundleSelect(itemType,itemCode,minimumordersize,colournumber,sizes,numbers,embroidery) {
	itemType = itemType.toLowerCase();
	if(typeof(minimumordersize) == 'undefined') {
		minimumordersize = 5;
	}
	if(typeof(colournumber) == 'undefined') colournumber = 1;
	if(typeof(sizes) == 'undefined') {
		sizes = [];
	} 
	if(typeof(numbers) == 'undefined') {
			numbers = [];
	}
	if(typeof(embroidery) == 'undefined') {
		embroidery = [];
	}
	if(bundleConfig !== 'undefined' && bundleConfig.espn == true) {
		$('#rugby_progress').fadeOut(function() {
			$('#rugby_progress').addClass("step2");
			$('#rugby_progress').fadeIn();
		});
	}
	// Hide wrapper
	$("#"+itemType+"Selector").slideUp(function(){
		// Update price
		updatePrice();

		// Set selected object
		var obj 	= eval(itemCode);
		var html 	= "";

		if(typeof(sizes) == 'undefined') {
			sizes = [];
			defaultsize = Math.ceil(obj['sizes'].length/2)-1;
			for(i=1;i<=bundleConfig.addQty;i++) {
				sizes[i] = defaultsize;
			}
		}

		// Build options html
		if(bundleConfig.showBackButtons) {
			html += '<img src="'+bundleConfig.backButtons[itemType]+'" alt="Back to '+itemType+'" onclick="bundleReSelect(\''+itemType+'\');" class="backButton" />';
		}

		html   += '<h3>' + obj.name + '</h3>';
		html   += '<input type="hidden" id="itemID" name="itemID" value="'+itemCode+'" />';
		html   += '<input type="hidden" id="itemType" name="itemType" value="'+itemType+'" />';
		html   += '<input type="hidden" id="colour" name="colour" value="" />';

		html   += '<ul class="bullets">';
		for (var key in obj.bullets) {
			html   += '<li>' + obj.bullets[key] + '</li>';
		}
		html   += '</ul><div class="hrzRecessed"></div>';

		html   += '<h3>Select colour</h3>';

		html   += '<ul class="colourOptions">';
		for (var key in obj.colours) {
			// original
			//html   += '<li onclick="selectColour(\''+obj.type+'\',\''+key+'\',\''+obj.colours[key].thumb+'\',\''+obj.colours[key].large+'\')" id="colour'+key+'"><img src="' + colours[key][1] + '" alt="' + colours[key][0] + '" /></li>';
			// my version
			html   += '<li onclick="selectColour(\''+obj.type+'\',\''+key+'\',\''+obj.colours[key].large+'\',\''+obj.colours[key].thumb+'\',\''+obj.colours[key].description+'\')" id="colour'+key+'"><img src="images/swatches/' + obj.colours[key].swatch + '" alt="' + obj.colours[key].description + '" /></li>';
		}
		html   += '</ul><p id="currentColour">Current selected colour: <em></em></p><div class="hrzRecessed"></div>';

		/********** table with numbers?? *****/
		
		shownumbers = false;
		for(i=0;i<=obj.customisation.length-1;i++)
		{
			if(obj.customisation[i]=="numbers") shownumbers=true;
		}
		
		/************************************/

		
		// Have column for shirt numbers (or shorts numbers)?
		if(bundleConfig.espn == true) {
			var tableHTML = bundleConfig.templates.ESPN.table;
		} else if(shownumbers) {
			var tableHTML = bundleConfig.templates.withShirtNumbers.table;
		} else {
			var tableHTML = bundleConfig.templates.withoutShirtNumbers.table;
		}

		/*if(itemType == 'shorts') { // currently only for shorts, but maybe later for others too?
			//         FIXME: if we do other than shorts, the class / id may need changing
			html += '<div id="customiseShortsWrap">\n';
			html += '    <h3>Customise Shorts</h3>\n';
			html += '    <p class="customiseShorts">Choose either player numbers or your club logo.  Player number for each item can be specified in the next step.</p>\n';
			html += '    <input name="custShorts" id="radioNumbers" onclick="customiseShorts(this)" value="number" checked="checked" type="radio">';
			html +=         '<label for="radioNumbers">Player numbers</label><br>\n';
			html += '    <input name="custShorts" id="radiologo" onclick="customiseShorts(this)" value="logo" type="radio">';
			html +=         '<label for="radiologo">Club logo</label>\n';
			html += '</div>\n';
		}*/
		if(bundleConfig.espn != true) {
			html += customisation(obj.customisation,embroidery,(itemType=='shorts')?true:false);
		}

		if(bundleConfig.chooseQuantity) {
			html   += '<h3><label for="bundleQtySelector">Select Quantity</label></h3>';
			html   += '<select id="bundleQtySelector" name="bundleQtySelector" onchange="addBundleRows($(this).val(),'+itemCode+',\''+itemType+'\'); checkUpSell($(this).val(),\''+obj.sport+'\'); ';
			/*if(itemType == "shorts")
				html += 'customiseShorts();';*/
			html += 'customiseEmbroidery();';
			html += '"><option value="0">Please select...</option>';
			for(i=minimumordersize;i<=bundleConfig.addQty;i++) {
				s = (i == sizes.length) ? ' selected="selected"' : '';
				html   += '<option value="'+i+'"'+s+'>'+i+(i==1 ? ' item':' items')+'</option>';
			}
			/*html   += '</select><div id="tableHolder" style="display:none">'+tableHTML+'</div>';*/
			html   += '</select><span class="buy10ormore">Buy <strong>10 or more</strong> items and save!</span>';
	
		} else {
			if(bundleConfig.espn)
				html   += '<h3><label for="bundleQtySelector">Select Sizes</label></h3>';
			else
				html   += '<h3><label for="bundleQtySelector">Select Numbers / Sizes</label></h3>';
			if(bundleConfig.espn == true) {
				html += '<div id="ESPNlabels"><span class="seniors">Seniors</span><span class="juniors">Juniors</span><span class="minis">Minis <span>(long sleeve design)</span></span></div>'
			}
		}
		if(bundleConfig.espn == true && (!bundleConfig.chooseQuantity || sizes.length > 0)) {
			
			numrows = 18;
			tableHTML1 = tableHTML.replace(/\[ROWS\]/g,getRowsHTML(numrows,itemCode,itemType,sizes,numbers,obj.sport, 'adult'));
			
			html   += '<div id="tableHolder">'+tableHTML1+'</div>';

			
			numrows = 15;
			tableHTML2 = tableHTML.replace(/\[ROWS\]/g,getRowsHTML(numrows,itemCode,itemType,sizes,numbers,obj.sport, 'junior'));
			tableHTML2 = tableHTML2.replace('tooltip(1)', 'tooltip(4)');
			html   += '<div id="tableHolder2">'+tableHTML2+'</div>';

			
			numrows = 12;
			tableHTML3 = tableHTML.replace(/\[ROWS\]/g,getRowsHTML(numrows,itemCode,itemType,sizes,numbers,obj.sport, 'mini'));
			tableHTML3 = tableHTML3.replace('tooltip(1)', 'tooltip(4)');
			html   += '<div id="tableHolder3">'+tableHTML3+'</div>';
			// either we don't get to choose, or we already have done
			$("#saveButtons").show();
			
		} else if(!bundleConfig.chooseQuantity || sizes.length > 0) {
			if(sizes.length > 0) numrows = sizes.length;
			else numrows = bundleConfig.rows;
			tableHTML = tableHTML.replace(/\[ROWS\]/g,getRowsHTML(numrows,itemCode,itemType,sizes,numbers,obj.sport));
			html   += '<div id="tableHolder">'+tableHTML+'</div>';
			// either we don't get to choose, or we already have done
			$("#saveButtons").show();
		}
		else
			html += '<div id="tableHolder" style="display:none">'+tableHTML+'</div>';

		// Show item options layer
		$("#"+itemType+"Options").html(html).slideDown();
		
		if(!bundleConfig.chooseQuantity || sizes.length > 0)
			checkUpSell(sizes.length,obj.sport);
		// tick the correct radio button for shorts (and possibly others in future)
		/*if(!numbers || numbers.length == 0 && itemType=="shorts") {
			customiseShorts({value: 'logo'});
			$('#radiologo').click();
		} else {
			customiseShorts({value: 'number'});
			$('#radioNumbers').click();
		}*/
		//Hide numbers
		customiseEmbroidery();

		// Choose correct colour
		$(".colourOptions li:nth-child("+colournumber+")").click();
	});
}

function itemSelect(itemType,itemCode,minimumordersize,colournumber,sizes,numbers) {
	itemType = itemType.toLowerCase();
	if(typeof(minimumordersize) == 'undefined') {
		minimumordersize = 5;
	}
	if(typeof(colournumber) == 'undefined') colournumber = 1;
	if(typeof(sizes) == 'undefined') {
		sizes = [];
	} 
	if(typeof(numbers) == 'undefined') {
			numbers = [];
	}
	// Hide wrapper

	$("#"+itemType+"Selector").slideUp(function(){
		// Update price
		updatePrice();

		// Set selected object
		var obj 	= eval(itemCode);
		var html 	= "";

		if(typeof(sizes) == 'undefined') {
			sizes = [];
			defaultsize = Math.ceil(obj['sizes'].length/2)-1;
			for(i=1;i<=bundleConfig.addQty;i++) {
				sizes[i] = defaultsize;
			}
		}

		// Build options html
		if(bundleConfig.showBackButtons) {
			html += '<img src="'+bundleConfig.backButtons[itemType]+'" alt="Back to '+itemType+'" onclick="bundleReSelect(\''+itemType+'\');" class="backButton" />';
		}

		html   += '<h3>' + obj.name + '</h3>';
		html   += '<input type="hidden" id="itemID" name="itemID" value="'+itemCode+'" />';
		html   += '<input type="hidden" id="itemType" name="itemType" value="'+itemType+'" />';
		html   += '<input type="hidden" id="colour" name="colour" value="" />';

		html   += '<ul class="bullets">';
		for (var key in obj.bullets) {
			html   += '<li>' + obj.bullets[key] + '</li>';
		}
		html   += '</ul><div class="hrzRecessed"></div>';

		html   += '<h3>Select colour</h3>';

		html   += '<ul class="colourOptions">';
		for (var key in obj.colours) {
			// original
			//html   += '<li onclick="selectColour(\''+obj.type+'\',\''+key+'\',\''+obj.colours[key].thumb+'\',\''+obj.colours[key].large+'\')" id="colour'+key+'"><img src="' + colours[key][1] + '" alt="' + colours[key][0] + '" /></li>';
			// my version
			html   += '<li onclick="selectColour(\''+obj.type+'\',\''+key+'\',\''+obj.colours[key].large+'\',\''+obj.colours[key].thumb+'\',\''+obj.colours[key].description+'\')" id="colour'+key+'"><img src="images/swatches/' + obj.colours[key].swatch + '" alt="' + obj.colours[key].description + '" /></li>';
		}
		html   += '</ul><p id="currentColour">Current selected colour: <em></em></p><div class="hrzRecessed"></div>';

		// Have column for shirt numbers (or shorts numbers)?
		if($('#numbersradio')!=undefined || $('#numberscheckbox')!=undefined) {
			var tableHTML = bundleConfig.templates.withShirtNumbers.table;
		} else {
			var tableHTML = bundleConfig.templates.withoutShirtNumbers.table;
		}

		/*if(itemType == 'shorts') { // currently only for shorts, but maybe later for others too?
			//         FIXME: if we do other than shorts, the class / id may need changing
			html += '<div id="customiseShortsWrap">\n';
			html += '    <h3>Customise Shorts</h3>\n';
			html += '    <p class="customiseShorts">Choose either player numbers or your club logo.  Player number for each item can be specified in the next step.</p>\n';
			html += '    <input name="custShorts" id="radioNumbers" onclick="customiseShorts(this)" value="number" checked="checked" type="radio">';
			html +=         '<label for="radioNumbers">Player numbers</label><br>\n';
			html += '    <input name="custShorts" id="radiologo" onclick="customiseShorts(this)" value="logo" type="radio">';
			html +=         '<label for="radiologo">Club logo</label>\n';
			html += '</div>\n';
		}*/
		
		html += customisation(obj.embroidery,NULL,(itemType=='shorts')?true:false);

		if(bundleConfig.chooseQuantity) {
			html   += '<h3><label for="bundleQtySelector">Select Quantity</label></h3>';
			html   += '<select id="bundleQtySelector" name="bundleQtySelector" onchange="addBundleRows($(this).val(),'+itemCode+',\''+itemType+'\'); customiseShorts(); checkUpSell($(this).val(),\''+obj.sport+'\');"><option value="0">Please select...</option>';
			for(i=minimumordersize;i<=bundleConfig.addQty;i++) {
				s = (i == sizes.length) ? ' selected="selected"' : '';
				html   += '<option value="'+i+'"'+s+'>'+i+(i==1 ? ' item':' items')+'</option>';
			}
			html   += '</select><span class="buy10ormore">Buy <strong>10 or more</strong> items and save!</span><div id="tableHolder" style="display:none">'+tableHTML+'</div>';
		} else {
			html   += '<h3><label for="bundleQtySelector">Select Numbers / Sizes</label></h3>';
		}
		if(!bundleConfig.chooseQuantity || sizes.length > 0) {
			if(sizes.length > 0) numrows = sizes.length;
			else numrows = bundleConfig.rows;
			tableHTML = tableHTML.replace(/\[ROWS\]/g,getRowsHTML(numrows,itemCode,itemType,sizes,number));
			html   += '<div id="tableHolder">'+tableHTML+'</div>';
			// either we don't get to choose, or we already have done
			$("#saveButtons").show();
		}

		// Show item options layer
		$("#"+itemType+"Options").html(html).slideDown();

		// tick the correct radio button for shorts (and possibly others in future)
		if(itemType != 'shirt' && (!numbers || numbers.length == 0)) {
			customiseShorts({value: 'logo'});
			$('#radiologo').click();
		} else {
			customiseShorts({value: 'number'});
			$('#radioNumbers').click();
		}

		// Choose correct colour
		$(".colourOptions li:nth-child("+colournumber+")").click();
	});
}

/* Return panels to original state */
function bundleReSelect(itemType) {
	if(bundleConfig.espn == true) {
		$('#rugby_progress').fadeOut(function() {
			$('#rugby_progress').removeClass("step2");
			$('#rugby_progress').fadeIn();
		});
	}
	$("#"+itemType+"Options").slideUp(function(){
		$("#saveButtons").hide();
		// Reinstate initial panel
		$("#"+itemType+"Selector").slideDown();
		// Return the image to the generic one with dotted outline
		imageCrossFade($("#"+itemType+"Nav img"),$("#"+itemType+"Nav img").attr('defaultSrc'));
		// Remove any click events and the magnifier icon
		$("#"+itemType+"Nav img").siblings().remove();
		$("#"+itemType+"Nav img").closest('a').removeClass('magnify').unbind('click');
		// Update price
		updatePrice();
	});
}

/* Choose an item colour (when circle icons are clicked) */
function selectColour(itemType,colourID,thumbSrc,largeSrc,description) {
	$("#colour").val(colourID);
	$(".colourOptions b").remove();
	$("#colour"+colourID).prepend("<b></b>");
	$("#currentColour em").text(description)
	imageCrossFade($("#"+itemType+"Nav img"),thumbSrc);
	$("#"+itemType+"Nav img").siblings().remove()
	$("#"+itemType+"Nav img").after('<span class="magnify"></span>');
	$("#"+itemType+"Nav img").closest('a').attr('href',largeSrc);
	$("#"+itemType+"Nav img").closest('a').addClass('magnify').unbind('click').lightBox();
	
	// Update price
	updatePrice();
}

function magnify(imageSrc) {
	alert(imageSrc)
}

/* Build HTML for item rows */
function getRowsHTML(numberOfRows,itemCode,itemType,sizes,numbers,sport, prefix) {
	var productObject	= eval(itemCode);
	var defaultSize		= Math.ceil(productObject['sizes'].length/2)-1;
	var rowsHTML 		= "";
	if(bundleConfig.espn == undefined) bundleConfig.espn = false;
	if(prefix == undefined) prefix = '';
	for(i=1;i<=parseInt(numberOfRows);i++) {
		var alt = i % 2 ==0 ? '<tr class="alt">' : '<tr>'; // calculate striping
		var sizingOptions = "";
		if(bundleConfig.espn == true) {
			switch(prefix) {
				case 'adult':
					productObject.sizes = ['Small', 'Medium', 'Large', 'Extra Large', 'Extra Extra Large', 'Extra Extra Extra Large'];
					break;
				case 'junior':
				case 'mini':
					productObject.sizes = ['Small', 'Medium', 'Large', 'Extra Large'];
					break;
			}
		}
		for(var key in productObject.sizes) {
			// if we selected this size                 or we didn't select any, but this is the default
			weselectedthissize = (sizes && productObject.sizes[key] == sizes[i-1]); // numbers and sizes arrays end up zero-based
			wedidntselectany = (!sizes || sizes.length < i);
			thisisthedefault = (defaultSize==key);
			if(weselectedthissize || (wedidntselectany && thisisthedefault)) s = ' selected="selected"';
			else s = '';
			if(bundleConfig.espn == true)
				sizingOptions += '<option value="'+ ucfirst(prefix) + ' ' + productObject.sizes[key]+'"'+s+'>'+productObject.sizes[key]+'</option>';
			else
				sizingOptions += '<option value="'+productObject.sizes[key]+'"'+s+'>'+productObject.sizes[key]+'</option>';
		}
		if(bundleConfig.espn == true) {
			var row = bundleConfig.templates.ESPN.itemRow;
		} else if(($('#numbersradio')!=undefined || $('#numberscheckbox')!=undefined) && bundleConfig.espn != true) {
			var row = bundleConfig.templates.withShirtNumbers.itemRow;
		} else {
			var row = bundleConfig.templates.withoutShirtNumbers.itemRow;
		}
		// FIXME: re-condense this somewhat over-explicit code once I've convinced myself it works as intended
		if(numbers) {
			if(numbers.length >= i) {
				shirtnumber = numbers[i-1]; // numbers and sizes arrays end up zero-based-
			} else {
				shirtnumber = i;
			}
		} else {
			shirtnumber = i;
		}
		
		if(sport=='football') {
			shirtnumber++;
			if(parseInt(numberOfRows)==1) shirtnumber=1;
		}
		label = '';
				row = row.replace(/\[LABEL\]/g,label);	// add sizing options into placholder
		row = row.replace(/\[ITEM\]/g,i);			// replace itemnumber placeholders
		if(bundleConfig.espn == true) row = row.replace(/\[PREFIX\]/g,prefix);
		row = row.replace(/\[SHIRTNO\]/g,shirtnumber);		// replace shirt number
		row = row.replace(/\[SIZEOPTIONS\]/g,sizingOptions);	// add sizing options into placholder
		row = row.replace(/<tr>/g,alt);				// stripe rows
		rowsHTML += row;
	}
	return rowsHTML;
}

function ucfirst (str) {
    // Makes a string's first character uppercase  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/ucfirst    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: ucfirst('kevin van zonneveld');
    // *     returns 1: 'Kevin van zonneveld'    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

/* Add HTML for rows into table */
function addBundleRows(numberOfRows,itemCode,itemType) {
	var rowsHTML = getRowsHTML(numberOfRows,itemCode,itemType);
	$("#tableHolder table tbody").html(rowsHTML);
	$("#tableHolder").fadeIn();
	$("#saveButtons").fadeIn();
	// Update price
	updatePrice();
}

/* AJAX data from page to backend for price calculations */
function updatePrice() {
	var formdata = $("#bundleform").serialize();
	$.ajax({
		type: "POST",
		url: "ajax/getPrice.php",
		data: formdata,
		success: function(msg){
			$(".bundlePrice").html(msg);
		}
	});
}


function switchHero(int){

	if(int==2){
		document.getElementById('homeHero').style.display="block";
		document.getElementById('homeHero2').style.display="none";	
		document.getElementById('homeHero3').style.display="none";	
	}

	if(int==0){
		document.getElementById('homeHero').style.display="none";
		document.getElementById('homeHero2').style.display="block";	
		document.getElementById('homeHero3').style.display="none";	
	}
	if(int==1){
		document.getElementById('homeHero2').style.display="none";
		document.getElementById('homeHero').style.display="none";
		document.getElementById('homeHero3').style.display="block";	
	}
clearInterval(bannerInterval);
duration=10000;
bannerInterval=setInterval( "swapBanner()", duration);
}


  var bannerInt=0;
 var bannerInterval=0;
  var duration=10000;
  
 function swapBanner(){
 if(!document.getElementById('homeHero')){
 	clearInterval(bannerInterval);
 	return;
 	}
 if(duration==10000){
 	duration=3000;
 	bannerInterval=setInterval( "swapBanner()", duration);
 }
	 if(bannerInt==3){
		document.getElementById('homeHero').style.display="none";
		document.getElementById('homeHero2').style.display="none";
		document.getElementById('homeHero3').style.display="block";
		bannerInt=0;
		return;
	 }
	 if(bannerInt==0){
		document.getElementById('homeHero').style.display="block";
		document.getElementById('homeHero2').style.display="none";
		document.getElementById('homeHero3').style.display="none";
		bannerInt=1;
		return;
	 }	 
	 
	 if(bannerInt==1){
		document.getElementById('homeHero3').style.display="none";
		document.getElementById('homeHero2').style.display="block";
		document.getElementById('homeHero').style.display="none";
		bannerInt=3;
	 } 
}	


// Replace and image src with a new image src
function imageCrossFade(img,newSrc) {
	
	if(newSrc!=undefined){
		img.fadeOut(200,function() {
			if(img.attr("defaultSrc")==undefined) {
				img.attr("defaultSrc",img.attr('src'));
			}
			newImage = new Image();
			newImage.onload = function() {
				img.attr("src",newSrc).fadeIn(200);
			}
			newImage.src = newSrc;
		});
	}
}

function checkUpSell(numberOfRows,sport) {
	if(sport=="football") {
		if(numberOfRows>=7)
			$(".buy10ormore").fadeOut();
		else
			$(".buy10ormore").fadeIn();
	}
	else {
		
		if(numberOfRows<10)
			text = "Buy <strong>10 or more</strong> items and save!";
		/*else if(numberOfRows>=10&&numberOfRows<18)
			text = "Buy <strong>18 or more</strong> items and save!";
		else if(numberOfRows>=18&&numberOfRows<20)
			text = "Buy <strong>20 or more</strong> items and save!";*/
		else
			text = "";
		if($(".buy10ormore").html()!=text) change=true;
		else change=false;
		if(change) {
			if(text)
			{
				$(".buy10ormore").fadeOut('normal',function() {
					$(".buy10ormore").html(text);
					$(".buy10ormore").fadeIn();
				});
			}
			else $(".buy10ormore").fadeOut();
		}
	}
}
function showEmbroidery(show)
{
	if(show) $('#embroideryOptions').slideDown();
	else $('#embroideryOptions').slideUp();
}
function customiseEmbroidery(customisation)
{
	if(($('#availableOptions').attr('value')=='Numbers'&&$('#availableOptions').attr('checked'))||($('#availableOptions').attr('checked')&&($('#numbersradio').attr('checked')||$('#numberscheckbox').attr('checked')))) customisation = 'numbers';
	if(customisation == 'numbers') {
		$('#NumberHdr, td.shirtnumbers').show();
		
	} else {
		$('#NumberHdr, td.shirtnumbers').hide();
	}
	updatePrice();
}
function customisation(customisation,selected,defaultNoEmbroidery)
{
	/*customisation = Array('sponsor','oneonly');*//*TESTING*/
	sponsor=numbers=logo=oneonly=false;
	for(i=0;i<=customisation.length-1;i++)
	{
		if(customisation[i]=="sponsor") sponsor=true;
		if(customisation[i]=="numbers") numbers=true;
		if(customisation[i]=="logo") logo=true;
		if(customisation[i]=="oneonly") {
			customisation.splice(i,1);
			oneonly=true;
		}
	}
	count = customisation.length;
	ret = "<div id=\"customiseShortsWrap\">";
	ret += "<h3>Customise Your Order</h3>";
	if(!sponsor&&!logo&&!numbers) {
		return "";
		//ret += "<p class=\"customiseShorts\">Sorry, no customisation is available on this product</p>";
	}
	if(oneonly) {
		input = "radio";
		radio = true;
	}
	else {
		input = "checkbox";
		radio=false;
	}
	selectedsponsor=selectedlogo=selectednumbers=false;
	if(selected[0]==""||typeof(selected[0])=="undefined") none=true;
	else none=false;
	for(i=0;i<=selected.length-1;i++) {
		eval("selected" + selected[i] + "=true");
	}
	if(count==1) {
		if(sponsor) text = "Sponsor";
		if(logo) text = "Logo";
		if(numbers) text = "Numbers";
		ret +="<input type=\"radio\" name=\"availableOptions\" id=\"availableOptions\" onclick=\"customiseEmbroidery();\" value=\""+text+"\" ";
		if(!defaultNoEmbroidery)
			ret += "checked=\"checked\"";
		ret +="/><label for=\"availableOptions\">"+text+"</label>";
		ret +="<input type=\"radio\" name=\"availableOptions\" id=\"noEmbroidery\" onclick=\"customiseEmbroidery();\" value=\"hide\" ";
		if(defaultNoEmbroidery)
			ret += "checked=\"checked\"";
		ret +="/><label for=\"noEmbroidery\">No embroidery</label><br />";
	}
	else {
		if(sponsor||logo||numbers) {
			ret +="<input type=\"radio\" name=\"availableOptions\" id=\"availableOptions\" onclick=\"showEmbroidery(true); customiseEmbroidery();\" value=\"show\" ";
			if(!defaultNoEmbroidery)
				ret += "checked=\"checked\"";
			ret +="/><label for=\"availableOptions\">Embroidery required</label>";
			ret +="<input type=\"radio\" name=\"availableOptions\" id=\"noEmbroidery\" onclick=\"showEmbroidery(false); customiseEmbroidery();\" value=\"hide\"";
			if(defaultNoEmbroidery)
				ret += "checked=\"checked\"";
			ret +="/><label for=\"noEmbroidery\">No embroidery</label><br />";
		}
		ret += "<div id=\"embroideryOptions\" ";
		if(defaultNoEmbroidery)
			ret += "style=\"display: none;\"";
		ret += ">";
		if(sponsor) {
			ret +="<input type=\""+input+"\" name=\"";
			if(radio) ret += "embroidery";
			else ret += "sponsor";
			ret += "\" id=\"sponsor"+input+"\" onclick=\"customiseEmbroidery();\" value=\"sponsor\" ";
			if(none||selectedsponsor)
				ret += "checked=\"checked\"";
			ret +="/><label for=\"sponsor"+input+"\">Sponsor</label><br />";
		}
		if(logo) {
			ret +="<input type=\""+input+"\" name=\"";
			if(radio) ret += "embroidery";
			else ret += "logo";
			ret +="\" id=\"logo"+input+"\" onclick=\"customiseEmbroidery();\" value=\"logo\" ";
			if((none&&input=="checkbox")||selectedlogo)
				ret += "checked=\"checked\"";
			ret +="/><label for=\"logo"+input+"\">Logo</label><br />";
		}
		if(numbers) {
			ret +="<input type=\""+input+"\" name=\"";
			if(radio) ret += "embroidery";
			else ret += "numbers";
			ret +="\" id=\"numbers"+input+"\" onclick=\"customiseEmbroidery();\" value=\"numbers\" ";
			if((none&&input=="checkbox")||selectednumbers)
				ret += "checked=\"checked\"";
			ret +="/><label for=\"numbers"+input+"\">Numbers</label><br />";
		}
		ret += "</div>";
	}
	ret += "</div>";
	ret += "<div class=\"hrzRecessed\"></div>";
	
	return ret;
}
function buyBundle(ext) {
	var error = false;
	var text = "";
	$('.sizeSelect' + ext + ' SELECT').each(function() {
		value = $(this).val();
		if(value != "") {
			text += $(this).attr('name') + ': ' + value + ', ';
		} else {
			error = true;
		}
	});
	if(error) {
		alert("Please select all sizes");
	} else {
		text = text.substring(0, text.length-2);
		size1 = eval('document.prodBundleFrm' + ext + '.size1');
		size1.value = text;
		
		eval('document.prodBundleFrm' + ext + '.submit()');
	}
}
