var rootUrl = location.protocol + "//" + location.host + "/";

function Setup() {
    UpdateCartDisplay();
    SetSearch(document.getElementById("ctl00_txtSearch"));
    
    var dropdownid = "ctl00_ContentPlaceHolder_cboTitle";
    var otherboxid = "ctl00_ContentPlaceHolder_txtTitle";
    
    var dropdown = document.getElementById(dropdownid);
    var otherbox = document.getElementById(otherboxid);
    
    if(dropdown != null && otherbox != null) {
        TitleOther(dropdownid, otherboxid);
    }    
}

// template search box ///
function ClearSearch(search) {
    if(search.value == "product search ..") {
        search.value = "";
    }
    else {
        SearchCount(search.value);
    }
}
function SetSearch(search) {
    if(search.value.length == 0) {
        search.value = "product search ..";
    }
    ToggleSearchCount(false);
}

function TitleOther(dropdownid, otherboxid) {
    
    var dropdown = document.getElementById(dropdownid);
    var otherbox = document.getElementById(otherboxid);
    
    if(dropdown.options[dropdown.selectedIndex].value == "other") {
        otherbox.style.display = "";
    }
    else {
        otherbox.style.display = "none";
    }
}

// products ///
function TogglePanel(panel) {

    var item = document.getElementById(panel);
    var anim = new AnimatableNode(item);
             
    if(item.style.height.length == 0) {            
        anim.setValue("height", 0);
        AnimationLibrary.animate(anim, 300, "height", 75);
    }
    else {
        anim.setValue("height", 65);
        AnimationLibrary.animate(anim, 300, "height", 0, "onComplete", function() { item.style.height = ""; });
    }
    
    //var button = document.getElementById(quickBuyId);
    /*if(button.src.indexOf("btn_quick_buy.jpg") != -1) {
        button.src = button.src.replace("btn_quick_buy.jpg","btn_quick_buy_close.jpg");
    }
    else {
        button.src = button.src.replace("btn_quick_buy_close.jpg","btn_quick_buy.jpg");
    }*/
}

function AddToCart(panelId, textboxId, id, clicked_btn, type, txtWidth, txtLength) {
    
    var bespoke;
    var width;
    var length;
    
    var qty = document.getElementById(textboxId).value;
    
    // validate
    if(IsNumeric(qty) == false || qty.length == 0 || qty == 0) {
        alert("The quantity you entered is not valid");
        return;
    }
    
    // if width and length textbox id's were supplied..
    if(txtWidth != null || txtLength != null) {
        // this is a bespoke product
        bespoke = true;
        width = document.getElementById(txtWidth).value;
        length = document.getElementById(txtLength).value;
        
        if(width < 12 || length < 12) {
            alert("Sorry, the smallest size that we can make is 12 x 12");
            return;
        }
    }
    else {
        bespoke = false;    // normal product
        width = -1;
        length = -1;
    }
    
     // validate
    if(IsNumeric(width) == false || width.length == 0 || width == 0 ||
       IsNumeric(length) == false || length.length == 0 || length == 0) {
       alert("Please enter the width and length that you require");
       return;
    }   
         
    FlyToBasket(clicked_btn);
    
    if(panelId != null) {
        setTimeout("TogglePanel('" + panelId + "')",500); // 1 / 2 second
    }
    setTimeout("UpdateSession('" + id + "', '" + qty + "', true, '" + type + "', '" + width + "', '" + length + "')",500); // 1 / 2 second
}

// cart ///
function RemoveFromCart(productId, type, width, length) {

    var w;
    var d;
    
    // if width and length supplied..
    if(width != null || length != null) {
        // this is a bespoke product
        w = width;
        d = length;
    }
    else {
        w = -1;
        d = -1;
    }

    UpdateSession(productId, 0, false, type, w, d);
}
function EmptyCart() {
    
}
function UpdateSession(productId, qty, add, type, width, length) {
    
    // random number to prevent IE cache
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var service;
    var params = "?p=" + productId + "&q=" + qty + "&t=" + type + "&w=" + width + "&d=" + length;
    
    // are we in add mode?
    if(add) {
        service = rootUrl + "dataservice/CartAddItem.ashx";
    }
    else {  // otherwise, we are in delete mode
        service = rootUrl + "dataservice/CartRemoveItems.ashx";
    }
    
    var xmlHttpObj = CreateXmlHttpRequestObject();
    
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                UpdateCartDisplay();
            }
        }
        
        xmlHttpObj.send(null);
    }
}
 
