var cdnBase = "http://www.greenrewards.co.uk";
var searchtype = "shop"; // default to shop search as in the template
var searchtimer;
var currentCurrency = 'pounds';
var mouseinsearcharea = false;
var hidesearchtimer;
var basketvisible = false;
var menu_filter = '';
var menu_fadeout = false;
var hideTime = 0;

var currentBanner = 0;
var lastBanner = 7;
var bannerTimeout = 0;
var bannerDelay = 4000;
var longBannerDelay = 5000;
var createScrollBar;

function logout() {
	document.getElementById('logoutForm').submit();
}

function inputBoxFocus( input, defaultText, passwordField ) {
	if( typeof passwordField != 'undefined' ) {
		document.getElementById( passwordField ).style.display = '';
		document.getElementById( passwordField+'_text' ).style.display = 'none';
		document.getElementById( passwordField ).focus();
	} else {
		if( input.value == defaultText ) {
			input.value = '';
		}
	}
}
function inputBoxBlur( input, defaultText, passwordField ) {
	if( input.value == '' ) {
		if( typeof passwordField != 'undefined' ) {
			document.getElementById( passwordField ).style.display = 'none';
			document.getElementById( passwordField+'_text' ).style.display = '';
		} else {
			input.value = defaultText;
		}
	}
}
function changeCurrency( currency )
{
	$('#currency_' + currency).check(true);
	$('.price_' + currentCurrency ).hide();
	currentCurrency = currency;
	setCookie( 'currencyViewing', currency );
	$('.price_' + currentCurrency ).show();
}
/* cookie accessor methods */
function getCurrentCurrency()
{
	// for now, only return pounds (KH, 11/03/10)
	return 'pounds';
	
	var curr = getCookie( 'currencyViewing' );
	if ( !curr ) {
		setCookie( 'currencyViewing', 'pounds' );
		return 'pounds'; // show pounds by default
	} else {
		return curr;
	}
}
function checkCurrencyCookie()
{
	var cookieVal = getCurrentCurrency();
	// if val is true or not previously been set...
	if ( cookieVal != 'false' || cookieVal == 'true' || typeof cookieVal == 'undefined' ) {
		$('#currency_' + cookieVal ).attr( 'checked', true );
		changeCurrency( cookieVal );
	}
}

function setCookie( name, value )
{
	document.cookie = name + '=' + value + ';path=/;';
}

