//constantes de operacoes
var OP_INITIAL_SEARCH=1
var OP_INSTANCE_SEARCH=2
var OP_PRODUCTS_SEARCH=3
var OP_LIST_SEARCH=4
var OP_POLITICS_SEARCH=5
var OP_PLANS_SEARCH=6
var OP_DESCRIPTIONDETAILS_SEARCH=7
var OP_PARAMETERS_SEARCH=8
var OP_EXPIRED_DATA_SEARCH=9
var OP_DBM_SEARCH=10
var OP_BA_SEARCH=11
var OP_ACTION_NEWS_LIST=12
var OP_CLIENT_LOGON=13
var OP_CLIENT_LOGON_NOME=14
var OP_COMPANIES_PORTABILITY=19

//Xis - 670
var OP_LOAD_CITIES=15
var OP_LOAD_CAMPAIGNS=16
//Fim 670

//Xis - 673
var OP_LOAD_SALE_RULES=17
//Fim 673

var OP_LIST_MODEM_MODEL=18

//PJ0752 - Bussola
var OP_CLIENT_LOCATION=20
var location_bussola = false;
var city = '';
var uf = '';

//PD 311929 Novo Monte o Seu
var OP_MONTE_SEU_TURBONET=21

//maquina de estado
actualOp="";
actualGrid="";
siebelUser="";
callInProgress=false;

var pool=new Array();
var currentProcesses=0;
var logged = false;

function addToPool(object){
  for(i=0;i<pool.length;i++){
     if(object.getOperacao()==pool[i].getOperacao()){
       return;
     }
  }
  pool.push(object);
}

function shiftPool(){
  pool.splice(0,1);
  callInProgress=false;
  currentProcesses--;
  if(pool.length>0){
    getSearchResponse(pool[0].getURL(),pool[0].getOperacao(),pool[0].getGrid());
  }
}
// PJ0752 - Bussola: Processar chamada de callback
function getSearchResponseCallback( method, url, async, callback, txt ) {
    var req = false;
                                            // branch for IE/Windows ActiveX version
    if(window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                req = false;
            }
        }
                                            // branch for native XMLHttpRequest object
    } else if( window.XMLHttpRequest ) {
        try {
            req = new XMLHttpRequest();
        } catch(e) {
            req = false;
        }
    }
    if( req ) {
        req.open( method, url, async );
                                            // cancel cache on IE
        req.setRequestHeader("If-Modified-Since","Thu, 01 Jun 1970 00:00:00 GMT");
        if ( callback ) {
            req.onreadystatechange = 
                function() {                // when successfully completed
                    if ( (req.readyState == 4) && (req.status == 200) ) {
                                            // hand the data to callback
                        callback(req.responseText);
                    }
                }
        }
        req.send( txt );
    }
}

function getSearchResponse(url,op,grid){ 
    //adiciona objeto ao pool    
    addToPool(new AjaxObject(url,op,grid));
    if(!callInProgress && currentProcesses<=2){
        currentProcesses++;
        callInProgress=true;
        actualOp=pool[0].getOperacao();
        actualGrid=pool[0].getGrid();
        xmlHttp=this.GetXmlHttpObject(this.searchHandler) 
        xmlHttp.open("GET", pool[0].getURL(), true);
        xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
        xmlHttp.send(null); 
    }
} 

//chamada de grava??o
function storeElement(url,form){ 
    xmlHttp=this.GetXmlHttpObject(this.storeHandler) 
    xmlHttp.open("POST", url , true) 
    xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');    
    xmlHttp.send(getForm(form)) 
}

//handlers
//handler de pesquisa
function searchHandler(){ 
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
    if(xmlHttp.status == 200){
      response=xmlHttp.responseText;
      if(response.indexOf("ERROR")==-1){
        parseSearchResponse(response,actualGrid,actualOp);
        //alert(ab);
      }else{
        alert(response.substring(response.indexOf("ERROR")));
        shiftPool();
      }
    }
  } 
} 

//handler de grava??oo
function storeHandler() { 
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
    if(xmlHttp.status == 200){
      response=xmlHttp.responseText;
      if(response.indexOf("ERROR")==-1){
        alert("Opera??o efetuada com sucesso!");
      }else{
        alert(response.substring(response.indexOf("ERROR")));
        shiftPool();
      }
    }
  } 
} 

