var CurrentColor = '';
var CurrentSize = '';
var shownSize = '';
var CurrentSmallImage = '';
var CurrentLargeImage = '';

var DomainPrefix = "http://lib.store.yahoo.net";
var orderForm = null;
var colorDropdown;
var optionArray = new Array();
var colorMap = new Array(); /* contains the image names indexed by the translated image names */
var sizeLabels = new Array();
var PreloadArray = new Array();

if (productCode.match("^wH.+") || productCode.match("^aB.+"))
{
    sizeLabels['Standard'] = 'Standard';
}
else if (!productCode.match("^k.+"))
{
    sizeLabels['Small'] = 'S';
    sizeLabels['Medium'] = 'M';
    sizeLabels['Large'] = 'L';
    sizeLabels['XL'] = 'XL';
    sizeLabels['2XL'] = '2XL';
    sizeLabels['3XL'] = '3XL';
/*    sizeLabels['4XL'] = '4XL'; */
}

var swatchTI; /* swatch timeout id */

function NoPreview()
{
    var img = document.getElementById("ProductImage");
    img.src = "/lib/shukr/no-preview.gif";
}
function NoSwatch(img)
{
    img.src = "/lib/shukr/no-swatch.gif";
}

function addEvent(elm, evType, fn, useCapture)
{
    if (elm.addEventListener)
    {
        elm.addEventListener(evType,fn,useCapture);
        return (true);
    }
    else if ( elm.attachEvent )
    {
        var r = elm.attachEvent('on' + evType, fn);
        return (r);
    }
    else
    {
        elm['on' + evType] = fn;
    }
}

function SelectFirstSwatch()
{
    if (colorDropdown)
    {
        var firstCombination = colorDropdown.options[1];
        //var splitOption = firstCombination.value.split("/");
        var splitOption = firstCombination.value.match("([^/]+)/(.+)");
        if (splitOption && splitOption.length > 0)
        {
            SetSize(splitOption[1]);
        }
    }
}

function PreloadSwatchImages()
{
    if (colorDropdown)
    {
        for (var i = 1; i < colorDropdown.options.length; i++)
        {
            //var splitOption = colorDropdown.options[i].value.split("/");
            var splitOption = colorDropdown.options[i].value.match("([^/]+)/(.+)");
            if (splitOption && splitOption.length > 0)
            {
                var Color = splitOption[2].replace(/ /gi,"_").replace(/-/gi,"_").replace("/","_").toLowerCase();
                if (typeof(PreloadArray[Color]) == 'undefined')
                {
                    var srcImg = String('/lib/shukr/' + productCode + '-' + Color + '-small.jpg').toLowerCase();
                    var img = new Image();
                    img.src = srcImg;
                    PreloadArray[Color] = img;
                }
            }
        }
    }
}

function ShowSelectedColor(color)
{
    var selCol = document.getElementById("selectedColor");
    if (selCol)
    {
        if (color != '')
            selCol.innerHTML = "<b><font color=#94A0AF>Selected Color:</font> " + color + "</b>";
        else
            selCol.innerHTML = "&nbsp;";
    }
}
function ShowSelectedSize(size)
{
    var selCol = document.getElementById("selectedSize");
    if (selCol)
    {
        if (size != '')
            selCol.innerHTML = "<b><font color=#94A0AF>Selected Size:</font> " + size + "</b>";
        else
            selCol.innerHTML = "&nbsp;";
    }
}

function ChangePreviewImage(color)
{
    clearTimeout(swatchTI);
    var imgSrc = String(DomainPrefix + '/lib/shukr/' + productCode + '-' + color + '-small.jpg').toLowerCase();
    var imgLargeSrc = String(DomainPrefix + '/lib/shukr/' + productCode + '-' + color + '-large.jpg').toLowerCase();
    var img = document.getElementById("ProductImage");
    if (img)
    {
        if (PreloadArray[color])
        {
            img.src = PreloadArray[color].src;
        }
        else
            img.src = imgSrc;
        if (img.parentNode)
        {
            img.parentNode.href = "javascript:CaricaFoto('" + imgLargeSrc + "')";
            img.parentNode.upref = imgLargeSrc;
        }
        ShowSelectedColor(colorMap[color]);
    }
}

function ColorDropdownChange()
{
    /* This function is called when the size/color drop-down changes */
    if (colorDropdown.selectedIndex == 0)
    {
        CurrentColor = "";
        CurrentSize = "";
        return;
    }
    
    var currSel = colorDropdown.options[colorDropdown.selectedIndex].value;
    //var splitOption = currSel.split("/");
    var splitOption = currSel.match("([^/]+)/(.+)");
    if (splitOption && splitOption.length > 0)
    {
        var CurrentSize = splitOption[1];
        var CurrentColor = splitOption[2];
        SetSize(CurrentSize);
        SetColor(CurrentColor.replace(/ /gi,"_").replace(/-/gi,"_").replace("/","_").toLowerCase(),CurrentColor, true);
        ShowSelectedColor(CurrentColor);
        ShowSelectedSize(CurrentSize);
    }
}

