﻿aspdnsf.Products.KitProductItem = Class.create();
aspdnsf.Products.KitProductItem.prototype = {
    
    initialize : function(id, itemCode, itemType, name, selected) {
        Object.extend(this, new aspdnsf.Products.Product(id, itemCode, itemType));
        
        this.name = name;
        
        this.deltaPrice = 0;
        this.selected = selected;
        
        this.selectedChangedEventHandlers = new Array();
        this.deltaPriceChangedEventHandlers = new Array();
    },
    
    getName : function() {
        return this.name;
    },
    
    compareWith : function(other) {
        var delta = 0;
        if(other == this) {
            delta = 0;
        }
        else {
            //delta = this.getPrice() - other.getPrice();
            delta = this.getPrice();
        }
        
        this.setDeltaPrice(delta);
    },
    
    computeDelta : function() {
        var delta = this.getPrice();
        this.setDeltaPrice(delta);
    },
    
    setDeltaPrice : function(delta) {
        this.deltaPrice = delta;
        this.onDeltaPriceChanged();
    },
    
    getDeltaPrice : function() {
        return this.deltaPrice;
    },
    
    getIsSelected : function() {
        return this.selected;
        this.onSelectedChanged();
    },
    
    setIsSelected : function(selected, invoker) {
        this.selected = selected;
        
        this.onSelectedChanged(invoker);
        
        return this.selected;
    },
    
    addSelectedChangedEventHandler : function(handler) {
        this.selectedChangedEventHandlers.push(handler);
    },
    
    addDeltaPriceChangedEventHandler : function(handler) {
        this.deltaPriceChangedEventHandlers.push(handler);
    },
    
    onSelectedChanged : function(invoker) {
        for(var ctr=0; ctr<this.selectedChangedEventHandlers.length; ctr++) {
            var handler = this.selectedChangedEventHandlers[ctr];
            handler(this, invoker);
        }
    },
    
    onDeltaPriceChanged : function() {
        for(var ctr=0; ctr<this.deltaPriceChangedEventHandlers.length; ctr++) {
            var handler = this.deltaPriceChangedEventHandlers[ctr];
            handler(this);
        }
    }
    
}

aspdnsf.Products.KitProductItemGroup = Class.create();
aspdnsf.Products.KitProductItemGroup.prototype = {

    initialize : function(id, groupCode) {
        this.id = id;
        this.code = groupCode;
        this.items = new Array();
        
        this.selectionChangedEventHandlers = new Array()
        
        // virtual methods
        this.afterKitItemRegisteredDelegate = null;
        this.chooseItemsDelegate = null;
        this.inspectDelegate = this.baseInspect;
    },
    
    getId : function() {
        return this.id;
    },
    
    getGroupCode : function() {
        return this.code;
    },
    
    getSelectedItems : function() {
        var selectedItems = new Array();
        
        for(var ctr=0; ctr<this.items.length; ctr++) {
            var current = this.items[ctr];
            if(current.getIsSelected()) {
                selectedItems.push(current);
            }
        }
        
        return selectedItems;
    },
    
    registerKitItem : function(kitItem) {
        if(kitItem) {
            this.items.push(kitItem);
            kitItem.addSelectedChangedEventHandler(this.kitItemSelectedChangedEventHandler.bind(this));            
            
            if(this.afterKitItemRegisteredDelegate) {
                this.afterKitItemRegisteredDelegate(kitItem);
            }
        }
    },
    
    inspect : function() {
        if(this.inspectDelegate) {
            this.inspectDelegate();
        }
    },
    
    baseInspect : function() {
        // meant to be overridden
    },
    
    kitItemSelectedChangedEventHandler : function(item, invoker) {
        if(invoker && this == invoker) {
            return;
        }
        
        if(this.chooseItemsDelegate) {
            this.chooseItemsDelegate(item);
        }
        
        this.onSelectionChanged();
    },
    
    addSelectionChangedEventHandler : function(handler) {
        this.selectionChangedEventHandlers.push(handler);
    },
    
    onSelectionChanged : function() {
        for(var ctr=0; ctr<this.selectionChangedEventHandlers.length; ctr++) {
            var handler = this.selectionChangedEventHandlers[ctr];
            handler(this);
        }
    }
    
}

aspdnsf.Products.KitProductItemRequiredGroup = Class.create();
aspdnsf.Products.KitProductItemRequiredGroup.prototype = {

    initialize : function(id, groupCode) {
        Object.extend(this, new aspdnsf.Products.KitProductItemGroup(id, groupCode));
        
        this.chooseItemsDelegate = this.chooseItems.bind(this);
        this.inspectDelegate = this.chooseItems.bind(this);
    },
    
    chooseItems : function(selectedItem) {
        if(arguments.length == 0) {
            selectedItem = this.getSelectedItems()[0];
        }
        
        for(var ctr=0; ctr<this.items.length; ctr++) {
            var current = this.items[ctr];
            if(current != selectedItem) {
                current.setIsSelected(false, this);
            }
            
            current.compareWith(selectedItem);
        }
    }

}

aspdnsf.Products.KitProductItemMultiSelectGroup = Class.create();
aspdnsf.Products.KitProductItemMultiSelectGroup.prototype = {

    initialize : function(id, groupCode) {
        Object.extend(this, new aspdnsf.Products.KitProductItemGroup(id, groupCode));
        
        this.chooseItemsDelegate = this.chooseItems.bind(this);
        this.inspectDelegate = this.displayDefault.bind(this);
    },
    
    displayDefault : function() {
        for(var ctr=0; ctr<this.items.length; ctr++) {
            var current = this.items[ctr];
            current.computeDelta();
        }
    },
    
    chooseItems : function(selectedItem) {
        if(arguments.length == 0) {
            selectedItem = this.getSelectedItems()[0];
        }
        
        if(!selectedItem.getIsSelected()) {
            var hasOtherSelected = false;
            
            for(var ctr=0; ctr<this.items.length; ctr++) {
                var current = this.items[ctr];
                if(current != selectedItem) {
                    if(current.getIsSelected()) {
                        hasOtherSelected = true;
                        break;
                    }
                }
            }
            
            if(!hasOtherSelected) {
                selectedItem.setIsSelected(true, this);
            }
        }
        
        selectedItem.computeDelta();
    }
}

