﻿var ColorTag = "Color";
var SizeTag = "Size"; 
var AllDropDownTag = "All";
var AmpersandSeparator = '&';
var SemicolumnSeparator = ';';
var EqualSeparator = '=';
var PipeSeparator = "||";
var PipeSeparatorRichFX = "|";
var ForwardSlashSeparator = "//";

var ProductColorDropdown;
var ProductSizeDropdown;
var BackOrderScriptHolder;
var BackOrderDivName;

function initRichFX()
{
    rd = new RichDesign("rd");
    rd.width = 225;
    rd.height = 450;
    rd.backgroundColor = "#FFFFFF";
}

function setDisclaimer(top,bottom)
{
    rd.txtDisclaimer = top + "|" + bottom;
}

function setSwatchTooltip(top,bottom)
{
    rd.txtSwatchTooltip = top + "|" + bottom;
}

function addColorFields(productID, colorField)
{
    rd.addColorField(productID,colorField);
}

function addColors(productID, colorID, colorName)
{
    rd.addColor(productID, colorName, colorID);
}

function renderRichFX()
{
    rd.render();
}

function loadSingleModeRichFX(productID, colorField, textSwatchTop,textSwatchBottom, txtDisclaimerTop, txtDisclaimerBottom)
{
    var colorFieldsElements = new Array();

    initRichFX();
    rd.targetElement = "flashcontent";
    rd.clientID = productID;
    setSwatchTooltip(textSwatchTop,textSwatchBottom);
    setDisclaimer(txtDisclaimerTop,txtDisclaimerBottom);
   
    // Add Color Field
    AddColor(colorField);
    
    renderRichFX();
}

// ProductIDs   = "1234|4567"
// ProductColor = ---
// colorFields  = "1234;control1_dd1|4567;control1_dd2"
// text
// text
function loadMultipleModeRichFX(productIDs, colorFields, textSwatchTop,textSwatchBottom, txtDisclaimerTop, txtDisclaimerBottom)
{
    productIDs = productIDs.substring(0,productIDs.length - PipeSeparatorRichFX.length);
    colorFields = colorFields.substring(0,colorFields.length - PipeSeparator.length);
    
    var productIDsElements = new Array();
    
	initRichFX();
	
	rd.targetElement = "flashcontent";
	rd.clientID = productIDs; 
    setSwatchTooltip(textSwatchTop,textSwatchBottom);
    setDisclaimer(txtDisclaimerTop,txtDisclaimerBottom);
    
    // Split product with "|"
    productIDsElements = productIDs.split(PipeSeparatorRichFX);
     
    // Add Thumbs
    for (var i=0; i<productIDsElements.length; i++)
    {
        if (productIDsElements[i].toString() != '')
        {
            var defaultColor = "";
            
            if(this.GetDefaultColor(colorFields))
            {
                defaultColor = this.GetDefaultColor(colorFields);
            }
        
            rd.addThumb(productIDsElements[i].toString(), "flashthumb" + (i+1), 101, 143, defaultColor); // Add thumb target
        }
    }
    
    // Add Color Fields 
    AddColor(colorFields);
    
    renderRichFX();
}

function AddColor(colorFields)
{
    var colorFieldElements = new Array();
    var colorFieldsElements = new Array();

    // Add Color Fields 
    // colorFields  = "1234;control1_dd1|4567;control1_dd2"
    colorFieldsElements = colorFields.split(PipeSeparator);
    
    for(var j=0; j<colorFieldsElements.length; j++)
    {
        // colorFieldsElements[j] = "1234;control1_dd1"
        colorFieldElements = colorFieldsElements[j].split(SemicolumnSeparator);
      
        addColorFields(colorFieldElements[0],colorFieldElements[1]);
        
        //Add Colors
        // ProductColors = "control1_dd1"
        var ProductColors = document.getElementById(colorFieldElements[1]);
       
        for(var i=1; i < ProductColors.length; i++)
        {
            addColors(colorFieldElements[0],
                    ProductColors.options[i].value,
                    ProductColors.options[i].text);
        }
    }

}

function GetDefaultColor(colorFields)
{
    var colorFieldElements = new Array();
    var colorFieldsElements = new Array();
    
    colorFieldsElements = colorFields.split(PipeSeparator);
    var ProductColors = document.getElementById(colorFieldsElements[0].split(SemicolumnSeparator)[1]);
    return ProductColors.options[1].value;
}

