document.pfwvisuallast = null;
document.pfwvisualbase64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

pfwvisualoff    = new Image(); pfwvisualoff.src    = '/_pfwvisual/pfwvisualoff.gif';
pfwvisualon     = new Image(); pfwvisualon.src     = '/_pfwvisual/pfwvisualon.gif';
pfwvisualaddoff = new Image(); pfwvisualaddoff.src = '/_pfwvisual/pfwvisualaddoff.gif';
pfwvisualaddon  = new Image(); pfwvisualaddon.src  = '/_pfwvisual/pfwvisualaddon.gif';
pfwvisualmodoff = new Image(); pfwvisualmodoff.src = '/_pfwvisual/pfwvisualmodoff.gif';
pfwvisualmodon  = new Image(); pfwvisualmodon.src  = '/_pfwvisual/pfwvisualmodon.gif';
pfwvisualclooff = new Image(); pfwvisualclooff.src = '/_pfwvisual/pfwvisualclooff.gif';
pfwvisualcloon  = new Image(); pfwvisualcloon.src  = '/_pfwvisual/pfwvisualcloon.gif';
pfwvisualdeloff = new Image(); pfwvisualdeloff.src = '/_pfwvisual/pfwvisualdeloff.gif';
pfwvisualdelon  = new Image(); pfwvisualdelon.src  = '/_pfwvisual/pfwvisualdelon.gif';
pfwvisualwinoff = new Image(); pfwvisualwinoff.src = '/_pfwvisual/pfwvisualwinoff.gif';
pfwvisualwinon  = new Image(); pfwvisualwinon.src  = '/_pfwvisual/pfwvisualwinon.gif';

var __pfwVisualField=Array();

