var viewImageWnd	 = null;
var openWebDialogWnd = null;

function viewImage(URL, dwidth, dheight, dname)
{
   var leftpos = (self.screen.width / 2) - (dwidth / 2);
   var toppos = (self.screen.height / 2) - (dheight / 2);
   
   if (viewImageWnd) viewImageWnd.close();
   
   viewImageWnd = window.open(URL,dname,'status=no,modal=yes,width='+dwidth+',height='+dheight+',left='+leftpos+',top='+toppos+'');
}

function openWebDialog(URL, dwidth, dheight, dname)
{
   var leftpos = (self.screen.width / 2) - (dwidth / 2);
   var toppos = (self.screen.height / 2) - (dheight / 2);
   
   if (openWebDialog) openWebDialog.close();
   
   openWebDialogWnd = window.open(URL,dname,'status=no,modal=yes,width='+dwidth+',height='+dheight+',left='+leftpos+',top='+toppos+'');
}

function rawurlencode (str) {
 
	var hexStr = function (dec) {
		return '%' + dec.toString(16).toUpperCase();
	};
 
	var ret = '',
			unreserved = /[\w.~-]/; // A-Za-z0-9_.~-
	str = (str+'').toString();
 
	for (var i = 0, dl = str.length; i < dl; i++) {
		var ch = str.charAt(i);
		if (unreserved.test(ch)) {
			ret += ch;
		}
		else {
			var code = str.charCodeAt(i);
			// Reserved assumed to be in UTF-8, as in PHP
			if (code < 128) { // 1 byte
				ret += hexStr(code);
			}
			else if (code >= 128 && code < 2048) { // 2 bytes
				ret += hexStr((code >> 6) | 0xC0);
				ret += hexStr((code & 0x3F) | 0x80);
			}
			else if (code >= 2048 && code < 65536) { // 3 bytes
				ret += hexStr((code >> 12) | 0xE0);
				ret += hexStr(((code >> 6) & 0x3F) | 0x80);
				ret += hexStr((code & 0x3F) | 0x80);
			}
			else if (code >= 65536) { // 4 bytes
				ret += hexStr((code >> 18) | 0xF0);
				ret += hexStr(((code >> 12) & 0x3F) | 0x80);
				ret += hexStr(((code >> 6) & 0x3F) | 0x80);
				ret += hexStr((code & 0x3F) | 0x80);
			}
		}
	}
	return ret;
}
