﻿
var ConstrutoresHttpReq = [
	function () { return new XMLHttpRequest() },
	function () { return new ActiveXObject("Msxml2.XMLHTTP") },
	function () { return new ActiveXObject("Msxml3.XMLHTTP") },
	function () { return new ActiveXObject("Microsoft.XMLHTTP") }
];

function CriarHttpReq ()
{
	var httpReq = null;
	
	for (var i=0; i < ConstrutoresHttpReq.length; i++)
	{
		try
		{
			httpReq = ConstrutoresHttpReq[i]();
		}
		catch (ex) { continue; }
		break;
	}
	
	return httpReq;
}

function RequestHttp (url, callBack, callBackErro, param1)
{
	var httpReq = CriarHttpReq();
	
	if (httpReq == null)
	{
		return false;
	}
	
	httpReq.open ("GET", url, true);
	httpReq.setRequestHeader ('User-Agent', 'xmlHttpRequest');
	httpReq.onreadystatechange = 
	function ()
	{
		if (httpReq.readyState != 4)
		{
			return;
		}
		if (httpReq.status != 200 && httpReq.status != 304)
		{
			if (callBackErro)
			{
				callBackErro (httpReq, param1);
			}
			httpReq.onreadystatechange = function() {};
			return;
		}
		httpReq.onreadystatechange = function() {}; 
		callBack (httpReq, param1);
	}
	
	if (httpReq.readyState == 4)
	{
		return false;
	}
	httpReq.send (null);
	return true;
}

function PreencheSelect (selec, str)
{			
	selec.options.length= 0;
	var array= str.split (":!:");
	var is= 0;
	for (var i= 0; i < array.length; i += 2)
	{
		selec.options[is]= new Option (array[i+1], array[i]);
		is++;
	}
}

function PreencheSelectCor (selec, str, cor)
{
	selec.options.length= 0;
	var array= str.split (":!:");
	var is= 0;
	for (var i= 0; i < array.length; i += 2)
	{
		selec.options[is]= new Option (array[i+1], array[i]);

		if (i == 0)
			selec.options[is].style.color= cor;

		is++;
	}
}

function PreencheSelectCores (selec, str, cor)
{
	selec.options.length= 0;
	var array= str.split (":!:");
	var is= 0;
	for (var i= 0; i < array.length; i += 3)
	{
		selec.options[is]= new Option (array[i+1], array[i]);

		if (array[i+2] == 1)
			selec.options[is].style.color= cor;

		is++;
	}
}

function PreencheSelectGrupos (selec, str, cor)
{
	//Implementar espera por document.ready por causa do document.create
	selec.options.length= 0;
	for (; selec.lastChild;)
	{
		selec.removeChild (selec.lastChild);
	}
	
	var grupos= str.split (":?:");
	if (!grupos.length > 0)
	{
		return;
	}
	
	var primeiroIndice= 0;
	if (grupos.length % 2 != 0) //Ímpar
	{
		selec.options[0]= new Option (grupos[0].split(":!:")[1], grupos[0].split(":!:")[0]);
		if (cor)
		{
			selec.options[0].style.color= cor;
		}
		primeiroIndice= 1;
	}
	
	for (var ig= primeiroIndice; ig < grupos.length; ig += 2)
	{
		var grupo= document.createElement ("optgroup");
		grupo.label= grupos[ig];
		
		var array= grupos[ig + 1].split (":!:");
		for (var i= 0; i < array.length; i += 2)
		{
			var newOption= new Option (array[i+1], array[i]);
			newOption.innerText= array[i+1];
			grupo.appendChild (newOption);
		}
		
		selec.appendChild (grupo);
	}
}

function AtribDadosElem (req, idElem)
{
	var elem= document.getElementById (idElem);
	if (!elem)
	{
		return;
	}
	elem.innerHTML = req.responseText;
	
	var scripts= elem.getElementsByTagName("script");
	for (var i= 0; i < scripts.length; i++)
	{
		eval (scripts[i].innerHTML);
	}
}

function ExecutaReq (req)
{
	eval(req.responseText);
}

function AssignHtml (objID, html)
{
	try
	{
		var obj = document.getElementById (objID);
		obj.innerHTML = '';
		obj.innerHTML = html;
	}
	catch(e){}
}
