function divCalendario(id,url,posicaoX,posicaoY){
	
	
	//OCULTAR COMBOS DE QUARTOS E HOSPEDES
	
	try{

		this.url = url;
		this.id = id;
		this.posicaoX = posicaoX;
		this.posicaoY = posicaoY;
	
		//Cria div que vai abrigar o popup
		var divContainer = document.createElement('DIV');
		divContainer.className = 'divContainer';
		divContainer.id = 'divContainer';
		document.body.appendChild(divContainer);
	
		//Verificando se existem alguma janela com o mesmo nome abeeto para fechar
		if(document.getElementById(id)){
			fechaPop(id);			
		}
				
		
		//Criando a div popup
		var divPopup = document.createElement('DIV');
		divPopup.className = 'divCalendario';
		divPopup.id = id;
		
		divPopup.style.left = intToPixel(posicaoX);
		divPopup.style.top = intToPixel(posicaoY);
		
		divContainer.appendChild(divPopup);

		//Descarregando o html dentro da DIV
		var pop = new popObj(url,divPopup);

	}catch(e){
		erro(e);	
	}
}

function fechaPop(nome){
	
	getObject(nome).parentNode.removeChild(getObject(nome));
	getObject('divContainer').parentNode.removeChild(getObject('divContainer'));	
	
}

function popObj(url,divContainer) {
	var self = this;
	
	//Cria um novo objeto XML passando os valores. Esse obj e funções estao no arq. xml.js
	this.xml = new xmlObj( {
		url: url,
		obj: self, 
		func: 'show', 
		args: { divContainer:divContainer }
	} );
	
}

popObj.prototype.show = function(args) {
	var htm = args.responseText;
	var divContainer = args.divContainer;

	divContainer.innerHTML = htm;
		
}

//Trata erro
function erro(e,construtor){

	alert(construtor);

	for (var i in e) alert(i + ' = ' + e[i]);

}

function intToPixel(valor){
	
	try{
		
		return String(valor).concat('px');

	}catch(e){
		erro(e);
	}
	
}

//Recebe valores e chama a função LOAD
function xmlObj(args) {
	this._args = args;
	this.load();
}

//Carrega página
xmlObj.prototype.load = function() {
	this._request = this._getXMLHTTPRequest();
	var _this = this;
	this._request.onreadystatechange = function(){_this._onData()};
	//Vamos abrir a criança!
	this._request.open("GET",this._args.url, true);
	this._request.send(null);
}


xmlObj.prototype._onData = function() {
	//Verifica Status.. se = 4(ultimo estagio) continua
	if(this._request.readyState == 4) {
		//O IE as vezes deixa prosseguir msm não tendo chegado ao 4 estagio... então verifica se esta = a 200 .. que é a msm merda
		if(this._request.status == "200") {
			var obj = this._args.obj;
			var func = this._args.func;
			var args = this._args.args;
			args.response = this._request.responseXML;
			args.responseText = this._request.responseText;
			obj[func](args);
		}
		//Deu merda ... deleta request
		delete this._request;
	}
}

xmlObj.prototype._getXMLHTTPRequest = function(){
	var xmlHttp;
	//Por conta de versao de browser... Melhor tentar os dois ActiveX
	try	{
		xmlHttp = new ActiveXObject("Msxml2.XMLHttp");
	} catch(e) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
		} catch(e2) {}
	}
	if(xmlHttp == undefined && (typeof XMLHttpRequest != 'undefined')) {
		xmlHttp = new XMLHttpRequest();
	}
	//retorna xmlHttp com o ActiveX a ser usado
	return xmlHttp;
}

function getObject(objeto){

	try{

		var objAlvo;
	
		if(isObject(objeto)){
		
			objAlvo = objeto;
		
		}else{
		
			objAlvo = document.getElementById(objeto);
		
		}
		
		return objAlvo;

	}catch(e){
		erro(e);
	}
}

//Verifica se o objeto é do tipo Object
function isObject(objeto){

	try{
		if(typeof(objeto) == 'object')return true;

	}catch(e){
		erro(e);
	}
	
}

//Retorna a distancia do objeto ao Topo da página
function getTop(objeto){

	try{
		var objeto = getObject(objeto); 
	
		var top  = 0;
	
		while (objeto.offsetParent){
			top  += objeto.offsetTop;
			objeto = objeto.offsetParent;
		}
	
		top  += objeto.offsetTop;
	
		return top;
		
	}catch(e){
		erro(e);
	}
}

//Retorna a distancia do objeto a Esquerda da página
function getLeft(objeto){

	try{
		var objeto = getObject(objeto); 
	
		var left = 0;
	
		while (objeto.offsetParent){
			left += objeto.offsetLeft;
			objeto = objeto.offsetParent;
		}
	
		left += objeto.offsetLeft;
	
		return left;
	
	}catch(e){
		erro(e);
	}
}

function isIe(){
	
	return (navigator.appVersion.indexOf("MSIE") != -1) ? (navigator.appVersion.indexOf("Mac") != -1) ? false : true  : false;

};

function check_date(DATA) {
        var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
        var msgErro = 'Formato incorreto de data.';
        var vdt = new Date();
        var vdia = vdt.getDay();
        var vmes = vdt.getMonth();
        var vano = vdt.getYear();
		
		if (DATA.value!=''){
		
			if ((DATA.value.match(expReg))){
					var dia = DATA.value.substring(0,2);
					var mes = DATA.value.substring(3,5);
					var ano = DATA.value.substring(6,10);
					if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
							alert("Dia incorreto !!! Max de 30 dias.");
							DATA.focus();
							return false;
					} else{ //1
									if(ano%4!=0 && mes==2 && dia>28){
											alert("Data incorreta!! Max de 28 dias.");
											DATA.focus();
											return false;
									} else{ //2
													if(ano%4==0 && mes==2 && dia>29){
																	alert("Data incorreta!! Max de 29 dias.");
																	DATA.focus();
																	return false;
													} else{ //3
																	if (ano > vano) {
																					//alert("Data incorreta!! Ano informado maior que ano atual.");
																					//DATA.focus();
																					return true;
																	}else{ //4
																			//alert ("Data correta!");
																			return true;
																	} //4-else
													} //3-else
									}//2-else
					}//1-else                       
			} else { //5
							alert(msgErro);
							DATA.focus();
							DATA.value=''
							
							return false;
			} //5-else
		}
}