aspdnsf.Products.KitProductItemOptionalGroup = Class.create();
aspdnsf.Products.KitProductItemOptionalGroup.prototype = {

    initialize : function(id, groupCode) {
        Object.extend(this, new aspdnsf.Products.KitProductItemGroup(id, groupCode));
        
        this.chooseItemsDelegate = this.chooseItems.bind(this);
        this.inspectDelegate = this.chooseItems.bind(this);
    },
    
    unSelectAll : function() {
        for(var ctr=0; ctr<this.items.length; ctr++) {
            var current = this.items[ctr];
            current.setIsSelected(false, this);
        }
        
        this.chooseItems(null);
        
        this.onSelectionChanged();
    },
    
    chooseItems : function(selectedItem) {
        if(arguments.length == 0) {
            var selectedItems = this.getSelectedItems();
            if(selectedItems.length > 0) {
                selectedItem = selectedItems[0];
            }
            else {
                selectedItem = null;
            }
        }
        
        for(var ctr=0; ctr<this.items.length; ctr++) {
            var current = this.items[ctr];
            if(selectedItem) {
                if(current != selectedItem) {
                    current.setIsSelected(false, this);
                }
                
                current.compareWith(selectedItem);
            }
            else {
                current.computeDelta();
            }
        }
    }
}


aspdnsf.Products.KitProduct = Class.create();
aspdnsf.Products.KitProduct.prototype = {

    initialize : function(id, itemCode, itemType) {
        Object.extend(this, new aspdnsf.Products.Product(id, itemCode, itemType));
        
        this.items = new Array();
        this.compositionChangedEventHandlers = new Array();
        this.groups = new Array();
        
        this.addUnitMeasureChangedEventHandler(this.onCompositionChanged.bind(this));
    },
    
    getGroup : function(id) {
        for(var ctr=0; ctr<this.groups.length; ctr++) {
            var group = this.groups[ctr];
            if(group.getId() == id) {
                return group;
            }
        }
        
        return null;
    },
    
    getGroups : function() {
        return this.groups;
    },
    
    getKitPrice : function() {
        var kitPrice = 0;
        
        for(var ctr=0; ctr<this.groups.length; ctr++) {
            var group = this.groups[ctr];
            var items = group.getSelectedItems();
            for(var ictr=0; ictr<items.length; ictr++) {
                var item = items[ictr];
                if(item) {
                    kitPrice += item.getPrice();
                }
            }
        }
        
        return kitPrice * this.getUnitMeasureQuantity();
    },
    
    getComposition : function() {
        var compositions = new Array();
        for(var gctr=0; gctr<this.groups.length; gctr++) {
            var group = this.groups[gctr];
            var items = group.getSelectedItems();
            for(var ictr=0; ictr<items.length; ictr++) {
                var item = items[ictr];
                var itemId = Math.abs((this.id - item.getId()));
                compositions.push(group.getId()+'+'+itemId);
            }
        }
        
        return compositions;
    },
    
    persistComposition : function() {
        var compositions = this.getComposition();
        
        var items = document.getElementsByClassName('KitItems');
        items.each(
            function(elem, idx) {
                elem.value = compositions;
            }
        );
    },
    
    registerGroup : function(group) {
        if(group) {
            this.groups.push(group);
            group.addSelectionChangedEventHandler(this.groupSelectionChangedEventHandler.bind(this));
        }
    },
    
    groupSelectionChangedEventHandler : function() {
        this.onCompositionChanged();
    },
    
    addCompositionChangedEventHandler : function(handler) {
        this.compositionChangedEventHandlers.push(handler);
    },
    
    onCompositionChanged : function() {
        for(var ctr=0; ctr<this.compositionChangedEventHandlers.length; ctr++) {
            var handler = this.compositionChangedEventHandlers[ctr];
            handler(ctr);
        }
    }
    
}


// uses numberFormat154.js internally
aspdnsf.CurrencyFormatter = {
    
    initialize : function() {
        // set defaults
        this.symbol = '';
        this.decimalDigits = 2;
    },
    
    setSymbol : function(symbol) {
        this.symbol = symbol;
    },
    
    setDecimalDigits : function(digits) {   
        this.decimalDigits = digits;
    },
    
    format : function(price) {    
        var formatter = new NumberFormat(); 
        formatter.setCurrencyValue(this.symbol);
        formatter.setPlaces(this.decimalDigits, false);
        formatter.setInputDecimal('.');
        formatter.setCurrency(true);
        formatter.setCurrencyPosition(formatter.LEFT_OUTSIDE);
        formatter.setNegativeFormat(formatter.LEFT_DASH);
        formatter.setNegativeRed(false);
        formatter.setSeparators(true, ',', ',');
        formatter.setNumber(price);
        
        return formatter.toFormatted();
    }
    
}

aspdnsf.CurrencyFormatter.initialize();


aspdnsf.Products.PriceDeltaControl = Class.create();
aspdnsf.Products.PriceDeltaControl.prototype = {

    initialize : function(id, clientId) {
        this.id = id;
        this.ctrl = $(clientId);
    },
    
    setProduct : function(product) {
        if(product) {
            this.product = product;
            this.product.addDeltaPriceChangedEventHandler(this.controlDeltaPriceChangedEventHandler.bind(this));
            this.buildDisplay();
        }
    },
    
    buildDisplay : function() {
        if(this.product.getIsSelected()) {
            //this.ctrl.innerHTML = aspdnsf.StringResource.getString('showproduct.aspx.100');
            var delta1 = this.product.getPrice();
             if(delta1>=0)
             {             
                this.ctrl.innerHTML = aspdnsf.CurrencyFormatter.format(delta1);
             }
             else
             {
                this.ctrl.innerHTML = aspdnsf.CurrencyFormatter.format(Math.abs(delta1));
             }
        }
        else {
            var delta = this.product.getDeltaPrice();
            var display = '';
            
            if(delta>=0) {
                //display = aspdnsf.StringResource.getString('showproduct.aspx.14') + ' ' + aspdnsf.CurrencyFormatter.format(delta);
                display =  aspdnsf.CurrencyFormatter.format(delta);
            }
            else {
                //display = aspdnsf.StringResource.getString('showproduct.aspx.15') + ' ' + aspdnsf.CurrencyFormatter.format(Math.abs(delta));
                display = aspdnsf.CurrencyFormatter.format(Math.abs(delta));
            }
            
            if(this.product.getHasVat()) {
                display += ' <span class="VATLabel">' + aspdnsf.StringResource.getString('is_showproduct.aspx.56') + '</span>';
            }
            this.ctrl.innerHTML = display;
        }
    },
    
    controlDeltaPriceChangedEventHandler : function(product) {
        this.buildDisplay();
    }
}

