function applyCollapsable() {
    $("#moreDetails .sectionHowToCollapsable dd").hide();
    $("#moreDetails .sectionHowToCollapsable dt").click(function () { $(this).next("dd").slideToggle(200, function () { $(this).parent().toggleClass("on"); }); });
}


function applyFAQ() {
    $("#faq .main dd").hide();
    $("#faq .main dt").click(function () { $(this).next("dd").slideToggle(200, function () { $(this).parent().toggleClass("on"); }); });
}

function setMessage(id, msg) {
    $('#' + id).html(msg);
}

var callbacks = {};

function jsonLoad(url, callbackKey) {
    var callbackName = guid2Name(callbackKey);
    eval("callbacks.cb_" + callbackName + "= function(j1,j2){jsonCallback(j1,j2,'" + callbackKey + "')};");
    addScript('sc_' + callbackName, url + '&callback=callbacks.cb_' + callbackName);
}

function guid2Name(guid) {
    return guid.replace(/-/gi, "_")
}

function addScript(id, url) {
    var script = document.createElement('script');
    script.id = id;
    script.type = 'text/javascript';
    script.src = url;

    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
}

var JSON = JSON || {};  

// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string") obj = '"' + obj + '"';
        return String(obj);
    }
    else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n]; t = typeof (v);
            if (t == "string") v = '"' + v + '"';
            else if (t == "object" && v !== null) v = JSON.stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};

function jsonCallback(j1, j2, callbackKey) {
    var silverlight = $('#silverlightControl')[0];
    if (silverlight) {
        var response = JSON.stringify(j2 != undefined ? j2 : j1);
        silverlight.Content.Json.Received(callbackKey, response);
    }

    // clean up
    var callbackName = callbackKey.replace(/-/gi, "_");
    $('#sc_' + callbackName).detach();
    eval("callbacks.cb_" + callbackName + "= null;");
}

function goTo(url) {
    var newWindow = window.open(url, '_blank');
    newWindow.focus();
    return false;
}

function scaleSilverlight() {
    var browserwidth = $(window).width();
    var browserheight = $(window).height();

    $('#wrapper').width(browserwidth);
    $('#header').width(browserwidth);
    $('#product').width(browserwidth);
    $('#footer').width(browserwidth - 50);

    $('#silverlightControlHost').width(browserwidth);
    $('#silverlightControlHost').height(browserheight - $('#header').height() - $('#subnav1').height());
}


$(document).ready(function () {
    if ($('#silverlightControlHost').length > 0 &&
        !$('#silverlightControlHost').hasClass("noscale")) {
            $('body').addClass("feedbacktab-top");
            scaleSilverlight();
        $(window).resize(function () {
            scaleSilverlight()
        });
    }

    applyFAQ();
    applyCollapsable();
});

