var gOpener = top.opener;
try{
	if(gOpener.document){
		gOpener = gOpener.top;
	}
}catch(e){
	gOpener = top;
}
var gTimer;
var gTimeout = 2000; // tijd in msec dat print keuzemenu getoond wordt
var gPrintList = []; // array waar de te printen docs in worden bewaard
var gFilter = ['/ad_zoekform','.pdf'];  // als dit in pad voorkomt, dan niet toestaan in printlijst

var gTargetFrame; // frame waar de printknop in terecht komt enzo
var gDefaultPrintFrame; // welk frame is bron ...

// Remco 25-7-2008 11:54 - voor de zekerheid alle filteringangen lowercase.
for (var i in gFilter) { gFilter[i] = gFilter[i].toLowerCase(); };

/*
 * Zet target frames enzo
 */
function InitPrint() {
	gPrintknopId = 'btnprint';
	gTargetFrame = myFtextTop;
	gDefaultPrintFrame = myFtext;
}

/*
 * toevoegen aan printlijst
 */
function AddPrintList(printframe, psp) {
	if (printframe == undefined) printframe = gDefaultPrintFrame;
	if (psp == undefined) psp = false;
	var obj;
	var title = bodyhtml = "";
	var docpath = printframe.document.location.href;
	
	// controleer of al in lijst
	if (!psp) if (IsInList(docpath)) return false;
	
	// stylesheets verzamelen
	var arrCss = [];
	var objlinks = printframe.document.getElementsByTagName("link");
	if (objlinks){
		for(i in objlinks) {
			arrCss.push(objlinks[i].href);
		}
	}
	
	// titel
	obj = printframe.document.getElementsByName('shortName')[0];
	if(obj) title = obj.content;
	if(title == "") title = printframe.document.title;
	if(title == "") title = "document " + gPrintList.length;
	
	// toevoegen
	if (AddInstantHTML(printframe)) {
		bodyhtml = printframe.document.body.innerHTML;
	}
	var ischecked = true;
	gPrintList.push([title, docpath, ischecked, bodyhtml, arrCss]);
	
	if (!psp) ShowListButton();
}

/*
 * Bestaat al in lijst?
 */
function IsInList (doc) {
	var res = false;
	for (var i in gPrintList) {
		if (gPrintList[i][1] == doc) {
			res = true;
			break;
		}
	}
	return res;
}

/*
 * custom code om te bepalen of alleen de locatie in de printlijst wordt gezet of meteen de html.
 * In sommige gevallen kom je nl. niet weg met een url, zoals bijvoorbeeld een zoekresultaat.
 */
function AddInstantHTML(printframe) {
	if (printframe == undefined) printframe = gDefaultPrintFrame;
	var result = false;
	if (printframe.document.location.href.indexOf(gDataPath) == -1) {
		result = true;
	}
	return result;
}

/*
 * verwijder van printlijst
 */
function RemovePrintList(idx) {
	if (gPrintList.length < idx + 1) return false;
	gPrintList.splice(idx, 1);
}

/*
 * printlijst leegmaken
 */
function ClearPrintList() {
	gPrintList = [];
}

/*
 * Open printtemplate
 */
function OpenPrintTemplate(ispsp){
	var features = 'status=yes,scrollbars=yes,toolbar=no,resizable=yes,width=800,height=600';
	var doc = gHostPath+'/onlineprinttemplate.htm' + (ispsp ? '?psp=true' : '');
	var win = top.OpenWindow(doc, 'popprint', features);
}


/*****
 * GUI
 *****/
function ClearTimerPrint(){
	Debug('ClearTimerPrint');
 	window.clearTimeout(gTimer);	
}

