function extend(child, superclass) 
{
	for (var property in superclass.prototype) {
		if (typeof child.prototype[property] == "undefined")
			child.prototype[property] = superclass.prototype[property];
	}
	return child;
}


var Cookies = {
	getCookieVal : function (offset) {
		var endstr = document.cookie.indexOf (";", offset);
		if (endstr == -1)
			endstr = document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
	},

	GetCookie : function (name) {
		var arg = name + "=";
		var alen = arg.length;
		var clen = document.cookie.length;
		var i = 0;
		while (i < clen) {
			var 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;
	},

	SetCookie : function (name,value,expires,path,domain,secure) {
		document.cookie = name + "=" + escape (value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	},

	DeleteCookie : function (name,path,domain) {
		if (Cookies.GetCookie(name)) {
			document.cookie = name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
		}
	} 
};

var Util = {
	hash_keys : function (hash) {
		var k = [];
		for (var id in hash) {
			k.push(id);
		}
		return k;
	},

	hash_from_list : function (list, v) {
		if (v == undefined) v = 1;
		var h = {};
		for (var i=0; i < list.length; ++i) 
			h[list[i]] = v;
		return h;
	},

	get_url_params : function (str) {
		var d = {};
		if (str) {
			var pairs = str.split("&");
			for (i in pairs) {
				var kv = pairs[i].split("=");
				d[kv[0]] = kv[1];
			}
		}
		return d;	
	},

	get_opts : function (def_opts, opts) {
		if (!opts) opts = {}
		for (var n in def_opts)
			opts[n] = typeof opts[n] == "undefined" ? def_opts[n] : opts[n];
		return opts;
	},

	get_obj_pos : function (obj) {
		var x = 0;
		var y = 0;
		while (obj.offsetParent) {
			x += obj.offsetLeft;
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}
		return [ x, y ];
	},

	get_mouse_pos : function (evt) {
		var x=0;
		var y=0;
		if (evt.pageX || evt.pageY) {
			x = evt.pageX;
			y = evt.pageY;
		}
		else if (evt.clientX || evt.clientY) {
			x = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			y = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
		return [ x, y ];
	},
	
	create_tooltip : function (pos, text) {
		var o = document.createElement("div");
		o.style.overflow = "visible";
		o.style.position = "absolute";
		o.style.top = pos[1] + "px";
		o.style.left = pos[0] + "px"; 
		o.style.paddingTop = "2px";
		o.style.paddingLeft = "2px";
		o.style.paddingRight = "2px";
		o.style.fontFamily = "tahoma";
		o.style.fontSize = "10px";
		o.style.borderWidth = "1px";
		o.style.borderStyle = "solid";
		o.style.borderColor = "#000";
		o.style.backgroundColor = "#fffacd";
		o.style.color = "black";
		o.innerHTML = text;
		return o;
	},
	
	trim_num : function (n) { 
		return n < 10 ? ("0" + n) : n; 
	},

	secs_to_date : function (secs) {
		return new Date(secs*1000);
	},
	
	date_str : function (d) {
		var dstr = d.getDate() + "/" + (d.getMonth()+1);
		dstr += "<br>" + Util.trim_num(d.getHours()) + ":" + Util.trim_num(d.getMinutes());
		return dstr;
	},

	date_str2 : function (d) {
		var dstr = Util.trim_num(d.getDate()) + "/" + Util.trim_num((d.getMonth()+1));
		dstr += " " + Util.trim_num(d.getHours()) + ":" + Util.trim_num(d.getMinutes());
		return dstr;
	},

	date_str3 : function (d) {
		var dstr = d.getDate() + "/" + (d.getMonth()+1);
		dstr += " " + Util.trim_num(d.getHours()) + ":" + Util.trim_num(d.getMinutes()) + ":" + Util.trim_num(d.getSeconds());
		return dstr;
	}
}

var Tipex = {
	ADMIN_AID : 1,

	check_login : function () {
		var id = Cookies.GetCookie("id_cookie");
		return id ? parseInt(id.substr(56, 8).replace(/^0*/, "")) : 0;
	}, 
	
	check_pro_login : function () {
		var id = Cookies.GetCookie("id_cookie");
		if (id && (parseInt(id.substr(32, 8).replace(/^0*/, "")) & 2)) 
			return 1;
		return 0;
	}
};

// tmpl.tip-ex.com:ssa tarvitaan
function create_ad_banner(region, zone, width, height)
{
	var browserName = navigator.appName;
	var browserVer = parseInt(navigator.appVersion);
	var UserAgent = navigator.userAgent.toLowerCase();
	var nonSSIc = '<center><a href="http://finnx2.tip-ex.com/adserv/cgi-bin/getlink.cgi?region=' + region + '&zone=' + zone + '&type=nossi&cachebuster=' + (new Date()).getTime()+'" target="_top"><img src="http://finnx2.tip-ex.com/adserv/cgi-bin/getad.cgi?region=' + region + '&zone=' + zone + '&type=nossi&cachebuster=' + (new Date()).getTime() + '" width="' + width + '" height="' + height + '"></a><br><a href="http://finnx2.tip-ex.com/adserv/cgi-bin/getlink.cgi?region=' + region + '&zone=' + zone + '&type=nossi&cachebuster=' + (new Date()).getTime() + '" target="_top"></a></center>';

	if (browserName == "Netscape"){
		if ((browserVer>=4)&&(UserAgent.indexOf("mac")==-1)){
			document.write('<S'+'CRIPT src="http://finnx2.tip-ex.com/adserv/cgi-bin/getad.cgi?region=' + region + '&zone=' + zone + '&type=advanced&issc=yes&cachebuster=' + (new Date()).getTime() + '">');

			document.write('</'+'scr'+'ipt>');

		} else if (browserVer>=3) {
			document.write(nonSSIc);
		}

	} else if (browserName=="Microsoft Internet Explorer"){
		document.write('<ifr'+'ame src="http://finnx2.tip-ex.com/adserv/cgi-bin/getad.cgi?region=' + region + '&zone=' + zone + '&type=advanced&cachebuster=' + (new Date()).getTime() + '" width="' + width + '" height="' + height + '" Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No target="_top"></ifr'+'ame>');
	}else{
	       document.write(nonSSIc);
	}
}