function getCookie( name )
{
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) {
		return null;
	}
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) {
		end = document.cookie.length;
	}
	return unescape( document.cookie.substring( len, end ) );
}
function loadShop( pagename ) {
	pagename = pagename.replace(/ /g,'+');
	document.location = '/products/'+pagename;
}
function mouseOverNavItem( navId ) {
	document.getElementById('navLink_' + navId).className = 'menuitemon';
}
function mouseOutNavItem( navId ) {
	document.getElementById('navLink_' + navId).className = 'menuitem';
}
function showBasket() {
	if(!basketvisible)
	{
		if($.browser.msie)
		{$("#basketdrop").show();}
		else
		{$("#basketdrop").fadeIn('slow');}
		basketvisible = true;
	}
}
function hideBasket()
{
	if(basketvisible)
	{
		if($.browser.msie)
		{$("#basketdrop").hide();}
		else
		{$("#basketdrop").animate({'height':'306'},500).fadeOut('slow');}
		basketvisible = false;
	}
}
function showSearch()
{
	hideBasket();
	// must be in the search area....
	mouseinsearcharea = true;
	if($.browser.msie)
	{$("#searchdrop").show();}
	else
	{$("#searchdrop").fadeIn('slow');}
}
function hideSearch()
{
	if( !mouseinsearcharea ) {
		if($.browser.msie)
		{$("#searchdrop").hide();}
		else
		{$("#searchdrop").fadeOut('slow');}
	}
}
function submitSearch() {
	var searchTerm = $('#searchbox').val();
	// check we have a legitimate search
	if( searchTerm != '' && searchTerm != 'Search here...' ) {
		document.location = '/products/%20search::' + searchTerm;
	} else {
		alert( "Please enter a search term" );
	}
	return false;
}
function triggerSearch()
{
	// cancel the last search
	clearTimeout( searchtimer );
	// instead do one in 1/2 a second
	searchtimer = setTimeout( "doSearch();", 500 );
}
function triggerHideSearch()
{
	mouseinsearcharea = false;
	hidesearchtimer = setTimeout( "hideSearch();", 5000 );
}
function cancelHideSearch()
{
	mouseinsearcharea = true;
	clearTimeout( hidesearchtimer );
}
function doSearch()
{
	var limit = 5;
	if( searchtype == 'shop' ) {
		// get 10 product results
		limit = 10;
	}
	var searchText = $('#searchbox').val();
	// ensure we have at least 3 characters
	if( searchText != 'Search here...' && searchText.length > 2 ) {
		// send the query
		var sUrl = "/xmlservice.php?service=quickSearch&query=" + searchText + "&limit=" + limit;
		$.ajax({
			type: "GET",
			url: sUrl,
			success: function( result ){
				// got results, set the ul list to empty
				$('#searchproductresults').html('');
				if( result.ResultSet.Result ) {
					var recordCount = 0;
					for( var product in result.ResultSet.Result ) {
						recordCount++;
					}
					var html = '<div class="searchresultsheader">';
					// set up the sub header
					if( recordCount == 0 ) {
						html += 'No products found';
					} else if( recordCount == 1 ) {
						html += 'Top product :';
					} else {
						html += 'Top ' + recordCount + ' products :';
					}
					html += '</strong></div>';
					// now insert the data
					if( recordCount > 0 ) {
						html += '<ul>';
						for( var product in result.ResultSet.Result ) {
							html += '<li><a href="' + result.ResultSet.Result[product]['path'] + '">' + result.ResultSet.Result[product]['display'] + '</a></li>';
						}
						html += '</ul>';
					}
					$('#searchproductresults').append( html );
					$('#searchproductresults').show();
					$('#searchmid').show();
					$('#searchrpt').show();
				}
			},
			error : function( result ){
			},
			dataType: "json"
		});
		
		if( searchtype == 'all' ) {
			// also get some content results
			var cUrl = "/search?cmsContentSearch[text]=" + searchText;
			$.ajax({
				type: "GET",
				url: cUrl,
				success: function( result ){
					$('#searchsiteresults').html('');
					$('#searchsiteresults').append( result );
					$('#searchsiteresults').show();
					$('#searchmid').show();
					$('#searchrpt').show();
				},
				error : function( result ){
				},
				dataType: "html"
			});
		} else {
			// no site search, set the div to mt
			$('#searchsiteresults').html('');
		}
	}
}
function handleBasketSliderChange(e, ui)
{
  var maxScroll = $("#basketscroll").attr("scrollHeight") -
                  $("#basketscroll").height();
  $("#basketscroll").animate({scrollTop: (100-ui.value) * (maxScroll / 100) }, 1000);
}
function handleBasketSliderSlide(e, ui)
{
  var maxScroll = $("#basketscroll").attr("scrollHeight") -
                  $("#basketscroll").height();
  $("#basketscroll").attr({scrollTop: (100-ui.value) * (maxScroll / 100) });
}
function createFlipper()
{
	var points = $("#points").val();
	if(!points){points = 0;}
	points = "" + points;
	while(points.length < 6) {
		points = "0" + points;
	}
	
	var pointsplit = points.split("");
	
	$(".flipperbox").each( function() {
		if ( $(this).is('.flipperboxsmall') ) {
			var width = 20;
		} else {
			var width = 30;
		}
		for(var i=0, len=points.length; i<len; ++i) {
			$("<div class=\"flipperdigit\" style=\"background-position: -"+(pointsplit[i]*width)+"px top;\"></div>").appendTo($(this));
		}
	} );
}
function loadOverlay(product,product_id)
{
	$(product).attr('src',cdnBase+'/custom/images/viewproduct.png');
	var thispos = $(product).parent().parent().position();
	var screenpos = $(product).offset().top - $(window).scrollTop();
	var halfline = $(window).height() / 2;
	
	if (screenpos < halfline) {
		$("#prodroll").css("top",$(product).offset().top-1);
	} else {
		$("#prodroll").css("top",$(product).offset().top-261);
	}
	
	if (thispos.left < 340) {
		$("#prodroll").css("left",$(product).offset().left+130);
	} else {
		$("#prodroll").css("left",$(product).offset().left-314);
	}
	
	namestring    = '#name'    + product_id;
	descstring    = '#desc'    + product_id;
	imagestring   = '#image'   + product_id;
	ratingstring  = '#rating'  + product_id;
	ratingsstring = '#ratings' + product_id;
	
	if($(ratingstring).val() == ''){$(ratingstring).val('0');}
	if($(ratingsstring).val() == ''){$(ratingsstring).val('0');}
	
	$(".prodRollName").text($(namestring).val());
	$(".prodRollDesc").html($(descstring).val());
	$(".prodRollImageInner").attr('src',cdnBase+'/custom/images/1x1t.gif');
	if ($(imagestring).val() != '') {
		$(".prodRollImageInner").attr('src',$(imagestring).val());
	} else {
		$(".prodRollImageInner").attr('src',cdnBase+'/custom/images/noimage_280.jpg');
	}
	if($(ratingsstring).val() == '0') {
		$(".prodRollRating").hide();
	}
	else {
		$(".prodRollStars").css('width',$(ratingstring).val()*18);
		$(".prodRollRatingInner").text('Based on '+$(ratingsstring).val()+' ratings');
		$(".prodRollRating").show();
	}
	$("#prodroll").show();
}
function openAccordion(element) {
	//toggle arrows
	currentlyopen = $(".ui-icon-triangle-1-s");
	currentlyopen.removeClass("ui-icon-triangle-1-s");
	currentlyopen.addClass("ui-icon-triangle-1-e");
	$(element).children().removeClass("ui-icon-triangle-1-e");
	$(element).children().addClass("ui-icon-triangle-1-s");
	//switch accordions
	$(".ui-accordion-content-active").removeClass("ui-accordion-content-active");
	$(element).parent().next().addClass("ui-accordion-content-active");
}
//Document ready stuff
$(document).ready(function(){
	$(".productoverlay").mouseout(function(){
		var filename = 'prodoverlay';
		if ( $(".productoverlay").is('.productoverlaywhite') ) {
			filename = 'prodoverlaywhite'
		}
		$(this).attr('src',cdnBase+'/custom/images/' + filename + '.png');
		$("#prodroll").hide();
	});
	$('#search_all,#search_all_label').click(function(){
		searchtype = 'all';
		doSearch();
	})
	$('#search_shop,#search_shop_label').click(function(){
		searchtype = 'shop';
		doSearch();
	})
	$('#currency_pounds').click(function(){
		changeCurrency( 'pounds' );
	})
	$('#currency_euros').click(function(){
		changeCurrency( 'euros' );
	})
	$('#currency_dollars').click(function(){
		changeCurrency( 'dollars' );
	})
	$("#searchdrop").mouseleave(
		function() {
			triggerHideSearch();
		}
	);
	$("#searchdrop").mouseenter(
		function() {
			cancelHideSearch();
		}
	);
	$(document).click( function() {
		hideSearch();
	} );
	// initialise the points total at the top of the page
	createFlipper(30);
	// convert checkboxes to fancy styled ones
	$('.cssCheckbox').checkBox();
	$('.cssCheckboxMandatory').checkBox();
	
	// initialise the registration panel
	$('.registerLink').click(function(){
		showRegisterPanel();
	});
	$('#referfriendimg' ).click(function(){
		showRecommend();
	});
	// ensure the users preferred currency is displayed
	checkCurrencyCookie();
	// add the fancy tool tips for all .infoIcon class elements
	var config = {
		show: 'mouseover',
		hide: 'mouseout',
		position: {
			corner: 'topLeft',
			adjust : {
				x: 12,
				y: 12,
				screen: true
			}
		},
		hide: { fixed: true },
		style: {
			width: 200,
			padding: 10,
			background: '#9cbc2b',
			color: '#fff',
			textAlign: 'left',
			border: {
				width: 3,
				radius: 5,
				color: '#668f15'
			}
		 }
	};
	$( '.infoIcon' ).qtip( config );
	
	var mouseWheel = (function(){ var
		doc       	= 	document,
		types     	= 	['DOMMouseScroll', 'mousewheel'],
		fixedEvent 	= 	function(e){
							e.wheel = e.wheelDelta ? e.wheelDelta/120 : -e.detail/3;
							e.wheelDir = e.wheel > 0 ? 'up' : 'down';
							!e.preventDefault && (e.preventDefault = function(){ e.returnValue = false; });
							!e.target && (e.target = e.srcElement);
							return e;
						};
		return {
			on:	function(el, fn, preventDefault){
					if(typeof preventDefault !== 'boolean'){ preventDefault = true; }
					var fixedFn = function(e){
							e = fixedEvent(e || window.event);
							preventDefault && e.preventDefault();
							fn.call(el, e);
						},
						wheelHash = el.wheelHash;
						
					if(!wheelHash){
						wheelHash = {};
						wheelHash[fn] = fixedFn;
						el.wheelHash = wheelHash;
					}else{
						if(wheelHash[fn]){
							return;						
						}
						wheelHash[fn] = fixedFn;
					}
					
					if(doc.addEventListener){
						var i = types.length;
						while( i-- ){
						  el.addEventListener(types[i], fixedFn, false);
						}					
					}else{
						el.attachEvent('onmousewheel', fixedFn);
					}
				},
			un: function(el, fn){
					if(!el.wheelHash) return;
					var wheelHash = el.wheelHash;
					if(doc.removeEventListener){
						var i = types.length;
						while( i-- ){
							el.removeEventListener(types[i], wheelHash[fn], false);
						}					
					}else{
						el.detachEvent('onmousewheel', wheelHash[fn]);
					}
					delete wheelHash[fn];
				}
		};
	})();
	
	createScrollBar = function(options){
        var bar      = options.bar,
            barHeight = bar.height(),
            viewport = options.viewport,
            viewportHeight = viewport.height(),            
            content  = options.content,
            contentHeight = content.outerHeight(),
            contentMinTop,
            handler,
            handlerHeight,
            ratio,
            draging = false,
            mousedownY,
            mousemoveY,
            handlerTop,
            handlerNewTop,
            handlerMinTop = 2,
            handlerMaxTop;
            
        if(bar && contentHeight > viewportHeight && viewportHeight !== 0){
            ratio = viewportHeight/contentHeight;
            handlerHeight = parseInt((barHeight -handlerMinTop*2)*ratio);
            handlerMaxTop = barHeight -handlerMinTop - handlerHeight;
            contentMinTop = parseInt(handlerMaxTop*contentHeight/viewportHeight)*(-1);
            
            handler = $('<div class="offersBoxItemScrollHandle"></div>').css({
                top:handlerMinTop + 'px',
                height:handlerHeight + 'px'
            }).appendTo(bar).mousedown(function(e){
                draging = true;
                mousedownY = e.pageY;
                handlerTop = handler.position().top;
                $(document).mousemove(function(e2){
                    if (draging === false) {
                        return;
                    }
                    mousemoveY = e2.pageY;
                    handlerNewTop = handlerTop + (mousemoveY - mousedownY);
                    
                    if(handlerNewTop >= handlerMaxTop){handlerNewTop = handlerMaxTop;}
                    
                    if(handlerNewTop <= handlerMinTop){handlerNewTop = handlerMinTop;}
                    handler.css({
                        top: handlerNewTop +'px'
                    });
                    
                    content.css({
                        top: parseInt(handlerNewTop/ratio)*(-1) +'px'
                    });
                    
                    return false;
                }).mouseup(function(){
                    if (draging === false) {
                        return;
                    }
                    $(document).unbind('mousemove');
                    draging = false;
                    return false;
                });
            }).mouseup(function(){
                if (draging === false) {
                    return;
                }
                $(document).unbind('mousemove');
                draging = false;
                return false;
            });
            

                function mouseWheelPane(e){
                    
                    if (e.preventDefault) {
                        e.preventDefault();
                    } else {
                        e.returnValue = false;
                    }
                    var _top;
                    if(e.wheelDir === 'up'){
                        _top = content.position().top + 30;
                        _top = _top > 0 ? 0 : _top;
                        content.css({
                            top: _top + 'px'
                        });
                    }else{
                        _top = content.position().top - 30;
                        _top = _top < contentMinTop ? contentMinTop : _top;
                        content.css({
                            top: _top + 'px'
                        });
                    }
                    
                    _top = parseInt(content.position().top*ratio)*(-1);
                    _top = _top > handlerMaxTop ? handlerMaxTop : _top;
                    _top = _top < handlerMinTop ? handlerMinTop : _top;
                    handler.css({
                        top: _top +'px'
                    });
                }

                mouseWheel.on(viewport[0], mouseWheelPane);

        }
        
        return {
            refresh:function(){
                if(handler){
                    handler.remove();
                    mouseWheel.un(viewport[0], mouseWheelPane);
                    content.removeAttr('style');
                }
                return createScrollBar(options);
            }
        };
    }
});

function showRecommend() {
	if( userAuthenticated ) {
		$('#emailAFriendSitePanel').dialog({
			title:		'Recommend a Friend',
			modal:		true,
			resizable:	false,
			width:		510,
			height:		396,
			draggable:	true
		});
		$('#emailAFriendSitePanel').dialog('open');
	} else {
		showLoginPanel( 'Recommend a Friend', 'Complete the recommend form below and tell a friend about us.  If they buy something, you get 500 Free Green Points for spreading the word!', 'To earn your 500 Free Green Points, you need to be logged in...' );
	}
}

function showRegisterPanel() {
	$('#registerPanel').dialog({
		title:		'Registration Form',
		modal:		true,
		resizable:	false,
		width:		510,
		height:		760,
		draggable:	true
	});
	// move the captcha image to this popup
	$('#registerCaptchaContainer').append( $('#captchaContainer') );
	$('#registerPanel').dialog('open');
}

function showRegisterThanks() {
	$('#registerThanksPopup').dialog({
		title:		'Registration Successful',
		modal:		true,
		resizable:	false,
		width:		440,
		height:		242,
		draggable:	true
	});
	$('#registerThanksPopup').dialog('open');
}

function hideRegisterThanks() {
	$('#registerThanksPopup').dialog('close');
}