function parseSearchResponse(response,grid,searchType){

	var xmlDoc;
	if (window.ActiveXObject){
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(response);
//		alert(response);
	}else{
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(response,"text/xml");
	}
	
	if(xmlDoc.parseError!=0 && typeof(xmlDoc.parseError)!='undefined'){ 
	  	if( searchType == OP_CLIENT_LOGON ){
	  		logado = false;
	  		logged = false;
	 	}else if( searchType == OP_CLIENT_LOCATION ){
	  			location_bussola = false;
	  				//PD26033 - GoogleBot
					//verifica se for o bot do google, nao direciona para a pagina index_cidades.jsp
					var userAgent = navigator.userAgent;
					var isBot = false;
					if ((userAgent.toUpperCase().indexOf("GOOGLE") != -1) ||
						(userAgent.toUpperCase().indexOf("YAHOO") != -1))
						isBot = true;
					if (isBot)
						document.location = "/portal/home/index.html";
					else
			  			document.location = "/portal/home/index_cidades.jsp";
		 	}else{
				//alert("Erro ao ler XML de resposta:" + xmlDoc.parseError);
				return;
			}
	    shiftPool();
	    return;
	}
    
	lista=xmlDoc.getElementsByTagName("*");
	
	if(grid!=null)
	  deleteGridRows(grid);  
	  
	switch(searchType){
	  case OP_PRODUCTS_SEARCH:
	      lista=xmlDoc.getElementsByTagName("Produtos");        
	      parseProductsSearch(lista);
	      break;   
	  case  OP_ACTION_NEWS_LIST:
	  	  lista=xmlDoc.getElementsByTagName("news_list");        
	        parseNewsList(lista);
	        break;   
	  case  OP_CLIENT_LOGON:
	     	  lista=xmlDoc.getElementsByTagName("clientLogon");        
	        parseClientLogon(lista);
	        break;
	  case  OP_CLIENT_LOGON_NOME:
	     	  lista=xmlDoc.getElementsByTagName("clientName");        
	        parseClientName(lista);
	        break;
	  //Xis - 670      
	  case  OP_LOAD_CITIES:
	     	lista=xmlDoc.getElementsByTagName("cities");        
	        parseCities(lista);
	        break;
	  case  OP_LOAD_CAMPAIGNS:
	     	lista=xmlDoc.getElementsByTagName("campaigns");        
	        parseCampaigns(lista);
	        break;
	  //Fim 670
	  //Xis - 673
	  case OP_LOAD_SALE_RULES:
	     	lista=xmlDoc.getElementsByTagName("saleRules");        
	        parseSaleRules(lista);
	        break;
	  //Fim 673
			
	  case  OP_LIST_MODEM_MODEL:
	     	lista=xmlDoc.getElementsByTagName("models");        
	        parseModelModem(lista);
	        break;
	        
	 case  OP_COMPANIES_PORTABILITY:
	     	lista=xmlDoc.getElementsByTagName("companies");        
	        parseCompanies(lista);
	        break;       

	  case  OP_CLIENT_LOCATION:
	     	lista=xmlDoc.getElementsByTagName("clientLocation");        
	        parseClientLocation(lista);
	        break;
	  //PD 311929 Novo Monte o Seu	        
	  case  OP_MONTE_SEU_TURBONET:
	     	lista=xmlDoc.getElementsByTagName("bundleTurbonet");        
	        parseBundleTurbonet(lista);
	        break;      
	}
	shiftPool();
}

function GetXmlHttpObject(handler){ 
  var objXmlHttp=null
  if (navigator.userAgent.indexOf("Opera")>=0){
      alert("Opera??o n?o suportada neste browser") 
      return 
  }
  //IE
  if (navigator.userAgent.indexOf("MSIE")>=0){ 
      var strName="Msxml2.XMLHTTP"
      if (navigator.appVersion.indexOf("MSIE 5.5")>=0){
          strName="Microsoft.XMLHTTP"
      } 
      try{ 
          objXmlHttp=new ActiveXObject(strName)
          objXmlHttp.onreadystatechange=handler 
          return objXmlHttp
      }catch(e){ 
          alert("? necess?rio habilitar a execu??o de scripts ActiveX para esta aplica??o.") 
          return 
      } 
  } 
  //Mozilla e afins
  if (navigator.userAgent.indexOf("Mozilla")>=0){
      objXmlHttp=new XMLHttpRequest()
      objXmlHttp.onload=handler
      objXmlHttp.onerror=handler 
      return objXmlHttp
  }
} 
    

