function NewWindow(url, windowName, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable';
	win = window.open(url, windowName, winprops);
	if (parseInt(navigator.appVersion) >= 4) { 
		win.window.focus(); 
	}
}

function in_array(haystack,needle) {
	var foundIt = false;
	flatStack = "|:|" + haystack.join("|:|") + "|:|";
	if (flatStack.indexOf("|:|" + needle + "|:|") > -1) foundIt = true;
	return foundIt;
}

function deleteEmptyArrayVals(oldArr) {
	newArr = new Array();
	for (i=0;i<oldArr.length;i++) {
		if (oldArr[i] != "") {
			newArr[newArr.length] = oldArr[i];
		}
	}
	return newArr;
}

function assembleUrl(urlParts) {
	url = "";
	url += urlParts["pageParts"].join("/");
	if (urlParts["server"]) {
		if (!urlParts["protocol"]) urlParts["protocol"] = "http";
		url = urlParts["protocol"] + "://" + urlParts["server"] + "/" + url;
	}
	queryString = "";
	queryStringParts = urlParts["queryStringParts"];
	for (var key in queryStringParts) {
		if (queryString) queryString += "&";
		queryString += key + "=" + queryStringParts[key];
	}
	if (queryString) url += "?" + queryString;
	return url;
}

function dissectUrl(urlString) {
	var urlParts = new Array();
	urlString = urlString.toString();
	//protocol
	if (urlString.indexOf("://") > -1) firstSplit = urlString.split("://");
	if (typeof(firstSplit) != "undefined") {
		urlParts["protocol"] = firstSplit[0];
		urlString = firstSplit[1];
	}
	//query string
	if (urlString.indexOf("?") > -1) secondSplit = urlString.split("?");
	var queryStringVars = new Array();
	if (typeof(secondSplit) != "undefined") {
		queryString = secondSplit[1];
		queryStringPairs = queryString.split("&");
		for (i=0;i<queryStringPairs.length;i++) {
			queryStringPairParts = queryStringPairs[i].split("=");
			qsKey = queryStringPairParts[0];
			qsVal = queryStringPairParts[1];
			queryStringVars[qsKey] = qsVal;
		}
		urlString = secondSplit[0];
	}
	urlParts["queryStringParts"] = queryStringVars;
	//server & pages
	if (urlString.indexOf("/") > -1) thirdSplit = urlString.split("/");
	if (typeof(thirdSplit) != "undefined") {
		pageParts = new Array();
		for (i=1;i<thirdSplit.length;i++) pageParts[pageParts.length] = thirdSplit[i];
		urlParts["pageParts"] = pageParts;
		urlParts["server"] = thirdSplit[0];
	} else {
		urlParts["page"] = urlString;
	}
	return urlParts;
}

function queryStringVar( url, varKey, varVal ) {
	
	var urlParts = url.split("?");
	var urlPage  = urlParts[0];
	
	var queryKeys = new Array();
	var queryVals = new Array();
	
	var queryString = "";
	var queryPairs = "";
	var returnUrl = "";
	
	if ( urlParts.length > 1 ) {
		queryString = urlParts[1];
		queryPairs = queryString.split("&");
		
		for ( i = 0; i < queryPairs.length; i++ ) {
			queryKeys[queryKeys.length] = queryPairs[i].split("=")[0];
			queryVals[queryVals.length] = queryPairs[i].split("=")[1];
		}
	}
	
	
	if ( varKey && varVal ) { 
		queryKeys[queryKeys.length] = varKey;
		queryVals[queryVals.length] = varVal;
	}

	returnUrl = urlPage;
	queryString = "";

	for ( i = 0; i < queryKeys.length; i++ ) {
		
		if ( queryString != "" ) 
			queryString += "&";
			
		queryString += queryKeys[i] + "=" + queryVals[i];
		
	}

	if ( queryString ) 
		returnUrl += "?" + queryString;

	return returnUrl;
}

function splitQueryVars(queryString) {
	var queryVars = new Array();
	queryPairs = queryString.split("&");
	for (i=0;i<queryPairs.length;i++) {
		queryVars[queryPairs[i].split("=")[0]] = queryPairs[i].split("=")[1];
	}
	return queryVars;
}