function showLoginWelcome() {
	$('#loginWelcomePopup').dialog({
		title:		'Welcome back Member!',
		modal:		true,
		resizable:	false,
		width:		510,
		height:		396,
		draggable:	true
	});
	$('#loginWelcomePopup').dialog('open');
}

function hideLoginWelcome() {
	$('#loginWelcomePopup').dialog('close');
}

function validateEmailAFriendSite() {
	
	var validator = new validateForm();
	if ( $('#cmsReferAFriend_users_1_name').val() == "- Your Friend's Name" ) {
		validator.addCustomError( "Your Friend's Name" );
	} else {
		validator.checkText( 'cmsReferAFriend_users_1_name', "Your Friend's Name" );
	}
	
	if ( $('#cmsReferAFriend_users_1_email_address').val() == "- Friend's Email Address" ) {
		validator.addCustomError( "Friend's Email Address" );
	} else {
		validator.checkText( 'cmsReferAFriend_users_1_email_address', "Friend's Email Address" );
	}
	
	validator.checkChecked( 'emailAFriendSite_terms', 'Agree to our terms and conditions' );
	
	if( validator.numberOfErrors() > 0 ) {
		validator.displayErrors();
		return false;
	}
	
	// if a message hasn't been typed remove the default text
	if ( $('#cmsReferAFriend_message').val() == '- Type message here...' ) {
		$('#cmsReferAFriend_message').val( '' );
	}
	
	$.post( '/redirect.php?uri=refer_friend', $('#emailAFriendSite').serialize(),
		function( data ){
			alert( "Recommend a friend successfully sent" );
			$('#emailAFriendSitePanel').dialog('close');
		}
		, 'html' 
	);
	
	return false;
	
}

function hideLoginPanel() {
	$('#loginPanel').dialog('close');
}

function showLoginPanel( title, intro, oops, slimdown ) {
	$('#loginPanel').dialog({
			title:		( typeof title == 'undefined' ) ? 'Log In' : title,
			modal:		true,
			resizable:	false,
			width:		510,
			height:		224,
			draggable:	true
	});
	if ( typeof intro == 'undefined' ) {
		var intro = '';
	}
	if ( typeof oops == 'undefined' ) {
		var oops = 'You must be logged in to use this feature!';
	}
	if( oops == '' ) {
		$('#loginPanelOopsOops').hide();
	} else {
		$('#loginPanelOopsOops').show();
	}
	if ( typeof slimdown != 'undefined' ) {
		$('#loginFormForgotten').hide();
		$('#loginFormRegisterArea').hide();
	} else {
		$('#loginFormForgotten').show();
		$('#loginFormRegisterArea').show();
	}
	
	$('#loginPanelIntro').html( intro );
	$('#loginPanelOopsMessage').html( oops );
	$('#loginPanel').dialog('open');
}

function showBanner(bannerid)
{
	if(bannerid == 1)
	{
		$("#pointsban2").animate({left: "700px"},1000);
		$("#pointsban3").animate({left: "790px"},1000);
		$("#pointsban4").animate({left: "880px"},1000);
	}
	if(bannerid == 2)
	{
		$("#pointsban2").animate({left: "96px"},1000);
		$("#pointsban3").animate({left: "790px"},1000);
		$("#pointsban4").animate({left: "880px"},1000);
	}
	if(bannerid == 3)
	{
		$("#pointsban2").animate({left: "96px"},1000);
		$("#pointsban3").animate({left: "186px"},1000);
		$("#pointsban4").animate({left: "880px"},1000);
	}
	if(bannerid == 4)
	{
		$("#pointsban2").animate({left: "96px"},1000);
		$("#pointsban3").animate({left: "186px"},1000);
		$("#pointsban4").animate({left: "276px"},1000);
	}
}
function openDialog(title,content)
{
	$("#dialog").attr('title',title);
	$("#dialogcontent").html(content);
	$("#dialog").dialog('option', 'title', title);
	$('#dialog').dialog('open');
}
function changeNewsItems(sectionid)
{
	if(sectionid == '')
	{
		$(".newsItem").show();
		if($(".newsItem").size() > 0)
		{
			$(".noResults").hide();
		}
	}
	else
	{
		groupname = ".newsGroup" + sectionid;
		$(".newsItem").hide();
		$(groupname).show();
		if($(groupname).size() == 0)
		{
			$(".noResults").show();
		}
	}
}
function showHaha(image)
{
	if($(image).height() > 439)
	{
		$(image).css("top","-439px");
	}
}
function hideHaha(image)
{
	$(image).css("top","0px");
}
function getScrollY()
{
	scrollY = 0;
	if( typeof( window.pageYOffset ) == 'number' )
	{
	    scrollY = window.pageYOffset;
	}
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
	{
	    scrollY = document.body.scrollTop;
	}
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	{
	    scrollY = document.documentElement.scrollTop;
	}
	return scrollY;
}
var doShuttleMove = true;
function moveShuttle()
{
	if( getScrollY() < 327 ) {
		$(".shuttle").css({"position":"relative","top":""});
	} else {
		var y = $(document).height() - $(window).height();
		if ( getScrollY() > y ) {
			$(".shuttle").css({"position":"absolute","top": y - 300 + "px" });
		} else {
			$(".shuttle").css({"position":"fixed", "top":"10px"});
		}
	}
}
function moveShuttleRegular() {
	moveShuttle( 327 );
}
function moveShuttleLarge() {
	moveShuttle( 327 );
}

function validateLogin() {
	var validate = new validateForm();
	validate.validateEmailAddress( 'clientLogin_username', 'Email Address', 'inputfieldmandError' );
	validate.checkText( 'clientLogin_password', 'Password', '', 'inputfieldmandError' );
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	}
	return true;
}
function validateCheckoutLogin() {
	var validate = new validateForm();
	validate.validateEmailAddress( 'checkout_clientLogin_username', 'Email Address', 'inputfieldmandError' );
	validate.checkText( 'checkout_clientLogin_password', 'Password', '', 'inputfieldmandError' );
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	}
	return true;
}
function validateRegister() {
	var validate = new validateForm();
	
	if( document.getElementById( 'cmsUserAdmin_user_email' ).value != document.getElementById( 'cmsUserAdmin_user_confirm_email_confirm' ).value ){
		validate.addCustomError( 'Email addresses do not match', 'cmsUserAdmin_user_confirm_email_confirm', 'inputfieldmandError' );
	} else {
		$('#cmsUserAdmin_user_confirm_email_confirm' ).parent().removeClass( 'inputfieldmandError' );
	}
	
	if( document.getElementById( 'register_password' ).value != document.getElementById( 'register_confirm_password' ).value ){
		validate.addCustomError( 'Passwords do not match', 'register_confirm_password', 'inputfieldmandError' );
	} else {
		$('#register_confirm_password' ).parent().removeClass( 'inputfieldmandError' );
	}
	
	if( document.getElementById( 'register_password' ).value.length < 6 ){
		validate.addCustomError( 'Passwords must be more than 6 characters', 'register_password', 'inputfieldmandError' );
	} else {
		$('#register_password' ).parent().removeClass( 'inputfieldmandError' );
	}

	validate.validateEmailAddress( 'cmsUserAdmin_user_email', 'Email Address is not a valid email address', 'inputfieldmandError' );
	validate.validateEmailAddress( 'cmsUserAdmin_user_confirm_email_confirm', 'Confirm Email Address is not a valid email address', 'inputfieldmandError' );
	
	validate.checkText( 'register_password', 'Password', '', 'inputfieldmandError' );
	validate.checkText( 'register_confirm_password', 'Confirm Password', '', 'inputfieldmandError' );
	
	validate.checkText( 'cmsUserAdmin_user_firstname', 'Firstname', '- First Name', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_surname', 'Surname', '- Last Name', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_telephone', 'Telephone', '- Telephone', 'inputfieldmandError' );
	
	validate.checkText( 'cmsUserAdmin_user_billing_address1', 'Billing House Name/Number', '- House Name/Number', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_billing_address2', 'Billing Street', '- Street', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_billing_town', 'Billing Town', '- Town', 'inputfieldmandError' );
//	validate.checkText( 'cmsUserAdmin_user_billing_county', 'Billing County', '- County', 'inputfieldmandError', 'inputfieldmandError' );
	validate.checkSelect( 'cmsUserAdmin_user_billing_country', '', 'Billing Country', 'inputfieldmandError' );
	if ( $('#cmsUserAdmin_user_billing_country').val() == 'GB' ) {
		validate.validatePostCode( 'cmsUserAdmin_user_billing_postcode', 'Billing Postcode is not a valid postcode', 'inputfieldmandError' );
	}

	validate.checkText( 'cmsUserAdmin_user_delivery_address1', 'Delivery House Name/Number', '- House Name/Number', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_delivery_address2', 'Delivery Street', '- Street', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_delivery_town', 'Delivery Town', '- Town', 'inputfieldmandError' );
//	validate.checkText( 'cmsUserAdmin_user_delivery_county', 'Delivery County', '- County', 'inputfieldmandError' );
	validate.checkSelect( 'cmsUserAdmin_user_delivery_country', '', 'Delivery Country', 'inputfieldmandError' );
	if ( $('#cmsUserAdmin_user_delivery_country').val() == 'GB' ) {
		validate.validatePostCode( 'cmsUserAdmin_user_delivery_postcode', 'Delivery Postcode is not a valid postcode', 'inputfieldmandError' );
	}

	validate.checkChecked( 'register_age', 'You must confirm you are over 18 years of age', 'checkboxMandatory' );
	validate.checkChecked( 'register_terms', 'Agree to our terms and conditions', 'checkboxMandatory' );

	
	if( document.getElementById( 'cmsUserAdmin_message_captcha' ).value.length != 6 ){
		validate.addCustomError( 'Confirmation code should be 6 characters', 'cmsUserAdmin_message_captcha', 'inputfieldmandError' );
	} else {
		$('#cmsUserAdmin_message_captcha' ).parent().removeClass( 'inputfieldmandError' );
	}
	
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		// clear the non-mandatory fields if they have not been completed
		if ( $('#cmsUserAdmin_user_company').val() == '- Company' ) {
			$('#cmsUserAdmin_user_company').val('');
		}
		if ( $('#cmsUserAdmin_user_billing_county').val() == '- County' ) {
			$('#cmsUserAdmin_user_billing_county').val('');
		}
		if ( $('#cmsUserAdmin_user_delivery_county').val() == '- County' ) {
			$('#cmsUserAdmin_user_delivery_county').val('');
		}
		return true;
	}
}