//composicao do formulario para envio por POST
function getForm(obj) {
  var getstr = "";
  for (i=0; i<obj.elements.length; i++) {
     currentObject=obj.elements[i];
     if (currentObject.tagName == "INPUT") {
		if (currentObject.type == "text" || currentObject.type == "hidden") {
		   getstr += currentObject.name + "=" + escape(currentObject.value) + "&";
		}
		if (currentObject.type == "checkbox") {
		   if (currentObject.checked) {
			  getstr += currentObject.name + "=" + escape(currentObject.value) + "&";
		   } else {
			  getstr += currentObject.name + "=&";
		   }
		}
		if (currentObject.type == "radio") {
		   if (currentObject.checked) {
			  getstr += currentObject.name + "=" + escape(currentObject.value) + "&";
		   }
		}
	 }   
	 if (currentObject.tagName == "SELECT") {
		var sel = currentObject;
		getstr += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
	 }else if (currentObject.tagName == "TEXTAREA") {
        getstr += currentObject.name + "=" + escape(currentObject.value) + "&";
     }
  }
  return getstr;
}

function AjaxObject(p1,p2,p3){
    this.url=p1;
    this.op=p2;
    this.grid=p3;
    
    this.getURL=function(){
      return this.url;
    }
    this.getOperacao=function(){
      return this.op;
    }
    this.getGrid=function(){
      return this.grid;
    }    
}

function parseXML(response, tag){
	var xmlDoc;
	if (window.ActiveXObject){
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(response);
	}else{
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(response,"text/xml");
	}
	if(xmlDoc.parseError!=0 && typeof(xmlDoc.parseError)!='undefined'){ 
		alert("Erro ao ler XML de resposta:" + xmlDoc.parseError);
		return;
	}
	lista=xmlDoc.getElementsByTagName(tag);	
	var number = "";
	var numberAnterior = "";
	document.writeln("<tr>");
	document.writeln("<td height='10' colspan='3' valign='top'></td>");
	document.writeln("</tr>");															
	document.writeln("<tr>");
	var cont = -1;
	for(i=0;i<lista.length;i++){
		var node = lista[i].childNodes;		
		for(j=0;j<node.length;j++){			
			if(node[j].nodeName == "number"){
				number = node[j].childNodes[0].nodeValue;
				cont++;
				if(numberAnterior != "" && number != numberAnterior){
					document.writeln("</table>");
					document.writeln("</div>");
					document.writeln("</td>");
					if(cont%3 == 0){
						document.writeln("</tr>");	
						document.writeln("<tr>");
						document.writeln("<td height='10' colspan='3' valign='top'></td>");
						document.writeln("</tr>");															
						document.writeln("<tr>");	
					}
				}				
				document.writeln("<td valign='top'>");
				document.writeln("<div style='padding:0px 14px 0px 14px;'>");
				document.writeln("<table width='127' border='0' cellspacing='0' cellpadding='0'>");
				document.writeln("<tr>");
				document.writeln("<td colspan='2' class='fonte-arial-cinza-11'><strong>");
				document.writeln(node[j].childNodes[0].nodeValue);
				document.writeln("</strong></td>");
				document.writeln("</tr>");
				numberAnterior = number;
			}else if(node[j].nodeName == "instance"){
				document.writeln("<tr>");
				document.writeln("<td><img src='/midiaportal/images/geral/seta_azul_01.gif' vspace='4' /></td>");
				document.writeln("<td class='fonte-arial-cinza-11'><a href='javascript:alterarInstancia(");
				document.writeln(node[j].childNodes[0].nodeValue);
				document.writeln(")'>");
				document.writeln(node[j].childNodes[0].nodeValue);
				document.writeln("</a></td>");
				document.writeln("</tr>");
			}
		}
	}
	document.writeln("</table>");
	document.writeln("</div>");
	document.writeln("</td>");
	document.writeln("</tr>");
	document.writeln("<tr>");
	document.writeln("<td height='10' colspan='3' valign='top'></td>");
	document.writeln("</tr>");
}

