function bookmark(strTitle, strUrl){

    if (window.sidebar)
    {
        window.sidebar.addPanel(strTitle, strUrl, "");
    }
    else if (window.opera && window.print)
    {
        var elem = document.createElement('a');
        elem.setAttribute('href', strUrl);
        elem.setAttribute('title', strTitle);
        elem.setAttribute('rel', 'sidebar');
        elem.click();
    }
    else if (document.all)
    {
        window.external.AddFavorite(strUrl, strTitle);
    }
}

function unsetDefault(objInput)
{
	if ($(objInput).val() == $(objInput).attr('default'))
	{
		$(objInput).val("");
	}
}

function resetDefault(objInput)
{
	if ($(objInput).val() == "")
	{
		$(objInput).val($(objInput).attr('default'));
	}
}

function changeAccountType(bShow)
{
	if (bShow)
	{
		$("#accountTypeHead").css("display", 'block');
		$("#accountTypeBody").css("display", 'block');
	}
	else
	{
		$("#accountTypeHead").css("display", 'none');
		$("#accountTypeBody").css("display", 'none');
	}
}

function showTab(objLink, strContainer, strTab)
{
	$(strContainer + "  > li").removeClass("selected");
	$(".tabContent").hide();
	
	$(objLink).addClass("selected");
	
	$(strTab).show();
}

function displayQuickBasket()
{
    $.post(
        '/ajax.php?x=quickBasket',
        { },
        function(data)
        {
            $('#quickBasket').html(data);
        }
    );
}

function addToBasketAjax(prodId, qtyField)
{
    var qty = $('#' + qtyField).val();
    $.post(
        '/ajax.php?x=addToBasket',
        {
           id : prodId,
           quantity : qty
        },
        function(data)
        {
            displayQuickBasket();
            $('#basketPrompt_' + prodId).css('display', 'block');
            window.setTimeout(function(){ $('#basketPrompt_' + prodId).css('display', 'none'); }, 3000);
        }
    );
}

function addToBasketInline(strProductId, strInput, strBasketPrompt)
{
    var iQuantity = $('#' + strInput).val();
    $.post(
        '/ajax.php?x=addToBasket',
        {
           id : strProductId,
           quantity : iQuantity
        },
        function(data)
        {
            displayQuickBasket();
     
            var arrOffset = $('#' + strBasketPrompt).position();
            var iWidth = $('#' + strBasketPrompt).outerWidth();
            var iHeight = $('#' + strBasketPrompt).outerHeight();
            
            var iPromptHeight = $('#basketPrompt').outerHeight();
            var iPromptWidth = $('#basketPrompt').outerWidth();
            
            var iNewTop = arrOffset.top - iPromptHeight;
            var iNewLeft =  arrOffset.left + (iWidth / 2) - (iPromptWidth / 2) + 30;

            $('#basketPrompt').css({top: iNewTop, left: iNewLeft});
            $('#basketPrompt').fadeIn(1000, function()
            {
            	$('#basketPrompt').delay(1000).fadeOut(1000);
            });
        }
    );
}

function buyNowAjax(prodId, qtyField)
{
    var qty = $('#' + qtyField).val();
    $.post(
        '/ajax.php?x=addToBasket',
        {
           id : prodId,
           quantity : qty
        },
        function(data)
        {
            window.location.href = '/order/process';
        }
    );
}

function removeFromBasketQuick(prodId)
{
    $.post(
        '/ajax.php?x=removeFromBasket',
        {
           id : prodId
        },
        function(data)
        {
            displayQuickBasket();
        }
    );
}

function removeFromBasket(prodId)
{
    $.post(
        '/ajax.php?x=removeFromBasket',
        {
           id : prodId
        },
        function(data)
        {
            window.location.reload();
        }
    );
}

function quickSearch()
{
    var searchTerm = encodeURIComponent($('input#searchInput').val());
    document.location = '/product/search/' + searchTerm;
}

function emptyBasket()
{

}

function toggleDiv(strId)
{
	if ($(strId).css('display') == 'none')
	{
		$(strId).show('slow');
	}
	else
	{
		$(strId).hide('slow');
	}
	
}
function drillDown(strOption)
{
    var iMin = $('#' + strOption + '_min').val();
    var iMax = $('#' + strOption + '_max').val();
    $.post(
        '/ajax.php?x=drillDown',
        {
            option : strOption,
            min : iMin,
            max : iMax
        },
        function(data)
        {
            window.location.reload();
        }
    );
}

function resetOption(strOption)
{
    $.post(
        '/ajax.php?x=resetOption',
        {
            option : strOption
        },
        function(data)
        {
            window.location.reload();
        }
    );
}



function postcodeSearch(strStub)
{
    var strPostcode = $("#" + strStub + "PostcodeLookup").val();
    
    if (strPostcode != "")
    {
    	$("#" + strStub + "Loading").show();
    	
        $.post(
        '/ajax.php?x=postcodeLookup',
        {
          postcode: strPostcode,
          stub : strStub
        },
        function(strHtml)
        {
        	$("#" + strStub + "Loading").hide();
            $("#" + strStub + "PostcodeResults").html(strHtml);
        }
        );
    }
    else
    {
        alert("Please enter a postcode first");
    }
    
    return false;
}