function validateActivationRegister() {
	var validate = new validateForm();
	
	if( document.getElementById( 'activation_user_email' ).value != document.getElementById( 'activation_user_confirm_email_confirm' ).value ){
		validate.addCustomError( 'Email addresses do not match' );
	}
	
	if( document.getElementById( 'activation_password' ).value != document.getElementById( 'activation_confirm_password' ).value ){
		validate.addCustomError( 'Passwords do not match' );
	}
	
	if( document.getElementById( 'activation_password' ).value.length < 6 ){
		validate.addCustomError( 'Passwords must be more than 6 characters' );
	}

	validate.validateEmailAddress( 'activation_user_email', 'Email Address is not a valid email address' );
	validate.validateEmailAddress( 'activation_user_confirm_email_confirm', 'Confirm Email Address is not a valid email address' );
	
	validate.checkText( 'activation_password', 'Password', '' );
	validate.checkText( 'activation_confirm_password', 'Confirm Password', '' );
	
	validate.checkText( 'activation_user_firstname', 'Firstname', '- First Name' );
	validate.checkText( 'activation_user_surname', 'Surname', '- Last Name' );
	validate.checkText( 'activation_user_telephone', 'Telephone', '- Telephone' );
	
	validate.checkText( 'activation_user_billing_address1', 'Billing House Name/Number', '- House Name/Number' );
	validate.checkText( 'activation_user_billing_address2', 'Billing Street', '- Street' );
	validate.checkText( 'activation_user_billing_town', 'Billing Town', '- Town' );
	validate.checkSelect( 'activation_user_billing_country', '', 'Billing Country' );
	if ( $('#activation_user_billing_country').val() == 'GB' ) {
		validate.validatePostCode( 'activation_user_billing_postcode', 'Billing Postcode is not a valid postcode' );
	}

	validate.checkText( 'activation_user_delivery_address1', 'Delivery House Name/Number', '- House Name/Number' );
	validate.checkText( 'activation_user_delivery_address2', 'Delivery Street', '- Street' );
	validate.checkText( 'activation_user_delivery_town', 'Delivery Town', '- Town' );
	validate.checkSelect( 'activation_user_delivery_country', '', 'Delivery Country' );
	if ( $('#activation_user_delivery_country').val() == 'GB' ) {
		validate.validatePostCode( 'activation_user_delivery_postcode', 'Delivery Postcode is not a valid postcode' );
	}

	validate.checkChecked( 'activation_age', 'You must confirm you are over 18 years of age' );
	validate.checkChecked( 'activation_terms', 'Agree to our terms and conditions' );

	
	if( document.getElementById( 'activation_message_captcha' ).value.length != 6 ){
		validate.addCustomError( 'Confirmation code should be 6 characters', 'activation_message_captcha' );
	} 
	
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		// clear the non-mandatory fields if they have not been completed
		if ( $('#activation_user_company').val() == '- Company' ) {
			$('#activation_user_company').val('');
		}
		if ( $('#activation_user_billing_county').val() == '- County' ) {
			$('#activation_user_billing_county').val('');
		}
		if ( $('#activation_user_delivery_county').val() == '- County' ) {
			$('#activation_user_delivery_county').val('');
		}
		return true;
	}
}

function syncRegisterAddresses( sync ) {
	if ( sync ) {
		document.getElementById('cmsUserAdmin_user_delivery_address1').value = document.getElementById('cmsUserAdmin_user_billing_address1').value;
		document.getElementById('cmsUserAdmin_user_delivery_address2').value = document.getElementById('cmsUserAdmin_user_billing_address2').value;
		document.getElementById('cmsUserAdmin_user_delivery_town').value = document.getElementById('cmsUserAdmin_user_billing_town').value;
		document.getElementById('cmsUserAdmin_user_delivery_county').value = document.getElementById('cmsUserAdmin_user_billing_county').value;
		document.getElementById('cmsUserAdmin_user_delivery_postcode').value = document.getElementById('cmsUserAdmin_user_billing_postcode').value;
		document.getElementById('cmsUserAdmin_user_delivery_country').selectedIndex = document.getElementById('cmsUserAdmin_user_billing_country').selectedIndex;
	}
}
function syncActivationAddresses( sync ) {
	if ( sync ) {
		document.getElementById('activation_user_delivery_address1').value = document.getElementById('activation_user_billing_address1').value;
		document.getElementById('activation_user_delivery_address2').value = document.getElementById('activation_user_billing_address2').value;
		document.getElementById('activation_user_delivery_town').value = document.getElementById('activation_user_billing_town').value;
		document.getElementById('activation_user_delivery_county').value = document.getElementById('activation_user_billing_county').value;
		document.getElementById('activation_user_delivery_postcode').value = document.getElementById('activation_user_billing_postcode').value;
		document.getElementById('activation_user_delivery_country').selectedIndex = document.getElementById('activation_user_billing_country').selectedIndex;
	}
}

function syncRegisterAddressesInline() {
	syncRegisterAddresses( document.getElementById('syncAddresses').checked );
}
function syncActivationAddressesInline() {
	syncActivationAddresses( document.getElementById('syncAddresses2').checked );
}

function validatePersonal() {
	var validate = new validateForm();
	
	if( document.getElementById( 'cmsUserAdmin_user_email' ).value != document.getElementById( 'cmsUserAdmin_user_confirm_email_confirm' ).value ){
		validate.addCustomError( 'Email addresses do not match', 'cmsUserAdmin_user_confirm_email_confirm', 'inputfieldmandError' );
	}
	
	if( document.getElementById( 'account_password' ).value != document.getElementById( 'account_confirm_password' ).value ){
		validate.addCustomError( 'Passwords do not match', 'account_confirm_password', 'inputfieldmandError' );
	}
	
	validate.validateEmailAddress( 'cmsUserAdmin_user_email', 'Email Address is not a valid email address', 'inputfieldmandError' );
	validate.validateEmailAddress( 'cmsUserAdmin_user_confirm_email_confirm', 'Confirm Email Address is not a valid email address', 'inputfieldmandError' );
	
//	validate.checkSelect ( 'cmsUserAdmin_user_title_id', '', 'Title', 'titledropError' );
	
	validate.checkText( 'cmsUserAdmin_user_firstname', 'Firstname', '- First Name', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_telephone', 'Telephone', '- Telephone', 'inputfieldmandError' );
	validate.checkText( 'cmsUserAdmin_user_surname', 'Surname', '- Last Name', 'inputfieldmandError' );
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		return true;
	}
}

function validateBilling() {
	var validate = new validateForm();
	
	validate.checkText( 'billing_address1', 'Billing House Name/Number', '- House Name/Number', 'inputfieldmandError' );
	validate.checkText( 'billing_address2', 'Billing Street', '- Street', 'inputfieldmandError' );
	validate.checkText( 'billing_town', 'Billing Town', '- Town', 'inputfieldmandError' );
//	validate.checkText( 'billing_county', 'Billing County', '- County', 'inputfieldmandError' );
	validate.validatePostCode( 'billing_postcode', 'Billing Postcode is not a valid postcode', 'inputfieldmandError' );
	validate.checkSelect( 'billing_country', '', 'Billing Country', 'inputfieldmandError' );
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		//clean non manditory
		if ( $('billing_country').val() == '- County' ) {
			$('billing_country').val('');
		}
		if ( $('#billing_county').val() == '- County' ) {
			$('#billing_county').val('');
		}
		return true;
	}
}
jQuery.fn.check = function(value) {
	var value = ''+value || '1';
	return this.each(function() {
		switch(value) {
			case '1':
				if(this.checked == false) {
					this.click();
				}
				break;
			default:
				if(this.checked == true) {
					this.click();
				}
				break;
		}
	});
};