aspdnsf.Products.KitItemRadioControl = Class.create();
aspdnsf.Products.KitItemRadioControl.prototype = {
    
    initialize : function(id, clientId) {
        this.id = id;
        
        this.ctrl = $(clientId);
        this.ctrl.onclick = this.onControlSelected.bind(this);
        
        this.product = null;
    },
    
    getId : function() {
        return this.id;
    },
    
    setProduct : function(product) {
        if(product) {
            this.product = product;
            if(this.product.addSelectedChangedEventHandler) {
                this.product.addSelectedChangedEventHandler(this.onProductSelectedChanged.bind(this));
            }
        }
    },

    getProduct : function() {
        return this.product;
    },
    
    onProductSelectedChanged : function() {
        this.ctrl.checked = this.product.getIsSelected();
    },
    
    onControlSelected : function() {
        if(this.product) {
        ///SetCollageHere
        SetCollage(this.ctrl.id);
        //////////////// This is custom code for clearing personal messages
        //////////////// When the user selects the No Message option.       
        clearData_PersonalMessages(this.ctrl.id);
        SetPersonalMessageAuto(this.ctrl.id);
        //////////////
            this.product.setIsSelected(this.ctrl.checked);
        }
    }
}

aspdnsf.Products.KitItemCheckBoxControl = Class.create();
aspdnsf.Products.KitItemCheckBoxControl.prototype = {

    initialize : function(id, clientId) {
        this.id = id;
        
        this.ctrl = $(clientId);
        this.ctrl.onclick = this.onControlSelected.bind(this);
        
        this.product = null;
    },
    
    getId : function() {
        return this.id;
    },
    
    setProduct : function(product) {
        if(product) {
            this.product = product;
            this.product.addSelectedChangedEventHandler(this.onProductSelectedChanged.bind(this));
        }
    },

    getProduct : function() {
        return this.product;
    },
    
    onProductSelectedChanged : function() {
        this.ctrl.checked = this.product.getIsSelected();
    },
    
    onControlSelected : function() {
        if(this.product) {
            this.product.setIsSelected(this.ctrl.checked);
        }
    }
}

aspdnsf.Products.KitDropDownOptionControl = Class.create();
aspdnsf.Products.KitDropDownOptionControl.prototype = {
    
    initialize : function(id) {
        this.id = id;
        
        this.product = null;
        this.shouldDisplayPriceDelta = true;
    },
    
    getId : function() {
        return this.id;
    },
    
    setProduct : function(product) {
        if(product) {
            this.product = product;
        }
    },
    
    compareWith : function(other) {
        this.product.compareWith(other.product);
    },
    
    getIsSelected : function() {
        return this.product && this.product.getIsSelected();
    },
    
    setIsSelected : function(included) {
        this.product.setIsSelected(included);
    },
    
    setShouldDisplayPriceDelta : function(shouldDisplay) {
        this.shouldDisplayPriceDelta = shouldDisplay;
    },
    
    getDisplay : function() {
        if(this.shouldDisplayPriceDelta && this.product) {
            if(this.product.getIsSelected()) {
                return this.product.getName();
            }
            else {
                var display = '';
                
                if(this.product.getDeltaPrice) {
                    var delta = this.product.getDeltaPrice();
                    
                    if(delta>=0) {
                        display = this.product.getName() +  ', ' + aspdnsf.StringResource.getString('showproduct.aspx.14') + ' ' + aspdnsf.CurrencyFormatter.format(delta);
                    }
                    else {
                        display = this.product.getName() +  ', ' + aspdnsf.StringResource.getString('showproduct.aspx.15') + ' ' + aspdnsf.CurrencyFormatter.format(Math.abs(delta));
                    }
                    
                    if(this.product.getHasVat()) {
                        display += ' ' + aspdnsf.StringResource.getString('is_showproduct.aspx.56');
                    }
                }
                else {
                    display = this.product.getName();
                }
                
                return display;
            }
        }
        else {
            return this.product.getName();
        }
    }

}

aspdnsf.Products.KitDropDownGroupControl = Class.create();
aspdnsf.Products.KitDropDownGroupControl.prototype = {

    initialize : function(id, clientId) {
        this.id = id;
        this.ctrl = $(clientId);
        this.ctrl.onchange = this.onOptionChanged.bind(this);
        
        this.controls = new Array();
    },
    
    getId : function() {
        return this.id;
    },
    
    registerControl : function(control) {
        if(control) {
            this.controls.push(control);
            if(control.getIsSelected()) {
                this.selectedControl = control;
            }
        }
    },
    
    onOptionChanged : function() {
        var index = this.ctrl.selectedIndex;
        if(index < this.controls.length) {
            this.selectedControl = this.controls[index];
            this.selectedControl.setIsSelected(true);
        }
        this.buildDisplay();
    },
    
    buildDisplay : function() {
        if(this.controls.length == 0) return;
        
        if(this.selectedControl) {
            this.ctrl.options.length = 0;
                        
            var index = 0;
            
            for(var ctr=0; ctr<this.controls.length; ctr++) {
                var currentControl = this.controls[ctr];
                if(currentControl == this.selectedControl) {
                    index = ctr;
                }
                this.ctrl.options[ctr] = new Option(currentControl.getDisplay(), currentControl.getId());
            }
            
            this.ctrl.selectedIndex = index;
        }
        else {
            this.selectedControl = this.controls[0];
        }
    }
    
}

aspdnsf.Products.KitProductNoneItem = Class.create();
aspdnsf.Products.KitProductNoneItem.prototype = {

    initialize : function(selected) {
        this.selected = selected;
        this.group = null;
    },
    
    setGroup : function(group) {
        this.group = group;
    },
    
    getName : function() {
        return "None";
    },
    
    setIsSelected : function(selected) {
        if(selected) {
            this.group.unSelectAll();
        }
        this.selected = selected;
    },
    
    getIsSelected : function() {
        return this.selected;
    }
    
}