function UpdateCartDisplay() {
    
    // random number to prevent IE cache
    var rand = "?rand=" + Math.floor(Math.random()*1000001);
    var service = rootUrl + "dataservice/CartDisplay.ashx";
    var target = document.getElementById("shopping_cart");

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                target.innerHTML = xmlHttpObj.responseText;
            }
        }
        
        xmlHttpObj.send(null);
    }
}


function FillAddressForm(lstAddresses) {
    
    // get the selected address id
    var listbox = document.getElementById(lstAddresses);
    
    if(listbox.selectedIndex == -1) {
        alert("Please select an address from the list");
        return;
    }
    
    var addressId = listbox.options[listbox.selectedIndex].value;

    // get form controls
    var txtAddress1 = document.getElementById("ctl00_ContentPlaceHolder_txtAddress1");
    var txtAddress2 = document.getElementById("ctl00_ContentPlaceHolder_txtAddress2");
    var txtAddress3 = document.getElementById("ctl00_ContentPlaceHolder_txtAddress3");
    var txtTown = document.getElementById("ctl00_ContentPlaceHolder_txtTown");
    var txtCounty = document.getElementById("ctl00_ContentPlaceHolder_txtCounty");
    var txtPostcode = document.getElementById("ctl00_ContentPlaceHolder_txtPostcode");
    
    
    // random number to prevent IE cache
    var params = "?id=" + addressId;
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var service = rootUrl + "dataservice/AddressLookupById.ashx";

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
            
                var input = xmlHttpObj.responseText.split(",");
                
                txtAddress1.value = input[0];
                txtAddress2.value = input[1];
                txtAddress3.value = input[2];
                txtTown.value = input[3];
                txtCounty.value = input[4];
                txtPostcode.value = input[5];
                
                HideAddressLookup();
            }
        }
        
        xmlHttpObj.send(null);
    }
}

function HideAddressLookup() {
    var item = document.getElementById("postcode_ajax_result");
    
    item.innerHTML = "";
    
    var anim = new AnimatableNode(item);
                       
    anim.setValue("height", 230);
    AnimationLibrary.animate(anim, 350, "height", 0, "onComplete", function () { item.style.display = ""; });
}

function AddressLookup(txtPostcode) {

    var item = document.getElementById("postcode_ajax_result");
    var postcode = document.getElementById(txtPostcode).value;
    
    if(postcode.length < 5) {
        alert("Please enter a valid postcode");
        return;
    }
    
    if(item.style.height == '0px') {
        var anim = new AnimatableNode(item);
                       
        anim.setValue("height", 0);
        AnimationLibrary.animate(anim, 350, "height", 230, "onComplete", function () { AddressByPostCode(item, postcode); });
    }
    else if(item.style.height == '230px') {
        AddressByPostCode(item, postcode);
    }
}

function AddressByPostCode(results, postcode) {
      
    results.style.display = "";
    
    // random number to prevent IE cache
    var params = "?pc=" + postcode;
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var service = rootUrl + "dataservice/AddressLookupByPostcode.ashx";

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_LOADING) {
                results.innerHTML = "<div class=\"lookup_loading\"><img src=\""+ rootUrl + "images/anim_loading.gif\" /></div>";
            }
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                results.innerHTML = xmlHttpObj.responseText;
            }
        }
        
        xmlHttpObj.send(null);
    }
}

function AddressById(id) {
         
    // random number to prevent IE cache
    var params = "?pc=" + postcode;
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var service = rootUrl + "dataservice/AddressLookupById.ashx";

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            
        }
        
        xmlHttpObj.send(null);
    }
}

function EmailIsUnique(txtEmail, result_div) {
    
    var email = document.getElementById(txtEmail).value;
    var results = document.getElementById(result_div);
    
    if(email.length == 0) {
        return;
    }
    
    // random number to prevent IE cache
    var params = "?e=" + email;
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var service = rootUrl + "dataservice/UserEmailIsUnique.ashx";

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
            
                if(xmlHttpObj.responseText == "") {
                    results.innerHTML = "";
                    results.style.display = "none";
                }
                else {
                    results.innerHTML = xmlHttpObj.responseText;
                    results.style.display = "";
                }
            }
        }
        
        xmlHttpObj.send(null);
    }
}

