﻿/// <reference path="~/js/jquery-1.4.1-vsdoc2.js" />
/// <reference path="~/js/json2_min.js" />

$(function() {

    moc.provide("membership"
    , {
        on_login: function(data) {
            moc.navigation.reloadPage();
        }

        , on_loginErr: function(status) {
            alert("Invalid Login.  Please try again.");
        }

        , on_logout: function(data) {
            moc.navigation.reloadPage();
        }

        , on_logoutErr: function(status) {
            alert("error" + status);
        }

        , doLogin: function(username, password, callback) {
            var rurl = moc.serviceUtil.serviceUrls.wsMember + "?u=" + escape(username) + "&p=" + escape(password);

            $.ajax({
                type: "GET"
                    , url: rurl
                    , cache: false
                    , success: function(data, textStatus) {
                        moc.membership.on_login(data);
                        if (callback)
                            callback();
                    }
                    , error: function(xhr, textStatus, errorThrown) {
                        moc.membership.on_loginErr(xhr.status);
                    }
            });
        } // moc.membership.doLogin

        , doLogOut: function(callback) {
            var rurl = moc.serviceUtil.serviceUrls.wsMember + "logout/";
            moc.membership.deleteAllCookies();

            $.ajax({
                type: "GET"
                , url: rurl
                , cache: false
                , async: false
                , success: function(data, textStatus) {
                    moc.membership.on_logout(data);
                    if (callback)
                        callback();
                }
                , error: function(xhr, textStatus, errorThrown) {
                    moc.membership.on_logoutErr(xhr.status);
                }
            });
        } // moc.membership.doLogOut

        , init: function() {

        }

    }); // moc.membership

    moc.provide("navigation"
    , {
        reloadPage: function() {
            window.location.reload(true);
        } // moc.navigation.reloadPage

        , windowPopup: function(mylink, windowName, features) {
            window.open(mylink, windowName, features, false);
            return false;
        }

        , windowReplaceUrl: function(loc) {
            var rurl = '';
            if (('' + loc).length == 0)
                rurl += window.location;
            else
                rurl = loc;
            rurl = rurl.toLowerCase();
            if (window.location.search.length == 0) {
                rurl = window.location + '?connect=true';
            }
            else {
                if (rurl.indexOf("connect=") == -1)
                    rurl = window.location + '&connect=true';
            }
            window.location.replace(rurl);
        } // moc.navigation.windowReplaceUrl

        , init: function() {
        }
    }); // moc.navigation

    moc.provide("utility"
    , {
    
        urlencode: function(str) {
            return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
        }

        , urldecode: function(str) {
            return unescape(str.replace('+', ' '));
        }

        , changeAllCheckBoxStates: function(checkState) {
            // Toggles through all of the checkboxes defined in the CheckBoxIDs array
            // and updates their value to the checkState input parameter
            if (CheckBoxIDs != null) {
                for (var i = 0; i < CheckBoxIDs.length; i++)
                    ChangeCheckBoxState(CheckBoxIDs[i], checkState);
            }
        } // moc.utility.changeAllCheckBoxStates

        , stopRKey: function(evt) {                
            var evt = (evt) ? evt : ((event) ? event : null);
            var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
            if ((evt.keyCode == 13) && (node.type == "text" || node.type == "password")) { return false; }
        } // moc.utilitty.stopRKey

        , readCookie: function(name) {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') c = c.substring(1, c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
            }
            return null;
        } // moc.utility.readCookie
        
        , removeHTMLTags: function(inputStr){
 	
 		    inputStr = inputStr.replace(/&(lt|gt);/g, function(strMatch, p1) {
 		 	    return (p1 == "lt")? "<" : ">";
 		    });
 		    var strTagStrippedText = inputStr.replace(/<\/?[^>]+(>|$)/g, "");
 		    return strTagStrippedText;		
        } // moc.utility.removeHTMLTags

        , replacer: function (key, value) {
            if (typeof value === 'number' && !isFinite(value)) {
                return String(value);
            }
            return value;
        } // moc.utility.replacer
    }); // moc.utility

    moc.provide(""
        , {
            _siteInfo: null
            , _userInfo: null
            , _locale: 'en'

            , serviceUtil: {

                serviceUrls: {

                    wsGame: "/services/game/"
                    , wsGuild: "/services/guild/"
                    , wsSyndication: "/services/syndication/"
                    , wsPortlet: "/services/portlet/"
                    , wsMember: "/services/member/"

                } // moc.serviceUrls

            } // moc.serviceutil
            
            , selectors: {
                joinDialog: null
                , loginDialog: null

                , init: function() {
                    this.joinDialog = $("#mocJoinDialog");
                    this.loginDialog = $("#mocLoginDialog");
                } // moc.selectors.init
            } // moc.selectors

            , init: function() {
                _siteInfo = siteInfo; // set from Moc.Web.Shared.Component.Base.ApplicationMasterPage
                _userInfo = userInfo; // set from Moc.Web.Shared.Component.Base.ApplicationMasterPage

                moc.selectors.init();
                moc.navigation.init();
                moc.membership.init();
                //moc.fb.init();

                document.onkeypress = moc.utility.stopRKey;
            } // moc.init
        }); // moc

    }
);

$(function() {
    moc.init();
});