﻿var SkinHome = '/portals/_default/skins/Ashwaubenon';
var ModHome = '';
var BannerHeight = "200px";
var BannerWidth = "994px";
var ScriptUrl = "";

$(document).ready(function () {
    GetScriptUrl();
    SelectMod();
    InsertCSS(ModHome + '/jquery-ui.css');
    InsertCSS(SkinHome + '/custom/common.css');
    InsertCSS(ModHome + '/custom.css');
    LoadHeader();
    LoadVerticalMenu();
    LoadBanner();
    FixUp();
});

function FixUp() {
    $("#dnn_User1").attr("width", "");
}

function SelectMod() {
    var url = window.location.toString();
    if (url.indexOf("/PublicSafety/") > -1) {
        ModHome = SkinHome + '/custom/Mods/PublicSafety';
    }
    if (url.indexOf("//intranet.") > -1) {
        ModHome = SkinHome + '/custom/Mods/Intranet';
    }
    else {
        ModHome = SkinHome + '/custom/Mods/VillageHall';
    }
}

//Insert top header page
function LoadHeader() {
    $(".art-sheet").before("<div id='AshHead'></div>")
    $("#AshHead").load(ModHome + "/header.html?r=" + RandomNumber(), function () {
        $('.ash-head-image').each(function () {
            var src = ModHome + "/images/" + $(this).data("image");
            $(this).attr("src", src);

            //Load Google Search
            $.getScript("http://www.google.com/jsapi", function () {
                google.load('search', '1', { language: 'en', "callback" : LoadSearch });
            });
        });
    });
}

function LoadSearch() {
    $("body").append("<div id='cse' style='width:auto;display:hidden;'></div>");

    var customSearchControl = new google.search.CustomSearchControl('008484831680014676348:3ilzillza7s');
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);

    var options = new google.search.DrawOptions();
    options.setSearchFormRoot('cse-search-form');

    customSearchControl.draw('cse', options);

    customSearchControl.setSearchCompleteCallback(this, function () {
        //open results in popup
        $("#cse").dialog({ height: 600, width: 1000, title: "Google Search Results" });
    });
}

//Insert vertical navigation menu
function LoadVerticalMenu() {
    if ($.url(ScriptUrl).param("vm") == "false") {
        return;
    }

    $(".art-sidebar1").prepend("<div id='AshVertMenu'></div>")
    $("#AshVertMenu").load(ModHome + "/verticalmenu.html?r=" + RandomNumber(), function () {
        $('.ash-vert-item').each(function () {
            var style = "background:url(" + ModHome + "/images/" + $(this).data("icon") + ") no-repeat;";
            $(this).attr("style", style);
            $(".art-sidebar1").show();
        });
    });
}

function LoadBanner() {
    $.getScript(ModHome + "/jquery.innerfade.js", function () {
        $(".art-header").html('');
        $(".art-header").load(ModHome + "/banner.html?r=" + RandomNumber(), function () {
            $(".ash-banner-item").each(function (index) {
                var style = "background:url(" + ModHome + "/banners/" + $(this).data("banner") + ") no-repeat;width:" + BannerWidth + ";height:" + BannerHeight + ";";
                $(this).attr("style", style);
            });
            $('.ash-banner-slideshow').innerfade({ speed: 500, timeout: 5000 });
        });
    });
}

function InsertCSS(location) {
    var headID = document.getElementsByTagName("head")[0];
    var cssNode = document.createElement('link');
    cssNode.type = 'text/css';
    cssNode.rel = 'stylesheet';
    cssNode.href = location + '?r=' + RandomNumber();
    cssNode.media = 'screen';
    headID.appendChild(cssNode);
}

function RandomNumber() {
    return Math.floor(Math.random() * 1001);
}

function GetScriptUrl() {
    $("script").each(function () {
        var url = $(this).attr("src");
        if (typeof (url) !== 'undefined') {
            if (url.toString().indexOf("custom.js") > -1) {
                ScriptUrl = $(this).attr("src");
            }
        }
    });
}