function displayAddress(linkelement,addressid) {
	if(addressArray[addressid])	{
		$("#edit_addr_id").val(addressid);
		addressname = (addressArray[addressid]['name'] == '') ? '- Address Name' : addressArray[addressid]['name'];
		$("#edit_addr_name").val(addressname);
		address1 = (addressArray[addressid]['address1'] == '') ? '- House Name/Number' : addressArray[addressid]['address1'];
		$("#edit_addr_address1").val(address1);
		address2 = (addressArray[addressid]['address2'] == '') ? '- Street' : addressArray[addressid]['address2'];
		$("#edit_addr_address2").val(address2);
		addresstown = (addressArray[addressid]['town'] == '') ? '- Town' : addressArray[addressid]['town'];
		$("#edit_addr_town").val(addresstown);
		addresscounty = (addressArray[addressid]['county'] == '') ? '- County' : addressArray[addressid]['county'];
		$("#edit_addr_county").val(addresscounty);
		addresspostcode = (addressArray[addressid]['postcode'] == '') ? '- Post Code' : addressArray[addressid]['postcode'];
		$("#edit_addr_postcode").val(addresspostcode);
		addresscountry = (addressArray[addressid]['country'] == '') ? '' : addressArray[addressid]['country'];
		$("#edit_addr_country").val(addresscountry);
		
		$("#edit_addr_default").check(addressArray[addressid]['default']);
		
		$(".displayLinkSelected").removeClass("displayLinkSelected");
		$(linkelement).addClass("displayLinkSelected");
		
		$(".addressDisplay").show();
		
		$(".addressArrow").css("top",$(linkelement).position().top - 2);
		$(".addressArrow").show();
	}
	else if(addressid == 0)	{
		$("#edit_addr_id").val('0');
		$("#edit_addr_name").val('- Address Name');
		$("#edit_addr_address1").val('- House Name/Number');
		$("#edit_addr_address2").val('- Street');
		$("#edit_addr_town").val('- Town');
		$("#edit_addr_county").val('- County');
		$("#edit_addr_postcode").val('- Post Code');
		$("#edit_addr_country").val('');
		$("#edit_addr_default").check('0');
		
		$(".displayLinkSelected").removeClass("displayLinkSelected");
		$(linkelement).addClass("displayLinkSelected");
		
		$(".addressDisplay").show();
		
		$(".addressArrow").css("top",$(linkelement).position().top - 1);
		$(".addressArrow").show();
	}
}

function updateAddress() {
	
	var validate = new validateForm();
	validate.checkText( 'edit_addr_name', 'Address Name', '- Address Name', 'inputfieldmandError' );
	validate.checkText( 'edit_addr_address1', 'House Name/Number', '- House Name/Number', 'inputfieldmandError' );
	validate.checkText( 'edit_addr_address2', 'Street', '- Street', 'inputfieldmandError' );
	validate.checkText( 'edit_addr_town', 'Town', '- Town', 'inputfieldmandError' );
//	validate.checkText( 'edit_addr_county', 'County', '- County', 'inputfieldmandError' );
	validate.validatePostCode( 'edit_addr_postcode', 'Postcode', 'inputfieldmandError' );
	validate.checkSelect( 'edit_addr_country', '', 'Country', 'inputfieldmandError' );
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	}
	// send the address for update
	var sUrl = "/xmlservice.php?service=updateDeliveryAddress";
			
	sUrl += '&name='+escape( $('#edit_addr_name').val() );
	sUrl += '&address1='+escape( $('#edit_addr_address1').val() );
	sUrl += '&address2='+escape( $('#edit_addr_address2').val() );
	sUrl += '&town='+escape( $('#edit_addr_town').val() );
	sUrl += '&county=' + ( ( $('#edit_addr_county').val() == '- County' ) ? '' : escape( $('#edit_addr_county').val() ) );
	sUrl += '&postcode='+escape( $('#edit_addr_postcode').val() );
	sUrl += '&country='+escape( $('#edit_addr_country').val() );
	defaultChecked = $('#edit_addr_default:checked').val();
	if(typeof(defaultChecked) == 'undefined' || defaultChecked == null) {
		defaultChecked = 0;
	}
	sUrl += '&default='+defaultChecked;
	//
	var addressId = $('#edit_addr_id').val();
	if( addressId != '0' ){ 
		sUrl += '&id='+addressId;
	}
	
	$.ajax({
		type: "GET",
		url: sUrl,
		success: function( result ){
			if(result.ResultSet.Result[0]['result'] == 'success') {
				if( addressId == '0' ) {
					// as of 23/02/10, redirect to the products page (mainly for ACCOR but will happen for anyone)
					document.location = '/products';
				}
				else {
					if(defaultChecked == 1){
						for(address in addressArray)	{
							addressArray[address]['default'] = 0;
						}
					}
					addressArray[addressId]['name'] = result.ResultSet.Result[0]['record']['name'];
					addressArray[addressId]['address1'] = result.ResultSet.Result[0]['record']['address1'];
					addressArray[addressId]['address2'] = result.ResultSet.Result[0]['record']['address2'];
					addressArray[addressId]['town'] = result.ResultSet.Result[0]['record']['town'];
					addressArray[addressId]['county'] = result.ResultSet.Result[0]['record']['county'];
					addressArray[addressId]['postcode'] = result.ResultSet.Result[0]['record']['postcode'];
					addressArray[addressId]['country'] = result.ResultSet.Result[0]['record']['country'];
					addressArray[addressId]['default'] = result.ResultSet.Result[0]['record']['default'];
					// as of 23/02/10, redirect to the products page (mainly for ACCOR but will happen for anyone)
					document.location = '/products';
				}
			}
			else {
				alert( 'Sorry, an error occured whilst saving this address.' );
			}
		},
		error : function( result ){
			alert( 'Sorry, an error occured whilst saving this address.' );
		},
		dataType: "json"
	});
}

function deleteAddress( linkelement, id ) {
	if( !confirm('Are you sure you want to delete this address?') ) {
		return;
	}
	var sUrl = "/xmlservice.php?service=deleteDeliveryAddress";
	sUrl += '&id='+id;
	
	$.ajax({
		type: "GET",
		url: sUrl,
		success: function( result ) {
			if(result.ResultSet.Result[0]['result'] == 'success') {
				$(linkelement).parent().remove();
				$(".addressDisplay").hide();
				$(".addressArrow").hide();
				alert( 'Address deleted successfully' );
			}
			else {
				alert( 'Sorry, an error occured whilst saving this address.' );
			}
		},
		error: function( result ) {
			alert( 'Sorry, an error occured whilst saving this address.' );
		},
		dataType: "json"
	});
}

function showWishlist(linkelement,wishlistid) {
	$(".displayLinkSelected2").removeClass("displayLinkSelected2");
	$(linkelement).addClass("displayLinkSelected2");
	wishlistName = "#wishlist_"+wishlistid;
	$(".wishlistDisplay").hide();
	$(wishlistName).show();
	$(".wishlistArrow").css("top",$(linkelement).position().top - 1);
	$(".wishlistArrow").show();
}

function showInvoice(linkelement,invoiceid) {
	$(".displayLinkSelected3").removeClass("displayLinkSelected3");
	$(linkelement).addClass("displayLinkSelected3");
	invoiceName = "#invoice_"+invoiceid;
	$(".invoiceDisplay").hide();
	$(invoiceName).show();
	$(".invoiceArrow").css("top",$(linkelement).position().top - 1);
	$(".invoiceArrow").show();
}

function changeQuantity( id, amount ) {
	var qty = parseInt( $('#qty_' + id).attr('value') );
	qty += amount;
	if ( qty < 1 ) {
		qty = 1;
	}
	$('#qty_' + id).attr('value', qty );
}

function removeFromWishList( linkelement, itemID, wishlistId ) {
	var sUrl = "/xmlservice.php?service=removeFromWishList&itemType=1&itemID=" + itemID + '&wishlistId=' + wishlistId;
	$.ajax({
		type: "GET",
		url: sUrl,
		success: function( result ) {
			if(result.ResultSet.Result[0]['result'] == 'success') {
				$(linkelement).parent().parent().parent().remove();
			}
			else {
				alert( 'Sorry, an error occured whilst removing this item from your wish list.' );
			}
		},
		error: function( result ) {
			alert( 'Sorry, an error occured whilst removing this item from your wish list.' );
		},
		dataType: "json"
	});
}

function addToBasket(formid) {
	formname = '#'+formid;
	$.post( '/manage_basket.php', $(formname).serialize(),
		function( data ){
			if ( data.substr( 0, 6 ) == 'ERROR:' ) {
				alert( data.substr( 6 ) );
				return false;
			}
			// scroll to the top of the window
			window.scrollTo( 0, 0 );
			// update the basket contents
			var contents = $('#miniBasketContents');
			contents.fadeOut( 250, function() {
				basketvisible = false;
				contents.html( data );
			});
			contents.fadeIn( 250, showBasket );
		}
		, 'html' 
	);
}
function copyDefault() {
	for(address in addressArray) {
		if(addressArray[address]['default'] == 1) {
			defaultExists = 1;
			
			$('#billing_address1').val(addressArray[address]['address1']);
			$('#billing_address2').val(addressArray[address]['address2']);
			$('#billing_town').val(addressArray[address]['town']);
			$('#billing_county').val(addressArray[address]['county']);
			$('#billing_postcode').val(addressArray[address]['postcode']);
			$('#billing_country').val(addressArray[address]['country']);
			
			//$('#cmsUserAdmin[user][billing_address1]').val(addressArray[address]['address1']);
		}
	}
}
function handleWishlistSliderChange(ui, wishlistid)
{
	var scrollName = '#wishlistScroll' + wishlistid;
	var maxScroll = $(scrollName).attr("scrollHeight") - $(scrollName).height();
	$(scrollName).animate({scrollTop: (100-ui.value) * (maxScroll / 100) }, 1000);
}
function handleWishlistSliderSlide(ui, wishlistid)
{
	var scrollName = '#wishlistScroll' + wishlistid;
	var maxScroll = $(scrollName).attr("scrollHeight") - $(scrollName).height();
	$(scrollName).attr({scrollTop: (100-ui.value) * (maxScroll / 100) });
}
function handleInvoiceSliderChange(ui, invoiceid)
{
	var scrollName = '#invoiceScroll' + invoiceid;
	var maxScroll = $(scrollName).attr("scrollHeight") - $(scrollName).height();
	$(scrollName).animate({scrollTop: (100-ui.value) * (maxScroll / 100) }, 1000);
}
function handleinvoiceSliderSlide(ui, invoiceid)
{
	var scrollName = '#invoiceScroll' + invoiceid;
	var maxScroll = $(scrollName).attr("scrollHeight") - $(scrollName).height();
	$(scrollName).attr({scrollTop: (100-ui.value) * (maxScroll / 100) });
}

