﻿var CurrentTheme = null;

var urlColorTest = /(purple|green|blue|red)(%|\/)/i;
var urlShadeTest = /(light|dark)(%|\/)/i;
var urlThemeTest = /(friends|dating|hollywood)(%|\/)/i;

GetIFrameDocument = function (name) {
    var iFrame = document.getElementById(name);
    if (iFrame) {
        if (iFrame.contentDocument)
            return iFrame.contentDocument;
        else if (iFrame.contentWindow)
            return iFrame.contentWindow.document;
    }
    return null;
}

GetAllStyleSheets = function (doc) {
    var sheets = new Array();
    if (doc.styleSheets) {
        sheets = doc.styleSheets;
    } else {
        var elements = doc.getElementsByTagName('link');
        for (var i = 0; i < elements.length; i++)
            var sheet = elements[i].sheet ? elements[i].sheet : elements[i].styleSheet;
        if (sheet) sheets.push(sheet);
    }
    return sheets;
}

ChangeStyleSheetHref = function (doc, sheet, href) {
    if (sheet && sheet.href == href) {
        return;
    }
    if (sheet && DetermineBrowser() == Browsers.IE) {
        sheet.href = href;
    } else {
        if (sheet) sheet.disabled = true;
        var cssNode = document.createElement("link");
        cssNode.setAttribute("rel", "stylesheet");
        cssNode.setAttribute("type", "text/css");
        cssNode.setAttribute("href", href);

        var styleNode = sheet.ownerNode ? sheet.ownerNode : sheet.owningElement;
        if (styleNode) {
            styleNode.parentNode.replaceChild(cssNode, styleNode);
        } else {
            var head = doc.getElementsByTagName("head");
            if (head && head.length > 0) head[0].appendChild(cssNode);
        }
    }
}

DocumentThemeChange = function (doc, theme, color, shade) {
    if (!doc) doc = document;
    if (theme) MainTheme = theme; else theme = MainTheme;
    if (color) MainColor = color; else color = MainColor;
    if (shade) MainShade = shade; else shade = MainShade;

    var allStyleSheets = GetAllStyleSheets(doc);
    for (var i = 0; i <= allStyleSheets.length - 1; i++) {
        StyleSheetThemeChange(doc, allStyleSheets[i], theme, color, shade);
    }

    var allElements = doc.getElementsByTagName("*");
    for (var i = 0; i < allElements.length; i++) {
        ElementThemeChange(allElements[i], theme, color, shade);
    }

}

StyleSheetThemeChange = function (doc, styleSheet, theme, color, shade) {
    if (!styleSheet) return;

    var href = styleSheet.href;

    if (!doc) doc = document;
    if (!theme) theme = MainTheme;
    if (!color) color = MainColor;
    if (!shade) shade = MainShade;

    if (urlColorTest.test(href)) href = href.replace(new RegExp(urlColorTest.source, "ig"), color + "$2");
    if (urlShadeTest.test(href)) href = href.replace(new RegExp(urlShadeTest.source, "ig"), shade + "$2");
    if (urlThemeTest.test(href)) href = href.replace(new RegExp(urlThemeTest.source, "ig"), theme + "$2");
    if (styleSheet.href != href) ChangeStyleSheetHref(doc, styleSheet, href);
}

ElementThemeChange = function (element, theme, color, shade) {
    if (!element) return;
    if (!theme) theme = MainTheme;
    if (!color) color = MainColor;
    if (!shade) shade = MainShade;

    if (theme == "plm")
        alert("Stop!");

    if (element && element.tagName) {
        switch (element.tagName.toLowerCase()) {
            case "img":
                var src = element.src;
                if (urlColorTest.test(src)) src = src.replace(new RegExp(urlColorTest.source, "ig"), color + "$2");
                if (urlShadeTest.test(src)) src = src.replace(new RegExp(urlShadeTest.source, "ig"), shade + "$2");
                if (urlThemeTest.test(src)) src = src.replace(new RegExp(urlThemeTest.source, "ig"), theme + "$2");
                if (element.src != src) element.src = src;
                break;
            case "object":
                try { obj.resetColor(color, shade, MainTheme, MainLanguage); }
                catch (e) { /*var poppop = "fizzfizz"; */ }
                break;
            default:
                if (element.id && element.id == "StarTunes") {
                    element.colorChange(color, shade);
                } else if (element.style) {
                    var bi = element.style.backgroundImage;
                    if (bi && bi.length) {
                        if (urlColorTest.test(bi)) bi = bi.replace(new RegExp(urlColorTest.source, "ig"), color + "$2");
                        if (urlShadeTest.test(bi)) bi = bi.replace(new RegExp(urlShadeTest.source, "ig"), shade + "$2");
                        if (urlThemeTest.test(bi)) bi = bi.replace(new RegExp(urlThemeTest.source, "ig"), theme + "$2");
                        if (element.style.backgroundImage != bi) element.style.backgroundImage = bi;
                    }
                }
                break;
        }
    }
}