function FindOrderForm()
{
    /* Find the main order form */
    for (var i = 0; i < document.forms.length; i++)
    {
        if (document.forms[i].action.match("order.store.yahoo") || document.forms[i].action.match("cgi-bin/test-order?"))
        {
            if (document.forms[i].elements.length > 0)
                return(document.forms[i]);
        }
    }
    return(null);
}

function FindColorDropdown()
{
    /* Find the size/color drop-down */
    if (orderForm)
    {
        for (var i = 0; i < orderForm.elements.length; i++)
        {
            if (orderForm.elements[i].name == "Select Size/Color")
                return (orderForm.elements[i]);
        }
        return (null);
    }
    else
        return (null);
}

function RestoreSwatch()
{
    ShowSelectedColor(CurrentColor);
    ShowSelectedSize(CurrentSize);
    if (CurrentSize != '')
    {
        ShowSwatches(CurrentSize);
    }
    /* restore the product image */
    if (CurrentSmallImage != '')
    {
        var img = document.getElementById("ProductImage");
        if (img)
        {
            img.src = CurrentSmallImage;
            
            if (img.parentNode)
            {
                if (CurrentLargeImage != '')
                {
                    img.parentNode.href = "javascript:CaricaFoto('" + CurrentLargeImage + "')";
                    img.parentNode.upref = CurrentLargeImage;
                }
            }
            initZoom();
        }
    }
}

function ShowSwatches(size)
{
    shownSize = size;
    
    var div = document.getElementById("swatchBlock_" + size);
    if (div)
    {
        ShowSelectedSize(size);
        clearTimeout(swatchTI);
        if (div.style.display != "block")
        {
            for (var x in sizeLabels)
            {
                var div0 = document.getElementById("swatchBlock_" + x);
                if (div0)
                    div0.style.display = 'none';
            }
            div.style.display = "block";
        }
    }
}

function SetDropdown()
{
    if (CurrentColor != '' && CurrentSize != '')
    {
        for (var i = 0; i < colorDropdown.options.length; i++)
        {
            if (colorDropdown.options[i].text == CurrentSize + "/" + CurrentColor)
            {
                colorDropdown.selectedIndex = i;
                return;
            }
        }
    }
}

function SetColor(color, colorName, changeImage)
{
    CurrentColor = colorName;
    CurrentSmallImage = String(DomainPrefix + "/lib/shukr/" + productCode + "-" + color + "-small.jpg").toLowerCase();
    CurrentLargeImage = String(DomainPrefix + "/lib/shukr/" + productCode + "-" + color + "-large.jpg").toLowerCase();
    
    if (changeImage)
    {
        ChangePreviewImage(color);
    }
    else
        SetDropdown();
}

function SetSize(size, selector)
{
    CurrentSize = size;
    CurrentColor = '';
    shownSize = size;
    
    var selectors = document.getElementById("sizeButtons");
    if (selectors)
    {
        var anchors = selectors.getElementsByTagName("a");
        for (var i = 0; i < anchors.length; i++)
        {
            if (anchors[i].className != 'disabled')
                anchors[i].className = "";
        }
    }
    if (!selector)
    {
        var selector = document.getElementById("sizeSelector_" + size);
    }
    if (selector)
        selector.className = "selected";
    ShowSwatches(size);
    SetDropdown();
}

function GenerateSwatches()
{
    var swatchDisplay = document.getElementById("swatchDisplay");
    if (swatchDisplay)
    {
        var res = '';
        res += "<div id=selectedColor>&nbsp;</div><div id=selectedSize>&nbsp;</div>";
        for (var x in sizeLabels)
        {
            res += "<div style='display: none' id=swatchBlock_" + x + ">";
            if (typeof(optionArray[x]) == 'undefined' || !optionArray[x])
            {
                res += "This size is not available";
            }
            else
            {
                var selCols = optionArray[x];
                res += "<div><table border=0 cellpadding=0 cellspacing=0><tr>";
                for (var i = 0; i < selCols.length; i++)
                {
                    if ((i % 5 == 0) && (i > 0))
                    {
                        res += "</tr><tr>";
                    }
                    var col = selCols[i].toLowerCase().replace(/ /gi,'_').replace(/-/gi,'_').replace("/","_");
                    if (typeof(colorMap[col]) == 'undefined')
                        colorMap[col] = selCols[i];
                    res += "<td style='padding-right: 2px; padding-bottom: 2px'><a href='javascript:void(0)' onclick=\"SetSize(shownSize); SetColor('" + col + "','" + selCols[i] +  "'); setTimeout(&quot;ChangePreviewImage('" + col + "')&quot;,100);\" onmouseover=\"ChangePreviewImage('" + col +"')\" onmouseout=\"swatchTI = setTimeout(RestoreSwatch,300)\"><img onerror=\"NoSwatch(this)\" border=1 src=/lib/shukr/" + productCode.toLowerCase() + "-" + col + "-swatch.jpg width=27 height=27></a></td>" ;            
                }
                res += "</tr></table></div>";
            }
            res += "</div>";
        }
        swatchDisplay.innerHTML = res;
    }
}