function deleteWishlist( id ) {
	if ( confirm( 'Are you sure you wish to delete this wishlist?' ) ) {
		$('#delete_id').val(id);
		$('#delete_form').submit();
	}
}

//PAGINATION
jQuery.fn.paginate = function(opts) {
	opts = jQuery.extend({
		items_per_page: 10,
		current_page: 1, 
		prev_text: "&lt;",
		next_text: "&gt;",
		result_sizes: "10,20,30",
		filter_text: ""
	},opts||{});
	
	// hide all articles
	var items = this.find(".paginatedItem");
	items.each( function() {
		$(this).hide();
	});
	
	var self = this;
	if(opts.filter_text != "") {
		var items = this.find("."+opts.filter_text+".paginatedItem");
	}
	var total_items = items.length;
	var page_count = Math.ceil(total_items/opts.items_per_page);
	var current_page = opts.current_page;
	var items_per_page = opts.items_per_page;
	var	pagination_panel = this.find("#pagination");

	function createPagination() {
		//Page change function
		var pageChanger = function(page_id) {
			current_page = page_id;
			createPagination();
		}
		//Result size change function
		var sizeChanger = function(result_size) {
			items_per_page = result_size;
			page_count = Math.ceil(total_items/items_per_page);
			current_page = 1;
			createPagination();
		}
		
		//Show or hide items
		start_item = 1 + ((current_page-1) * items_per_page);
		current_item = 1;
		shown_items = 0;
		items.each( function() {
			if(current_item >= start_item && shown_items < items_per_page)
			{
				$(this).show();
				shown_items++;
			}
			else
			{
				$(this).hide();
			}
			current_item++;
		});
		
		//Update top
		pagination_panel.html("Page: ");	
		previous_page = current_page-1;
		next_page = current_page+1;
		
		//Add previous link
		if(current_page > 1) {
			previous_link = jQuery("<a href=\"\">"+opts.prev_text+"</a>");
			previous_link.bind("click", function (event){
				event.preventDefault();
				pageChanger(previous_page);
			});
			pagination_panel.append(previous_link);
			pagination_panel.append(" ");
		} else {
			pagination_panel.append(opts.prev_text+" ");
		}
		//Add page links
		for(i=1;i<=page_count;i++) {
			page_link = jQuery("<a href=\"\">"+i+"</a>");
			if(i == current_page) {
				page_link.addClass("current");
			}
			page_link.bind("click", function(event) {
				event.preventDefault();
				targtext = event.target.text || event.target.innerText;
				pageChanger(targtext);
			});
			pagination_panel.append(page_link);
			pagination_panel.append(" ");
		}
		//Add next link
		if(current_page < page_count) {
			next_link = jQuery("<a href=\"\">"+opts.next_text+"</a>");
			next_link.bind("click", function(event) {
				event.preventDefault();
				pageChanger(next_page);
			});
			pagination_panel.append(next_link);
			pagination_panel.append(" ");
		} else {
			pagination_panel.append(opts.next_text+" ");
		}
		
		//Need to find a better way of doing this
		pagination_panel.append("<img class=\"spacer\" src=\""+cdnBase+"/custom/images/1x1t.gif\"/>");
		
		//Add result size options
		pagination_panel.append("Display: ");
		result_sizes = opts.result_sizes.split(",");
		for(j=0;j<result_sizes.length;j++) {
			result_link = jQuery("<a href=\"\">"+result_sizes[j]+"</a>");
			if(result_sizes[j] == items_per_page) {
				result_link.addClass("current");
			}
			result_link.bind("click", function(event) {
				event.preventDefault();
				targtext = event.target.text || event.target.innerText;
				sizeChanger(targtext);
			});
			pagination_panel.append(result_link);
			pagination_panel.append(" ");
		}
	}
	
	if(total_items > 0) {
		createPagination();
		self.show();
	} else {
		self.hide();
	}
};

function changeFilter(title, filtertext) {
	$("#publicationName").text(title);
	$(".publicationTitle").show();
	$(".publicationList").hide();
	$("#paginated").paginate({
		items_per_page: 25,
		result_sizes: "25,50,75",
		filter_text: filtertext
	});
}
function showPublications() {
	$(".publicationTitle").hide();
	$(".publicationList").show();
	$("#paginated").paginate({
		items_per_page: 25,
		result_sizes: "25,50,75",
		filter_text: "EMPTY"
	});
}

function initBlogArchive( date ) {
	// set the click events for the month and year archive links
	$('.blogArchiveMonthTitle,.blogArchiveYearTitle').click( function() {
		$(this).next().toggle();
		var arrow = $(this).children('.archiveArrow');
		if ( arrow.is('.archiveArrowClosed') ) {
			arrow.removeClass('archiveArrowClosed');
			arrow.addClass('archiveArrowOpen');
		} else {
			arrow.removeClass('archiveArrowOpen');
			arrow.addClass('archiveArrowClosed');
		}
	} );
	// open the archive at the appropriate level
	var dateSplit = date.split('-');
	$( '#blogArchive_' + dateSplit[0] ).prev().click();
	$( '#blogArchive_' + dateSplit[0] + '_' + parseInt( dateSplit[1] ) ).prev().click();
}

function pad( number, length ) {
	var str = '' + number;
	while ( str.length < length ) {
		str = '0' + str;
	}
	return str;
}

function getDaysInMonth() {
	var today = new Date();
	return 32 - new Date( today.getFullYear(), today.getMonth(), 32).getDate();
}

// footer stuff...
var pinterval = {};

function pinScrollToBottom() {
	pinterval = setInterval( function() { window.scrollBy( 0, 20 ) }, 10 );
}
function unpinScrollToBottom() {
	clearInterval( pinterval );
}
$(document).ready( function() {
	$('#footerLinkExpander').click( function() {
		pinScrollToBottom();
		$('#footerLinks').slideDown(500, function() {
			unpinScrollToBottom();
			$('#footerLinkExpander').hide();
			$('#footerLinkContractor').show();
		});
	} );
	$('#footerLinkContractor').click( function() {
		$('#footerLinks').slideUp(500, function() {
			$('#footerLinkExpander').show();
			$('#footerLinkContractor').hide();
		});
	} );
	// remove the postcode anywhere script tags from the registration form
	$('#postcodeAnywhereRegisterBillingScript').remove();
	$('#postcodeAnywhereDeliveryBillingScript').remove();
});

