﻿/*	PopUp Window script
	version: 1.0
	datum: 2007-07-18
	skapare: Ulf Falk, AlfaPrint AB
	
	Beskrivning:
	Adderar popupbeteende till en befintlig HTML-tag.
	Exempel:
			<div id="UserPanel" style="width: 350px; height: 200px;">
				<script type="text/javascript">
					createPopUp({id: "UserPanel",
					Left: "300px",
					Top: "100px",
					Border: "solid 1px #666666",
					Caption: "Användaruppgifter",
					closeButtonUrl: "Images/PopUpClose.png"});
				</script>
				<table> kan vara valfria element
						popupfönstrets innehåll...
				</table>
			</div>
	Parametrar:
		id				Måste peka på elementet med fönsterinnehållet (div-taggen ovan)
		Left			Fönstrets X-position vid start i px i browserfönstret
		Top				Fönstrets Y-position vid start i px i browserfönstret
		Border			Css-attribut för fönsterram
		Caption			Rubrik, visas i fönstrets "namnlist"
		closeButtonUrl	Absolut eller relativ sökväg till bild för stängknapp
	Revisioner:
		Datum	Ändrat av	Beskrivning
		
*/

var startX;
var startY;
var winX;
var winY;
var dragging;
var ie;
var ctrl;

// används från Best.aspx.js 
var autoHide = true;

function PopStartDrag(e){
	// id för fönstret
	var el = e.srcElement ? e.srcElement : e.target ;
	
	var ctrl = document.getElementById( el.id.substring(0,el.id.length-4));
	// lagra startposition för musen
	startX = e.clientX;
	startY = e.clientY;
		
	//lagra fönstrets startposition som integers
	//kan hantera flera fönster i samma formulär 
	winX = parseInt(ctrl.style.left);
	winY = parseInt(ctrl.style.top); 
	
	//spara referens till fönstret för doDrag-metoden
	dragging = ctrl;
	//registrera lyssnare för förflyttning
	addListener(document,"mouseup",endDrag);
	addListener(document,"mousemove",doDrag);
	el.style.cursor = "move";
}

function doDrag(ev){
	var deltaX = ev.clientX - startX;
	var deltaY = ev.clientY - startY;
	dragging.style.left = (winX + deltaX) + 'px';
	dragging.style.top = (winY + deltaY) + 'px';
}

function endDrag(e){
	var el = e.srcElement ? e.srcElement : e.target ;
	removeListener(document,"mousemove",doDrag);
	removeListener(document,"mouseup",endDrag);
	el.style.cursor = "pointer";
}

function hidePopUp(e){
		var el = e.srcElement ? e.srcElement : e.target ;
		document.getElementById(el.id.substring(0,el.id.length-4)).style.visibility = "hidden";
		autoHide = true;	
}

// koppla händelsehanterare till ett element
// med hänsyn till browser
function addListener(theObject, theEvent, theHandler){
	//var cont = document.getElementById(theId);
	ie = theObject.attachEvent ? true : false;
	if(ie)
		theObject.attachEvent('on'+theEvent, theHandler);
	else
		theObject.addEventListener(theEvent, theHandler , false); 
}

function removeListener(theObject, theEvent, theHandler){
	if(ie)
		theObject.detachEvent('on'+theEvent , theHandler);
	else
		theObject.removeEventListener(theEvent, theHandler , false);  
}

function createPopUp(popCtrl){
	var PopUp = document.getElementById( popCtrl.id );
	ctrl = PopUp;
	PopUp.style.left = popCtrl.Left;
	PopUp.style.top = popCtrl.Top;
	PopUp.style.position = "fixed";
	PopUp.style.border = popCtrl.Border;
	
	var tb = document.createElement("table");
	// FireFox
	tb.setAttribute("class","PanelCaption");
	// ie
	tb.setAttribute("className","PanelCaption");
	
	var tr = tb.insertRow(0);
	var td = tr.insertCell(0);
	
	td.innerHTML = popCtrl.Caption;
	td.setAttribute("id",popCtrl.id + '_Cap');
	td.style.width = "100%";
	td.style.cursor = "pointer";
		
	var td1 = tr.insertCell(1);
	var cb = document.createElement("img");
	cb.setAttribute("src",popCtrl.closeButtonUrl);
	cb.setAttribute("border","0");
	cb.setAttribute("id",ctrl.id + '_Btn');
	addListener(cb,"click",hidePopUp);
	td1.appendChild(cb);
	
	var Cap = PopUp.insertBefore(tb,PopUp.firstChild );
	
	addListener(document.getElementById(ctrl.id + '_Cap'),"mousedown",PopStartDrag); 	
}


