﻿
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

Networker = {
    back: function() {
        if (document.referrer && document.referrer != "") {
            if (document.referrer.toLowerCase().indexOf("room.aspx") != -1) {
                window.close()
            } else {
                document.location = document.referrer;
            }
        } else {
            history.back(1);
        }
    },

    error: function(message) {
        $.get("/Script/ScriptError.ashx?Error=" + message);
    },

    formatException: function(ex) {
        if (!ex) {
            return "-";
        }
        var error = ex;
        if (ex.description) {
            error = ex.description;
        }
        if (ex.message) {
            error += ex.message;
        }
        if (ex.stack) {
            error += " @ " + ex.stack;
        }
        return error;
    },

    logError: function(error) {
        $.getJSON("/Channels/EventHandler.ashx?Command=4&Error=" + encodeURIComponent("Channel client error 6: " + error) + "&jsoncallback=?", function(data) { });
    },

    LogError: function(error) {
        Networker.logError(error);
    },

    sleep: function(milliseconds) {
        var start = new Date().getTime();
        for (var i = 0; i < 1e7; i++) {
            if ((new Date().getTime() - start) > milliseconds) {
                break;
            }
        }
    },

    scrollbarWidth: function() {
        if (Networker.lastScrollbarWidth) {
            return Networker.lastScrollbarWidth;
        }
        var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div>');
        $('body').append(div);
        var w1 = $('div', div).innerWidth();
        div.css('overflow-y', 'scroll');
        var w2 = $('div', div).innerWidth();
        $(div).remove();
        Networker.lastScrollbarWidth = (w1 - w2);
        return Networker.lastScrollbarWidth;
    }
};

$(document).ready(function() {
    $(document).ajaxError(function() {
        if (window.console && window.console.error) {
            console.error(arguments);
        }
    });

    jQuery.ajaxSetup({ cache: false });

    // Setup the menus
    if (jQuery.browser.msie)
        $("#Navigation li").hoverClass("over");

    $("#Navigation li ul").hover(
        function() {
            $(this).parent().find("a:first").addClass("MenuSelected");
        },
        function() {
            $(this).parent().find("a:first").removeClass("MenuSelected");
        });

    $("#Navigation li li a").click(function() {
        $("#Navigation li ul").hide();
    });

    // Preload
    jQuery.preloadImages("/Images/MenuBackground.png", "/Images/PopupFlag.png");

});

// jQuery support - based on http://be.twixt.us/jquery/suckerFish.php
$.fn.hoverClass = function(c) {
    return this.each(function() {
        $(this).hover(
		    function() { $(this).addClass(c); },
		    function() { $(this).removeClass(c); }
	    );
    });
};

jQuery.preloadImages = function() {
    for (var i = 0; i < arguments.length; i++) {
        jQuery("<img>").attr("src", arguments[i]);
    }
};


// Legacy nonsense
var LeftMargin = 0;
var RightMargin = 990;
var VerticalOffset = 10;

function GetLeft(Element) {
	var Offset = Element.offsetLeft;         
	var Parent = Element.offsetParent;    
	while(Parent != null)
	{                                           
		Offset += Parent.offsetLeft;     
		Parent = Parent.offsetParent; 
	}
	return Offset;                             
}

function GetTop(eElement) {
	var nTopPos = eElement.offsetTop;         
	var eParElement = eElement.offsetParent;    
	while (eParElement != null)
	{                                           
		nTopPos += eParElement.offsetTop;     
		eParElement = eParElement.offsetParent; 
	}
	return nTopPos;                             
}

var ParentElement = null;
var BoxContent = 'box content';
var InDelay = 0;
var OutDelay = 0;
var OverrideHide = false;
var OverrideShow = false;
var Hiding = false;
var Showing = false;