function validateForm() {
		
	// holds an array of errors to output
	var fieldErrorArray = new Array();
	
	// private accessor methods
	this.checkRadio = checkRadio;
	this.checkChecked = checkChecked;
	this.checkText = checkText;
	this.checkTextMinLength = checkTextMinLength;
	this.checkNumeric = checkNumeric;
	this.checkPrice = checkPrice;
	this.checkListBoxHasItems = checkListBoxHasItems;
	this.checkSelect = checkSelect;
	this.validateEmailAddress = validateEmailAddress;
	this.validatePostCode = validatePostCode;
	this.displayErrors = displayErrors;
	this.numberOfErrors = numberOfErrors;
	this.addCustomError = addCustomError;
	this.getErrors = getErrors;
	
	// returns the array of errors
	function getErrors() {
		return fieldErrorArray;
	}
	
	// checks that one has been checked (may need altering)
	function checkRadio( element, length, output ) {

		var hasChecked = false;
		for (i = 0; i < length; i++){
			if (document.getElementById( element + '[' + i + ']').checked) {
		      hasChecked = true;
		   }
		}
		if(!hasChecked){
			fieldErrorArray.push(output);
		}
	}
	
	function checkChecked( elementId, output, myClassName ) {
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).next().removeClass( myClassName );
		}
		if (!document.getElementById( elementId ).checked) {
			fieldErrorArray.push(output);
			// if we have a classname, set it to the element
			if( typeof myClassName != 'undefined' ) {
				$('#' + elementId ).next().addClass( myClassName );
			}
		}
	}
	
	// ensures text has been entered
	function checkText ( elementId, output, defaultText, myClassName ) {
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).parent().removeClass( myClassName );
		}
		if (document.getElementById( elementId ).value == '') {
			fieldErrorArray.push(output);
			// if we have a classname, set it to the element
			if( typeof myClassName != 'undefined' ) {
				$('#' + elementId ).parent().addClass( myClassName );
			}
		} else if ( typeof defaultText != 'undefined' ) {
			if ( document.getElementById( elementId ).value == defaultText ) {
				fieldErrorArray.push(output);
				// if we have a classname, set it to the element
				if( typeof myClassName != 'undefined' ) {
					$('#' + elementId ).parent().addClass( myClassName );
				}
			}
		}
	}
	
	// ensures text of certain length has been entered
	function checkTextMinLength ( element, output, charLength ) {
		var checkString = document.getElementById( element ).value;
		if( checkString.length < charLength ){
			fieldErrorArray.push(output);
		}
	}
	
	function checkNumeric ( element, output ){
		var data = document.getElementById( element ).value;
		var ValidChars = "0123456789.";
		var IsNumber = true;
		var Char;
		if( data.length > 0 ) {
			for (i = 0; i < data.length && IsNumber == true; i++){ 
				Char = data.charAt(i); 
				if (ValidChars.indexOf(Char) == -1){
					// ok, its not valid, if its first position is a minus
					if( i == 0 && Char == '-' ) {
						// first character can be a "-" (minus)
					} else {
						IsNumber = false;
					}
				}
			}
			if( !IsNumber ){
				fieldErrorArray.push( output + ' must be a numeric value' );
			}
		} else {
			// no value entered
			fieldErrorArray.push( output );
		}
	}
	
	function checkPrice ( element, output  ){
		var data = document.getElementById( element ).value;
		var ValidChars = "0123456789.,";
		var IsNumber = true;
		var Char;
		if( data.length > 0 ) {
			for (i = 0; i < data.length && IsNumber == true; i++){ 
				Char = data.charAt(i); 
				if (ValidChars.indexOf(Char) == -1){
					IsNumber = false;
				}
			}
			if( !IsNumber ){
				fieldErrorArray.push( output + ' must be a price' );
			}
		} else {
			// no value entered
			fieldErrorArray.push( output );
		}
	}

	
	// checks for items in the passed listbox
	function checkListBoxHasItems ( element, output ) {
		if( document.getElementById( element ).length <= 0) {
			fieldErrorArray.push(output);
		}
	}
	
	// checks the value chosen is not the passed default value
	function checkSelect ( elementId, nothingValue, output, myClassName ){
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).parent().parent().removeClass( myClassName );
		}
		if( document.getElementById( elementId ).value == nothingValue ){
			fieldErrorArray.push(output);
			// if we have a classname, set it to the element
			if( typeof myClassName != 'undefined' ) {
				$('#' + elementId ).parent().parent().addClass( myClassName );
			}
		}
	}
	
	// checks the value chosen is not the passed default value
	function validateEmailAddress ( emailAddress, output, myClassName ){
		elementId = emailAddress;
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).parent().removeClass( myClassName );
		}
		if( document.getElementById( emailAddress ) )
			emailAddress = document.getElementById( emailAddress ).value;
		if( typeof( output ) == 'undefined' )
			output = 'Email address is invalid';
		var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if ( !filter.test( emailAddress )){
			fieldErrorArray.push( output );
			// if we have a classname, set it to the element
			if( typeof myClassName != 'undefined' ) {
				$('#' + elementId ).parent().addClass( myClassName );
			}
		}
	}

	// checks the value chosen is not the passed default value
	function validatePostCode ( elementId, output, myClassName ){
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).parent().removeClass( myClassName );
		}
		var filter  = /^[A-Za-z]{1,2}[0-9]{1}[A-Za-z0-9]{0,1}[ ]?[0-9]{1}[A-Za-z]{2}$/;
		if ( !filter.test( document.getElementById( elementId ).value ) ){
			fieldErrorArray.push( output );
			// if we have a classname, set it to the element
			if( typeof myClassName != 'undefined' ) {
				$('#' + elementId ).parent().addClass( myClassName );
			}
		}
	}
	
	
	// add a custom error to the array
	function addCustomError( errorMessage, elementId, myClassName ){
		
		fieldErrorArray.push( errorMessage );
		
		// if we have a classname, set it to the element
		if( typeof myClassName != 'undefined' ) {
			$('#' + elementId ).parent().addClass( myClassName );
		}
		
	}
	
	// returns the number of errors found
	function numberOfErrors(){
		
		return fieldErrorArray.length;
		
	}
	
	// alerts all current errors to the user	
	function displayErrors(){
		
		var output = '';
		
		for(i=0;i<fieldErrorArray.length;i++){
			
			output += ' - ' +fieldErrorArray[i] + '\n';
			
		}
		
		alert('The following fields have not been completed:\n\n' + output);
		
	}
	
}
function pauseContent(contentId) {
	$('.tabBannerTab').removeClass('tabBannerTabOn');
	$('#tabBannerTab'+contentId).addClass('tabBannerTabOn');
	$('.tabBannerContent').hide();
	$('#tabBannerContent'+contentId).show();
	currentBanner = contentId;
	clearTimeout(bannerTimeout);
}

function showContent(contentId) {
	$('.tabBannerTab').removeClass('tabBannerTabOn');
	$('#tabBannerTab'+contentId).addClass('tabBannerTabOn');
	$('.tabBannerContent').hide();
	$('#tabBannerContent'+contentId).show();
	currentBanner = contentId;
	clearTimeout(bannerTimeout);
	bannerTimeout = setTimeout("animateBanner()",longBannerDelay);
}

function displayContent(contentId) {
	if($('#tabBannerContentInner'+contentId).css('width') == '528px') {
		$('#tabBannerContentInner'+contentId).css('width','0px');
		showContent(contentId);
	}
	else {
		$('.tabBannerTab').removeClass('tabBannerTabOn');
		$('#tabBannerTab'+contentId).addClass('tabBannerTabOn');
		$('.tabBannerContent').hide();
		$('#tabBannerContent'+contentId).show();
		$('#tabBannerContentInner'+contentId).css('width','528px');
		currentBanner = contentId;
		clearTimeout(bannerTimeout);
	}
}

function initBanner() {
	bannerTimeout = setTimeout("animateBanner()",bannerDelay);
}

function animateBanner() {
	if(currentBanner < lastBanner) {
		currentBanner++;
	}
	else {
		currentBanner = 0;
	}
	$('.tabBannerContentInner').css('width','0px');
	$('.tabBannerTab').removeClass('tabBannerTabOn');
	$('#tabBannerTab'+currentBanner).addClass('tabBannerTabOn');
	$('.tabBannerContent').hide();
	$('#tabBannerContent'+currentBanner).show();
	
	bannerTimeout = setTimeout("animateBanner()",bannerDelay);
}

function showGroupAccountRegisterPopup() {
	$('#groupRegisterPanel').dialog({
		modal:		true,
		resizable:	false,
		width:		800,
		height:		885,
		draggable:	true
	});
	// move the captcha image to this popup
	$('#groupAccountCaptchaContainer').append( $('#captchaContainer') );
	$('#groupRegisterPanel').dialog('open');
}
function showGroupRegisteredPopup() {
	$('#groupRegisteredPanel').dialog({
		modal:		true,
		resizable:	false,
		width:		800,
		height:		743,
		draggable:	true
	});
	$('#groupRegisteredPanel').dialog('open');
}

