function Popup(posX, posY, w, h, mode, pag, method,vars){

	var alvo		= null;
	var mouseOffset		= null;
	var xmlhttp 		= window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
 	var metodo 		= method ? method : 'GET';
	var variaveis		= vars ? vars : '';
	var modo 		= mode ? mode : 'ajax';
	var pag			= pag;
	
	
	var popup = document.createElement('div');
	popup.setAttribute('id', 'pop');
	popup.style.left = posX + 'px';
	popup.style.top = posY + 'px';
	popup.style.width = w + 'px';
	popup.style.height = h + 'px';

	var barra = document.createElement('div');
	barra.setAttribute('id', 'barra');

	var fecharBt = document.createElement('a');
	fecharBt.setAttribute('id', 'fecharLab');
	fecharBt.setAttribute('href', '#');
	fecharBt.innerHTML = 'X';

	var conteudo = document.createElement('div');
	conteudo.setAttribute('id', 'conteudo');
	conteudo.style.height = (h - barra.style.height) + 'px';
	
	var body = document.body;

	barra.appendChild(fecharBt);
	popup.appendChild(barra);
	popup.appendChild(conteudo);
	body.appendChild(popup);

	fecharBt.onclick = fechaPopup;
	barra.onmousedown = dragPopup;
	barra.onmouseup = stopDrag;

	if(modo == 'ajax'){	
		xmlhttp.onreadystatechange = funcAjax;
		xmlhttp.open(metodo, pag, true);
		xmlhttp.send(null);
	}else if(modo == 'iframe'){
		var orc_iframe = document.createElement('iframe');
		orc_iframe.setAttribute('id', 'oframe');
		orc_iframe.setAttribute('src', pag);
		orc_iframe.setAttribute('scrolling', 'no');
		conteudo.appendChild(orc_iframe);		
	}	

	function funcAjax(){
			if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
				document.getElementById('conteudo').innerHTML = xmlhttp.responseText;
		}

	function dragPopup(e){
		// mantem compatibilidade entre os browsers. e = standard, window.event = microsoft
		var evt = e ? e : window.event;
		// mantem compatibilidade entre os browsers. e.target = standard, e.srcElement = microsoft
		alvo = evt.target ? evt.target : evt.srcElement;
		
		mouseOffset = pegaMouseOffset(alvo, evt);
		
		document.onmousemove = move;

		// evita que o comportamento padrao do evento seja executado
		return false;
	}

	function pegaMouseOffset(target, e){
		evt = e ? e : window.event;

		var docPos = pegaPosicao(target);
		var mousePos = mouseCoords(evt);
		return {x: mousePos.x - docPos.x, y: mousePos.y - docPos.y};
	}

	function pegaPosicao(e){
		var left = 0;
		var top = 0;

		do {
			left += e.offsetLeft;
			top  += e.offsetTop;
		}while(e = e.offsetParent);
		
		return {x: left , y: top};
	}

	// move o popup
	function move(e){
		var evt = e ? e : window.event;
		var coordenadas = mouseCoords(evt);
		var destX = (coordenadas.x - mouseOffset.x);
		var destY = (coordenadas.y - mouseOffset.y);
		
		alvo.parentNode.style.left = destX <= 0 ? 0 : destX + 'px';
		alvo.parentNode.style.top = destY <= 0 ? 0 : destY + 'px';

		// evita que o comportamento padrao do evento seja executado
		return false;
	}

	// retorna um objeto com os eixos x e y do mouse em relacao ao documento.
	function mouseCoords(e){
		return e.pageX || e.pageY ? {x:e.pageX, y: e.pageY } : { x : e.clientX + document.body.scrollLeft - document.body.clientLeft, y : e.clientY + document.body.scrollTop - document.body.clientTop };
	}

	// para de mover o popup
	function stopDrag(e){
		if(document.onmousemove) document.onmousemove = null;
	}

	// remove o popup
	function fechaPopup(e){
		barra.onmousedown = barra.onmouseup = fecharBt.onclick = xmlhttp = null;
		document.body.removeChild(alvo.parentNode.parentNode);		
	}
}
