﻿(function() {
    UFrame = function(config) {
        this.config = config;
    };
    UFrame.prototype = {
        load: function() {
            var c = this.config;
            if (c.loadFrom) { UFrameManager.loadHtml(c.loadFrom, c.params, c); }
        },
        submit: function(form) { UFrameManager.submitForm(form, null); },
        navigate: function(href) { UFrameManager.loadHtml(href, null, this.config); }
    }
    UFrameManager = {
    _uFrames: {},
    empty: function() { },
    init: function(config) {
        var o = new UFrame(config);
        UFrameManager._uFrames[config.id] = o;
        o.load();
    },
    getHtml: function(url, queryString, callback, method) {
        try {
            $.ajax({
                url: url,
                type: method || "GET",
                data: queryString,
                dataType: "html",
                success: callback,
                error: function(xml, status, e) {
                    if (xml && xml.responseText)
                        callback(xml.responseText);
                    //else if (typeof (e.message) != "undefined")
                },
                cache: false
            });
        } catch (e) {
            if (typeof (e.message) != "undefined") alert(e);
        }
    },
    getUFrame: function(id) { return UFrameManager._uFrames[id]; },
    submitForm: function(form, submitData) {
        var isDownload = false;
        var params = {};
        //.find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea")
        $(form).find("input[checked], input[type='text'], input[type='hidden'], input[type='password'], option[selected], textarea")
        .filter(":enabled").each(function() {
            params[this.name || this.id || this.parentNode.name || this.parentNode.id] = this.value;
        });
        if (submitData) {
            params[submitData.name] = submitData.value;
        }
        var uframeId = $(form).attr("UFrameID");
        var uframe = UFrameManager.getUFrame(uframeId);
        var config = uframe.config;
        var container = $('#' + config.id);
        var url = form.action; //UFrameManager.resolveUrl(config.loadFrom, form.action);
        var area = "";
        var url_certa = "";
        var url_pagetrack = "";
        if (url.indexOf("#") >= 0) {
            area = url.split("#")[1];
            url_certa = url.split("#")[0];
        }
        else { url_certa = url; }
        var jqueryid = '' + url_certa.split("=")[1];
        var sessionPath = document.getElementById("hdfSessionPath").value;
        if (sessionPath.indexOf('.aspx') > 0) {
            url_certa = sessionPath + "?_=" + jqueryid;
            url_pagetrack = sessionPath;
        } else {
            url_certa = sessionPath + "/Default.aspx?_=" + jqueryid;
            url_pagetrack = sessionPath + "/Default.aspx";
        }
        form.action = url_certa;
        // pageTracker._trackPageview(url_pagetrack);
        UFrameManager.getHtml(url_certa, params, function(data) {
            config.loadFrom = url_certa;
            (config.afterLoad || UFrameManager.empty)(url_certa, data);
            UFrameManager.processHtml(data, container, config);
        }, "POST");
        //}
    },
    loadHtml: function(url, params, config) {
        if (url.replace(" ", "") == "") return;
        url = unescape(url);
        var container = $('#' + config.id);
        var queryString = $.param(params || {});
        if ((config.beforeLoad || UFrameManager.empty)(url, params) !== false) {
            //if(config.progressTemplate) container.html(config.progressTemplate);
            config.loadFrom = url;
            UFrameManager.getHtml(url, queryString, function(content) {
                (config.afterLoad || UFrameManager.empty)(url, content);
                UFrameManager.processHtml(content, container, config);
            });
        }
    },
    processHtml: function(content, container, config) {
        var result = UFrameManager.parseHtml(content, config);
        var head = document.getElementsByTagName('head')[0];
        $(result.styles).each(function(index, text) {
            var styleNode = document.createElement("style");
            styleNode.setAttribute("type", "text/css");
            if (styleNode.styleSheet) {
                styleNode.styleSheet.cssText = text;
            } else {
                var cssText = document.createTextNode(text);
                styleNode.appendChild(cssText);
            }
            head.appendChild(styleNode);
        });
        $(result.links).each(function(index, attrs) {
            window.setTimeout(function() {
                var link = document.createElement('link');
                var href = "";
                for (var i = 0; i < attrs.length; i++) {
                    var attr = attrs[i];
                    if (attr.name == "href") href = attr.value;
                    link.setAttribute("" + attr.name, "" + attr.value);
                }
                if (href.length > 0) {
                    link.href = UFrameManager.resolveUrl(config.loadFrom, href);
                    if (!UFrameManager.isTagLoaded('link', 'href', link.href)) { head.appendChild(link); }
                }
            }, 0);
        });
        var scriptsToLoad = result.externalScripts.length;
        $(result.externalScripts).each(function(index, scriptSrc) {
            scriptSrc = UFrameManager.resolveUrl(config.loadFrom, scriptSrc);
            if (UFrameManager.isTagLoaded('script', 'src', scriptSrc)) {
                scriptsToLoad--;
            } else {
                $.ajax({
                    url: scriptSrc,
                    type: "GET",
                    data: null,
                    dataType: "script",
                    success: function() { scriptsToLoad--; },
                    error: function() { scriptsToLoad--; },
                    cache: false
                    //cache: true
                });
            }
        });
        UFrameManager.until({
            test: function() { return scriptsToLoad === 0; },
            delay: 100,
            callback: function() {
                var html = (config.beforeBodyTemplate || "") + result.body + (config.afterBodyTemplate || "");
                container.html(html);
                window.setTimeout(function() {
                    $(result.inlineScripts).each(function(index, script) { $.globalEval(script); });
                    //$("#uframeContainer").addClass("uframeCarregando"); Malk trabalhando
                    UFrameManager.hook(container, config);
                    document.getElementById("divPlayer").style.display = "";
                    NATURA._formataCalendario();
                    NATURA._player();
                    NATURA._blogMural();
                    NATURA._nav();
                    //closeAbas();
                    if (typeof callback == "function") callback();
                }, 0);
            }
        });
    },
    isTagLoaded: function(tagName, attName, value) {
        var tag = document.createElement(tagName);
        tag[attName] = value;
        var tagFound = false;
        $(tagName, document).each(function(index, t) {
            if (tag[attName] === t[attName]) { tagFound = true; return false }
        });
        return tagFound;
    },
    hook: function(container, config) {
        $("a", container).unbind("click").click(function() {
            try {
                if ($(this).attr("class").indexOf("noGoTop") < 0)
                    window.scrollTo(0, 0);
            }
            catch (e) {
                window.scrollTo(0, 0);
            }
            if (typeof ($(this).attr("href")) == "undefined")
                return;
            var href = $(this).attr("href");
            if ((href.indexOf("http://") >= 0 && href.indexOf("http://") <= 10) && href.indexOf(document.location.host) < 0) {
                return true;
            }
            if ($(this).hasClass("noUframe")) return;
            if (this.hash == "") {
                var hash = this.pathname.replace(".aspx", ".mus");
                if (hash.charAt(0) != "/") {
                    hash = "/" + hash;
                }
                if (hash.indexOf("__doPostBack") < 0) {
                    location.hash = hash;
                } else {
                    if (this.hash.indexOf("__doPostBack") < 0) {
                        location.hash = this.hash;
                    }
                }
            }
            if (href) {
                if ((href.indexOf("http://") >= 0 && href.indexOf("http://") <= 10) && href.indexOf(document.location.host) < 0) {
                    return true;
                }
                if (this.href.indexOf("__doPostBack") >= 0 && (this.id.indexOf("MusicaDetalhe_lbtDownload") >= 0 || this.id.indexOf("MusicaDetalhe_lbtOuvir") >= 0 || this.id.indexOf('wucDownloads_hlDownloadMusicas') >= 0)) {
                    //var params = {};
                    //$(form).find("input[checked], input[type='text'], input[type='hidden'], input[type='password'], option[selected], textarea")
	                //.filter(":enabled").each(function() {
	                //    params[this.name || this.id || this.parentNode.name || this.parentNode.id] = this.value;
	                //});
                    //if (submitData) {
                    //    params[submitData.name] = submitData.value;
                    //}
                    //var uframeId = $(form).attr("UFrameID");
                    //var uframe = UFrameManager.getUFrame(uframeId);
                    //var config = uframe.config;
                    //var container = $('#' + config.id);
                    var form = $(this).parents("form").get(0);
                    var url = form.action;
                    var area = "";
                    var url_certa = "";
                    if (url.indexOf("#") >= 0) {
                        area = url.split("#")[1];
                        url_certa = url.split("#")[0];
                    } else {
                        url_certa = url;
                    }
                    var jqueryid = '' + url_certa.split("=")[1];
                    var sessionPath = document.getElementById("hdfSessionPath").value;
                    if (sessionPath.indexOf('.aspx') > 0) {
                        url_certa = sessionPath + "?_=" + jqueryid;
                    } else {
                        url_certa = sessionPath + "/Default.aspx?_=" + jqueryid;
                    }
                    form.action = url_certa;
                    //pageTracker._trackPageview(url_certa);
                    $(form).submit();
                }
                if ((href.indexOf("http://") >= 0 && href.indexOf("http://") <= 10) && href.indexOf("OuvirRadio") > 0) {
                    return true;
                } else {
                    if (href.indexOf('javascript:') !== 0) {
                        UFrameManager.loadHtml(href, null, config);
                        var urlParts = location.hash.replace('#/', '').split("/");
                        if(urlParts[0].replace(".mus", "") != "")
                            AlteraCSS(urlParts[0].replace(".mus", ""));
                        //UFrameManager.initContainers();
                        //var uframe = UFrameManager.getUFrame('UFrame');
                        //uframe.navigate(href);
                        UFrameManager.executeASPNETPostback(this, href)
                        //_LoadPage(url2);
                        return false;
                    } else {
                        UFrameManager.executeASPNETPostback(this, href)
                        return false;
                    }
                }
            } else {
                //pageTracker._trackPageview(href);
                return true;
            }
        });
        $(":image,:submit,:button", container).unbind("click").click(function() { return UFrameManager.submitInput(this); });
        $("select", container).unbind("change").change(function() {
            if (this.hasClass("noUframe")) { }
            else { return UFrameManager.submitInput(this); }
            //})
            //.each(function() {
            //    this.onchange = null;
        });
        $("form", container).attr("UFrameID", config.id).unbind("submit").submit(function() {
            var firstInput = $(":image,:submit,:button", container).get(0);
            return UFrameManager.submitInput(firstInput);
        });
    },
    executeASPNETPostback: function(input, href) {
        if (href.indexOf("__doPostBack") > 0) {
            //if (url.indexOf("#") >= 0) {
            //    area = url.split("#")[1];
            //    url = url.split("#")[0];
            //}
            var parts = href.split("'");
            var eventTarget = parts[1];
            var eventArgument = parts[3];
            var form = $(input).parents("form").get(0);
            form.__EVENTTARGET.value = unescape(eventTarget);
            form.__EVENTARGUMENT.value = unescape(eventArgument);
            UFrameManager.submitForm(form, null);
            return true;
        }
        else if (href.indexOf("WebForm_DoPostBackWithOptions") > 0) {
            if (href.indexOf("#") >= 0) {
                area = href.split("#")[1];
                url = area.split(",")[0];
                url2 = url.replace("\"", "");
                // pageTracker._trackPageview(url2);
                url2 = '#' + url2
                _LoadPage(url2);
            } else {
                //TrackerPageView(href);
                //pageTracker._trackPageview(TrataUrlPageTrack(href));
            }
            //UFrameManager.initContainers();
            //var uframe = UFrameManager.getUFrame('UFrame');
            //uframe.navigate('/blog/post.aspx?title=teste 01');
            return false;
        }
        else {
            //TrackerPageView(href);
            //pageTracker._trackPageview(TrataUrlPageTrack(href));
            return false;
        }
    },
    submitInput: function(input) {
        var form = input.form;
        if (form.onsubmit && form.onsubmit() == false) {
            return false;
        }
        input = $(input);
        UFrameManager.submitForm(form, { name: input.attr("name"), value: input.attr("value") });
        return false;
    },
    until: function(o) {
        if (o.test() === true) o.callback();
        else window.setTimeout(function() { UFrameManager.until(o); }, o.delay || 100);
    },
    delay: function(func, delay) {
        window.setTimeout(func, delay || 100);
    },
    resolveUrl: function(baseUrl, relativeUrl) {
        var currentPageUrl = document.location.protocol + "//" + document.location.host + document.location.pathname;
        if (relativeUrl.indexOf(currentPageUrl) == 0) relativeUrl = relativeUrl.substring(currentPageUrl.length);
        if (relativeUrl.indexOf("http://") >= 0) return relativeUrl;
        if (relativeUrl.indexOf("/") == 0) return relativeUrl;
        var lastSeparator = baseUrl.lastIndexOf("/");
        if (lastSeparator < 0) return relativeUrl;
        else return baseUrl.substring(0, lastSeparator) + "/" + relativeUrl;
    },
    parseHtml: function(content) {
        var result = { body: "", externalScripts: [], inlineScripts: [], links: [], styles: [] };
        var bodyContent = [];
        var bodyStarted = false;
        var inlineScriptStarted = false;
        var inlineScriptContent = [];
        var inlineStyleStarted = false;
        var inlineStyleContent = [];
        HTMLParser(content, {
            start: function(tag, attrs, unary) {
                if (tag == "body") {
                    bodyStarted = true;
                }
                else if (tag == "script") {
                    var srcFound = false;
                    $(attrs).each(function(index, attr) {
                        if (attr.name == "src") {
                            result.externalScripts.push(attr.value);
                            srcFound = true;
                        }
                    });
                    if (!srcFound) {
                        inlineScriptStarted = true;
                        inlineScriptContent = [];
                    }
                }
                else if (tag == "link") {
                    result.links.push(attrs);
                }
                else if (tag == "style") {
                    inlineStyleStarted = true;
                    inlineStyleContent = [];
                }
                else {
                    if (bodyStarted) {
                        var attributes = [];
                        for (var i = 0; i < attrs.length; i++)
                            attributes.push(attrs[i].name + '="' + attrs[i].value + '"');
                        bodyContent.push("<" + tag + " " + attributes.join(" ") + (unary ? "/" : "") + ">");
                    }
                }
            },
            end: function(tag) {
                if (tag == "script") {
                    if (inlineScriptStarted) {
                        inlineScriptStarted = false;
                        result.inlineScripts.push(inlineScriptContent.join(""));
                    }
                }
                else if (tag == "style") {
                    inlineStyleStarted = false;
                    result.styles.push(inlineStyleContent.join(""));
                }
                else {
                    if (bodyStarted)
                        bodyContent.push("</" + tag + ">");
                }
            },
            chars: function(text) {
                if (inlineScriptStarted)
                    inlineScriptContent.push(text);
                else if (inlineStyleStarted)
                    inlineStyleContent.push(text);
                else if (bodyStarted)
                    bodyContent.push(text);
            },
            comment: function(text) { }
        });
        result.body = bodyContent.join("");
        return result;
    },
    initContainers: function() {
        $('div[src]', document).each(function() {
            var container = $(this);
            var id = container.attr("id");
            if (null == UFrameManager._uFrames[id]) {
                UFrameManager.init({
                    id: id,
                    loadFrom: container.attr("src"),
                    initialLoad: "GET",
                    progressTemplate: container.attr("progressTemplate") || null,
                    showProgress: container.attr("showProgress") || false,
                    beforeLoad: function(url, data) { return eval(container.attr("beforeLoad") || "true") },
                    afterLoad: function(data, response) { return eval(container.attr("afterLoad") || "true") },
                    beforePost: function(url, data) { return eval(container.attr("beforePost") || "true") },
                    afterPost: function(data, response) { return eval(container.attr("afterPost") || "true") },
                    params: null,
                    beforeBodyTemplate: container.attr("beforeBodyTemplate") || null,
                    afterBodyTemplate: container.attr("afterBodyTemplate") || null
                });
            }
        });
    }
}
    $(function() {
        UFrameManager.initContainers();
    });
})();

function navigateToURLTagClouds(idConteudo) {
    location.href = '/OuvirRadio.aspx?idConteudo=' + idConteudo;
}
function navigateToURLRedir(nmpasta, idConteudo) {
    UFrameManager.initContainers();
    var uframe = UFrameManager.getUFrame('UFrame');
    uframe.navigate('/' + nmpasta + '/default.aspx?idConteudo=' + idConteudo);
    //location.href = '/OuvirRadio.aspx?idConteudo=' + idConteudo;
}
function abreRadioNovaJanela(flashVars) {
    window.open('/PopupPlayer.aspx?flashVars=' + flashVars, "natura musical", "scrollbars = no, toolbar = no, location = 0, width = 420, height = 180");
}
function navigateToURLRedirMural() {
    UFrameManager.initContainers();
    var uframe = UFrameManager.getUFrame('UFrame');
    uframe.navigate('/blog-mural/Default.aspx?sucessoPost=true');
}