function validateGroupRegister() {
	var validate = new validateForm();
	
	$('#groupRegisterForm .inputfieldLargemandError').removeClass('inputfieldLargemandError');
	$('#groupRegisterForm .inputfieldLargeError').removeClass('inputfieldLargeError');
	
	if( document.getElementById( 'group_cmsUserAdmin_user_email' ).value != document.getElementById( 'group_cmsUserAdmin_user_confirm_email_confirm' ).value ){
		validate.addCustomError( 'Email addresses do not match', 'group_cmsUserAdmin_user_confirm_email_confirm', 'inputfieldLargemandError' );
	} else {
		$('#cmsUserAdmin_user_confirm_email_confirm' ).parent().removeClass( 'inputfieldLargemandError' );
	}
	
	if( document.getElementById( 'group_register_password' ).value != document.getElementById( 'group_register_confirm_password' ).value ){
		validate.addCustomError( 'Passwords do not match', 'group_register_confirm_password', 'inputfieldLargemandError' );
	} else {
		$('#group_register_confirm_password' ).parent().removeClass( 'inputfieldLargemandError' );
	}
	
	validate.validateEmailAddress( 'group_cmsUserAdmin_user_email', 'Email Address is not a valid email address', 'inputfieldLargemandError' );
	validate.validateEmailAddress( 'group_cmsUserAdmin_user_confirm_email_confirm', 'Confirm Email Address is not a valid email address', 'inputfieldLargemandError' );
	
	validate.checkText( 'group_register_password', 'Password', '', 'inputfieldLargemandError' );
	validate.checkText( 'group_register_confirm_password', 'Confirm Password', '', 'inputfieldLargemandError' );
	
	validate.checkText( 'group_cmsUserAdmin_user_firstname', 'Firstname', '- First Name', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_surname', 'Surname', '- Last Name', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_telephone', 'Telephone', '- Telephone', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_position', 'Position', '- Position', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_organisation_telephone', 'Main Telephone', '- Main Telephone', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_company', 'Company', '- Company', 'inputfieldLargemandError' );
	
	validate.checkText( 'group_cmsUserAdmin_user_billing_address1', 'House Name/Number', '- House Name/Number', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_billing_address2', 'Street', '- Street', 'inputfieldLargemandError' );
	validate.checkText( 'group_cmsUserAdmin_user_billing_town', 'Town', '- Town', 'inputfieldLargemandError' );
//	validate.checkText( 'group_cmsUserAdmin_user_billing_county', 'County', '- County', 'inputfieldLargemandError' );
	validate.checkSelect( 'group_cmsUserAdmin_user_billing_country', '', 'Country', 'inputfieldLargemandError' );
	if ( ( $('#group_cmsUserAdmin_user_billing_country').val() == 'GB' ) || ( $('#group_cmsUserAdmin_user_billing_postcode').val() == '- Post Code' ) ) {
		validate.validatePostCode( 'group_cmsUserAdmin_user_billing_postcode', 'Postcode is not a valid postcode', 'inputfieldLargemandError' );
	}

	validate.checkSelect( 'group_cmsUserAdmin_user_organisation_type', '', 'Organisation Type', 'inputfieldLargemandError' );
	validate.checkSelect( 'group_cmsUserAdmin_user_how_did_you_hear_about_us', '', 'How did you hear about us?', 'inputfieldLargemandError' );

	if ( $('#group_cmsUserAdmin_user_how_did_you_hear_about_us').val() == 'Other' ) {
		validate.checkText( 'group_cmsUserAdmin_user_how_did_you_hear_about_us_other', 'How did you hear about us? Please specify', '- Please Specify', 'inputfieldLargemandError' );
	}
	
	validate.checkChecked( 'group_register_age', 'You must confirm you are over 18 years of age', 'checkboxMandatory' );
	validate.checkChecked( 'group_register_terms', 'Agree to our terms and conditions', 'checkboxMandatory' );

	if( document.getElementById( 'cmsUserAdmin_message_captcha' ).value.length != 6 ){
		validate.addCustomError( 'Confirmation code should be 6 characters', 'cmsUserAdmin_message_captcha', 'inputfieldmandError' );
	} else {
		$('#cmsUserAdmin_message_captcha' ).parent().removeClass( 'inputfieldmandError' );
	}
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		// clear the non-mandatory fields if they have not been completed
		if ( $('#group_cmsUserAdmin_user_website_url').val() == '- Website URL' ) {
			$('#group_cmsUserAdmin_user_website_url').val('');
		}
		if ( $('#group_cmsUserAdmin_user_charity_reg_no').val() == '- Charity Registration Number' ) {
			$('#group_cmsUserAdmin_user_charity_reg_no').val('');
		}
		if ( $('#group_cmsUserAdmin_user_billing_county').val() == '- County' ) {
			$('#group_cmsUserAdmin_user_billing_county').val('');
		}

		return true;
	}
}

function showDefaultLoginPanel() {
	showLoginPanel('Login','Please enter your email address and password below.','');
}

function showActivationPanel() {
	$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
	$('#activationFormBox').show();
	$('.errorResponse').hide();
	$('.successResponse').hide();
	$('#activationPanel').dialog("option","title","Account Activation");
	$('#activationPanel').dialog("option","height","auto");
	$('#activationPanel').dialog("option","position","center");
	$('#activationPanel').dialog('open');
}
function validateActivation() {
	var validate = new validateForm();
	
	validate.checkText('activation_code','Household Activation Code','- Household Activation Code...');
	validate.validatePostCode('activation_postcode','Your Postcode');
	validate.validateEmailAddress('activation_email','Email Address');
	
	if( validate.numberOfErrors() > 0 ) {
		validate.displayErrors();
		return false;
	} else {
		$.ajax({
			type: "POST",
			url: "/xmlservice.php?service=customService&customService=checkActivation",
			data: $('#activationForm').serialize(),
			dataType: "json",
			success: function(data) {
				var result = data.type;
				var resultCode = data.code;
				switch(result) {
					case 'success':
						switch(resultCode) {
							case '1':
								//Fill in address fields
								$('#activation_user_billing_postcode').val(data.postcode);
								$('#activation_user_billing_address1').val(data.address1);
								$('#activation_user_billing_address2').val(data.address2);
								$('#activation_user_billing_town').val(data.town);
								$('#activation_user_delivery_postcode').val(data.postcode);
								$('#activation_user_delivery_address1').val(data.address1);
								$('#activation_user_delivery_address2').val(data.address2);
								$('#activation_user_delivery_town').val(data.town);
								
								//Fill in other fields
								$('#activation_user_email').val($('#activation_email').val());
								$('#activation_user_confirm_email_confirm').val($('#activation_email').val());
								$('#activation_user_property_identifier').val(data.property_identifier);
								$('#activation_user_waste_round_code').val(data.waste_round_code);
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('success1');
								$('#activationPanel').dialog("option","title","Congratulations...");
								$('#activationPanel').dialog("option","height","727px");
								$('#activationPanel').dialog("option","position",['center',15]);
								$('#activationPanel').css('height','auto');
								$('#activationFormBox').hide();
								$('.successResponse1 .successText').text($('#success1_message_hidden').text());
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.successResponse1').show();
								break;
							case '2':
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('success2');
								$('#activationPanel').dialog("option","title","Welcome Back!");
								$('#activationPanel').dialog("option","height","104px");
								$('#activationPanel').dialog("option","position","center");
								$('#activationPanel').css('height','auto');
								$('#activationFormBox').hide();
								$('.successResponse2 .successText').text($('#success2_message_hidden').text());
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.successResponse2').show();
								break;
						}
						break;
					case 'error':
						switch(resultCode) {
							case '0':
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('error0');
								$('#activationPanel').dialog("option","title","Account Activation");
								$('#activationPanel').dialog("option","height","194px");
								$('#activationPanel').dialog("option","position","center");
								$('#activationPanel').css('height','auto');
								$('.errorResponse0 .errorText').text('An unknown error occured. Please try again...');
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.errorResponse0').show();
								break;
							case '1':
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('error1');
								$('#activationPanel').dialog("option","title","Account Activation");
								$('#activationPanel').dialog("option","height","194px");
								$('#activationPanel').dialog("option","position","center");
								$('#activationPanel').css('height','auto');
								$('.errorResponse1 .errorText').text($('#error1_message_hidden').text());
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.errorResponse1').show();
								break;
							case '2':
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('error2');
								$('#activationPanel').dialog("option","title","Account Activation");
								$('#activationPanel').dialog("option","height","234px");
								$('#activationPanel').dialog("option","position","center");
								$('#activationPanel').css('height','auto');
								$('.errorResponse2 .errorText').text($('#error2_message_hidden').text());
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.errorResponse2').show();
								break;
							case '3':
								$('.ui-dialog-activationPanel').removeClass('success1').removeClass('success2').removeClass('error0').removeClass('error1').removeClass('error2').removeClass('error3');
								$('.ui-dialog-activationPanel').addClass('error3');
								$('#activationPanel').dialog("option","title","Account Activation");
								$('#activationPanel').dialog("option","height","234px");
								$('#activationPanel').dialog("option","position","center");
								$('#activationPanel').css('height','auto');
								$('.errorResponse3 .errorText').text($('#error3_message_hidden').text());
								$('.errorResponse').hide();
								$('.successResponse').hide();
								$('.errorResponse3').show();
								break;
						}
						break;
				}
			}
		});
		
		return false;
	}
}
function doLogin() {
	$('#activationPanel').dialog('close');
	showLoginPanel('Login','Please enter your email address and password below.','');
}

function showDonationPanel(imageId) {
	donationItem = imageId;
	var dialogTitle = 'Donate My Points to \'' + donationArray[imageId]['name'] + '\'';
	$('#donationPanel').dialog("option","title",dialogTitle);
	$('#donationPanelImage img').attr('src',donationArray[imageId]['image']);
	$('#donationPanelDescriptionText').html(donationArray[imageId]['description']);
	$('#donationPanel').dialog('open');
}
function doDonation() {
	if(donationProcessing) {
		alert('There is already a donation in progress, please try again shortly.');
	}
	else {
		donationProcessing = true;
		var ajaxURL = "/xmlservice.php?service=customService&customService=checkDonation&itemId="+donationItem+'&pointsToSpend='+pointsToAssign;
		$.ajax({
			type: "GET",
			url: ajaxURL,
			dataType: "json",
			success: function(data) {
				var result = data.type;
				var resultMessage = data.message;
				if(result == 'success') {
					$('#donation_product_id').val(data.productId);
					$('#donation_product_quantity').val(data.productQuantity);
					$.ajax({
						url:'/manage_basket.php',
						type:"POST",
						data:$('#addDonation').serialize(),
						success: function(data, status){
							$.ajax({
								url:'/redirect.php?uri=order_confirmation',
								type:"POST",
								data:$('#confirmDonation').serialize(),
								success: function(data, status){
									if(data.indexOf('basketError') == -1) {
										alert('Thank you for your donation.');
										window.location.reload();
									}
									else {
										alert('There was an error while processing your donation, please try again.');
										donationProcessing = false;
									}
								},
								error: function(msg){
									alert("Error: " + msg);
									donationProcessing = false;
								}
							});
						},
						error: function(msg){
							alert("Error: " + msg);
							donationProcessing = false;
						}
					});
				}
				else {
					alert(resultMessage);
					donationProcessing = false;
				}
			},
			error: function() {
				donationProcessing = false;
			}
		});
	}
}

