﻿var optionsLeft = new Array();
var productMainImage;

//var onload = document.body.

    function setStyle(obj,style,value){}

	function popup(mylink, windowname, width, height, scroll) {
		if (!window.focus) return true;
		
		var href;
		var scrolls = 'no';
		if (mylink === 'string') { href = mylink; }
		else { href = mylink.href; }
		
		if (scroll === 1) {scrolls = 'yes';}
		
		window.open(href, windowname, 'scrollbars=' + scrolls + ', location=0, status=no,width=' + width + ',height=' + height);
		
		return false;
}

function addEvent(domObj, eventName, func, useCapture) {
    if (domObj.addEventListener) {
        domObj.addEventListener(eventName, func, useCapture);
		return true;
	}
	else if (domObj.attachEvent) {
		var r = domObj.attachEvent('on' + eventName, func);
		return r;
	}
	else { domObj['on' + eventName] = func; }
}

function removeEvent(obj, eventName) { }

function AddToOptionList(optionList, name, value, isDisabled) {
    var option = document.createElement('option');
    option.text = name;
    option.value = value;
    if (isDisabled) { option.disabled = "disabled"; }
    optionList.options.add(option);
}

function ClearOptionList(optionList) { optionList.length = 0; }

function selectOption(ddl) {
    var selectedValue = parseInt(ddl.value);
    if (selectedValue > 0) {
        var found = false;
        var optionNumber;
        for (var i = 0; i < optionDdls.length; i++) {
            if (ddl.id === optionDdls[i].optionListId) {
                found = true;
                optionNumber = i;
                i = optionDdls.length;
            }
        }

        if (getOption(optionNumber + 1, selectedValue)) { return true; }

        for (var i = optionNumber + 1; i < optionDdls.length; i++) {
            var obj = document.getElementById(optionDdls[i].optionListId);
            if (obj != null) { ClearOptionList(obj); AddToOptionList(obj, "-", "-1",false); obj.disabled = 1; }
        }

        var newOptions = document.getElementById(optionDdls[optionNumber]);
        if (newOptions != null) {
            ClearOptionList(newOptions);
            AddToOptionList(newOptions, "Select Option", "-1", true);
            newOptions.disabled = 0;
            for (var i = 0; i < productOptions.length; i++) {
                if (productOptions[i].OptionNumber === optionNumber + 1)
                { AddToOptionList(newOptions, productOptions[i].Name, productOptions[i].Option,false); }
            }
        }
    }
}

function getOption(optionNumber, selectedOption) {
    var newSelectedOptions = new Array;
    var oldOptionsLeft;
    if (optionNumber === 1) { oldOptionsLeft = productItems }
    else { oldOptionsLeft = optionsLeft }

    switch (optionNumber) {
        case 1:
            for (var i = 0; i < oldOptionsLeft.length; i++) {
                if (oldOptionsLeft[i].Option1 === selectedOption)
                { newSelectedOptions[newSelectedOptions.length] = oldOptionsLeft[i]; }
            }
            break;
        case 2:
            for (var i = 0; i < oldOptions.length; i++) {
                if (oldOptionsLeft[i].Option2 === selectedOption)
                { newSelectedOptions[newSelectedOptions.length] = oldOptionsLeft[i]; }
            }
            break;
        case 3:
            for (var i = 0; i < oldOptions.length; i++) {
                if (oldOptionsLeft[i].Option3 === selectedOption)
                { newSelectedOptions[newSelectedOptions.length] = oldOptionsLeft[i]; }
            }
            break;
        case 4:
            for (var i = 0; i < oldOptions.length; i++) {
                if (oldOptionsLeft[i].Option4 === selectedOption)
                { newSelectedOptions[newSelectedOptions.length] = oldOptionsLeft[i]; }
            }
            break;
        case 5:
            for (var i = 0; i < oldOptions.length; i++) {
                if (oldOptionsLeft[i].Option5 === selectedOption)
                { newSelectedOptions[newSelectedOptions.length] = oldOptionsLeft[i]; }
            }
            break;
        default: break;
    }
    optionsLeft = newSelectedOptions;
    switch (optionsLeft.length) {
        case 0: break;
        case 1: ShowDetails(optionsLeft[0]); return true; break;
        default: return false; break;
    }
}