function CreatePrintPanel(){
	var dom = gTargetFrame.document.getElementsByTagName('body')[0];
	if(gTargetFrame.document.getElementById('printPanel')) return false;

	if (gTimer) ClearTimerPrint();

	var newdiv = gTargetFrame.document.createElement('div');
	dom.appendChild(newdiv);
	newdiv.id = "printPanel";
	newdiv.className = "printPanel";
	newdiv.onmouseout = "top.HidePrintPanel()";
	newdiv.onmouseover = "top.ClearTimerPrint()";
	
	var t =[];
	t.push('<table onmouseout="top.HidePrintPanel();" onmouseover="top.ClearTimerPrint();" border="0" cellspacing="0" cellpadding="0">');
	t.push('<tr style="height:45px;">');
	t.push('<td style="background-image:url(\''+top.gImgPath+'print/bg_print10.gif\'); width:15px;"><img src="'+top.gImgPath+'toc/blank.gif" style="height:1px; width:10px;"></td>');
	t.push('<td id="contentPP" style="background-image:url(\''+top.gImgPath+'print/bg_print01.gif\');">');
	t.push('<div align="absmiddle">');
	t.push('<a href="javascript:;" class="pplink" id="buttonPrint" onClick="top.DoPrint(); return false;">Print</a><span id="btnSL" style="display:none">&nbsp;&nbsp;/&nbsp;&nbsp;<a href="javascript:;" class="pplink" id="btnShowList" onClick="top.OpenList(); return false;">Lijst</a></span><br>');
	t.push('</div>');
	t.push('<div align="absmiddle">');
	t.push('<a href="javascript:;" class="pplink" id="addList" onClick="top.AddPrintList(); return false;">Voeg toe aan printlijst</a>');
	t.push('</div>');
	t.push('</td>');
	t.push('<td style="background-image:url(\''+top.gImgPath+'print/bg_print02.gif\'); width:15px;"><img src="'+top.gImgPath+'toc/blank.gif" style="height:1px; width:10px;"></td>');
	t.push('</tr>');
	t.push('</table>');
	newdiv.innerHTML = t.join('');

	ShowListButton();
	PositionPrintPanel();
	HidePrintPanel();
}

/*
 * Verberg Printknoppen
 */
function HidePrintPanel(){
	Debug('HidePrintPanel');
	gTimer = window.setTimeout('intHidePrintPanel()', gTimeout);
}
function intHidePrintPanel() {
	var dom = gTargetFrame.document.getElementById('printPanel');
	if(dom) gTargetFrame.document.getElementsByTagName('body')[0].removeChild(dom);
}

function ShowListButton() {
	var obj = gTargetFrame.document.getElementById('btnSL');
	if (obj) obj.style.display = gPrintList.length == 0 ? 'none' : 'inline';
}

/*
 * Positioneren Printknoppen
 */
function PositionPrintPanel(){
	var printKnop = gTargetFrame.document.getElementById(gPrintknopId);
	var printPanel = gTargetFrame.document.getElementById('printPanel');
	var modifierX = +5;
	var modifierY = -8;
	
	var browserWidth = gTargetFrame.document.body.offsetWidth;
	var browserHeight = gTargetFrame.document.body.offsetHeight;

	var arrPos = FindPos(printKnop);
	var PrintKnopLeft = arrPos[0];
	var PrintKnopTop = arrPos[1];
	var PrintKnopWidth = printKnop.offsetWidth;
	var PrintKnopHeight = printKnop.offsetHeight;
		
	var printPanelWidth = printPanel.offsetWidth;
	var printPanelHeight = printPanel.offsetHeight;

	Debug(
		'browserWidth: ' + browserWidth
		,'browserHeight: ' + browserHeight    
		,'PrintKnopLeft: ' + PrintKnopLeft    
		,'PrintKnopWidth: ' + PrintKnopWidth   
		,'PrintKnopHeight: ' + PrintKnopHeight  
		,'PrintKnopTop: ' + PrintKnopTop     
		,'printPanelWidth: ' + printPanelWidth  
		,'printPanelHeight: ' + printPanelHeight
	);

	// x-as
	if(PrintKnopLeft + PrintKnopWidth + printPanelWidth + modifierX > browserWidth){
		// naar links uitklappen
		printPanel.style.left = PrintKnopLeft - printPanelWidth - modifierX;
	} else {
		// naar rechts uitklappen
		printPanel.style.left = PrintKnopLeft + PrintKnopWidth + modifierX;
	}
	// y-as
	if (PrintKnopTop + printPanelHeight > browserHeight && printPanelHeight < browserHeight) {
		// naar boven uitklappen
		printPanel.style.top = PrintKnopTop - (printPanelHeight - PrintKnopHeight) - modifierY;
	} else {
		// naar beneden uitklappen
		printPanel.style.top = PrintKnopTop + modifierY;
	}
//	disappearPrintPanelTimeOut();
}

/*
 * open printtemplate
 */
function DoPrint() {
//	if (gPrintList.length == 0) {
//		gDefaultPrintFrame.print();
//	} else {
		HidePrintPanel();
		AddPrintList(gDefaultPrintFrame, true);
		OpenPrintTemplate(true);
//	}
} 

function OpenList() {
		HidePrintPanel();
		OpenPrintTemplate();
}
