var TR = function() {

    String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
    }
    String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
    }
    String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
    }

    
    var utils = {
	createCookie: function(name,value,days) {
            var expires = "";
            if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
            }
            document.cookie = name+"="+value+expires+"; path=/";
	},

	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;
	},

	eraseCookie: function(name) {
            TR.utils.createCookie(name,"",-1);
	},

	dlog: function(text) {
	    $("#dlog").html("<pre>" + text + "</pre>");
	}

    };

    $(document).ready(function() {
	$(".xinfo").hover(
	    function(event) { openHelpPopup(this, event); },
	    function() { closeHelpPopup(); }
	);
    });

    function openHelpPopup(xinfo, event) {
	var panel = document.createElement("div");
	panel.className = "panel";
	var text = $(".xinfo-content", xinfo).html();
	if (!text) {
	    text = "help text coming soon";
	}
	$(panel).html(text);

	var popup = document.createElement("div");
	$(popup)
	    .addClass("xinfo-popup")
	    .append(panel)
	    .css({"position": "absolute"})
            .fadeTo(0, 0.1);
	$("body").append(popup);
	var mpos = getMousePosition(event);
	var top = $(xinfo).offset().top - $(popup).height();
	var left = $(xinfo).offset().left + 20;

	var leftOfBody = $("body").offset().left + $("body").innerWidth();
	var leftleft = left + $(xinfo).outerWidth();
	if (leftleft > leftOfBody) {
	    left = $(xinfo).offset().left - 270;
	}

	$(popup).css({"top": top, "left": left}).fadeTo(300, 0.9);
    }

    function getMousePosition(event) {
	var x, y;
	if (event.pageX || event.pageY) {
	    x = event.pageX;
	    y = event.pageY;
	}
	else {
	    x = event.clientX + document.body.scrollLeft - document.body.clientLeft;
	    y = event.clientY + document.body.scrollTop  - document.body.clientTop;
	}
	var position = {
	    x: x,
	    y: y
	};
	return position;
    }


    function closeHelpPopup() {
	$(".xinfo-popup").fadeOut(250, function() { $(this).remove(); });
    }

    return {
	utils: utils
    };

}();

function changeLang()
   {
   var w = document.lang_form.lang_select.selectedIndex;
   var language = document.lang_form.lang_select.options[w].value;
   window.location.href += 'changeLang/' + language;
   }

