
function w(url,name,width,height) {
	x = (640 - width)/2; 
	y = (480 - height)/2;
    if (screen) {
        y = (screen.availHeight - height)/2;
        x = (screen.availWidth - width)/2;
    }
	window.open(url,name,'width='+width+',height='+height+',screenX='+x+',screenY='+y+',top='+y+',left='+x+',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no, resizable=yes');
}

// sets cookie
function setDBCookie(NameOfCookie, value, expiredays, path, domain, secure) {
	if (opid>0) {
		var url = '/cookie.php?k='+NameOfCookie+'&v='+value+'&a=set&o='+opid;
		return $j.ajax({ url: url, async: false }).responseText;
	} else {
		var ExpireDate = new Date();
		ExpireDate.setTime(ExpireDate.getTime() + (expiredays*24*3600*1000));
		document.cookie = NameOfCookie +"="+ escape(value) + ((expiredays == null)? "": ";expires="+ ExpireDate.toGMTString()) +((path == null)? "": (";path=" + path)) +((domain == null) ? "" : (";domain=" + domain)) +((secure == true) ?";secure":"");
	}
}

// gets cookie
function getDBCookie(NameOfCookie) {
	retval = '';
	if (opid>0) {
		var url = '/cookie.php?k='+NameOfCookie+'&a=get&o='+opid;
		var retval = $j.ajax({ url: url, async: false }).responseText;
//		alert(NameOfCookie+" = "+retval);
		if (retval=="nok") {
			return "";
		} else {
			return retval;
		}
	}
	if (retval=='') {
		if(document.cookie.length > 0) {
			begin = document.cookie.indexOf(NameOfCookie+"=");
			if (begin != -1) {
				begin += NameOfCookie.length + 1;
				end = document.cookie.indexOf(";",begin);
				if(end == -1) end = document.cookie.length;
				return unescape(document.cookie.substring(begin,end));
			}
		}
	}
	return null;
}

// returns the current link with a replaced param value defined by pkey
// all empty value keys are removed
function replaceUrlParam(pkey, pvalue) {
	var url = window.location.href;
	var newqs = '';
	var keyfound = false;
	if (url.indexOf('?')!=-1) {
		var urlarr = url.split('?');
		var kvpairs = urlarr[1].split('&');
		for (var kvpair in kvpairs) {
			kvpair = kvpairs[kvpair];
			var kvp = kvpair.split('=');
			var key = kvp[0];
			var value = kvp[1];
			if (key==pkey) {
				value = pvalue;
				keyfound = true;
			}
			if ((key!='') && (value!='')) {
				newqs += ((newqs=='') ? '?' : '&')+key+'='+value;
			}
		}
		if (keyfound) {
			newqs = urlarr[0] + newqs;
		} else {
			newqs = urlarr[0] + newqs + ((newqs=='') ? '?' : '&')+pkey+'='+pvalue;
		}
	} else {
		if ((pkey!='') && (pvalue!='')) {
			newqs = url+'?'+pkey+'='+pvalue;
		} else {
			newqs = url;
		}
	}
	return newqs;
}

function getUrlParam(pkey) {
	var url = window.location.href;
	if (url.indexOf('?')!=-1) {
		qs = '&'+url.split('?')[1]+'&';
		kvpairs = qs.split('&');
		for (var kvpair in kvpairs) {
			kvpair = kvpairs[kvpair].split('=');
			var key = kvpair[0];
			var value = kvpair[1];
			if (key==pkey) {
				return value;
			}
		}
	} else {
		return '';
	}
}

function isNumeric(sText) {
	var validchrs = "0123456789.-";
	var isNumber=true;
	var chr;

	for (i = 0; i < sText.length && isNumber == true; i++) { 
		chr = sText.charAt(i); 
		if (validchrs.indexOf(chr) == -1) {
			isNumber = false;
		}
	}
	return isNumber;
}

function isPositiveInteger(sText) {
	var validchrs = "0123456789";
	var isNumber=true;
	var chr;

	for (i = 0; i < sText.length && isNumber == true; i++) { 
		chr = sText.charAt(i); 
		if (validchrs.indexOf(chr) == -1) {
			isNumber = false;
		}
	}
	return isNumber;
}

function isDate(str) {
	var retval = false;
	// checks for yyyy-mm-dd format
	if ((str.substr(4,1)=='-') && (str.substr(7,1)=='-')) {
		if ((isPositiveInteger(str.substr(0,4))) && (isPositiveInteger(str.substr(5,2))) && (isPositiveInteger(str.substr(8,2)))) {
			retval = true;
		}
	}
	return retval;
}

function trim(str) {
	return str.replace(/^\s+|\s+$/g, '') ;
}

function strrev(str) {
  return str.split("").reverse().join("");
}

function formatTableData(obj) {
	var ln = 18;
	var trunc = obj.html();
	trunc = trunc.replace("00:00:00", "");
	trunc = trunc.replace("0000-00-00", "");
	trunc = trim(trunc);
	var ohtml = trunc;
	var truncate = false;
	if (trunc!='') {
		if (isNumeric(trunc)) {
			// for numerics, do not truncate
			truncate = false;
		} else if (isDate(trunc.substr(0,10))) {
			// for dates, truncate time
			trunc = trunc.substr(0,10);
			truncate = true;
		} else if (trunc.indexOf('@')!=-1) {
			// for emails, truncate after the @ sign
			trunc = trunc.substr(0,trunc.indexOf('@')+1);
			truncate = true;
		} else {
			// for text, truncate from ln length, if the string is longer
			if (trunc.length > ln) {
				trunc = trunc.substr(0, ln);
				var otrunc = trunc;
				trunc = strrev(strrev(trunc).substr(strrev(trunc).indexOf(' ')));
				if (trunc=='') {
					trunc=otrunc;
				}
				truncate = true;
			} else {
				truncate = false;
			}
		}
	} else {
		// if trunc is empty, then insert a - sign to signal the missing data
		trunc = '-';
		truncate = false;
	}
	trunc = trim(trunc);
	trunc = trunc.replace(" ", "&nbsp;");
	if (truncate) {
		trunc = trunc+'<a href="#" onclick="revertTableData(this, \''+escape(ohtml)+'\');return false;">&raquo;<\/a>';
	}
	obj.html(trunc);
}

function revertTableData(obj, html) {
	obj.parentNode.innerHTML = unescape(html);
}

function expandAllTableData(listname, obj) {
	$j("div#"+listname+" > table > tbody > tr.listrow > td > div.fieldvalue > a").trigger("click");
	$j(obj).fadeOut("slow");
}

function deselectAllRows(listname) {
	$j('div#'+listname+' table tbody tr.listrow.checked').each(function(){
		$j(this).removeClass('checked');
	});
	$j('input#'+listname+'_selectionlist').val('');
}

function selectAllRows(listname) {
	var slist = ',';
	$j('div#'+listname+' > table > tbody > tr.listrow').each(function(){
		$j(this).addClass('checked');
		// get first td child id's 3rd part & add to the selectionlist
		var tid = $j("td.col0", $j(this)).attr("id").split('_')[2];
		slist += tid+','
	});
	$j('input#'+listname+'_selectionlist').val(slist);
}