function ShowDetails(finalOption) {
    var _basketButton = document.getElementById(buttons[0].ControlId);
    var _notifyButton = document.getElementById(buttons[1].ControlId);
    var _wishlistButton = document.getElementById(buttons[2].ControlId);
    var _selectedProductId = document.getElementById(selectedProductFld);
    var _selectedProductQty = document.getElementById(selectedProductQty);

    var _itemsInStock = document.getElementById(ctlItemsInStockLabel);
    var _itemDeliveryTime = document.getElementById(ctlDeliveryTimeLabel);

    if (_selectedProductId != null) { _selectedProductId.value = finalOption.ProductId; }
    if (_wishlistButton != null) { _wishlistButton.className = buttons[2].defaultClass; }
    if (_selectedProductQty != null) {
        _selectedProductQty.value = (finalOption.Stock != null) ? finalOption.Stock : 0;
        _itemsInStock.innerHTML = (finalOption.Stock != null && finalOption.Stock > 0) ? finalOption.Stock + ' Items in Stock' : 'Out Of Stock';
        _itemDeliveryTime.innerHTML = (finalOption.Stock != null && finalOption.Stock > 0) ? '2 - 3 days' : GetTimePeriod(finalOption.DueDays);
         }
    if (_basketButton != null && _notifyButton != null){
        if (finalOption.Stock != null && finalOption.Stock > 0){
            _basketButton.className = buttons[0].defaultClass; _notifyButton.className = "hidden";}
        else {_notifyButton.className = buttons[1].defaultClass; _basketButton.className = "hidden";}
    }
    ShowNewPrices(finalOption);
    ShowLoyaltyPoints(finalOption);
    //Page_ClientValidate(addItemValidationGroup);
}
function ShowLoyaltyPoints(productOption) {
    var _lylBonusContainer = document.getElementById(_loyaltyBonusContainer);
    _lylBonusContainer.className = (productOption.BonusPoints != null && productOption.BonusPoints > 0) ? "" : "hidden";

    var _lylPointsContainer = document.getElementById(_loyaltyPointsContainer);
    switch (true) {
        case (productOption.BonusPoints > 0):
            _lylPointsContainer.className = "loyaltyPoints bonus";
            break;
        case (productOption.LoyaltyPoints > 0):
            _lylPointsContainer.className = "loyaltyPoints";
            break;
        default:
            _lylPointsContainer.className = "hidden";
     }
    
    var _lylBase = document.getElementById(_loyaltyContainers[0].Value);
    var _lylBaseWorth = document.getElementById(_loyaltyContainers[0].ValueWorth);
    var _lylBonus = document.getElementById(_loyaltyContainers[1].Value);
    var _lylBonusWorth = document.getElementById(_loyaltyContainers[1].ValueWorth);

    _lylBase.innerHTML = productOption.LoyaltyPoints;
    _lylBaseWorth.innerHTML = "£" + productOption.LoyaltyPointsValue;

    _lylBonus.innerHTML = productOption.BonusPoints;
    _lylBonusWorth.innerHTML = "£" + productOption.BonusPointsValue;
}

function ShowNewPrices(productOption) {
    var _price = productOption.Price;
    var _rrp = productOption.RRP != null ? productOption.RRP : 0;
    var _was = productOption.Was != null ? productOption.Was : 0;

    var _priceFld = document.getElementById(_prices[0].ValueContainer);
    var _priceLbl = document.getElementById(_prices[0].ValueLabel);
    var _wasFld = document.getElementById(_prices[1].ValueContainer);
    var _wasLbl = document.getElementById(_prices[1].ValueLabel);
    var _saveFld = document.getElementById(_prices[2].ValueContainer);
    var _saveLbl = document.getElementById(_prices[2].ValueLabel);

    if (_priceLbl != null) { _priceLbl.innerHTML = "Price"; }
    if (_priceFld != null) { _priceFld.innerHTML = "£" + _price; }
               
    switch (true){
        case (_price < _was):
            if (_wasLbl != null) { _wasLbl.className = ""; _wasLbl.innerHTML = "Was"; }
            if (_wasFld != null) { _wasFld.className = ""; _wasFld.innerHTML = "£" + _was; }
            if (_saveLbl != null) { _saveLbl.className = ""; _saveLbl.innerHTML = "Save"; }
            if (_saveFld != null) { _saveFld.className = ""; _saveFld.innerHTML = Math.floor(((_was - _price) / _was) * 100) + "%"; }
            
            break;
        case (_price < _rrp):
            if (_wasLbl != null) { _wasLbl.className = ""; _wasLbl.innerHTML = "RRP"; }
            if (_wasFld != null) { _wasFld.className = ""; _wasFld.innerHTML = "£" + _rrp; }
            if (_saveLbl != null) { _saveLbl.className = "hidden"; }
            if (_saveFld != null) { _saveFld.className = "hidden"; }

            if (_priceLbl != null) { _priceLbl.innerHTML = "Our Price"; }
            
            break;
        default:
            if (_wasLbl != null) { _wasLbl.className = "hidden"; }
            if (_wasFld != null) { _wasFld.className = "hidden"; }
            if (_saveLbl != null) { _saveLbl.className = "hidden"; }
            if (_saveFld != null) { _saveFld.className = "hidden"; }
                
            break;
    
    }
}

function GetTimePeriod(days) {
    if (days !=null && days <= 7) { return 'Expecting Delivery in ' + days + ' days.'; }
    if (days !=null && days <= 28) { return 'Expecting Delivery in ' + Math.floor(days / 7) + ' week(s).'; }
    return 'Awaiting Stock'
}

function LoadImages() {
    var images = new Array();
    for(var i=0;i<productImages.length && images.length <3;i++){
//        if (productImages[i].ProductId = finalOption.ProductId){
            images[images.length]=productImages[i];
//        }
    }
    ShowImages(images);
}