function ShowSizes()
{
    /* show the size selector boxes */
    var res = '';
    
    for (var k in sizeLabels)
    {
        if (typeof(optionArray[k]) == 'undefined')
        {
            res += '<a href="javascript:void(0)" onmouseout="swatchTI = setTimeout(RestoreSwatch,300)" class=disabled onmouseover="ShowSwatches(\'' + k + '\')">' + sizeLabels[k] + '</a> ';
        }
        else
        {
            res += '<a id="sizeSelector_' + k + '" href="javascript:void(0)" onmouseout="swatchTI = setTimeout(RestoreSwatch,300)" onmouseover="ShowSwatches(\'' + k + '\')" onclick="SetSize(\'' + k + '\',this)">' + sizeLabels[k] + '</a> ';
        }
    }
    return ("<div id=sizeButtons>" + res + "</div><div id=swatchDisplay></div>");
}

function DoSwatches()
{
    orderForm = FindOrderForm();
    colorDropdown = FindColorDropdown();
    if (colorDropdown)
    {
        addEvent(colorDropdown,'change',ColorDropdownChange);
        for (var i = 1; i < colorDropdown.options.length; i++)
        {
            //var splitOption = colorDropdown.options[i].value.split("/");
            var splitOption = colorDropdown.options[i].value.match("([^/]+)/(.+)");
            //alert(splitOption);
            if (splitOption && splitOption.length > 0)
            {
                var Size = splitOption[1];
                var Color = splitOption[2];
                if (typeof(sizeLabels[Size]) == 'undefined')
                {
                    sizeLabels[Size] = Size;
                }
                
                if (typeof(optionArray[Size])=='undefined')
                {
                    optionArray[Size] = new Array();
                }
                optionArray[Size][optionArray[Size].length] = Color;
            }
        }
        
        var swatchDiv = document.getElementById('swatchDiv');
        if (swatchDiv)
        {
            swatchDiv.innerHTML += ShowSizes();
        }
        /* retrieve the currently displayed product image */
        var img = document.getElementById("ProductImage");
        if (img)
        {
            CurrentSmallImage = img.src;
            if (img.parentNode)
            {
                var href = img.parentNode.href;
                var re = /'(.+)'/;
                var m = re.exec(href);
                if (m && m.length > 0)
                {
                    CurrentLargeImage = m[1];
                }
            }
        }
        GenerateSwatches();
        SelectFirstSwatch();
        addEvent(window,'load',PreloadSwatchImages);
        addEvent(document.getElementById("ProductImage"),'error',NoPreview);
    }
}

function ieCacheBugFix()
{
    var colorDropdown = FindColorDropdown();
    if (colorDropdown)
    {
        for (var i = 1; i < colorDropdown.options.length; i++)
        {
            //var splitOption = colorDropdown.options[i].value.split("/");
            var splitOption = colorDropdown.options[i].value.match("([^/]+)/(.+)");
            if (splitOption && splitOption.length > 0)
            {
                var Color = splitOption[2].replace(/ /gi,"_").replace(/-/gi,"_").replace("/","_").toLowerCase();
                if (typeof(PreloadArray[Color]) == 'undefined')
                {
                    var srcImg = String(DomainPrefix + '/lib/shukr/' + productCode + '-' + Color + '-small.jpg').toLowerCase();
                    var img = new Image();
                    img.src = srcImg;
                    PreloadArray[Color] = img;
                    document.write("<img src=" + srcImg + ">");
                }
            }
        }
    }
}

function initZoom()
{
  jQuery("#mainImg").ytZoomify(
  {
    magnifyWidth: 75,
    magnifyHeight: 75,
    magnifyGlass: true,
    magnifyTV: true,
    magnifyTVWidth: 325,
    magnifyTVHeight: 325,
    loading: "/lib/shukr/loading.gif"
  }
  );
}