// JQuery URL Parser plugin - https://github.com/allmarkedup/jQuery-URL-Parser
// Written by Mark Perkins, mark@allmarkedup.com
// License: http://unlicense.org/ (i.e. do what you want with it!)

; (function ($, undefined) {

    var tag2attr = {
        a: 'href',
        img: 'src',
        form: 'action',
        base: 'href',
        script: 'src',
        iframe: 'src',
        link: 'href'
    },

	key = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "fragment"], // keys available to query

	aliases = { "anchor": "fragment" }, // aliases for backwards compatability

	parser = {
	    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,  //less intuitive, more accurate to the specs
	    loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs
	},

	querystring_parser = /(?:^|&|;)([^&=;]*)=?([^&;]*)/g, // supports both ampersand and semicolon-delimted query string key/value pairs

	fragment_parser = /(?:^|&|;)([^&=;]*)=?([^&;]*)/g; // supports both ampersand and semicolon-delimted fragment key/value pairs

    function parseUri(url, strictMode) {
        var str = decodeURI(url),
		    res = parser[strictMode || false ? "strict" : "loose"].exec(str),
		    uri = { attr: {}, param: {}, seg: {} },
		    i = 14;

        while (i--) {
            uri.attr[key[i]] = res[i] || "";
        }

        // build query and fragment parameters

        uri.param['query'] = {};
        uri.param['fragment'] = {};

        uri.attr['query'].replace(querystring_parser, function ($0, $1, $2) {
            if ($1) {
                uri.param['query'][$1] = $2;
            }
        });

        uri.attr['fragment'].replace(fragment_parser, function ($0, $1, $2) {
            if ($1) {
                uri.param['fragment'][$1] = $2;
            }
        });

        // split path and fragement into segments

        uri.seg['path'] = uri.attr.path.replace(/^\/+|\/+$/g, '').split('/');

        uri.seg['fragment'] = uri.attr.fragment.replace(/^\/+|\/+$/g, '').split('/');

        // compile a 'base' domain attribute

        uri.attr['base'] = uri.attr.host ? uri.attr.protocol + "://" + uri.attr.host + (uri.attr.port ? ":" + uri.attr.port : '') : '';

        return uri;
    };

    function getAttrName(elm) {
        var tn = elm.tagName;
        if (tn !== undefined) return tag2attr[tn.toLowerCase()];
        return tn;
    }

    $.fn.url = function (strictMode) {
        var url = '';

        if (this.length) {
            url = $(this).attr(getAttrName(this[0])) || '';
        }

        return $.url(url, strictMode);
    };

    $.url = function (url, strictMode) {
        if (arguments.length === 1 && url === true) {
            strictMode = true;
            url = undefined;
        }

        strictMode = strictMode || false;
        url = url || window.location.toString();

        return {

            data: parseUri(url, strictMode),

            // get various attributes from the URI
            attr: function (attr) {
                attr = aliases[attr] || attr;
                return attr !== undefined ? this.data.attr[attr] : this.data.attr;
            },

            // return query string parameters
            param: function (param) {
                return param !== undefined ? this.data.param.query[param] : this.data.param.query;
            },

            // return fragment parameters
            fparam: function (param) {
                return param !== undefined ? this.data.param.fragment[param] : this.data.param.fragment;
            },

            // return path segments
            segment: function (seg) {
                if (seg === undefined) {
                    return this.data.seg.path;
                }
                else {
                    seg = seg < 0 ? this.data.seg.path.length + seg : seg - 1; // negative segments count from the end
                    return this.data.seg.path[seg];
                }
            },

            // return fragment segments
            fsegment: function (seg) {
                if (seg === undefined) {
                    return this.data.seg.fragment;
                }
                else {
                    seg = seg < 0 ? this.data.seg.fragment.length + seg : seg - 1; // negative segments count from the end
                    return this.data.seg.fragment[seg];
                }
            }

        };

    };

})(jQuery);
