var ajaxPendente = false;

// Valid_Form(new Array(this.elements[0], this.elements[1]))

function ajaxRequestCC(pavalores, pmetodo, purl, pfuncaoCallback, pfuncaoException){
	if (ajaxPendente) {
		return false;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(pmetodo, purl);
	
	if (pavalores instanceof Array) {
		for (var i = 0; i < pavalores.length; i += 2) {
			if (pavalores[i] != '') {
				objAjax.addRequestValue(pavalores[i], pavalores[i + 1]);
			}
		};
	} else {
		objAjax.addRequestValue('key', pavalores);
	}
	
	objAjax.setCallBackFunction(pfuncaoCallback, new Array());
	if (pfuncaoException != undefined) {
		objAjax.setExceptionFunction(pfuncaoException);
	} else {
		objAjax.setExceptionFunction(exceptionPadrao);
	}
	objAjax.load();
	
	return true;
}                  

function exceptionPadrao(cod, status) {
	ajaxPendente = false;
	alert(cod + ": " + status);
}

function callBackDetail(response, layerName, campo, botao) {
	ajaxPendente = false;
	document.getElementById(layerName).style.display = 'block';
	document.getElementById(layerName).innerHTML = response;
    var cal = new Zapatec.Calendar.setup({	showsTime      : false,//mostrar hora ou não
											range          : [1900.01, 2999.12],//data inicial e final
											singleClick    : true,//selecionar data com um único click
											inputField     : campo,//nome do campo que irá receber a data
	    									button         : botao,//botão que irá chamar a função da data
											ifFormat       : "%d/%m/%Y"//formata que irá ser mostrado
										});
			
}
		
function callBackPadrao(response, layerName) {
	ajaxPendente = false;
			
	document.getElementById(layerName).innerHTML = '';

   	var html = '';
   	var scp = '';
   	var scriptObj ;
   
    html = response;
   	i = html.search(/<script/i); 
	if ( i >= 0 ) {
   		while ( i >= 0 ) {
	   		htmlPart1 = html.substring(0, i);
			j = html.search(/<\/script>/i); 
			scpPart = html.substring(i + 8, j);
			htmlPart2 = html.substring(j + 9, html.length + 1);
		
			html = htmlPart1 + htmlPart2;
			i = html.search(/<script/i); 
			
   			scriptObj = document.createElement('script');

   			// Define parâmetro language=javascript para o objeto de script 
   			scriptObj.setAttribute('language', 'javascript');

   			// Atribui o código-fonte do script ao obj de script
   			scriptObj.text = scpPart;

   			// Executar o script
   			//document.getElementsByTagName("body")[0].appendChild(scriptObj);			
			document.getElementById(layerName).appendChild(scriptObj);
   		}
	}
	document.getElementById(layerName).innerHTML = html;
	
}

// Função padrão de Callback
		
function callBackAlert(response) {
	ajaxPendente = false;
	eval(response);
}


function ajaxPadrao(formulario, metodo, url, layer) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addAllRequestObjects(document.forms[formulario]);
	objAjax.setLoadingFunction(loading);
	objAjax.setCallBackFunction(callBackPadrao, new Array(layer));
	objAjax.load();
}
		
		
function ajaxPadraoFormUnique(valor, metodo, url, redireciona) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addRequestValue('key',valor);
	objAjax.setCallBackFunction(callBackAlert, new Array());
	objAjax.setExceptionFunction(exceptionPadrao);
	objAjax.setCallBackFunction(callBackLocation, new Array(redireciona));
	objAjax.load();
}                  
		
function ajaxPadraoFormUnique2(valor, metodo, url) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addRequestValue('key',valor);
	objAjax.setCallBackFunction(callBackAlert, new Array());
	objAjax.setExceptionFunction(exceptionPadrao);
	objAjax.load();
}                  
		
function ajaxPadraoFormUnique3(valor, metodo, url, funcaoCallback) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addRequestValue('key',valor);
	objAjax.setCallBackFunction( funcaoCallback , new Array());
	objAjax.setExceptionFunction(exceptionPadrao);
	objAjax.load();
}                  
	
function ajaxPadraoFormUnique3(valor, metodo, url, fcncallback ) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addRequestValue('key',valor);
	objAjax.setCallBackFunction(fcncallback, new Array());
	objAjax.setExceptionFunction(exceptionPadrao);
	objAjax.load();
}                  
		
		
function ajaxPadraoUnique(valor, metodo, url,layer) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addRequestValue('key',valor);
	objAjax.setCallBackFunction(callBackPadrao, new Array(layer));
	objAjax.setExceptionFunction(exceptionPadrao);
	objAjax.load();
}
			
		



