﻿
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, ' + navigator.userAgent);
	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 PreencheSelectCorV1 (selec, str, cor)
{
	return PreencheSelectCores (selec, str, cor);
}

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){}
}