﻿var IMAGE_BLANK = 'common/styles/img/blank.gif';
var TYPE_IMAGE = 'IMG';
var TYPE_INPUT = 'INPUT';
var TYPE_DIV = 'DIV';
var TYPE_LI = 'LI';
var TYPE_A = 'A';

var ud = null;

// attach to onload event only for IE 6 or below
if (/MSIE (5\.5|6)/.test(navigator.userAgent) || typeof filters == 'unknown') {
    window.attachEvent("onload", InitImages);
}

function InitImages() {
    // declare index
    var i = 0;

    // iterate through images
    for (i = 0; i < document.images.length; i++) {
        var img = document.images[i];
        if ((/\.png/i).test(img.src)) {
            FixPNG(img, img.src);
            img.onpropertychange = PropertyChangeHandler;
        }
    }

    for (i = 0; i < document.anchors.length; i++) {
        var link = document.anchors[i];
        if (link.className == 'ProductVendorSelectorClass') {
            var linkImages = link.getElementsByTagName(TYPE_IMAGE);
            for (var p = 0; p < linkImages.length; p++) {
                linkImages[p].style.width = link.style.width;
                linkImages[p].style.height = link.style.height;
            }
        }
    }


    // iterate through inputs
    var inputs = document.getElementsByTagName('input');
    for (i = 0; i < inputs.length; i++) {
        var input = inputs[i];
        if (input.type == "image") {
            if ((/\.png/i).test(input.src)) {
                FixPNG(input, input.src);
                input.onpropertychange = PropertyChangeHandler;
            }
        }
    }

    // iterate through divs
    var divs = document.getElementsByTagName('div');
    for (i = 0; i < divs.length; i++) {
        var div = divs[i];
        var bgSrc = div.currentStyle.backgroundImage || div.style.backgroundImage;
        if ((/\.png/i).test(bgSrc)) {
            FixPNG(div, bgSrc);
            div.onpropertychange = PropertyChangeHandler;
        }

        if (div.getElementsByTagName(TYPE_IMAGE).length > 0) {
            div.onfilterchange = FilterChangeHandler;
        }
    }

/*    
    // iterate through lis 
    var lis = document.getElementsByTagName('li');
    for (i = 0; i < lis.length; i++) {
        var li = lis[i];
        var bgSrc = li.currentStyle.backgroundImage || li.style.backgroundImage;
        if ((/\.png/i).test(bgSrc)) {
            FixPNG(li, bgSrc);
            li.onpropertychange = PropertyChangeHandler;
        }

        if (li.getElementsByTagName(TYPE_IMAGE).length > 0) {
            li.onfilterchange = FilterChangeHandler;
        }
    }
*/
    // iterate through anchors in lftMenu 
    var aEls = document.getElementById('lftMenu').getElementsByTagName('a');
    for (i = 0; i < aEls.length; i++) {
        var aEl = aEls[i];
        var bgSrc = aEl.currentStyle.backgroundImage || aEl.style.backgroundImage;
        if ((/\.png/i).test(bgSrc)) {
            FixPNG(aEl, bgSrc);
            aEl.onpropertychange = PropertyChangeHandler;
        }

        if (aEl.getElementsByTagName(TYPE_IMAGE).length > 0) {
            aEl.onfilterchange = FilterChangeHandler;
        }
    }
}


 
function PropertyChangeHandler() {
    switch (event.srcElement.nodeName) {
        case TYPE_IMAGE:
        case TYPE_INPUT:
            if (event.propertyName == "src" && (/\.png/i).test(event.srcElement.src)) {
                FixPNG(event.srcElement, event.srcElement.src);
            }
            break;
        case TYPE_DIV:
            if (/background/.test(event.propertyName) && (/\.png/i).test(event.srcElement.style.backgroundImage)) {
                FixPNG(event.srcElement, event.srcElement.style.backgroundImage);
            }
            break;
    }
}

function FilterChangeHandler() {
    try {
        if (event.srcElement.filters['DXImageTransform.Microsoft.Alpha'].opacity == 100) {
            ReLoadImages(event.srcElement)
        }
    }
    catch (e) {
    }
}

function ReLoadImages(div) {
    div.style.filter = null;
    var images = div.getElementsByTagName(TYPE_IMAGE);
    for (i = 0; i < images.length; i++) {
        var img = images[i];
        if ((/\.png/i).test(img.ImageSrc)) {
            img.style.filter = null;
            FixPNG(img, img.ImageSrc);
        }
    }
}

function FixPNG(elem, src) {

    switch (elem.nodeName) {

        case TYPE_IMAGE:
        case TYPE_INPUT:
            if ((/\.png/i).test(src)) {
                LoadImageInFilter(elem, src, 1);
                elem.src = IMAGE_BLANK;
            }
            break;
        case TYPE_A:
        case TYPE_LI:
        case TYPE_DIV:
            var bgSrc = elem.currentStyle.backgroundImage || elem.style.backgroundImage;
            if ((bgSrc + src).indexOf(IMAGE_BLANK) == -1) {
                var bgPNG = bgSrc.match(/^url[("']+(.*\.png[^\)"']*)[\)"']+[^\)]*$/i);

                if (bgPNG) {
                    //elem.style.backgroundImage = 'url("' + IMAGE_BLANK + '")';
                    elem.style.backgroundImage = 'none';
                    LoadImageInFilter(elem, bgPNG[1], 0);
                }
                //else LoadImageInFilter(elem);
            }
            break;
    }

}

function LoadImageInFilter(e, s, b) {
    var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
    var sM = (e.currentStyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale';
    s = (s || '').replace(/\(/g, '%28').replace(/\)/g, '%29');

    if (s && !(/IMG|INPUT/.test(e.nodeName) && !b) && e.currentStyle.width == 'auto' && e.currentStyle.height == 'auto') {
        e.style.width = e.offsetWidth + 'px';
        e.style.height = e.clientHeight + 'px';
        if (e.currentStyle.display == 'inline') e.style.display = 'inline-block';
    }

    if (e.filters[f]) {
        e.filters[f].enabled = s ? true : false;
        if (s) with (e.filters[f]) { src = s }
    }
    else if (s) e.style.filter = 'progid:' + f + '(src="' + s + '",sizingMethod="' + sM + '")';

    e.ImageSrc = s;
}