function CreatePopup() {
	var Box = document.createElement("div");
	Box.setAttribute('id', 'PopupBox');
	Box.setAttribute('className', 'PopupBox');
	Box.setAttribute('class', 'PopupBox');
	document.body.appendChild(Box);
	
	var Frame = document.createElement('<iframe id="PopupFrame" style="visibility: hidden; left: 0px; position: absolute; top: 0px" frameBorder="0" scrolling="no">');
	Frame.setAttribute("id", "PopupFrame");
	document.body.appendChild(Frame);

	var Shadow = document.createElement('img');
	Shadow.src = '/images/popup_shadow.png';	
	Shadow.setAttribute("id", "PopupShadow");
	Shadow.setAttribute("className", "PopupShadow");
	Shadow.setAttribute("class", "PopupShadow");
	document.body.appendChild(Shadow);
}

function ShowPopup(element, content, inDelay, outDelay) {
	if(!document.getElementById('PopupBox'))
	{
		CreatePopup();		
	}

	InDelay = inDelay;
	OutDelay = outDelay;
	ParentElement = element;
	BoxContent = content;
	
	if(Hiding) {
		OverrideHide = true;
	}

	if(ParentElement != null && element != ParentElement) {
		OverrideShow = false;
		
		if(document.getElementById('PopupBox').style.visibility != "hidden")
		{
			if(Hiding)
			{
				OverrideHide = false;
				HidePopupBoxImmediate();
			}
		}
	}
	
	Showing = true;	
	setTimeout("ShowPopupImmediate()", InDelay);
}

function ShowPopupImmediate() {
	if(OverrideShow == false)
	{
		if(Hiding) {		
			OverrideHide = true;
		}
	
		var Element = ParentElement;
		var Content = BoxContent;
		var Box = document.getElementById('PopupBox');
		var BoxTop = (VerticalOffset+GetTop(Element)+Element.offsetHeight);
		Box.style.left = (Math.min(Math.max(LeftMargin, (GetLeft(Element) - (Box.clientWidth/2) + Element.offsetWidth/2)), RightMargin-Box.offsetWidth)) +'px';
		Box.style.top = BoxTop+'px';
		Box.innerHTML = Content;
		Box.style.visibility = 'visible';

		var Frame = document.getElementById('PopupFrame');
		Frame.style.left = Box.style.left;
		Frame.style.top = Box.style.top;
		Frame.style.height = Box.clientHeight;
		Frame.style.width = Box.clientWidth;
		Frame.style.visibility = 'visible';

		// Shadow
		var PopupShadow = document.getElementById('PopupShadow');
		PopupShadow.style.left = Box.style.left;
		PopupShadow.style.top = BoxTop + Box.clientHeight;
		PopupShadow.style.visibility = 'visible';
		PopupShadow.style.width = Box.clientWidth;
	}
	
	OverrideShow = false;
	Showing = false;
}

function ShowPopupBox(Element, ContentId) {
	ShowPopup(Element, Contents[ContentId])
}

function HidePopupBox() {
	if(Showing) {
		OverrideShow = true;
	}

	Hiding = true;
	setTimeout("HidePopupBoxImmediate()", OutDelay)
}

function HidePopupBoxImmediate() {
	if(OverrideHide == false) {
		document.getElementById('PopupBox').style.visibility = 'hidden';
		document.getElementById('PopupFrame').style.visibility = 'hidden';
		document.getElementById('PopupShadow').style.visibility = 'hidden';
	}
	
	OverrideHide = false;
	Hiding = false;
}

function Disable(Element, Message)
{
	Element.disabled = true;	
	Element.value = Message;
}

function ShowLength(editBox, label, max)
{
	
	label.innerHTML = editBox.value.length + " characters ("+max+" maximum)";
	if(editBox.value.length > max)
	{
		label.style.color = "red"
	}
	else
	{
		label.style.color = "black"		
	}
}

function ToggleVisibility(element) 
{
	pElement = document.getElementById(element);

	if (pElement.style.visibility == "hidden") 
	{
		pElement.style.visibility = "visible";
		pElement.style.display = 'block';
	} 
	else 
	{
		pElement.style.visibility = "hidden";
		pElement.style.display = 'none';
	}
}