/* 
Filename:	/scripts/flowserver.js
Updated:	2005-03-06 18:46
Comments:	Useful functions used by xsl-templates
*/

var globVersion = 0;

function browserObject(str) {
	if (browserCheck("opera")) {
		this.version = globVersion;
		this.name = "Opera";
		this.alias = this.name;
	}
	else if (browserCheck("msie")) {
		this.version = globVersion;
		this.name = "Internet Explorer";
		this.alias = "IE";
	}
	else if (navigator.appName == "Netscape") {
		this.version = parseFloat(navigator.appVersion);
		this.name = "Netscape Navigator";
		this.alias = "NS";
	}
	else {
		this.version = 0;
		this.name = "Unknown";
		this.alias = "Unknown";
	}
}

function browserCheck(name, version) {
	userAgent = navigator.userAgent.toLowerCase();
	i = userAgent.indexOf(name);
	if (i != -1) {
		globVersion = parseFloat(userAgent.charAt(name.length + i + 1));
		if (version == null) return true
		else if (globVersion >= version) return true
		else return false;
	}
	return false;
}

function dhtmlCalendar() {
	if (!bCalendar) {
		document.write('<flowserver:calendar id="calendar" />');
		document.write('<link rel="stylesheet" type="text/css" href="/css/calendar.css" />');
		document.write('<script language="JavaScript" src="scripts/calendar.js"></script>');
	}
}

function printPage() {
	url = replaceQuery('media', 'PRINT');
	window.open(url);
}

function gotoPage(num) {
	if (num != null) window.location.href = replaceQuery("currpage", num);
}

function openWindow(url) {
	if (url != "") window.open(url);
}

function argumentURL() {
	this.getArgument = _getArg;
	this.setArgument = _setArg;
	this.removeArgument = _removeArg;
	this.toString    = _toString;	
	this.arguments   = new Array();

	// Initiation
	var separator = "&";
	var equalsign = "=";
	
	var str = window.location.search.replace(/%20/g, " ");
	var index = str.indexOf("?");
	var sInfo;
	var infoArray = new Array();

	var tmp;
	
	if (index != -1) {
		sInfo = str.substring(index+1,str.length);
		infoArray = sInfo.split(separator);
	}

	for (var i=0; i<infoArray.length; i++) {
		tmp = infoArray[i].split(equalsign);
		if (tmp[0] != "") {
			var t = tmp[0];
			this.arguments[tmp[0]] = new Object();
			this.arguments[tmp[0]].value = tmp[1];
			this.arguments[tmp[0]].name = tmp[0];
		}
	}
	
	function _toString() {
		var s = "";
		var once = true;
		for (i in this.arguments) {
			if (once) {
				s += "?";
				once = false;
			}
			s += this.arguments[i].name;
			s += equalsign;
			s += this.arguments[i].value;
			s += separator;
		}
		return s.replace(/ /g, "%20");
	}
	
	function _getArg(name) {
		if (this.arguments[name] == null) return null;
		if (typeof(this.arguments[name].name) != "string")
			return null;
		else
			return this.arguments[name].value;
	}
	
	function _setArg(name,value) {
		this.arguments[name] = new Object()
		this.arguments[name].name = name;
		this.arguments[name].value = value;
	}
	
	function _removeArg(name) {
		this.arguments[name] = null;
	}
	
	return this;
}

function getQueryString(str) {
	var str = str.search.replace(/%20/g, " ");
	var index = str.indexOf("?");
	if (index != -1) return str.substring(index+1,str.length);
	return "";
}

function getQuery(s) {
	str = window.location.href;
	str = str.replace(/%20/g, " ");
	s1 = '?' + s + '=';
	l = s1.length;
	lIdx = str.indexOf(s1);
	if (lIdx == -1) {
		s1 = '&' + s + '=';
		lIdx = str.indexOf(s1);
	}
	if (lIdx == -1) return "";

	lStr = str.substring(0, lIdx+l);
	rStr = str.substring(lStr.length, str.length);
	rIdx = rStr.indexOf("&");
	if (rIdx != -1) rStr = rStr.substring(0, rIdx);
	return rStr;
}

