/*
* Date: 21-08-2009
* Author: Phil Ricketts
*/
var wn = window.wn || {};

wn.Common = function() {
    return {
        handleError: function(msg) {
            alert(msg);
        },
        hideFocus: function() {
            $("a").click(function(e) {
                this.blur();
            });
        },
        navSearch: function() {
            var searchText = "Search this site...";
            var searchField = "#low span.search input";
            var searchButton = "#low span.search a.submit";
            var searchPage = "search.aspx";

            $(searchField).focus(function(e) {
                if ($(this).val() == searchText || "") $(this).val("").removeClass("initial")
                });
            $(searchField).blur(function(e) {
                if ($(this).val() == "") $(this).addClass("initial").val(searchText)
                });

            $(searchField).val(searchText).addClass("initial");

            $(searchButton).click(function(e) {
                var searchQuery = $(searchField).val();
                if (searchQuery != searchText || undefined) wn.Common.postwith(searchPage, { search: searchQuery })
                else {
                    $(searchButton).after('<span class="error">Please enter a valid search term</span>');
                    $(searchField).focus();
                }
            });
        },
        postwith: function(to, p) {
            var myForm = document.createElement("form");
            myForm.method = "post";
            myForm.action = to;
            for (var k in p) {
                var myInput = document.createElement("input");
                myInput.setAttribute("name", k);
                myInput.setAttribute("value", p[k]);
                myForm.appendChild(myInput);
            }
            document.body.appendChild(myForm);
            myForm.submit();
            document.body.removeChild(myForm);
        },
        init: function() {
            wn.Common.hideFocus();
            wn.Common.navSearch();
        }
    }
} ();

wn.Home = function() {
    return {
        spotlight: function() {
            //Show panel identified as current (by classname)
            var cur = $("#spotlight .tabs a.current").attr("rel");
            $("#spotlight .panels div").hide();
            $("#spotlight .panels " + cur).show();

            //Hover functionality
            $("#spotlight .tabs a").hover(
                function() {
                    var s = $(this).attr("rel");
                    $("#spotlight .panels div").hide();
                    $("#spotlight .panels " + s).show();
                    $("#spotlight .tabs a").removeClass("current");
                    $(this).addClass("current");
                },
                function() {
                    //link rollout
                }
            );
        },
        init: function() {
            wn.Home.spotlight();
        }
    }
} ();

wn.Landing = function() {
    return {
        tabs: function() {
            var tabnav = "div.landingpage2 .subnav ul";
            var tabcontent = "div.landingpage2 .inner";

            var q = window.location.hash;
            if (q & q != "#") { switchTabs(q, q); }

            $(tabnav + " a").hover(
                function() {
                    var t = $(this);
                    var h = $(this).attr("href");
                    switchTabs(h, t);
                },
                function() {//link rollout
                }
            );

            $("a[href^='#']").click(
                 function() {
                     var h = $(this).attr("href");
                     if (h != "#") {
                         switchTabs(h, h);
                     };
                 }
            );

            function switchTabs(href, curr) {
                if (curr === href) {
                    curr = tabnav + " li a[href=" + curr + "]";
                }
                $(tabnav + " li").removeClass("active");
                $(curr).parent().addClass("active");
                $(tabcontent + " div.content").hide();
                $(tabcontent + " " + href).show();
            };

            $(tabnav + " li a").click(function(e) {
                var s = $(this).attr("rel");
                $(this + " li").removeClass("active");
            });

        },
        init: function() {
            wn.Landing.tabs();
        }
    }
} ();

// DOM ready
$(function() {
    wn.Common.init();
    TrackUser()
});


//functions
$.exists = function(selector) { return ($(selector).length > 0); };



// Tracking functions
// Usage: Call TrackUser();
function TrackUser() {
    // Config variables
    var QueryKey = "RefID";
    var ignoreDomains = new Array();
    ignoreDomains[0] = "http://localhost";
    ignoreDomains[1] = "http://www.wavenetuk.com";
    ignoreDomains[2] = "http://wavenetuk.com";
    // end config

    var referer = getQueryVariable(QueryKey);

    var today = new Date();
    today.setDate(today.getDate() + 30);

    var cookie_month = today.getMonth();
    var cookie_year = today.getFullYear();
    var cookie_day = today.getDate();

    // Add referer to cookie
    if (typeof referer != 'undefined') {
        //alert(referer);
        set_cookie("referer", referer, cookie_year, cookie_month, cookie_day);
    } else {
        // No referer so check browser history
        var externalreferer = document.referrer;

        // Check for internal referer and ignore it.
        var isExternalReferer = true;
        for (var x = 0; x < ignoreDomains.length; x++) {
            if (isDomainToBeIgnored(externalreferer, ignoreDomains[x]))
                isExternalReferer = false;

        }
        // If it's an external referer then write the cookie
        if (isExternalReferer) {
            if (typeof externalreferer != 'undefined') {
                if (externalreferer != '') {
                    set_cookie("referer", externalreferer, cookie_year, cookie_month, cookie_day);
                }
            }
        }
    }
}

// pattern matching for domains that need to be ignored
function isDomainToBeIgnored(domain, ignoreDomain) {
    return (domain.match("^" + ignoreDomain) == ignoreDomain)
}

// querystring functions
function getQueryVariable(variable) {
    var query = window.location.search.toLowerCase().substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable.toLowerCase()) {
            return pair[1];
        }
    }
}

// Cookie functions
function get_cookie(cookie_name) {
    var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

    if (results)
        return (unescape(results[2]));
    else
        return null;
}

function delete_cookie(cookie_name) {
    var cookie_date = new Date();  // current date & time
    cookie_date.setTime(cookie_date.getTime() - 1);
    document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}

function set_cookie(name, value, exp_y, exp_m, exp_d, path, domain, secure) {
    var cookie_string = name + "=" + escape(value);

    if (exp_y) {
        var expires = new Date(exp_y, exp_m, exp_d);
        cookie_string += "; expires=" + expires.toGMTString();
    }

    if (path)
        cookie_string += "; path=" + escape(path);

    if (domain)
        cookie_string += "; domain=" + escape(domain);

    if (secure)
        cookie_string += "; secure";

    document.cookie = cookie_string;
}
// End Tracking Code