aspdnsf.Products.KitPriceControl = Class.create();
aspdnsf.Products.KitPriceControl.prototype = {

    initialize : function(id, clientId) {
        this.id = id;
        this.ctrl = $(clientId);
        this.kitProduct = null;
        this.lblPrice = $(clientId + '_Price');
    },

    setKitProduct : function(kitProduct) {
        if(kitProduct) {
            this.kitProduct = kitProduct;
            this.kitProduct.addCompositionChangedEventHandler(this.kitCompositionChangedEventHandler.bind(this));
            this.buildDisplay();
        }
        else {
            aspdnsf.Products.ProductController.addObserver(this);
        }
    },
    
    notify : function(product) {
        if(product.getId() == this.id) {
            this.setKitProduct(product);
        }
    },
    
    kitCompositionChangedEventHandler : function() {
        this.buildDisplay();
    },
    
    buildDisplay : function() {
        this.lblPrice.innerHTML = '';
        
        if( this.kitProduct.getHasVat() &&
            this.kitProduct.getVatSetting() == aspdnsf.Constants.VAT_SETTING_INCLUSIVE ) {
            
            var lblPriceLabel = document.createElement('SPAN');
            lblPriceLabel.innerHTML = aspdnsf.StringResource.getString('is_showproduct.aspx.47');
            this.lblPrice.appendChild(lblPriceLabel);
            
            var lblPriceValue = document.createElement('SPAN');
            lblPriceValue.innerHTML = '<i>' + aspdnsf.StringResource.getString('is_showproduct.aspx.72') + '<i>';
            this.lblPrice.appendChild(lblPriceValue);
            
            var params = "ItemCode=" + this.kitProduct.getItemCode() + "&ItemType=" + this.kitProduct.getItemType() + "&UMCode=" + this.kitProduct.getUnitMeasure() + "&KitItems=" + this.kitProduct.getComposition();
            
            var req = new Ajax.Request('action.axd?action=itemPrice',
                {
                    method : 'post',
                    parameters : params,
                    onSuccess : function(transport) {
                        lblPriceValue.innerHTML = transport.responseText + ' ' + aspdnsf.StringResource.getString('is_showproduct.aspx.57');
                    },
                    onFailure : function(transport) {
                        alert(transport.responseText);
                    }
                }
            );
            
        }
        else {
            var kitPrice = this.kitProduct.getKitPrice();
            
            var lblPriceValue = document.createElement('SPAN');
            lblPriceValue.innerHTML = aspdnsf.StringResource.getString('is_showproduct.aspx.47') + ' ' + aspdnsf.CurrencyFormatter.format(kitPrice);
            this.lblPrice.appendChild(lblPriceValue);
            
            if(this.kitProduct.getHasVat()) {
                var lblVat = document.createElement('SPAN');
                lblVat.innerHTML = '&nbsp;' + aspdnsf.StringResource.getString('is_showproduct.aspx.56');
                lblVat.className = 'VATLabel';
                this.lblPrice.appendChild(lblVat);
            }
        }
    }
}


aspdnsf.Products.KitDetailsControl = Class.create();
aspdnsf.Products.KitDetailsControl.prototype = {
    
    initialize : function(id) {
        this.id = id;
        
        this.lnkHeader = $('lnkKitDetailHeader_' + id);
        this.lnkHeader.onclick = this.onHeaderLinkClicked.bind(this);
        
        this.pnlDetails = $('pnlKitDetails_' + id);
        
        this.kitProduct = null;
    },
    
    setKitProduct : function(kitProduct) {
        this.kitProduct = kitProduct;
        this.kitProduct.addCompositionChangedEventHandler(this.kitCompositionChangedEventHandler.bind(this));
        this.buildDisplay();
    },
    
    onHeaderLinkClicked : function() {
        if(this.pnlDetails.style.display == "") {
            this.lnkHeader.innerHTML = aspdnsf.StringResource.getString('is_showproduct.aspx.45');
            this.pnlDetails.style.display = "none";
        }
        else {
            this.lnkHeader.innerHTML = aspdnsf.StringResource.getString('is_showproduct.aspx.46');
            this.pnlDetails.style.display = "";
        }
    },
    
    kitCompositionChangedEventHandler : function() {
        this.buildDisplay();
    },
    
    buildDisplay : function() {
        this.pnlDetails.innerHTML = '';
        
        var ul = document.createElement('ul');
        this.pnlDetails.appendChild(ul);
        
        var kitGroups = this.kitProduct.getGroups();
        for(var gctr=0; gctr<kitGroups.length; gctr++) {
            var currentGroup = kitGroups[gctr];                
            var items = currentGroup.getSelectedItems();
            for(var ictr=0; ictr<items.length; ictr++) {
                var item = items[ictr];
                var li = document.createElement('li');
//                if(item.getName().toUpperCase()=="ONE LINE" || item.getName().toUpperCase()=="TWO LINES")
//                {
//                    var pmsg1 = findObjectById("ipmsg1");
//                    var pmsg2 = findObjectById("ipmsg2");
//                    var strMessage = "";
//                    if(!CheckIsNULL(pmsg1))
//                    {  
//                        if(pmsg1.value!="")
//                        {
//                            strMessage += pmsg1.value;
//                        }
//                    }                    
//                    if(!CheckIsNULL(pmsg2))
//                    {
//                        if(pmsg2.value!="")
//                        {
//                            strMessage += "|";
//                            strMessage += pmsg1.value;
//                        }
//                    }
//                    li.innerHTML = item.getName() + ":" +  strMessage;
//                }
//                else                
                    li.innerHTML = item.getName();                
                ul.appendChild(li);
            }
        }
    }
}


/////////////////////////////////FUNCTIONS FOR UPLOADING IMAGE CUSTOMIZATION/////////////////////////