function ShowImages(imgArr) {
    var productImageMain = document.getElementById(imgCtlList[0].ControlId);
    var productImage2 = document.getElementById(imgCtlList[1].ControlId);
    var productImage3 = document.getElementById(imgCtlList[2].ControlId);
    
    var productImageMainLnk = productImageMain.parentNode;
    var productImage2Lnk = productImage2.parentNode;
    var productImage3Lnk = productImage3.parentNode;
    
    HideImageSwatch(productImage2Lnk);
    HideImageSwatch(productImage3Lnk);
            
    switch (imgArr.length) {
        case 0:
            break;
        default:
            ShowImageSwatch(productImageMain, imgArr[0], true);
            if (imgArr.length >= 2) { ShowImageSwatch(productImage2, imgArr[1], false); }
            if (imgArr.length >= 3) { ShowImageSwatch(productImage3, imgArr[2], false); }
    }
    
}

function ShowImageSwatch(domObj,obj,isMainImage)
{
    if (domObj != null) {
        var lnk = domObj.parentNode;
        if (lnk != null) {
                setStyle(domObj,"display","block");
                var href = "p" + obj.ProductId + "popup" + obj.ImageId + ".aspx";
                lnk.href=href;
                //addEvent(domObj,"click",new function(){popUpWindow(href, 'Close_1', 460, 700, 'yes');return false;},true);
        }
        if (isMainImage) {
            domObj.src = obj.ProductSource;
        }
        else {
            domObj.src = obj.ThumbnailSource;
            addEvent(domObj,"mouseover",function(){ShowSubImage(obj.ProductSource);},false);
            addEvent(domObj,"mouseout",function(){ShowMainImage();},false);
        }
    }
}

function HideImageSwatch(domObj){
    if (domObj != null){
        setStyle(domObj,"display","none");
        removeEvent(domObj,"click");
        removeEvent(domObj,"mouseover");
        removeEvent(domObj,"mouseout");
    }
}

function ValidateStock(sender, args) {
    var _baseQtyFld = document.getElementById(selectedProductQty);
    var _controltovalidate = document.getElementById(sender.controltovalidate);
    args.IsValid = false;
    if (_baseQtyFld != null && _controltovalidate != null) {
        try {
            var _stockWanted = parseInt(_controltovalidate.value);
            var _stock = parseInt(_baseQtyFld.value);
            args.IsValid = (_stock >= _stockWanted) ? true : false;
        }
        catch (e) { args.IsValid = false; }
    }
}

function SetImageRollOver() {
    var images = new Array();
    for (var i = 0; i < productImages.length && images.length < 3; i++) {
        images[images.length] = productImages[i];
    }
    for (var i = 0; i < images.length; i++) {
        var domObj = document.getElementById(imgCtlList[i].ControlId);
        BasicImageSwatch(domObj, images[i], (i === 0));
    }
}

function BasicImageSwatch(domObj,obj,isMainImage) {
    if (domObj != null) {
        var lnk = domObj.parentNode;
        if (lnk != null) {
            addEvent(lnk, "click", function() { if (DoPopUp(lnk.href, 'ProductImage', 460, 700, 1)) return false; }, true);
            lnk.onclick = function() { return false };
        }
        if (!isMainImage) {
            addEvent(domObj, "mouseover", function() { ShowSubImage(obj.ProductSource); }, false);
            addEvent(domObj, "mouseout", function() { ShowMainImage(); }, false);
        }
    }
}

function DoPopUp(link, windowname, width, height, scroll) {
    if (!window.focus) { return false; }
    var _tgtUrl = typeof link === 'string' ? link : link.href;
    window.open(_tgtUrl, windowname, 'scrollbars=' + (scroll === 'true' || scroll === 1 ? 'yes' : 'no') + ',status=no,width=' + width + ',height=' + height);
    return true;
}

function ShowSubImage(newSrc) {
    var productImageMain = document.getElementById(imgCtlList[0].ControlId);
    if (productImageMain != null) {
        productMainImage = productImageMain.src;
        productImageMain.src = newSrc;
    }
}

function ShowMainImage() {
    var productImageMain = document.getElementById(imgCtlList[0].ControlId);
    if (productImageMain != null) { productImageMain.src = productMainImage; }
}

function notifyPopup(pId) {
    var _selectedProductId = document.getElementById(selectedProductFld);
    var _productId = parseInt(pId);
    //if (_selectedProductId != null) { _productId = parseInt(_selectedProductId.value); }
    if (_productId > 0) {return !DoPopUp("/popups/notify.aspx?id=" + _productId, 'Notify', '440', '980', 'true'); }
}

function wishListPopup(pId) {
    /*var _selectedProductId = document.getElementById(selectedProductFld);*/
    var _productId = 0;
    /*if (_selectedProductId != null) { _productId = parseInt(_selectedProductId.value); }*/
    _productId = pId;
    if (_productId > 0) { return !DoPopUp("/popups/wishlist.aspx?id=" + _productId, 'WishList', '440', '980', 0); }
}