function setProductVariantColor(productColorDropdown, selectedColor)
{
    document.getElementById(productColorDropdown).value=selectedColor;
}

function getBackOrderDetails(extendedArg)
{
    if(extendedArg != '')
    {
        var parameters = new Array();
        parameters = extendedArg.toString().split(PipeSeparator);
        if(parameters.length == 2)
        {
            BackOrderDivName = parameters[0];
            BackOrderScriptHolder = parameters[1];
        }
    }
}


function loadProductColors(UseRichFX, productID, productSizeDropdown, productColorDropdown, extendedArg1, extendedArg2)
{   
    ProductColorDropdown = productColorDropdown;
    ProductSizeDropdown = productSizeDropdown;
    getBackOrderDetails(extendedArg2);
    
    var ProductSizes = document.getElementById(productSizeDropdown);
    var selectedSize = ProductSizes.options[ProductSizes.selectedIndex].value;
    var ProductColors = document.getElementById(productColorDropdown);
    var selectedColor = ProductColors.options[ProductColors.selectedIndex].value;
    var productSetChildID;
    var productSetChildDivID;
    var product = "";
    var productList = "";
    if (UseRichFX == 'True')
    {
       /* for(var i=1; i < ProductColors.options.length; i++)
        {
        
            product = productID + 
                            ";" + 
                            ProductColors.options[i].value + 
                            "/" + 
                            ProductColors.options[i].text + 
                            "|";
            productList = productList + product;
        }
        
        productList = productList.substring(0,productList.length - 1);*/
        
        //1234;blue/blue | 1234;red/red | 4567;gray/gray | 4567;green/green
        //addColors(productList);
        
        //rd.changeColor(productID, selectedColor);           
        changeSwatch(productID, ProductColors.options[ProductColors.selectedIndex]);  
        
        //rd.setVar(ProductColorDropdown, selectedColor);
        //renderRichFX();
    }
    CallServer("getAvailableColors;" + selectedSize + ";" + selectedColor + ";" + extendedArg1 + ";" + extendedArg2, "");
}

function loadProductSizes(UseRichFX, productID, productSizeDropdown, productColorDropdown, extendedArg1, extendedArg2)
{
    ProductColorDropdown = productColorDropdown;
    ProductSizeDropdown = productSizeDropdown;
    getBackOrderDetails(extendedArg2);
    
    var ProductColors = document.getElementById(productColorDropdown);
    var selectedColor = ProductColors.options[ProductColors.selectedIndex].value;
    var ProductSizes = document.getElementById(productSizeDropdown);
    var selectedSize = ProductSizes.options[ProductSizes.selectedIndex].value;        
    var productSetChildID;
    var productSetChildDivID; 
    var product = "";
    var productList = "";   
    if (UseRichFX == 'True')
    {
        
       /* for(var i=1; i < ProductColors.options.length; i++)
        {
        
            product = productID + 
                            ";" + 
                            ProductColors.options[i].value + 
                            "/" + 
                            ProductColors.options[i].text + 
                            "|";
            productList = productList + product;
        }
        
        productList = productList.substring(0,productList.length - 1);*/
        
        //1234;blue/blue | 1234;red/red | 4567;gray/gray | 4567;green/green
        
        //addColors(productList);
        
        //rd.changeColor(productID, selectedColor);           
        changeSwatch(productID,ProductColors.options[ProductColors.selectedIndex]);  
        
        //rd.setVar(ProductColorDropdown, selectedColor);        
        //renderRichFX();
               
    }
    CallServer("getAvailableSizes;" + selectedColor + ";" + selectedSize + ";" + extendedArg1 + ";" + extendedArg2, "");
}

function ReceiveServerData(returnValue)
{   
    if (returnValue.indexOf(PipeSeparator) != -1) // Reset both drop downs (clor and sizes)
    {
        var parameters = new Array();
        parameters = returnValue.toString().split(PipeSeparator);
        loadClientControls(parameters[0].toString(), ProductSizeDropdown);
        loadClientControls(parameters[1].toString().substring(1,parameters[1].toString().Length) , ProductColorDropdown);
    }
    else
    {
        if (returnValue.toString().indexOf(SizeTag) != -1)
        {
            loadClientControls(returnValue.toString(), ProductSizeDropdown);
        }
        else
        {
            loadClientControls(returnValue.toString(), ProductColorDropdown);
        }
    }
}