function alertSomething(num,RadioId,itemid,itemcode,itemtype)
{
     var ni = findObjectById('divPersonalMessage');
     var ti = findObjectById('tblPersonalMessage');
     var selectedRadio = findObjectById(RadioId);
     if(!CheckIsNULL(selectedRadio))
     {
        if(selectedRadio.checked==false)
        {
            alert("You must select the option before adding the message.");
            ni.innerHTML = "";
            makeHidden(ti);
            return;
        }
     }
             
     var tdmsg = findObjectById('tdMessage');
     if(!CheckIsNULL(tdmsg))
        tdmsg.innerHTML = "";
     if(!CheckIsNULL(ni))   
        ni.innerHTML = "";  
    var countselected = findObjectById('cntipmsg');
    countselected.value = num;
    
    var len = parseInt(num);
    for(i=0;i<len;i++)
    {
        var newdiv = document.createElement('div');
        var divIdName = 'my'+(i+1)+'Div';
        newdiv.setAttribute('id',divIdName);
        newdiv.innerHTML = '<span>' + 'Line #:'+(i+1)+'</span>&nbsp;&nbsp;<input id="pmsg'+(i+1)+'" maxlength="30" type="text" name="TextBox'+(i+1)+'" value=""/>';
        ni.appendChild(newdiv);
        
        var br = document.createElement('br');
        ni.appendChild(br);        
    }
        
    var newdiv = document.createElement('div');
    var divIdName = 'mySaveDiv';
    newdiv.setAttribute('id',divIdName);
    newdiv.setAttribute('align',"center");
    newdiv.innerHTML = '<a href="javascript:SavePersonalMessages();"><img alt="Save" src="images/but_send111.gif"/></a>';
    ni.appendChild(newdiv);
        
    makeVisible(ti);
    makeVisible(ni);
}

//function alertSomething(RadioId)
//{
//     var ni = findObjectById('divPersonalMessage');
//     var ti = findObjectById('tblPersonalMessage');
//     var selectedRadio = findObjectById(RadioId);
//     if(!CheckIsNULL(selectedRadio))
//     {
//        if(selectedRadio.checked==false)
//        {
//            alert("You must select the option before adding the message.");
//            ni.innerHTML = "";
//            makeHidden(ti);
//            return;
//        }
//     }
//             
//     var tdmsg = findObjectById('tdMessage');
//     if(!CheckIsNULL(tdmsg))
//        tdmsg.innerHTML = "";
//     if(!CheckIsNULL(ni))   
//        ni.innerHTML = "";  
//    var countselected = findObjectById('cntipmsg');
//    countselected.value = num;
//    
//    var len = parseInt(num);
//    for(i=0;i<len;i++)
//    {
//        var newdiv = document.createElement('div');
//        var divIdName = 'my'+(i+1)+'Div';
//        newdiv.setAttribute('id',divIdName);
//        newdiv.innerHTML = '<span>' + 'Line #:'+(i+1)+'</span>&nbsp;&nbsp;<input id="pmsg'+(i+1)+'" maxlength="30" type="text" name="TextBox'+(i+1)+'" value=""/>';
//        ni.appendChild(newdiv);
//        
//        var br = document.createElement('br');
//        ni.appendChild(br);        
//    }
//        
//    var newdiv = document.createElement('div');
//    var divIdName = 'mySaveDiv';
//    newdiv.setAttribute('id',divIdName);
//    newdiv.setAttribute('align',"center");
//    newdiv.innerHTML = '<a href="javascript:SavePersonalMessages();"><img alt="Save" src="images/but_send111.gif"/></a>';
//    ni.appendChild(newdiv);
//        
//    makeVisible(ti);
//    makeVisible(ni);
//}

function SavePersonalMessages()
{
    var tdMessage = findObjectById("tdMessage");
    var flag = true;
    var pmsg1 = findObjectById("pmsg1");
    var pmsg2 = findObjectById("pmsg2");
    var varpmsg1 = "";    
    var varpmsg2 = "";
    if(!CheckIsNULL(pmsg1))
    {     
        varpmsg1 = pmsg1.value;
        if(varpmsg1=="")
        {
            flag=false;
            alert("Message cannot be blank.");
        }   
    }
    if(!CheckIsNULL(pmsg2))    
    {
        varpmsg2 = pmsg2.value;
        if(varpmsg2=="")
        {
            flag=false;
            alert("Message cannot be blank.");
        }
    }
       
    var hidipmsg1 = findObjectById("ipmsg1");    
    var hidipmsg2 = findObjectById("ipmsg2");
    var substrhtml1 = "";
    var substrhtml2 = "";
    if(!CheckIsNULL(hidipmsg1))
    {
        hidipmsg1.value = varpmsg1;
        if(varpmsg1!="")
            substrhtml1 = "Line #: 1&nbsp;&nbsp;" + hidipmsg1.value;
    }
    if(!CheckIsNULL(hidipmsg2))
    {
        hidipmsg2.value = varpmsg2;
        if(varpmsg2!="")
            substrhtml2 = "Line #: 2&nbsp;&nbsp;" + hidipmsg2.value;
    }  
    if(!CheckIsNULL(tdMessage) && flag==true)
    {   
        var strhtml = "<table><tr><td>" + substrhtml1 + "<br/>" + substrhtml2 + "</td></tr><tr><td><a href='javascript:EditMessages();'><img alt='Edit' src='images/but_send111.gif'/></a></td></tr></table>";
        tdMessage.innerHTML = strhtml;
        var ni = findObjectById('divPersonalMessage');
        if(!CheckIsNULL(ni))
            makeHidden(ni);
    }
}

function dummyCallback(){//Do nothing
}

function EditMessages()
{
    var ni = findObjectById('divPersonalMessage');
    var tdMessage = findObjectById("tdMessage");
    if(!CheckIsNULL(ni))
        makeVisible(ni);
    if(!CheckIsNULL(tdMessage))
        tdMessage.innerHTML = "";
}

function SetCollage(ctrlid)
{
    var radioid = ctrlid;
    var grpid = radioid.substr(12);
    var spanlinkID = "SpanKitItemRadio" + grpid;
    var lblitemname = "lblKitItem"+ grpid;
    var lblcheck = findObjectById(lblitemname);
    var CollageObj = findObjectById("IsCollage");    
    if(!CheckIsNULL(CollageObj))
    {
        if(lblcheck.innerHTML.toUpperCase()=="NO COLLAGE")    
            CollageObj.value = "0";
        else
            CollageObj.value = "1";
    }    

    var frame = document.getElementById('Personalframe');
    if(!CheckIsNULL(frame))
    {
        var frameDocument = null;
        frameDocument = frame.contentDocument;
        if(frameDocument==null || frameDocument=="undefined")
        {
            frameDocument = frame.contentWindow.document;
        }
        
        var frameForm = frameDocument.getElementById('form1');
        if(lblcheck.innerHTML.toUpperCase()=="NO COLLAGE")    
            frameForm.elements['IsCollageSet'].value = "0";
        else
            frameForm.elements['IsCollageSet'].value = "1";
            
        var SelNumImages = frameForm.elements['SelNumImages'].value;
        var MaxImages = frameForm.elements['MaxImages'].value;
        if(parseInt(SelNumImages)>1 && lblcheck.innerHTML.toUpperCase()=="NO COLLAGE")
        {
            alert("You cannot upload more than one images for 'No Collage' option. Please delete some image(s)");
        }
        else
        {   
            if(parseInt(SelNumImages)>0 && (parseInt(SelNumImages) <= parseInt(MaxImages)) && lblcheck.innerHTML.toUpperCase()=="MAKE ME A COLLAGE")
            {   
                //Code here to make the Imageupload control visible
                
            }
        }
    }
}