function SearchCount(keyword) {
      
    var results = document.getElementById("search_count");
     
    if(keyword.length == 0 || keyword == "product search ..") {
        ToggleSearchCount(false);
    }
    else {
        
        if(results.style.display = "none") {
            ToggleSearchCount(true);
        }
        
        // random number to prevent IE cache
        var params = "?k=" + keyword;
        var rand = "&rand=" + Math.floor(Math.random()*1000001);
        var service = rootUrl + "dataservice/SearchCount.ashx";
        
        var xmlHttpObj = CreateXmlHttpRequestObject();
      
        if (xmlHttpObj) {
            xmlHttpObj.open("GET", service + params + rand, true);
            xmlHttpObj.onreadystatechange = function()
            {
                if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                    results.innerHTML = "<span id=\"count\">" +
                                            xmlHttpObj.responseText +
                                        "</span> " +
                                        "results for <strong>"+keyword+"</strong>";
                }
            }
            
            xmlHttpObj.send(null);
        }
    }
}
function ToggleSearchCount(blnShow) {

    var item = document.getElementById("search_count");
    var anim = new AnimatableNode(item);
    
    if(blnShow) {
        anim.setValue("opacity", 100);
        item.style.display = "";
    }
    else {
        anim.setValue("opacity", 100);
        AnimationLibrary.animate(anim, 300, "opacity", 0, "onComplete", function() { item.style.display = "none"; });
    }
}

function GetBespokePrice(txtWidth, txtLength, productId, targetId) {
    
    var width = document.getElementById(txtWidth).value;
    var length = document.getElementById(txtLength).value;
    var target = document.getElementById(targetId);
    
    // random number to prevent IE cache
    var rand = "&rand=" + Math.floor(Math.random()*1000001);
    var params = "?w=" + width + "&d=" + length + "&id=" + productId;
    var service = rootUrl + "dataservice/CalcBespokePrice.ashx";

    var xmlHttpObj = CreateXmlHttpRequestObject();
  
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", service + params + rand, true);
        xmlHttpObj.onreadystatechange = function()
        {
            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                target.innerHTML = xmlHttpObj.responseText;
            }
        }
        
        xmlHttpObj.send(null);
    }
}

function ScrollWindow() {
              
    var x = 0;
    var y = getTopPos(document.getElementById("kits_anchor"));
    
    var item = document.body;
    var anim = new AnimatableNode(item);
    
    anim.setValue("scrollPos", CurrentScrollPos());
    AnimationLibrary.animate(anim, 800, "scrollPos", y, "bias", .8);
}

function CurrentScrollPos() {
    
    var ScrollTop = document.body.scrollTop;
    if (ScrollTop == 0)
    {
        if (window.pageYOffset)
            ScrollTop = window.pageYOffset;
        else
            ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }
    
    return ScrollTop;
}

















/************************************************************************************************************
(C) www.dhtmlgoodies.com, March 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Version:
	1.0	Released	March. 3rd 2006

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/

var flyingSpeed = 25;

var shopping_cart_div = false;
var flyingDiv = false;

var shopping_cart_x = false;
var shopping_cart_y = false;

var diffX = false;
var diffY = false;

var currentXPos = false;
var currentYPos = false;


function getTopPos(inputObj)
{		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue + 10;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue + 50;
}
	
function FlyToBasket(fly_element)
{
	if(!shopping_cart_div)shopping_cart_div = document.getElementById('shopping_cart');
	if(!flyingDiv){
		flyingDiv = document.createElement('DIV');
		flyingDiv.style.position = 'absolute';
		document.body.appendChild(flyingDiv);
	}
	
	shopping_cart_x = getLeftPos(shopping_cart_div);
	shopping_cart_y = getTopPos(shopping_cart_div);

	currentXPos = getLeftPos(fly_element);
	currentYPos = getTopPos(fly_element);
	
	diffX = shopping_cart_x - currentXPos;
	diffY = shopping_cart_y - currentYPos;
	
	var shoppingContentCopy = fly_element.cloneNode(true);
	shoppingContentCopy.id='';
	flyingDiv.innerHTML = '';
	flyingDiv.style.left = currentXPos + 'px';
	flyingDiv.style.top = currentYPos + 'px';
	flyingDiv.appendChild(shoppingContentCopy);
	flyingDiv.style.display='block';
	flyingDiv.style.width = fly_element.offsetWidth + 'px';
	RunAnimation();
}


function RunAnimation()
{
	var maxDiff = Math.max(Math.abs(diffX),Math.abs(diffY));
	var moveX = (diffX / maxDiff) * flyingSpeed;;
	var moveY = (diffY / maxDiff) * flyingSpeed;
	    	
	currentXPos = currentXPos + moveX;
	currentYPos = currentYPos + moveY;
	
	flyingDiv.style.left = Math.round(currentXPos) + 'px';
	flyingDiv.style.top = Math.round(currentYPos) + 'px';	
	
	
	if(moveX>0 && currentXPos > shopping_cart_x){
		flyingDiv.style.display='none';		
	}
	if(moveX<0 && currentXPos < shopping_cart_x){
		flyingDiv.style.display='none';		
	}
	
	if(flyingDiv.style.display=='block')setTimeout('RunAnimation()',10);
}