function pfwvisual (obj,funcadd,funcmod,funcclo,funcdel) {

	document.getElementById("pfwvisualfuncadd").style.display='none';
	document.getElementById("pfwvisualfuncmod").style.display='none';
	document.getElementById("pfwvisualfuncclo").style.display='none';
	document.getElementById("pfwvisualfuncdel").style.display='none';
	if (funcadd) document.getElementById("pfwvisualfuncadd").style.display='';
	if (funcmod) document.getElementById("pfwvisualfuncmod").style.display='';
	if (funcclo) document.getElementById("pfwvisualfuncclo").style.display='';
	if (funcdel) document.getElementById("pfwvisualfuncdel").style.display='';

	var same = (document.pfwvisuallast == obj);
	if (!same) {
		if (document.pfwvisuallast!=null) 	{
			pfwvisualimage(null,'pfwvisual_'+document.pfwvisuallast.getAttribute('query')+'_'+document.pfwvisuallast.getAttribute('dtbid')+'_'+document.pfwvisuallast.getAttribute('pfwid')+'_'+document.pfwvisuallast.getAttribute('pfwvnum'),'pfwvisualoff');
		}
		document.pfwvisuallast = obj;
		pfwvisualimage(null,'pfwvisual_'+document.pfwvisuallast.getAttribute('query')+'_'+document.pfwvisuallast.getAttribute('dtbid')+'_'+document.pfwvisuallast.getAttribute('pfwid')+'_'+document.pfwvisuallast.getAttribute('pfwvnum'),'pfwvisualon');
	}

	var posX = 0,posY = 0,width = obj.offsetWidth,div = document.getElementById('pfwvisualdiv');

	if (obj.offsetParent) {
		while (obj.offsetParent) {
			posY += obj.offsetTop;
			posX += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if ((obj.x)&&(obj.y)) {
		posX = obj.x;
		posY = obj.y;
	}

	if (same) {
		if (div.style.display == '') {
			pfwvisualimage(null,'pfwvisual_'+document.pfwvisuallast.getAttribute('query')+'_'+document.pfwvisuallast.getAttribute('dtbid')+'_'+document.pfwvisuallast.getAttribute('pfwid')+'_'+document.pfwvisuallast.getAttribute('pfwvnum'),'pfwvisualoff');
			div.style.display = 'none';
		} else {
			pfwvisualimage(null,'pfwvisual_'+document.pfwvisuallast.getAttribute('query')+'_'+document.pfwvisuallast.getAttribute('dtbid')+'_'+document.pfwvisuallast.getAttribute('pfwid')+'_'+document.pfwvisuallast.getAttribute('pfwvnum'),'pfwvisualon');
			div.style.display ='';
		}
	} else {
		//div.style.left = posX + width;
		div.style.left = posX;
		div.style.top = posY;
		div.style.display = '';
	}

}

function pfwvisualexec (func) {

	tabletype="data";
	if (document.pfwvisuallast.getAttribute('cluster')=="1") tabletype="cluster";

	if (func=='add') {
		ecmOpenDialog('http://pfw.psindex.net/index.php?frame=1&passport='+document.pfwvisualpassport+'&redirect='+pfwvisualencode('/pfw/content/'+tabletype+'/admin.edit.php?table='+document.pfwvisuallast.getAttribute('dtbid')+'&hide='+document.pfwvisuallast.getAttribute('hide')+'&'+document.pfwvisuallast.getAttribute('autocomplete')), 680, 525);
		pfwvisualcheckreload();
	}

	if (func=='mod') {
		ecmOpenDialog('http://pfw.psindex.net/index.php?frame=1&passport='+document.pfwvisualpassport+'&redirect='+pfwvisualencode('/pfw/content/'+tabletype+'/admin.edit.php?table='+document.pfwvisuallast.getAttribute('dtbid')+'&id='+document.pfwvisuallast.getAttribute('pfwid')+'.'+document.pfwvisuallast.getAttribute('pfwvnum')+'&hide='+document.pfwvisuallast.getAttribute('hide')), 680, 525);
		pfwvisualcheckreload();
	}

	if (func=='clo') {
		ecmOpenDialog('http://pfw.psindex.net/index.php?frame=1&passport='+document.pfwvisualpassport+'&redirect='+pfwvisualencode('/pfw/content/'+tabletype+'/admin.close.php?table='+document.pfwvisuallast.getAttribute('dtbid')+'&id[]='+document.pfwvisuallast.getAttribute('pfwid')), 680, 525);
		pfwvisualcheckreload();
	}

	if (func=='del') {
		ecmOpenDialog('http://pfw.psindex.net/index.php?frame=1&passport='+document.pfwvisualpassport+'&redirect='+pfwvisualencode('/pfw/content/'+tabletype+'/admin.delete.php?table='+document.pfwvisuallast.getAttribute('dtbid')+'&id[]='+document.pfwvisuallast.getAttribute('pfwid')+'.'+document.pfwvisuallast.getAttribute('pfwvnum')), 680, 525);
		pfwvisualcheckreload();
	}

	if (func=='win') {
		document.getElementById('pfwvisualdiv').style.display='none';
		if (document.pfwvisuallast!=null) pfwvisualimage(null,'pfwvisual_'+document.pfwvisuallast.getAttribute('query')+'_'+document.pfwvisuallast.getAttribute('dtbid')+'_'+document.pfwvisuallast.getAttribute('pfwid')+'_'+document.pfwvisuallast.getAttribute('pfwvnum'),'pfwvisualoff');
	}
}

function pfwvisualimage (layer,imgName,imgObj) {

	if (document.images) {
		if (document.layers && layer!=null) eval('document.'+layer+'.document.images["'+imgName+'"].src = '+imgObj+'.src')
		else {
			if (document.images[imgName]) {document.images[imgName].src = eval(imgObj+".src")}
		}
	}

}


function pfwvisualcheckreload () {
	if (dialogWin.win.closed) {
		location.reload();
	} else {
		setTimeout("pfwvisualcheckreload()",500);
	}
}


function pfwvisualencode (decStr) {

	var bits, dual, i = 0, encOut = '';

	while(decStr.length >= i + 3){
		bits = 		(decStr.charCodeAt(i++) & 0xff) <<16 |
					(decStr.charCodeAt(i++) & 0xff) <<8  |
 					decStr.charCodeAt(i++) & 0xff;
		encOut +=	document.pfwvisualbase64s.charAt((bits & 0x00fc0000) >>18) +
 					document.pfwvisualbase64s.charAt((bits & 0x0003f000) >>12) +
 					document.pfwvisualbase64s.charAt((bits & 0x00000fc0) >> 6) +
 					document.pfwvisualbase64s.charAt((bits & 0x0000003f));
	}

	if (decStr.length -i > 0 && decStr.length -i < 3) {
  		dual = Boolean(decStr.length -i -1);
  		bits =		((decStr.charCodeAt(i++) & 0xff) <<16) |
   					(dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);
  		encOut +=	document.pfwvisualbase64s.charAt((bits & 0x00fc0000) >>18) +
    				document.pfwvisualbase64s.charAt((bits & 0x0003f000) >>12) +
    				(dual ? document.pfwvisualbase64s.charAt((bits & 0x00000fc0) >>6) : '=') +
    				'=';
	}

	return encOut;

}

var dialogWin=new Object();

function ecmOpenDialog(url,width,height,returnFunc,args) {
	if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
		// Initialize properties of the window object.
		dialogWin.returnFunc=returnFunc;
		dialogWin.returnedValue="";
		dialogWin.args=args;
		dialogWin.url=url;
		dialogWin.width=width;
		dialogWin.height=height;
		// Keep name unique so Navigator doesn't overwrite an existing dialog.
		dialogWin.name=(new Date()).getSeconds().toString();
		// Assemble window attributes and try to center the dialog.
		if (!document.all) {
			dialogWin.left=window.screenX + ((window.outerWidth - dialogWin.width) / 2);
			dialogWin.top=window.screenY + ((window.outerHeight - dialogWin.height) / 2);
			var attr="screenX="+dialogWin.left+",screenY="+dialogWin.top+",resizable=yes,scrollbars=yes,width="+dialogWin.width+",height="+dialogWin.height;
		} else {
			dialogWin.left=(screen.width - dialogWin.width) / 2;
			dialogWin.top=(screen.height - dialogWin.height) / 2;
			var attr="left="+dialogWin.left+",top="+dialogWin.top+",resizable=yes,scrollbars=yes,width="+dialogWin.width+",height="+dialogWin.height;
		}
		// Generate the dialog and make sure it has focus.
		dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr)
		dialogWin.win.focus()
	} else {
		dialogWin.win.focus()
	}
}