function SetPersonalMessageAuto(ctrlid)
{
    var radioid = ctrlid;
    var grpid = radioid.substr(12);
    var spanlinkID = "SpanKitItemRadio" + grpid;
    var lblitemname = "lblKitItem"+ grpid;
    var lblcheck = findObjectById(lblitemname);
    
    if(lblcheck.innerHTML.toUpperCase()=="ONE LINE" ||lblcheck.innerHTML.toUpperCase()=="TWO LINES" ||lblcheck.innerHTML.toUpperCase()=="TWO LINE")
    {
         var num =0;
         if(lblcheck.innerHTML.toUpperCase()=="ONE LINE")
          num = 1;
         else if(lblcheck.innerHTML.toUpperCase()=="TWO LINES" || lblcheck.innerHTML.toUpperCase()=="TWO LINE")
            num = 2;
         var ni = findObjectById('divPersonalMessage');
         var ti = findObjectById('tblPersonalMessage');
         var selectedRadio = findObjectById(ctrlid);
         if(!CheckIsNULL(selectedRadio))
         {
            if(selectedRadio.checked==false)
            {
                alert("You must select the option before adding the message.");
                ni.innerHTML = "";
                makeHidden(ti);
                return;
            }
         }         
                 
         var tdmsg = findObjectById('tdMessage');
         if(!CheckIsNULL(tdmsg))
            tdmsg.innerHTML = "";
         if(!CheckIsNULL(ni))   
            ni.innerHTML = "";  
        var countselected = findObjectById('cntipmsg');
        countselected.value = num;
        
        var len = parseInt(num);
        for(i=0;i<len;i++)
        {
            var newdiv = document.createElement('div');
            var divIdName = 'my'+(i+1)+'Div';
            newdiv.setAttribute('id',divIdName);
            newdiv.innerHTML = '<span>' + 'Line #:'+(i+1)+'</span>&nbsp;&nbsp;<input id="pmsg'+(i+1)+'" maxlength="30" type="text" name="TextBox'+(i+1)+'" value=""/>';
            ni.appendChild(newdiv);
            
            var br = document.createElement('br');
            ni.appendChild(br);        
        }
            
        var newdiv = document.createElement('div');
        var divIdName = 'mySaveDiv';
        newdiv.setAttribute('id',divIdName);
        newdiv.setAttribute('align',"center");
        newdiv.innerHTML = '<a href="javascript:SavePersonalMessages();"><img alt="Save" src="images/but_send111.gif"/></a>';
        ni.appendChild(newdiv);
            
        makeVisible(ti);
        makeVisible(ni);        
    }
    
    //Checking conditions if it is a tote
     var IsTote = findObjectById('IsBothSides');
     if(lblcheck.innerHTML.toUpperCase()=="PHOTO ON BOTH SIDES")
     {
          if(!CheckIsNULL(IsTote))
          {
             IsTote.value = "1";
          }
     }
     else
     {
        if(!CheckIsNULL(IsTote))
        {
             IsTote.value = "0";
        }
     }
}

//Function for clearing Personal Messages
function clearData_PersonalMessages(ctrlid)
{
    //To get the id of the previously selected span for hiding it when some other radio is selected
    var lastselectedidobj = findObjectById("lastSelected");
    var lastselectedid = lastselectedidobj.value;
    if(lastselectedid!=null && lastselectedid!="")
    {
        var tohidespan = findObjectById(lastselectedid);    
        if(!CheckIsNULL(tohidespan))
        {
            tohidespan.style.visibility = "hidden";
            tohidespan.style.display = "none";
        }        
    }
    else
    {
        //First Time when Upload image(s) radio is not selected
        
    }
   
    
    var radioid = ctrlid;
    var grpid = radioid.substr(12);
    var spanlinkID = "SpanKitItemRadio" + grpid;
    var lblitemname = "lblKitItem"+ grpid;
    var lblcheck = findObjectById(lblitemname);
    var spanlinkobj = findObjectById(spanlinkID);
    if(!CheckIsNULL(spanlinkobj))
    {
        var currentSelected = findObjectById("lastSelected");
        if(!CheckIsNULL(currentSelected))
        {
            if(lblcheck.innerHTML.toUpperCase()=="UPLOAD ONLINE")
            {
               currentSelected.value = spanlinkID;
            }
        }
        
        if(lblcheck.innerHTML.toUpperCase()!="ONE LINE" && lblcheck.innerHTML.toUpperCase()!="TWO LINES" && lblcheck.innerHTML.toUpperCase()!="TWO LINE")
        {
            spanlinkobj.style.visibility = "visible";
            spanlinkobj.style.display = '';
        }
    }   
    if(!CheckIsNULL(lblcheck))
    {   
        var stringcheck = lblcheck.innerHTML.toUpperCase();                
        //var endindex = stringcheck.indexOf('<');
        //var check = stringcheck.substr(0,endindex);
        if(lblcheck.innerHTML.toUpperCase()=="NO MESSAGE" || stringcheck.indexOf("TWO LINE") >= 0 || stringcheck.indexOf("ONE LINE") >= 0 || stringcheck.indexOf("TWO LINES") >= 0)
        {
            var divpm = findObjectById("divPersonalMessage");
            var tblpm = findObjectById("tblPersonalMessage");
            if(!CheckIsNULL(divpm))
            {
                divpm.innerHTML="";
                var ipmsg1 = findObjectById("ipmsg1");
                var ipmsg2 = findObjectById("ipmsg2");
                if(!CheckIsNULL(ipmsg1))
                    ipmsg1.value = "";
                if(!CheckIsNULL(ipmsg2))
                    ipmsg2.value = "";        
                if(!CheckIsNULL(tblpm))
                {
                    makeHidden(tblpm);
                }
                
            }
        }
        
        if(lblcheck.innerHTML.toUpperCase()=="UPLOAD LATER/ EMAIL" || lblcheck.innerHTML.toUpperCase()=="SEND BY MAIL")
        {
            var divImg = findObjectById("imgPage");
            var divImgNote = findObjectById("imgUploadNote");
            if(!CheckIsNULL(divImg))
            {
                divImg.style.visibility = "hidden";
                divImg.style.display = "none";
            }  
            
            if(!CheckIsNULL(divImgNote))
            {
                divImgNote.style.visibility = "hidden";
                divImgNote.style.display = "none";
            }     
        }
         if(lblcheck.innerHTML.toUpperCase()=="UPLOAD ONLINE")
        {
            var divImg = findObjectById("imgPage");
            var divImgNote = findObjectById("imgUploadNote");
            if(!CheckIsNULL(divImg))
            {
                makeVisible(divImg);
            }     
            if(!CheckIsNULL(divImgNote))
            {
                makeVisible(divImgNote);
            }  
        }
    }
}
/////////////////////////////////CUSTOMIZATIONS FOR PERSONAL MESSAGES ENDS///////////////////////////