function toggleDeliveryAddress()
{
  if ($("[name=deliveryDifferent]").is(":checked"))
  {
    $("[name=deliveryAsBilling]").val("false");
    $("#deliveryAddress").show("slide", {direction: "up"});
  }
  else
  {
    $("[name=deliveryAsBilling]").val("true");
    $("#deliveryAddress").hide("slide", {direction: "up"});
  }
}

function completeDeliveryDetails()
{
  $("#error").html("");

  var bValid = false;

  if (areDetailsValid())
  {
    if (isBillingAddressValid())
    {
      if ($("[name=deliveryDifferent]").is(":checked"))
      {
        if (isDeliveryAddressValid())
        {
          bValid = true;
        }
      }
      else
      {
        bValid = true;
      }
    }
  }

  if (!bValid)
  {
    $('html, body').animate({ scrollTop: $("#error").position().top }, 'slow');
  }
  
  else  
  {
	  $("#yourDetails").submit();
  }
  return bValid;
}


function areDetailsValid(bIsEditing)
{
  var bValid = true;

  bValid = validateItem("billingFirstName", bValid);
  bValid = validateItem("billingSurname", bValid);
  bValid = validateItem("billingPhone", bValid);
  bValid = validateItem("billingMobile", bValid);

  if (bValid)
  {
    bValid = validateEmail("customerEmail", bValid);

    if (!bValid)
    {
      $("#error").html("Please enter a valid email address.");
    }
    else if (!bIsEditing && $("[name=customerConfirmEmail]").val() != $("[name=customerEmail]").val())
    {
      bValid = false;

      $("#error").html("Please confirm your email addresses match");
    }
    
  }
  else
  {
    $("#error").html("Please complete your contact details");
  }

  if (bValid)
  {
	  if ($("#createAccount").is(":checked"))
	  {
		  bValid = validateItem("regPassword", bValid);
		  bValid = validateItem("regPasswordConfirm", bValid);
		  
		  if (bValid)
		  {
			 if ($("[name=regPassword]").val() != $("[name=regPasswordConfirm]").val())
			 {
				 $("#error").html("Please make sure your passwords match");
				 bValid = false;
			 }
		  }
		  else
		  {
			  $("#error").html("Please enter a password to create an account");
		  }
	  }
  }
  return bValid;
}

function isBillingAddressValid()
{
  var bValid = true;

  bValid = validateItem("billingAddress1", bValid);
  bValid = validateItem("billingCity", bValid);
  bValid = validateItem("billingPostCode", bValid);

  if (!bValid)
  {
    $("#error").html("Please complete your billing address");
  }
  
  return bValid;
}

function isDeliveryAddressValid()
{
  var bValid = true;

  bValid = validateItem("deliveryFirstName", bValid);
  bValid = validateItem("deliveryLastName", bValid);
  bValid = validateItem("deliveryAddress1", bValid);
  bValid = validateItem("deliveryCity", bValid);
  bValid = validateItem("deliveryPostCode", bValid);

  if (!bValid)
  {
    $("#error").html("Please complete your delivery address");
  }

  return bValid;
}

function validateItem(strId, bValid)
{
  if (!bValid)
  {
    return false;
  }
  
  if ($("[name=" + strId + "]").val() != "")
  {
    return true;
  }
  
  return false;
}

function validateEmail(strId, bValid)
{
	
  if (!bValid)
  {
    return false;
  }
  
  var strEmail = $("[name=" + strId + "]").val()

  var strExpression = "^[\\w-_\.+]*[\\w-_\.]\@([\\w-_]+\\.)+[\\w]+[\\w]$";
  var objReg = new RegExp(strExpression);

  return objReg.test(strEmail);
}


function copyBillingToDelivery()
{
	$('#deliveryAddress1').val($('#billingAddress1').val());
	$('#deliveryAddress2').val($('#billingAddress2').val());
	$('#deliveryCity').val($('#billingCity').val());
	$('#deliveryCounty').val($('#billingCounty').val());
	$('#deliveryCountry').val($('#billingCountry').val());
	$('#deliveryPostCode').val($('#billingPostCode').val());
}

function validateItem(strId, bValid)
{
	var bItemValid = false;

  
  if ($("[name=" + strId + "]").val() != "")
  {
	  $("[name=" + strId + "]").removeClass("errorInput");
	  bItemValid = true;
  }
  else
  {
	  $("[name=" + strId + "]").addClass("errorInput");
  }
  
  if (bValid && bItemValid)
  {
	  return true;
  }
  else
  {
  	  return false;
  }
}

