﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("Wifidelity");

Wifidelity.settings = {
    contentContainer : null,
    buffer : null
};

Wifidelity.loadContent = function(key, options) {
    
    if (options === undefined) {
        options = new Object();
    }
    var params = options.params;
    var noanim = options.noanim;
    var onComplete = options.onComplete;
               
    if (Wifidelity.onContentLoading) { Wifidelity.onContentLoading(); }
    
    var target = $get(Wifidelity.settings.contentContainer);
    
    var fillContentMethod = function(result, eventArgs) {
                if (Wifidelity.onContentLoaded) { Wifidelity.onContentLoaded(); }
                if (onComplete) { onComplete(); }
                
                var container = Wifidelity.settings.contentContainer;
                
                // Stop all animations
                var anim;
                while ( (anim = Wifidelity.animations.shift()) !== undefined) {
                    if (anim.stop) { anim.stop(); }
                }
                                
                $get(container).innerHTML = result;                
                
                // Now execute the included EcmaScript (if any)
                var scriptBlocks = $get(container).getElementsByTagName("script");
                for (var i=0; i < scriptBlocks.length; ++i) {
                    try {
                        eval(scriptBlocks[i].innerHTML);
                    } catch (err) {
                        alert(err);
                    }
                }
                
                if (!noanim && Wifidelity.pageTransition) { Wifidelity.pageTransition();}
            };
    //var getContent = function() {
    //    Wifidelity.Web.Services.GetContent(key, fillContentMethod);
    //};
    
    
    if (target !== null) {
        if (!noanim) {            
            var swapTemp = Wifidelity.settings.contentContainer;
            Wifidelity.settings.contentContainer = Wifidelity.settings.buffer;
            Wifidelity.settings.buffer = swapTemp;
        }
        
        // Call the web service
        if (params) {                        
            Wifidelity.Web.Services.GetContentWithParams(key, params, fillContentMethod);
        } else {
            Wifidelity.Web.Services.GetContent(key, fillContentMethod);
        }
        //getContent();
    }
}


Wifidelity.loadNews = function(newsId) {
    Wifidelity.loadContent('news', {params:['group="newsItem",widget="NewsItem",NewsId="' + newsId + '"']});
}

Wifidelity.animations = [];

Wifidelity.onContentLoading = function() {}

Wifidelity.onContentLoaded = function() {}

Wifidelity.pageTransition = function() {}

Type.registerNamespace("Wifidelity.Web");

Wifidelity.Web.Silverlight = function() { }

Wifidelity.Web.Silverlight.prototype =
{
    onError : function(sender, args) {
        var appSource = "";
        if (sender != null && sender != 0) {
            appSource = sender.getHost().Source;
        } 
        var errorType = args.ErrorType;
        var iErrorCode = args.ErrorCode;
        
        var errMsg = "Unhandled Error in Silverlight 2 Application " +  appSource + "\n" ;

        errMsg += "Code: "+ iErrorCode + "    \n";
        errMsg += "Category: " + errorType + "       \n";
        errMsg += "Message: " + args.ErrorMessage + "     \n";

        if (errorType == "ParserError")
        {
            errMsg += "File: " + args.xamlFile + "     \n";
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        else if (errorType == "RuntimeError")
        {           
            if (args.lineNumber != 0)
            {
                errMsg += "Line: " + args.lineNumber + "     \n";
                errMsg += "Position: " +  args.charPosition + "     \n";
            }
            errMsg += "MethodName: " + args.methodName + "     \n";
        }

        throw new Error(errMsg);
    }
}

Type.registerNamespace("Wifidelity.Web.Widgets");

Wifidelity.Web.Widgets.CustomerWidgetBehavior = function() {    
    this._element = $get("our-customers");
    this._list = this._element.getElementsByTagName("ul")[0];
    this._numberOfItems = 4;
    var that = this;
    
    this._leftNavOnClick = function() {
        // Determine 1st object to animate
        var listItems = that._list.getElementsByTagName("li");
        var animElem = null;
        for (var i= 0; i < listItems.length; ++i) {
            var li = listItems[i];
            if (li.style.display == "none") {
                continue;
            }
            animElem = li;
            break;
        }
        if (animElem !== null) {
            var theBounds = Sys.UI.DomElement.getBounds(animElem);
            var t1 = new Tween(animElem.style, "left", Tween.regularEaseIn, 0, theBounds.width * (-2), 1, "px");
            t1.onMotionFinished = function() {animElem.style.display = "none";};
            t1.start();
            //animElem.style.left = "300px";
        }
    }   

    
    // Add left scrolling control
    var leftNav = document.createElement("img");
    leftNav.src = "cleardot.gif";
    leftNav.width = "40";
    leftNav.alt = "Left Nav";
    leftNav.style.width = "40px";
    //leftNav.innerHTML = "&lt;";
    Sys.UI.DomElement.addCssClass(leftNav, "nav-control");    
    $addHandler(leftNav, "click", this._leftNavOnClick);
    this._element.insertBefore(leftNav, this._list);
    
    // Add right scrolling control
    var leftNav = document.createElement("span");
    leftNav.innerHTML = "&gt;";    
    Sys.UI.DomElement.addCssClass(leftNav, "nav-control");    
    //this._element.appendChild(leftNav, this._list);
    
    var listItems = this._list.getElementsByTagName("li");
    for (var i= this._numberOfItems; i < listItems.length; ++i) {
        var li = listItems[i];
        li.style.display = "none";
    }
}

Wifidelity.Web.Widgets.CustomerWidgetBehavior.prototype = {
    initialize : function() {
        alert("Init!");
    }    
}

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