function isClientLogged(){
	//PD26033 - GoogleBot
	//verifica se for o bot do google, nao direciona para a pagina index_cidades.jsp
	var userAgent = navigator.userAgent;
	var isBot = false;
	if ((userAgent.toUpperCase().indexOf("GOOGLE") != -1) ||
		(userAgent.toUpperCase().indexOf("YAHOO") != -1))
		isBot = true;
	if (isBot)
		return;

	getSearchResponse('/portal/VerifyClientLogonForm.action',OP_CLIENT_LOGON,null);
	return logged;
}

function isClientLocation(){
	//PD26033 - GoogleBot
	//verifica se for o bot do google, nao direciona para a pagina index_cidades.jsp
	var userAgent = navigator.userAgent;
	var isBot = false;
	if ((userAgent.toUpperCase().indexOf("GOOGLE") != -1) ||
		(userAgent.toUpperCase().indexOf("YAHOO") != -1))
		isBot = true;
	if (isBot)
		return;

	getSearchResponse('/portal/VerifyClientLocationForm.action',OP_CLIENT_LOCATION,null);
	return location_bussola;
}

function getNomeSession(){
	//PD26033 - GoogleBot
	//verifica se for o bot do google, nao direciona para a pagina index_cidades.jsp
	var userAgent = navigator.userAgent;
	var isBot = false;
	if ((userAgent.toUpperCase().indexOf("GOOGLE") != -1) ||
		(userAgent.toUpperCase().indexOf("YAHOO") != -1))
		isBot = true;
	if (isBot)
		return;

	getSearchResponse('/portal/VerifyClientNameForm.action',OP_CLIENT_LOGON_NOME,null);
}

function parseClientLogon(lista){
	for(firstLevel = 0; firstLevel < lista.length;firstLevel++){
	  for(secondLevel = 0; secondLevel < lista[firstLevel].childNodes.length;secondLevel++){
			
			if( lista[firstLevel].childNodes[secondLevel].nodeName == 'isLogged' ){
				if( lista[firstLevel].childNodes[secondLevel].text == 'true' ){
					logado = true;
					logged = true;
				}else{
					logado = false;
					logged = false;
				}
			}
	  }
   }  
}

function parseClientLocation(lista){
	for(firstLevel = 0; firstLevel < lista.length;firstLevel++){
	  for(secondLevel = 0; secondLevel < lista[firstLevel].childNodes.length;secondLevel++){
			
			if( lista[firstLevel].childNodes[secondLevel].nodeName == 'isLocation' ){
				if( lista[firstLevel].childNodes[secondLevel].text == 'true' ){
					location_bussola = true;
					
				}else{
					location_bussola = false;
				}
			}else if( lista[firstLevel].childNodes[secondLevel].nodeName == 'city' ){
						city = lista[firstLevel].childNodes[secondLevel].text;
			      } else if( lista[firstLevel].childNodes[secondLevel].nodeName == 'uf' ){
			      			uf = lista[firstLevel].childNodes[secondLevel].text;
			      		}
	  }
   }  
}


function parseClientName(lista){
	for(firstLevel = 0; firstLevel < lista.length;firstLevel++){
	  for(secondLevel = 0; secondLevel < lista[firstLevel].childNodes.length;secondLevel++){
			
			if( lista[firstLevel].childNodes[secondLevel].nodeName == 'getNome' ){
				if( lista[firstLevel].childNodes[secondLevel].text == null ){
					nome = "";
				}else{
					nome = lista[firstLevel].childNodes[secondLevel].text;
				}
			}
	  }
   }  
   document.getElementById("nomeNaSessao").innerHTML= nome;
   document.getElementById("nomeNaSessao1").innerHTML= nome;
}

//Implementa m?todo push para Arrays
Array.prototype.push = function(str) {
    this[this.length] = str;
}