function isRegValid()
{
  var bValid = true;

  bValid = validateItem("username", bValid);
  bValid = validateItem("contactFirstName", bValid);
  bValid = validateItem("contactSurname", bValid);
  bValid = validateItem("contactDayTel", bValid);
  bValid = validateItem("contactMobile", bValid);
  bValid = validateEmail("contactEmail", bValid);
  bValid = validateItem("regPassword", bValid);
  bValid = validateItem("regPasswordConfirm", bValid);
  bValid = validateItem("billingAddress1", bValid);
  bValid = validateItem("billingCity", bValid);
  bValid = validateItem("billingCounty", bValid);
  bValid = validateItem("billingPostCode", bValid);
  bValid = validateItem("deliveryAddress1", bValid);
  bValid = validateItem("deliveryCity", bValid);
  bValid = validateItem("deliveryCounty", bValid);
  bValid = validateItem("deliveryCountry", bValid);
  bValid = validateItem("deliveryPostCode", bValid);
  
  if (!bValid)
  {
    $("#error").html("Please complete all required details.");
  }
  
  if (bValid)
  {
  	if ($('[name=regPassword]').val() != '' && $('[name=regPassword]').val() != $('[name=regPasswordConfirm]').val())
	{
  		bValid = false;
  		$("#error").html("Please ensure both passwords match.");
	}
  }

  if (!bValid)
  { 
	  $('html, body').animate({ scrollTop: $("#error").position().top }, 'slow');
  }
  else
  {
	  $("#registrationForm").submit();
  }
  
}

function validateEmail(strId, bValid)
{
	var bItemValid = false;
  
  var strEmail = $("[name=" + strId + "]").val()

  var strExpression = "^[\\w-_\.+]*[\\w-_\.]\@([\\w-_]+\\.)+[\\w]+[\\w]$";
  var objReg = new RegExp(strExpression);

  if ( objReg.test(strEmail))
  {
	  $("[name=" + strId + "]").removeClass("errorInput");
	  bItemValid = true;
  }
  else
  {
	  $("[name=" + strId + "]").addClass("errorInput");
  }
  
  if (bValid && bItemValid)
  {
	  return true;
  }
  else
  {
  	  return false;
  }
  
}

function validateForm(strForm)
{
  var bOk = true;

  $("#error").html("");
  $("#error").removeClass("errorBox");
  $(":input").each(function()
  {
    if ($(this).attr("required") + "" == "true" && $(this).val() == "")
    {
      $("#error").html("Please complete the required elements");
      bOk = false;
    }

    if ($(this).attr("email") == "true")
    {
      var strExpression = "^[\\w-_\.+]*[\\w-_\.]\@([\\w-_]+\\.)+[\\w]+[\\w]$";
      var objReg = new RegExp(strExpression);

      if (!objReg.test($(this).val()))
      {
        $("#error").html("Please enter a valid email address");
        bOk = false;
      }
    }
  });

  if (!bOk)
  {
    $("#error").addClass("errorBox");
    $('html,body').animate({ scrollTop: $("#error").offset().top - 64 }, { duration: 'slow', easing: 'swing' });
    
  }

  return bOk;
}


function submitContact()
{
	if (validateForm('contactForm'))
	{
		$('#contactForm').submit(); 
	}
}

function saveDetails()
{
  $("#error").html("");

  var bValid = false;
  $("#error").removeClass("errorBox");
  
  if (areDetailsValid(true))
  {
    if (isBillingAddressValid())
    {
      if ($("[name=deliveryDifferent]").is(":checked"))
      {
        if (isDeliveryAddressValid())
        {
          bValid = true;
        }
      }
      else
      {
        bValid = true;
      }
    }
  }
  if (bValid)
  {
  	if ($('[name=password]').val() != '' && $('[name=password]').val() != $('[name=confirmPassword]').val())
	{
  		bValid = false;
  		$("#error").html("Please ensure both passwords match.");
	}
  }
  if (!bValid)
  {
	  $("#error").addClass("errorBox");
    $('html, body').animate({ scrollTop: $("#error").position().top }, 'slow');
  }
  else
 {
	  $("#userForm").submit();
 }

}

function createAccountTog()
{
	  if ($("[name=createAccount]").is(":checked"))
	  {
	    $("#togglePasswords").show();
	  }
	  else
	  {
	    $("#togglePasswords").hide();
	  }
}

function changeAddress(objSelect, strStub)
{
    var objOption = $(objSelect.value);
    
    $("[name=" + strStub + "Address1]").val($(objOption).attr("address1"));
    $("[name=" + strStub + "Address2]").val($(objOption).attr("address2"));
    $("[name=" + strStub + "City]").val($(objOption).attr("town"));
    $("[name=" + strStub + "County]").val($(objOption).attr("county"));
    $("[name=" + strStub + "PostCode]").val($(objOption).attr("postcode"));
}

$(document).ready(function ()
{
	$('#billingPostcodeLookup').keypress(function(e) 
			{
				if(e.which == 13) 
				{
					postcodeSearch("billing");
				}
			});

			$('#deliveryPostcodeLookup').keypress(function(e) 
			{
			    if(e.which == 13) 
			    {
			    	postcodeSearch("delivery");
			    }
			});
});

//copyright 1999 Idocs, Inc. http://www.idocs.com
//Distribute this script freely but keep this notice in place
function letternumber(e)
{
var key;
var keychar;

if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();

//control keys
if ((key==null) || (key==0) || (key==8) || 
 (key==9) || (key==13) || (key==27) )
return true;

//alphas and numbers
else if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1))
return true;
else
return false;
}