// Função padrao de ajax para formularios
function ajaxPadraoForm(formulario, metodo, url) {
	if (ajaxPendente) {
		alert('Ja existe uma requisicao pendente. Aguarde!');
		return;
	}
	ajaxPendente = true;
	var objAjax = new AjaxObject(metodo, url);
	objAjax.addAllRequestObjects(document.forms[formulario]);
	objAjax.setCallBackFunction(callBackAlert, new Array());
	objAjax.load();
}
function loading(){
		layerName = this.callBackArguments[0];
		document.getElementById(layerName).innerHTML = "<font face=verdana size=3><div align=center><br><br><img src='../template/imagens/load.gif'></div></font>";	
}


function carregarCalendario(mes, ano) { 
    req = null; 
	url = 'carregarCalendario.php?mes=' + mes + '&ano=' + ano;
    document.getElementById('calendario').innerHTML = calendarioCarregando();
 
    // Procura por um objeto nativo (Mozilla) 
    if (window.XMLHttpRequest) { 
        req = new XMLHttpRequest(); 
        req.onreadystatechange = processReqChange; 
        req.open("GET", url, true); 
        req.send(null); 
    // Procura por uma versão ActiveX (IE) 
    } else if (window.ActiveXObject) { 
        req = new ActiveXObject("Microsoft.XMLHTTP"); 
        if (req) { 
            req.onreadystatechange = processReqChange; 
            req.open("GET", url, true); 
            req.send(); 
        } 
    } 
} 

function processReqChange() { 
    // apenas quando o estado for "completado" 
    if (req.readyState == 4) { 
        // apenas se o servidor retornar "OK" 
        if (req.status == 200) { 
            // procura pela div id="calendario" e insere o conteudo 
            // retornado nela, como texto HTML 
            document.getElementById('calendario').innerHTML = req.responseText; 
        } else { 
            alert("Problemas para carregar o calendário!\nTente novamente mais tarde."); 
        } 
    } 
} 

function carregarCalendarioMesAno() {
	document.getElementById('calendario_mes_ano').innerHTML = ' ' + meses[mes] + ' ' + ano + ' '; 
}

function iniciarCalendario(iDia, iMes, iAno) {
	meses = new Array('', 'Janeiro',  'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho',
					  'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
	dia = iDia;
	mes = iMes;
	ano = iAno;
	carregarCalendarioMesAno(mes, ano);
	carregarCalendario(mes, ano);
}
function trocarCalendario(valor) {
	// se o novo mes até 12 (jan = 1, dez = 12)
	if ((mes + valor) <= 12) {
		if (mes + valor > 0) {
			mes += valor;
		// se o novo mês for menor que zero
		} else {
			mes = 12;
			ano -= 1;
		}
	// se o novo mês passar de 12 (1 a 12)
	} else {
		mes = 1;
		ano += 1;
	}
	carregarCalendario(mes, ano);
	carregarCalendarioMesAno(mes, ano);
}
var meses, data, mes, ano;

function calendarioCarregando() {
	return '<table border="0"><tr><td width="168" align="center" valign="middle" height="115">\n'+
'	 <table width="150"  border="0" cellspacing="0" cellpadding="0">\n' +
'	  <tr>\n' +
'		<td colspan="3" align="right" background="imagens/topo_div_bg.gif"><table width="100%" cellpadding="0" cellspacing="0">\n' +
'			<tr><td><img src="imagens/topo_div_canto.gif"></td><td><img src="imagens/topo_div_resto.gif"></td></tr></table></td>\n' +
'	  </tr>\n' +
'	  <tr>\n' +
'		<td bgcolor=cccccc width="1"></td>\n' +
'		<td background="imagens/bg_div.jpg" height="18" align="right" nowrap class="texto_destaque">\n' +
'			<b> Carregando ... &nbsp; </b></td>\n' +
'		<td bgcolor="#cccccc" width="1"></td>\n' +
'	  </tr>\n' +
'	 </table></td></tr></table>\n';
}

function move(s1, s2) {
     i = s1.selectedIndex;
     if ( i != -1 ) {
       if ( s1.options[i].selected ) {
           for ( j = 0; j < s2.options.length; j++ ) {
             if ( s2.options[j].value == s1.options[i].value ) break;
             if ( s2.options[j].text > s1.options[i].text ) {
               for ( z = s2.options.length; z > j ; z-- ) {
                 s2.options[z] = new Option(s2.options[z-1].text, s2.options[z-1].value, false, false);
               }
               break;
             }
           }
           s2.options[j] = new Option(s1.options[i].text, s1.options[i].value, false, true);
           s1.options[i] = null;
       }
     }
   }

function setSelectOptions(the_form, the_select, do_check)
{
    var selectObject = document.forms[the_form].elements[the_select];
    var selectCount  = selectObject.length;

    for (var i = 0; i < selectCount; i++) {
        selectObject.options[i].selected = do_check;
    } // end for
    document.forms[the_form].submit();
    return true;
}	