function replaceQuery(s, v, str) {
	if (str == null) str = window.location.href;
	aStr = "";
	idx = str.indexOf("#");
	if (idx != -1) {
		aStr = str.substring(idx, str.length);
		str = str.substring(0, idx);
	}
	s1 = '?' + s + '=';
	l = s1.length;
	lIdx = str.indexOf(s1);
	if (lIdx == -1) {
		s1 = '&' + s + '=';
		lIdx = str.indexOf(s1);
	}
	if (lIdx == -1) {
		if (str.indexOf('?') != -1) str += s1 + v
		else str += '?' + s + '=' + v;
		str += aStr;
		return str;
	}
	lStr = str.substring(0, lIdx+l);
	rStr = str.substring(lStr.length, str.length);
	rIdx = rStr.indexOf("&");
	if (rIdx != -1) rStr = rStr.substring(rIdx, rStr.length)
	else rStr = '';
	str = lStr + v + rStr;
	str += aStr;
	return str;
}

function setPartQuery(partid) {
	str = window.location.href;

	args = arguments;
	argStr = "";
	if (args.length > 2) {
		aStr = "";
		idx = str.indexOf("#");
		if (idx != -1) {
			aStr = str.substring(idx, str.length);
			str = str.substring(0, idx);
		}
		for (j=1; j<args.length; j=j+2) {
			s = args[j];
			v = args[j+1];

			if (s.indexOf("#") == 0) {
				str = str + s;
			}
			else {
				qry = s + "=" + partid + ":";

				idx = str.indexOf(qry);
				if (idx == -1) {
					idx = str.indexOf("?");
					if (idx != -1) flag = "&"
					else flag = "?";
					str = str + flag + qry + v;
				}
				else {
					lStr = str.substring(0, idx + qry.length);
					rStr = str.substring(lStr.length, str.length);
					idx = rStr.indexOf("&");
					if (idx != -1) rStr = rStr.substring(idx, rStr.length)
					else rStr = '';
					str = lStr + v + rStr;
				}
			}
		}
		if (str.indexOf("#") == -1) str = str + aStr;
		if (document.all) window.location.replace(str)
		else window.location.href = str;
	}
}

function replaceLocation(s1, v1, s2, v2) {
	url = replaceQuery(s1, v1);
	if (s2 != null) url = replaceQuery(s2, v2, url);
	window.location.href = url;
}

function togglePart(contEl, flag) {
	try {
		if (typeof(contEl) == "string") contEl = document.getElementById(contEl);
		if (contEl != null) {
			srcEl = event.srcElement;
			if (srcEl.tagName == "A") srcEl = srcEl.children[0];
			if ((contEl.currentStyle.display == "none") || flag) {
				contEl.runtimeStyle.display = "block";
				srcEl.src = (srcEl.src).replace("maximize", "minimize");
				setCookie(contEl.id, "1");
			}
			else {
				contEl.runtimeStyle.display = "none";
				srcEl.src = (srcEl.src).replace("minimize", "maximize");
				setCookie(contEl.id, "0");
			}
		}
	}
	catch(e) {
	}
}

function setCookie(cookieName, cookieValue) {
	var expireDate = new Date();
	expireDate.setDate(365 + expireDate.getDate());
	document.cookie = cookieName + "=" + escape(cookieValue) + "; expires=" + expireDate.toGMTString() + "; path=/;";
}

function deleteCookie(cookieName) {
	document.cookie = cookieName + "=0; expires=Fri, 31 Dec 1999 23:59:59 GMT; path=/;";
}

function getCookie(cookieName) {
	var cookieList = document.cookie.split("; ");
	for (var i = 0; i < cookieList.length; i++) {
		var name = cookieList[i].split("=");
		if (unescape(name[0]) == cookieName) return unescape(name[1]);
	}
	return null;
}

function getReal(el, type, value) {
	temp = el;
	while ((temp != null) && (temp.tagName != "BODY")) {
		if (eval("temp." + type) == value) {
			el = temp;
			return el;
		}
		temp = temp.parentElement;
	}
	return null;
}

function getRealEl(el, type, value, n) {
	i = 0;
	temp = el;
	while ((temp != null) && (temp.tagName != "BODY") && (i < n)) {
		if (eval("temp." + type + ".indexOf('" + value + "')") != -1) {
			el = temp;
			return el;
		}
		temp = temp.parentElement;
		i++;
	}
	return null;
}

function trim(str) {
	return str.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2');
}

function delay(gap) {
	var then,now; 
	then=new Date().getTime();
            	now = then;
	while((now-then)<gap) {
              		now = new Date().getTime();
   	}
}

function skapaLead(eventCode) {
 	var leadNumber = Math.round((new Date().getTime() * Math.random()));
            	var uri  = "https://tbl.tradedoubler.com/report?program=42992&event=" + eventCode + "&leadNumber=" + leadNumber;
            	document.getElementById('tb').src = uri; 
}

var args = new argumentURL();
var queryStr = getQueryString(window.location);
var bCalendar = false;