/////////////////////////////////FUNCTIONS FOR UPLOADING IMAGE CUSTOMIZATION/////////////////////////
function ShowUploadImage(When,RadioId,itemid,itemcode,itemtype)
{       
      var objlightbox = findObjectById("lightboxdiv");
      //var objoverlay = findObjectById("overlayIE");
      var objoverlay = findObjectById("overlay");
//      if(!CheckIsNULL(objoverlay))
//      {
//        objoverlay.style.display = '';
//      }
      var objItemCounter = findObjectById("ItemCounter");
      var valItemCounter = "";
      if(objItemCounter!=null)
      {
        valItemCounter = objItemCounter.value;
      }
      var objIsCollage = parent.document.forms['AddToCartForm_' + valItemCounter].IsCollage;      
      var valIsCollage = "";
      if(objIsCollage!=null)
      {
        valIsCollage = objIsCollage.value;
      }
      
      //Check if tote set
      var IsToteSet = "";
      var IsTote = findObjectById('IsBothSides');      
      if(!CheckIsNULL(IsTote))
      {
         IsToteSet = IsTote.value;
      }
      
      //How to accomplish this using Iframe  
      var ifrm = document.createElement('IFRAME');
      ifrm.setAttribute('id','Personalframe');
      if(IsToteSet!="")
        ifrm.setAttribute('src', 'CustomerImageUpload.aspx?IsCollage='+valIsCollage+'&F=U&ImgCountMax=3&ProductItemCode=' + itemcode + '&IsTote=' + IsToteSet);        
      else
        ifrm.setAttribute('src', 'CustomerImageUpload.aspx?IsCollage='+valIsCollage+'&F=U&ImgCountMax=3&ProductItemCode=' + itemcode);
      ifrm.setAttribute('border',0);
      ifrm.setAttribute('frameborder',0);      
      ifrm.setAttribute('width','100%');
      ifrm.setAttribute('height','205');
      ifrm.setAttribute('noresize','noresize');
      //ifrm.setAttribute('scrolling','no');      
      ifrm.style.display = '';  

        if(!CheckIsNULL(objlightbox))
        {
            objlightbox.innerHTML = "";   
            
            //Tip: make sure the path to the close.gif image below is correct for your setup
            var elemanchor = document.createElement('a');
            elemanchor.setAttribute('id','close');
            elemanchor.setAttribute('href','javascript:hideModal();');
            
            
            var closer = document.createElement('IMG');
            //closer.setAttribute('id','close');
            closer.setAttribute('src','images/but_close_cross.gif');
            //closer.setAttribute('onclick','javascript:hideModal();');
            
            elemanchor.appendChild(closer);
                        
            //objlightbox.appendChild(closer);          
            objlightbox.appendChild(elemanchor);
            objlightbox.appendChild(ifrm); 
            
            if(!CheckIsNULL(objoverlay))
            {
                if(navigator.appName=="Microsoft Internet Explorer")
                {
                    objoverlay.style.position = "absolute";    
                    objoverlay.style.backgroundColor = "black";
                    objoverlay.style.width = document.body.offsetWidth;
                    objoverlay.style.height = document.body.offsetHeight + 3000 + "px";
                    objoverlay.style.top = 0 + "px";
                    objoverlay.style.left = 0 + "px";                    
                    //objoverlay.style.opacity = "0.80";
                    //objoverlay.style.filter = "alpha(opacity=80)";
                    objoverlay.style.zoom = 1;
                    //objoverlay.style.zindex = "90";
                    
                                        
                    var arrSelects = document.getElementsByTagName("select")
                    if(arrSelects!=null)
                    {
                        for(var i=0;i<arrSelects.length;i++)
                        {   
                            arrSelects[i].style.visibility = "hidden";
                           //arrSelects[i].disabled="true";
                        }
                    }
                }
                
            }
        }
}

function hideModal()
{
    var TempUploadImageName = "";
    var frame = document.getElementById('Personalframe');
    if(!CheckIsNULL(frame))
    {
        var frameDocument = null;
        frameDocument = frame.contentDocument;
        if(frameDocument==null || frameDocument=="undefined")
        {
            frameDocument = frame.contentWindow.document;
        }
                    
        var frameForm = frameDocument.getElementById('form1');
        TempUploadImageName = frameForm.elements['SaveImageName'].value;
    }
    
    var UploadImageName = findObjectById("UploadImage");
    if(TempUploadImageName!="")
    {        
        if(!CheckIsNULL(UploadImageName))
        {
            UploadImageName.value = TempUploadImageName;
        }
    }
    else
    {
        UploadImageName.value = "";
    }
    
    var objPageImage = findObjectById("imgPage");
    var objPageImageNote = findObjectById("imgUploadNote");
    if(TempUploadImageName != "" && TempUploadImageName != "Image Not Uploaded")
    {        
        if(!CheckIsNULL(objPageImage))
        {
            objPageImage.src = "UPImages/" + TempUploadImageName;
            //objPageImage.src= "ThumbJpeg.ashx?Height=100&Width=100&VFilePath=UPImages" + "\\" + TempUploadImageName;
            makeVisible(objPageImage);
        }
        if(!CheckIsNULL(objPageImageNote))
        {
            makeVisible(objPageImageNote);
        }
    }
    else
    {
        if(!CheckIsNULL(objPageImage))
        {            
            makeHidden(objPageImage);
        }
        if(!CheckIsNULL(objPageImageNote))
        {
            makeHidden(objPageImageNote);
        }
    }    
    
    
    if(navigator.appName=="Microsoft Internet Explorer")
    {
        var arrSelects = document.getElementsByTagName("select")
        if(arrSelects!=null)
        {
            for(var i=0;i<arrSelects.length;i++)
            {   
               arrSelects[i].style.visibility = "visible";
               //arrSelects[i].disabled="false";
            }
        }    
    }

    var objoverlay = findObjectById("overlay");
//    var objoverlayIE = findObjectById("overlayIE");
    var objlb = findObjectById("lightboxdiv");
    if(!CheckIsNULL(objoverlay))       
        objoverlay.style.display = "none";
//    if(!CheckIsNULL(objoverlayIE))       
//        objoverlayIE.style.display = "none";    
    if(!CheckIsNULL(objlb))    
        objlb.style.display = "none";
}