function loadClientControls (returnValue, dropDownName)
{ 
    var aDropDown = document.getElementById(dropDownName);
    
    var parameters = new Array();
    var dropDownValues = new Array();
    var slectedItem = new Array();
    var shoWBackOrderMessage;
    parameters = returnValue.split(AmpersandSeparator); // delimiter between drop down elements and the supposed selected value
    dropDownValues = parameters[0].toString().split(SemicolumnSeparator);
    slectedItem = parameters[1].toString().split(EqualSeparator);
    shoWBackOrderMessage = parameters[2];
    var showBackOrderScript = parameters[3];
    
    // Empty the given drop down
    for (var index = aDropDown.options.length; index > 0; index--) 
    {
        aDropDown.options[(index-1)] = null;
    }
    // Populate Dropdown values
    for (var index = 0 ; index < dropDownValues.length  ; index++ ) 
    {
        if (dropDownValues[index].toString().length != 0)     
        {
            var optionEntry = new Array();
            optionEntry = dropDownValues[index].toString().split(ForwardSlashSeparator);
            if (optionEntry[0].toString().length != 0) 
            {
                aDropDown.options[index] = new Option (optionEntry[1].toString(), optionEntry[0].toString());
                //Set the selected item
                if (aDropDown.options[index].value.toString() == slectedItem[1].toString().replace(";", ""))
                {
                    aDropDown.options[index].selected = true;
                }
            }
        }
    }
     //Check if need to display the back order message
     var BackOrderDiv = document.getElementById(BackOrderDivName);
     //Ensure that there is in fact a reference obtained
     //This check is necessary whereby a control may not use back order display at all
     if (shoWBackOrderMessage == '1' && BackOrderDiv != null)
     {
        var showBackOrderScriptHolderId = document.getElementById(BackOrderScriptHolder);
        showBackOrderScriptHolderId.value = showBackOrderScript;
        BackOrderDiv.style.display = "";
     }
     else if(BackOrderDiv != null)
     {
        BackOrderDiv.style.display = "none";
     }
}

function loadViewer(backOrderScriptHolder) {
    var parameters = new Array();
    var scriptHolder = document.getElementById(backOrderScriptHolder);
        
    parameters = scriptHolder.value.split(ForwardSlashSeparator);
    var daysToParam = parameters[0];
    var weekOfParam = parameters[1];
    return '&' + daysToParam + '&' + weekOfParam;
}

function toggleSeeMore(part2,dotLabel, button, expandText, collapseText) {
    var part2element=document.getElementById(part2);
    var dotelement=document.getElementById(dotLabel);
    var buttonelement=document.getElementById(button);
    
    if(!part2element)return true;
    
    if(part2element.style.display=="none")
    {
        part2element.style.display="inline";
        dotelement.style.display="none";
        buttonelement.innerHTML=collapseText;
    } 
    else 
    {
        part2element.style.display="none";
        dotelement.style.display="inline";
        buttonelement.innerHTML=expandText;
    }
    
    return true;
}


function loadOnlineCatalog(client_name, catalog_name)
{
    // Web.Config
    // var catalog_name = 'catalog1';          //Replace with the catalog name
    // var client_name = 'hanes';              //Replace with the client name
    var versioningid = '';                  //Replace with versioningid on versioning catalogs
    var passback = '';                      //Replace with the variables you would like to get in the


    if (location.search.match(/(rfx_catalogname|catalog_name)=([^&=]*)(&|$)?/))catalog_name = RegExp.$2;
    if (location.search.match(/rfx_versioningid=([^&=]*)(&|$)?/)) versioningid=RegExp.$1;

    if (location.href.indexOf('testny') > 0 || location.href.indexOf('rfx_staging') > 0)
    {
           // We are on the staging environment
           var url = 'http://testny.richfx.com/catalog_' + client_name + '/' + catalog_name + '/asp/catalog_include.aspx';
    }
    else {  
           var CDN = (location.search.match(/rfx_dontcache=true(&|$)?/) ? "" : ".edgesuite.net");
           // We are on live
           var url = 'http://' + client_name + '.richfx.com'+CDN+'/catalog_' + client_name + '/' + catalog_name + '/asp/catalog_include.aspx';
    }
    
    url += "?URL_base=" + escape("http://" + location.hostname + location.pathname + "&" + location.search.replace("\?","")) + "&rfx_catalog=1&rfx_passback=" + escape(passback); 
    
    if (versioningid.length>0) url+="&rfx_versioningid="+versioningid;

    document.write ('<scr' + 'ipt language=javascript src="' + url + '"></sc' + 'ript>');
}