/// <reference path="mootools-1.2-core.js" />
function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}
function Features(element) {
    var features = $(element).getChildren();
    var fver = new deconcept.PlayerVersion([8]);
    if (deconcept.SWFObjectUtil.getPlayerVersion().versionIsValid(fver)) {
        window.addEvent('load', function() {
            var count = features.length;
            var featureList = new Array();
            features.each(function(item, index) {
                var type = getType(item);
                var image = item.getElement('.featIMG img').get('src');
                var title = item.getElement('.featIMG a').get('html');
                var info = item.getElements('.featInfo p');
                var text = '';
                var url = '';
                var target = '_self';
                var viewallUrl = '';
                info.each(function(iitem, iindex) {
                    if (iitem.hasClass('viewall')) {
                        viewallUrl = iitem.getElement('a').get('href');
                    } else if (iitem.hasClass('more')) {
                        if (iitem.getElement('a') != null) {
                            url = iitem.getElement('a').get('href');
                            if (iitem.getElement('a').get('target') != null)
                                target = iitem.getElement('a').get('target');
                        }
                    } else {
                        text += iitem.get('html');
                    }
                });
                featureList[featureList.length++] = new objFeature(title, image, type, text, url, target, viewallUrl);
            });
            var so = new SWFObject("/flashes/feature.swf", "FeatureFlash", "825", "137", "8", "#000000");
            so.addParam("wmode", "transparent");
            so.addParam("menu", "false");
            so.useExpressInstall('/flashes/expressinstall.swf');
            so.addVariable('count', count);
            featureList.each(function(item, index) {
                var num = (index + 1);
                so.addVariable('image' + num, urlEncodeIfNecessary(item.Image));
                so.addVariable('title' + num, urlEncodeIfNecessary(item.Title));
                so.addVariable('type' + num, urlEncodeIfNecessary(item.Type));
                so.addVariable('text' + num, urlEncodeIfNecessary(item.Text));
                so.addVariable('color' + num, urlEncodeIfNecessary(item.Color));
                so.addVariable('bgcolor' + num, urlEncodeIfNecessary(item.BGColor));
                so.addVariable('detailurl' + num, urlEncodeIfNecessary(item.Url));
                so.addVariable('target' + num, urlEncodeIfNecessary(item.Target));
                so.addVariable('viewallurl' + num, urlEncodeIfNecessary(item.ViewallUrl));
            });
            so.write($(element));

            $(element).addEvent('mouseleave', function() {
                //alert(thisMovie("FeatureFlash"));
                thisMovie("FeatureFlash").collapse();
            });
        });
    } else {
        var szNormal = 275, szSmall = 60, szFull = 700;
        if (features.length == 3) {
            szNormal = 275;
            szSmall = 60;
            szFull = 825 - (60 * 2);
        } else if (features.length == 2) {
            szNormal = 412;
            szSmall = 60;
            szFull = 825 - 60;
        }

        features.each(function(item, i) {
            var container = new Element('div');
            var imageWidth = 0;
            item.setStyle('display','block');
            item.getChildren().each(function(e, childIndex) {
                var elementSize = e.getSize();
                if (childIndex == 0) {
                    imageWidth = elementSize.x;
                } else if (childIndex == 1) {
                    e.setStyles({ 'width': (szFull - imageWidth - 20) + 'px' });
                }
                e.injectInside(container);
            });
            container.setStyles({ 'width': szFull + 'px' });
            container.injectInside(item);
        });

        var fx = new Fx.Elements(features, { wait: false, duration: 1000, transition: Fx.Transitions.Back.easeOut });
        features.each(function(item, i) {
            item.addEvent("mouseenter", function(event) {
                var o = {};
                o[i] = { width: [item.getStyle("width").toInt(), szFull] }
                features.each(function(other, j) {
                    if (i != j) {
                        var w = other.getStyle("width").toInt();
                        if (w != szSmall) o[j] = { width: [w, szSmall] };
                    }
                });
                fx.start(o);
            });
        });

        $(element).addEvent("mouseleave", function(event) {
            var o = {};
            features.each(function(item, i) {
                o[i] = { width: [item.getStyle("width").toInt(), szNormal] }
            });
            fx.start(o);
        });
    }
}

function getColor(imgName, type) {
    var regEx = new RegExp("^([0-9a-f]{1,2}){3}$");
    var colorVal = null;
    if ($defined(imgName)) {
        var name = imgName.split('.');
        if (name.length > 1) {
            var color = name[name.length - 2].split('-');
            if (color.length > 0) {
                switch (type) {
                    case 'Text':
                        if (color.length > 2) {
                            if (color[color.length - 2].match(regEx)) {
                                colorVal = color[color.length - 2];
                            }
                        }
                        if (color[color.length - 1].match(regEx) && !$defined(colorVal)) {
                            colorVal = color[color.length - 1];
                        }
                        break;
                    case 'Background':
                        if (color[color.length - 1].match(regEx)) {
                            colorVal = color[color.length - 1];
                        }
                        break;
                }
            }
        }
    }
    if (colorVal != "")
        colorVal = "0x" + colorVal;
    return colorVal;
}

function getType(item) {
    if (item.hasClass('promo')) {
        return 'promotion';
    }
    if (item.hasClass('feature')) {
        return 'feature';
    }
    if (item.hasClass('event')) {
        return 'event';
    }
    return '';
}

function objFeature(title, image, type, text, url, target, viewallUrl) {
    this.Title = title;
    this.Image = image;
    this.Color = getColor(image, 'Text');
    this.BGColor = getColor(image, 'Background');
    this.Type = type;
    this.Text = text;
    this.Url = url;
    this.Target = target;
    this.ViewallUrl = viewallUrl;
}

function urlEncodeIfNecessary(s) {
    var regex = /[\\\"<>\.;]/;
    var hasBadChars = regex.exec(s) != null;
    return hasBadChars ? encodeURIComponent(s) : s;
}