function CheckImageUploaded(myform)
{   

//To check personal messages.
    
    var objkitRadioName_Msg1 = findObjectById("PersonalMessage1");
    var kitRadioName_Msg1 = "";
    var flag1 = false;
    if(!CheckIsNULL(objkitRadioName_Msg1))
    {
        kitRadioName_Msg1 = objkitRadioName_Msg1.value;
        var objkitRadio_Msg1 = findObjectById(kitRadioName_Msg1);
        if(!CheckIsNULL(objkitRadio_Msg1))
        {
            if(objkitRadio_Msg1.checked == true)
            {
                flag1 = true;
            }
        }
    }
    
    var objMsg1 = findObjectById("ipmsg1");
    if(!CheckIsNULL(objMsg1))
    {
        if(objMsg1.value == "" && flag1==true)
        {
            //alert("Please click on the Add Message link to enter the text or  select the No message option to continue.");
            alert("Please enter the text or  select the No message option to continue.");
            return false;
        }
    }   
    
    
    
    var objkitRadioName_Msg2 = findObjectById("PersonalMessage2");
    var kitRadioName_Msg2 = "";
    var flag2 = false;
    if(!CheckIsNULL(objkitRadioName_Msg2))
    {
        kitRadioName_Msg2 = objkitRadioName_Msg2.value;
        var objkitRadio_Msg2 = findObjectById(kitRadioName_Msg2);
        if(!CheckIsNULL(objkitRadio_Msg2))
        {
            if(objkitRadio_Msg2.checked == true)
            {
                flag2 = true;
            }
        }
    }
    
    var objMsg2 = findObjectById("ipmsg2");
    if(!CheckIsNULL(objMsg2))
    {
        if(objMsg2.value == "" && flag2==true)
        {
            //alert("Please click on the Add Message link to enter the text or  select the No message option to continue.");
            alert("Please enter the text or  select the No message option to continue.");
            return false;
        }
    }   
   
   
   
   //Upload image validation goes here.
    
    //var frm = document.forms[myform];    
    var objkitRadioName = findObjectById("UploadRadioName");
    var kitRadioName = "";
    var flag = false;
    if(!CheckIsNULL(objkitRadioName))
    {
        kitRadioName = objkitRadioName.value;
        var objkitRadio = findObjectById(kitRadioName);
        if(!CheckIsNULL(objkitRadio))
        {
            if(objkitRadio.checked == true)
            {
                flag = true;
            }
        }
    }
    
    var objimage = findObjectById("UploadImage");
    if(!CheckIsNULL(objimage))
    {
        if(objimage.value == "" && flag==true)
        {
            alert("You have not uploaded the image.If you wish to upload the image later, please select the upload later or send by mail option");
            return false;
        }
    }
    
//    var objIsToteSet = findObjectById("IsBothSides");
//    var frame = document.getElementById('Personalframe');
//    if(!CheckIsNULL(frame))
//    {
//        var frameDocument = null;
//        frameDocument = frame.contentDocument;
//        if(frameDocument==null || frameDocument=="undefined")
//        {
//            frameDocument = frame.contentWindow.document;
//        }
//        
//        var frameForm = frameDocument.getElementById('form1');
//        var objNumToteImg = frameForm.elements['IsToteImgCount'];
//        if(!CheckIsNULL(objIsToteSet))
//        {
//            if(objIsToteSet.value=="1")
//            {
//                if(!CheckIsNULL(objNumToteImg))
//                {
//                    if(parseInt(objNumToteImg.value)<2)
//                    {
//                        alert('You can not upload a single image for "Both Side Photo" option.');
//                        return false;
//                    }
//                }
//            }
//        }        
//     }
}

function AdjustOnclickText()
{
    var objdiv = findObjectById("Saddtocart");
    if(!CheckIsNULL(objdiv))
    {
        var backuphtml = objdiv.innerHTML;
        if(backuphtml!=null && backuphtml!="")
        {
            objdiv.innerHTML = "";
            objdiv.innerHTML = backuphtml;
        }
    }
}
/////////////////////////////////CUSTOMIZATION FOR UPLOADING IMAGE ENDS//////////////////////////////



////////////////////////////////GENERAL FUNCTIONS FOR MANUPULATING JAVASCRIPTS///////////////////////

//Returns object
function findObjectById(objname)
{
   var obj = document.getElementById(objname);
   if(!CheckIsNULL(obj))
        return obj;
   else
        return null;     
}

//Checks if a object is null
function CheckIsNULL(obj)
{
    if(obj==null)
        return true;
    else
        return false;    
}

function closeDiv(objname)
{
    document.getElementById(objname).style.visibility = "hidden";    
    document.getElementById(objname).style.display = "none";
}

function makeVisible(obj)
{   
    obj.style.visibility = "visible";
    obj.style.display = '';
}

function makeHidden(obj)
{   
    obj.style.visibility = "hidden";
    obj.style.display = "none";
}

function makeVisible_ParamName(divZoomImage)
{
    var objdiv = findObjectById(divZoomImage);
    if(!CheckIsNULL(objdiv))
    {
        objdiv.style.visibility = "visible";
        objdiv.style.display = '';
    }
}
////////////////////////////////GENERAL FUNCTION AREA ENDS///////////////////////////////////////////