
String.prototype.replaceAll = function(s1, s2) { return this.split(s1).join(s2); }

function toJSON(obj) {
    switch(typeof obj) {
        case "function" : return obj.toString();
        case "string" : return "\"" + obj.replaceAll('\n', '\\\\n').replaceAll('\r', '\\\\r').replaceAll("\\\"", "\\\\\"").replaceAll("\"", "\\\"") + "\"";
        case "object" : 
        var str = "";
        if(obj == null) return "null";
        if(obj instanceof Array) {
            for (var i = 0, l = obj.length; i < l; i++) str += ", " + toJSON(obj[i])
            if (str.length > 0) str = str.substring(1);
            return "[ " + str + " ]";
        }
        for (var i in obj) str += ", " + i + " : " + toJSON(obj[i]);
        //console.log("{ " + (str.length > 0 ? str.substring(1) : str) + " }")
        return "{ " + (str.length > 0 ? str.substring(1) : str) + " }";
    }
    return obj;
}

var Cookies = {

	Set : function(name, value) {
		var argv = arguments,
			argc = arguments.length,
			expires = (argc > 2) ? argv[2] : null,
    		path = (argc > 3) ? argv[3] : '/',
    		domain = (argc > 4) ? argv[4] : null,
    		secure = (argc > 5) ? argv[5] : false;

    	document.cookie = name + "=" + escape (value) +
    		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    		((path == null) ? "" : ("; path=" + path)) +
        	((domain == null) ? "" : ("; domain=" + domain)) +
        	((secure == true) ? "; secure" : "");
	},

	Get : function(name) {
		var arg = name + "=",
			alen = arg.length,
			clen = document.cookie.length,
			i = 0,
			j = 0;

		while(i < clen) {
			j = i + alen;
			if (document.cookie.substring(i, j) == arg)
				return Cookies._getCookieVal(j);
			i = document.cookie.indexOf(" ", i) + 1;
			if(i == 0)
				break;
		}
		return null;
	},

	Clear : function(name) {
		if(Cookies.Get(name)) {
    		document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  		}
	},

	_getCookieVal : function(offset) {
   		var endstr = document.cookie.indexOf(";", offset);
   		if(endstr == -1) {
			endstr = document.cookie.length;
   		}
   		return unescape(document.cookie.substring(offset, endstr));
   	}

};

function GetTarget(oEvent) {
	var oTarg;
	if (!oEvent) var oEvent = window.event;
	if (oEvent.target) oTarg = oEvent.target;
	else if (oEvent.srcElement) oTarg = oEvent.srcElement;
	if (oTarg.nodeType == 3) oTarg = oTarg.parentNode;
	return oTarg;
}

