









// instanciando o objeto
var basicGis = null;
/**
 * Chamada de planos basica
 */
function BasicGis() {
    var _self = this;
    var lastGisMap = new LastGisMap();

    // initial parameters    
	var bussines      =0; // dont show bussines icons 
	var zoomLevel     =1;
    var lastZoomLevel =1;        
	var width         =358;
	var height        =131;
	var urlImagen;
	var strBusca = '';

	
    /*
     * myAjax.transport.responseText 
     */ 
	var myAjax = null;


    /*
     * {YAHOO.widget.Slider}
     */
    var zoomSlider;
    
    function turnLoadingOn() {
        var div = $Y.Dom.get('itemContentsLocal');
        div.innerHTML = $Y.Dom.get('subjectBoxLoading').innerHTML;
    }
    
    function showMsg(pMsg) {
        var divMsg        = document.getElementById('itemContentsLocal');
        divMsg.innerHTML =  "<div align='center' valign='middle' style='position:absolute; width:100%; top: 50px;'>"+pMsg+"</div>"; 
    }
    
    this.publicShowMap = function() {
        showMap("img/logoyell.jpg");
    }
    
    function showMap(pImgUrl) {
        //limpando o div
        var divMap = document.getElementById('ctdItemLocal');
        document.getElementById('ctdItemLocal').removeChild(document.getElementById('itemContentsLocal'));
        divMap.style.visibility = "hidden";
        var mapContent = 
                "<div id='itemTab'><!-- --></div>"+
                "<div id='itemContentsLocal' class='map'>"+
                "<div style='right:0; top:0; position:absolute'>"+
                "    <div id='miniMap' class='mini'>"+
                "    	<div id='miniMapTiles'>"+
                "    		<div id='miniMapTilesMask'><!-- --></div>"+
                "    		<div id='miniMapTilesNav'>"+
                "        		<div id='miniMapNorth' onclick='basicGis.navigateMap(\"pann\");'><!-- --></div>"+
                "        		<div id='miniMapSouth' onclick='basicGis.navigateMap(\"pans\");'><!-- --></div>"+
                "        		<div id='miniMapEast' onclick='basicGis.navigateMap(\"pane\");'><!-- --></div>"+
                "        		<div id='miniMapWest' onclick='basicGis.navigateMap(\"panw\");'><!-- --></div>"+
                "    		</div>"+
                "    	</div>"+
                "       <div id='miniMapZoom'>"+
                "       	<div id='miniMapZoomIn' onclick='basicGis.navigateMap(\"in\");'><!-- --></div>"+
                "    		<div id='miniMapZoomOut' onclick='basicGis.navigateMap(\"out\");'><!-- --></div>"+
                "    		<div id='miniMapZoomDragMain'>"+
                "        		<div id='miniMapZoomDragBg'>"+
                "                   <div id='miniMapZoomDrag' style='visibility:hidden'><!-- --></div>"+
                " 	    	    </div>"+
                "               <div id='miniMapZoomDragSpineBg'><!-- --></div>"+
                "   	    </div>"+
                "   	    <div id='miniMapLock'><!-- --></div>"+
                "       </div>"+
                "       <div id='miniMapZoomBg'><!-- --></div>"+
                "       <div id='miniMapBg'><!-- --></div>"+
                "    </div>"+
                "</div>"+
                "<img name='myMap' id='myMap' src="+pImgUrl+" align='middle' border='0' />"
                ;
        
		$Y.Dom.get('divNovaBusca').style.display = 'block';
        divMap.innerHTML = mapContent;

        zoomSlider = YAHOO.widget.Slider.getVertSlider('miniMapZoomDragBg','miniMapZoomDrag', 0, 35, 5);
		// desabilita o disparo do onSlideEnd
		// so para evitar um loop infinito
		zoomSlider.disableEvent = true;
        
        // inicializa a barra deslizante para o zoom
		zoomSlider.onSlideEnd = function(pOff) {
            var tempNewValue = Math.floor( (-this.getYValue()/5.0)+ 7 ) ;
            if(lastZoomLevel != tempNewValue) {
        		if(!this.disableEvent) {
                    zoomLevel = tempNewValue; 
                    _self.navigateMap();
                }
                lastZoomLevel = zoomLevel;
            }
            if($Y.Dom.get('miniMapZoomDrag')) {
                $Y.Dom.get('miniMapZoomDrag').style.visibility = 'visible';
            }
		};

		// o animate true est? dando pau no click no background...  =(
		zoomSlider.animate = false;

        // setando o valor inicial        
        zoomSlider.disableEvent = false;
        lastZoomLevel = zoomLevel;
        zoomSlider.setValue( -(zoomLevel-7)*5, true, true);
        
        // mostrando o div
        divMap.style.visibility = "visible";
                
    }
	
	this.loadXML = function(url, pParameters, process ) {
        turnLoadingOn();
		var pars = pParameters;
		var fctnFailed = function(e){
            showMsg("<b>Error. Intente novamente.</b>");
			throw "Invalid request.";
		}
		if (process==1) {
			var callback = { success:xmlAddress, failure:fctnFailed };
			$Y.Connect.asyncRequest('POST', url + '?' + pParameters, callback);
        } else if (process==2) {
			var callback = { success:xmlMapping, failure:fctnFailed };
			$Y.Connect.asyncRequest('POST', url + '?' + pParameters, callback);
        }
	}
	
    /**
     * Eliminar todas las filas de una tabla
     */
	function removeRowFromTable()
	{
        var contents = document.getElementById('itemContentsLocal');
        contents.innerHTML = "";
        var candidateBoxHtml = "<div id='divLocalCandidates'><ul id='divLocalCandidatesUL' ></ul></div><div id='divLocalBkg'></div>"
        contents.innerHTML = candidateBoxHtml;
	}
	
    /**
     * Adiciona una calle a la tabla
     * @param {Object} codeStreet
     * @param {Object} nameStreet
     * @param {Object} nameCity
     * @param {Object} number
     */
	function addRowToTable(codeStreet , nameStreet, nameCity, number) {
       var candidatesUL = document.getElementById('divLocalCandidatesUL');
	   var li = document.createElement('li');
       
       var ahref = document.createElement('a');
       ahref.innerHTML = "<img src='img/box/ico_list.gif' />"+nameStreet +" - <font color='Gray'>"+nameCity+"</font>";
       var url     = "javascript:basicGis.ofindMultipleAddress('"+codeStreet+"','"+nameStreet+"','"+ nameCity+"','"+number+"')";
       ahref.href = url;
       
       li.appendChild(ahref);
       candidatesUL.appendChild(li);
	}
		
		
    /**
     * Proceso de busqueda de la direccion
     */ 
	function xmlAddress(o) {
      try {
         if($Y.Dom.get('boxCarol').className == 'off') {
             return;
         }
	     //  Referencia a nuestro DIV con ID unica:
	     var divSearchMultiple = document.getElementById('divSearchMultiple');
	     var divSearchSimple   = document.getElementById('divSearchSimple');
	
	     //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
	     // Si se ha completado la carga de datos, los mostramos en el DIV.
	     //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        var datos = o.responseText.parseJSON().gis;
		
        if (datos != undefined && datos != "") {
            removeRowFromTable();
            
            var result           = datos.result;
            var X                = datos.X;
            var Y                = datos.Y;
            var XBG              = datos.XBG;
            var YBG              = datos.YBG;
            var XDIST            = datos.XDIST;
            var YDIST            = datos.YDIST;
                width            = datos.width;
                height           = datos.height;
                urlImagen        = datos.urlImagen;
                zoomLevel        = parseInt(datos.zoomLevel);
            var result           = datos.result;
            var firstStreet      = datos.firstStreet;
            var number           = datos.number;
            var secondStreet     = datos.secondStreet;
            var streetCode       = datos.streetCode;
            var firstStreetCode  = datos.firstStreetCode;
            var secondStreetCode = datos.secondStreetCode;
            var city             = datos.city;
            var vrpidd           = datos.vrpidd;
            var escale           = datos.escale;
            var streets          = datos.streets.street;
            var icons            = datos.icons;
             
            lastGisMap.xx = parseFloat(X);
            lastGisMap.yy = parseFloat(Y);
            lastGisMap.xbg = parseFloat(XBG);
            lastGisMap.ybg = parseFloat(YBG);
            lastGisMap.zoomLevel = parseInt(zoomLevel);
            
            //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
            // tiene direcciones mutiples ?
            // llenar direcciones multiples
            //. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
            if ((streets != undefined && streets != null && streets != "") || parseInt ( result ) == 3 ) {
                var i = 0;
            
	            for (i=0; i<streets.length; i++) {
                    var direccion = streets[i];
	                if ( direccion != null ) {
                        var streetCode = direccion.streetCode;
                        var streetName = direccion.streetName;
                        var city       = direccion.city;
                  
                        addRowToTable(streetCode, streetName, city, number);
                    }
                    if ( urlImagen != "" ) { 
                        showMap(urlImagen);  
                    }
                }
            } else {
                initialMap    = false;
                                        
           	    lastGisMap.xx = parseFloat(X);
                lastGisMap.yy = parseFloat(Y);
                lastGisMap.xbg = parseFloat(XBG);
                lastGisMap.ybg = parseFloat(YBG);
                lastGisMap.zoomLevel = parseInt(zoomLevel);

                if (result !=2 ){
	                urlImagen = 'imagenes/mapa_lima.gif';
                    showMsg("Error no se encontr&oacute; direcci&oacute;n");
                    $Y.Dom.get('divNovaBusca').style.display = 'block'; 
                } else {
                    showMap(urlImagen);
                }
                $Y.Dom.addClass('itemContentsLocal', "map")
	        }
	    } else {
	        // .en caso contrario, le diremos al usuario que los estamos cargando:
	        showMsg("<b>Error. Intente novamente.</b>");
            $Y.Dom.get('divNovaBusca').style.display = 'block'; 
	    }
      } catch(e) {
          alert(e);
      }
	}   	
	
    /**
     * Obtener informacion del mapa
     */
	function xmlMapping(o) {
        var datos = o.responseText.parseJSON().gis;
        if (datos != "") {
             removeRowFromTable();
    
             var X                = datos.X;
             var Y                = datos.Y;
             var XBG              = datos.XBG;
             var YBG              = datos.YBG;
                 urlImagen        = datos.urlImagen;
                 zoomLevel        = parseInt(datos.zoomLevel);
    
            lastGisMap.xx = parseFloat(X);
            lastGisMap.yy = parseFloat(Y);
            lastGisMap.xbg = parseFloat(XBG);
            lastGisMap.ybg = parseFloat(YBG);
            lastGisMap.zoomLevel = parseInt(zoomLevel);
             
            showMap(urlImagen);
            
        } else {
            // .en caso contrario, le diremos al usuario que los estamos cargando:
	        showMsg("<b>Espere por favor</b>");
	    }
	}
	
    /**
     * Buscar direccion 
     */
	this.ofindAddress = function() {
	   //var calle   = document.getElementById('calle');
	   //var numero  = document.getElementById('numero');
       
	   //var esquina = document.getElementById('esquina');
	   //var barrio  = document.getElementById('barrio');
       var calle = "";
       var numero = "";
	
	   var local = document.getElementById('inputLocal').value;
	   
       var localTokens = local.split(" ");
       if(localTokens.length > 1 && !isNaN(localTokens[localTokens.length - 1])) {
           var tSize = local.length - localTokens[localTokens.length - 1].length;
           calle = local.substr(0, tSize);
           numero = localTokens[localTokens.length - 1];
       } else {
           calle = local;
       }
       calle = calle.replace(",", "").trim();
         
	   var strURL  = "mapService.do";
       var params = "&cmd=5&street=" + escape(calle)+ "&number="+escape(numero)+"&urlImage=1&width="+width+"&height="+height+"&zoomLevel="+6+"&bussines="+bussines;
	   if(calle=="" && numero == "") {
	      alert("Debe de ingresar una direccion de busqueda");
	      return;
	   }
	   // buscar
	   this.loadXML ( strURL, params, 1);
	}
	
    /**
     * Buscar direccion por resultado Multiple 
     * @param {Object} codigo
     * @param {Object} calle
     * @param {Object} barrio
     * @param {Object} numero
     */
	this.ofindMultipleAddress = function(codigo, calle, barrio, numero ) {
       var strURL = "mapService.do";
       var params = "&cmd=5&firstStreetCode="+codigo+"&street="+calle+"&number="+numero+"&corner=&city="+barrio+"&urlImage=1&width="+width+"&height="+height+"&zoomLevel="+zoomLevel+"&bussines="+bussines;
	   this.loadXML ( strURL, params, 2);
	}

    /**
     * navigation commands
     * @param {Object} pCommand
     */
    this.navigateMap = function(pCommand) {
        var bounding = "";
        if(pCommand == "pann" || pCommand == "pans" || pCommand == "panw" || pCommand == "pane") {
            bounding = pCommand;
        } else if(pCommand == "in") {
            zoomLevel += 1;
        } else if(pCommand == "out") {
            zoomLevel -= 1;
        }
        if(zoomLevel >=1 && zoomLevel <=7) {
            var strURL = "mapService.do";
            var params = "&E=2&urlImage=1&width="+width+"&height="+height+"&zoomLevel="+zoomLevel+"&bussines="+bussines;
            params += "&zoomLevel="+zoomLevel;
            params += "&bounding="+bounding;
            params += "&X="+lastGisMap.xx+"&Y="+lastGisMap.yy+"&XBG="+lastGisMap.xbg+"&YBG="+lastGisMap.ybg;
            
    	    _self.loadXML ( strURL, params, 2);
        }
    }
	
	/**
	 * new search
	 */
	this.clearSearch = function() {
        var divCtdLocal = $Y.Dom.get('ctdItemLocal');
		divCtdLocal.innerHTML = '';
		var htm = '<div id="itemTab"><!-- --></div>'
		htm += '<div id="btItem"><img src="img/box/btn_local.png" width="46" height="20" alt="" /></div>'
		htm += '<div id="itemContentsLocal">'
		htm += '<p id="pLocal">Buscar calle</p>'
		htm += '<input type="text" name="local" value="" id="inputLocal" />'
		htm += '<input type="image" src="img/box/btn_ir.gif" id="btIrLocal" onclick="basicGis.ofindAddress(); return false;" />'
		htm += '</div>';
		divCtdLocal.innerHTML = htm;
		$Y.Dom.get('divNovaBusca').style.display = 'none';
        $Y.Dom.get('inputLocal').focus();
        $Y.Event.addListener('inputLocal','keydown', function(e) {
        		if (e.keyCode==13) {
        			basicGis.ofindAddress();
        			return false;
        		}	
        	}
	    )}
}

/**
 * VO to store the last visible map
 */
function LastGisMap() {
    this.xx = null;
    this.yy = null;
    this.xbg = null;
    this.ybg = null;
    this.zoomLevel = null;
}
Require.isLoaded['apiGISBasico'] = true;
var g_lock_pointer = false;

function lockPointer(p_event, p_value) {
	g_lock_pointer = p_value;

	$Y.Dom.get('keyword').focus();
}

function movePointer(p_event) {
	if (g_lock_pointer) {
		var l_barLeft = $Y.Dom.get('layoutPopupBarLeft');
		var l_barRight = $Y.Dom.get('layoutPopupBarRight');

		var l_pointLeft = getXY(l_barLeft);
		var l_dimensionLeft = getWH(l_barLeft);
		var l_pointRight = getXY(l_barRight);

		if (p_event.clientX >= l_pointRight.x) {
			movePointerRight();
		}
		
		if (p_event.clientX <= (l_pointLeft.x + l_dimensionLeft.w)) {
			movePointerLeft();
		}
	}
}

function movePointerLeft() {
	var l_pointer = $Y.Dom.get('layoutPopupPointer');
	l_pointer.style.left = '0px';
	TPI.layoutPopupSize = 'narrow';
}

function movePointerRight() {
	var l_bar = $Y.Dom.get('layoutPopupBar');
	var l_pointer = $Y.Dom.get('layoutPopupPointer');
	
	l_pointer.style.left = (parseInt(l_bar.style.width) -  parseInt(l_pointer.style.width)) + 'px';
	TPI.layoutPopupSize = 'wide';
}

function changeColorLayout(s) {
	var postdata = 'color=' + s;
	var url = 'saveSkinCookie.do';
	var callback = { success: function(o){}	}
	$Y.Connect.asyncRequest('POST', url, callback, postdata);
	setCookie("color", s);

	try { changeColorHome(s); } catch(e) { }
	try { changeColorResult(s); } catch(e) { }
	try { changeColorVM(s); } catch(e) { }

	hideObjectTimer('layoutPopup', 1);
}

function changeSizeLayout(s) {
	document.onmouseup = '';
	var postdata = 'size=' + s;
	var url = 'saveSkinCookie.do';
	var callback = { success: function(o){}	}
	$Y.Connect.asyncRequest('POST', url, callback, postdata);
	setCookie("size", s);
	
	changeSize(s);
	try { moveSuggest(); } catch(e) { }
	hideObjectTimer('layoutPopup', 1);
	$Y.Dom.get('searchBoxForm').keyword.focus();
	
}

Require.isLoaded['layoutPopup'] = true;
function SearchBox(parent) {
	var _parent = this._parent = parent;
	var _self = this;
}

var g_color = '';

function submitSB() {
	if ($Y.Dom.get('searchBoxForm')) { $Y.Dom.get('searchBoxForm').submit(); }
}

function cimgSB(p_object_id, p_src) { // change image
	var local_dir = 'img/searchBox/' + g_color;

	if ($Y.Dom.get(p_object_id)) {
		$Y.Dom.setStyle(p_object_id, 'background', 'url(' + local_dir + '/' + p_src + ')');
	}
}

function omoverSB(p_object) {
	if ($Y.Dom.get(p_object.id)) {
		if (p_object.id == 'sbLayout') { cimgSB('sbLayout', 'btn_layout_over.gif'); }
	}
}

function omoutSB(p_object) {
	var local_dir = 'searchBox/' + g_color;

	if ($Y.Dom.get(p_object.id)) {
		if (p_object.id == 'sbLayout') { cimgSB('sbLayout', 'btn_layout_out.gif'); }
	}
}

function omclickSB(d, s) {
	var d1 = document.getElementById(d);
	var d2 = document.getElementById(d + 'Ref');

	if (d1 && d2) {
		if (d == 'sbBuscar') {
			$Y.Dom.removeClass(d1, 'searchButtonImage1');
			$Y.Dom.removeClass(d1, 'searchButtonImageOver1');
			$Y.Dom.removeClass(d2, 'searchButtonImage2');
			$Y.Dom.removeClass(d2, 'searchButtonImageOver2');
		} else if (d == 'sbHelp') {
			$Y.Dom.removeClass(d1, 'sbHelpButtonImage1');
			$Y.Dom.removeClass(d1, 'sbHelpButtonImageOver1');
			$Y.Dom.removeClass(d2, 'sbHelpButtonImage2');
			$Y.Dom.removeClass(d2, 'sbHelpButtonImageOver2');
		}

		$Y.Dom.addClass(d1, s + '1');
		$Y.Dom.addClass(d2, s + '2');
	}
}

function omoverSB(d, s) {
	var d = document.getElementById(d);
	if (d) {
		if (d.id == 'sbBlancas') {
			$Y.Dom.removeClass(d, 'sbTextImage');
			$Y.Dom.removeClass(d, 'sbTextImageOver');
		} else if (d.id == 'sbLocal') {
			$Y.Dom.removeClass(d, 'sbTextImage');
			$Y.Dom.removeClass(d, 'sbTextImageOver');
		} else if (d.id == 'sbTuristica') {
			$Y.Dom.removeClass(d, 'sbTextImage');
			$Y.Dom.removeClass(d, 'sbTextImageOver');
		} else if (d.id == 'sbLayout') {
			$Y.Dom.removeClass(d, 'sbLayoutImage');
			$Y.Dom.removeClass(d, 'sbLayoutImageOver');
		}
		$Y.Dom.addClass(d, s);
	}
}

function loadSearchBoxHelp() {
	var l_object = $Y.Dom.get('help');
	var url = 'searchBoxHelp.do';

	l_object.style.display = 'block';
	var callback = {
		success: function(o){
			$Y.Dom.get('help').innerHTML = o.responseText;
		}
	}
	$Y.Connect.asyncRequest('GET', url, callback);
}

function loadSearchBoxLayout(p_origem) {
	var l_object = $Y.Dom.get('layoutPopup');
	l_object.style.display = 'block';
	var url = 'layoutPopup.do';
	var postdata = 'origem=' + p_origem;

	var callback = {
		success: function(o){
			$Y.Dom.get('layoutPopup').innerHTML = o.responseText;
			if($Y.Dom.hasClass(document.body, 'narrow')){
				movePointerLeft();
			}else{
				movePointerRight();
			}
		}
	}
	$Y.Connect.asyncRequest('POST', url, callback, postdata);	
}

var g_bkgImage = [];
g_bkgImage[0] = ['Autos Desportivos', 'carro'];
g_bkgImage[1] = ['Computac?on', 'computacion'];
g_bkgImage[2] = ['M?dicos', 'medicos'];
g_bkgImage[3] = ['Boticas y Farmacias', 'botica'];
g_bkgImage[4] = ['Intrumentos Musicales', 'instrumentos+musicales'];
g_bkgImage[5] = ['Colegios', 'colegio'];

function changeSearchBoxImage(p_color) {
	g_color = p_color;

	var l_rand = getSearchBoxRandom();
	var sbBkgLink = $Y.Dom.get('sbBkgLink');

	if (sbBkgLink) {
		sbBkgLink.className = 'bkg' + l_rand;
		sbBkgLink.innerHTML = '?' + g_bkgImage[l_rand][0] + '?';
		sbBkgLink.href = 'result.do?status=P&stateId=' + TPI.stateId + '&cityId=' + TPI.cityId + '&keyword=' + g_bkgImage[l_rand][1];
	}
}

function getSearchBoxRandom() {
	return Math.round(Math.random() * (g_bkgImage.length - 1));
}
Require.isLoaded['searchBox'] = true;
// Armazena qual a opcao de menu esta ativa
var optionActive= 'guiasdomundo';

/**
 * Controla o mouse over no menu de guias do mundo.
 * So aplica efeito em opcos que nao estejam selecionadas.
 * @param {Object} obj
 */
function optIn(obj) {
	var idObj = obj.id;

	if (!$Y.Dom.hasClass(idObj, 'optOn')) {
		$Y.Dom.addClass(idObj, 'optHover');
	}
}

/**
 * Controla o mouse over no menu de guias do mundo.
 * So retira efeito em opcos que nao estejam selecionadas.
 * @param {Object} obj
 */
function optOut(obj) {
	var idObj = obj.id;

	$Y.Dom.removeClass(idObj, 'optHover');
}

/**
 * Controla a interacao do usuario com o mapa
 * @param {Object} clss
 */
function trocaMapa(mapArea) {
	resetMapaPaises();

	if (mapArea != undefined) {
		$Y.Dom.addClass('serviceContent', mapArea);
	}
}

function resetMapaPaises() {
	var opts = ['amcentral', 'africa', 'amnorte', 'amsul', 'asia', 'europa', 'oceania'];

	for (var i = 0; i < opts.length; i++) {
		$Y.Dom.removeClass('serviceContent', opts[i]);
	}
}

/**
 * Manipula o conteudo da caixa "guias do mundo"
 * @param {Object} optSelected
 */
function showServiceContent(optSelected) {
	var idObj = optSelected.id;

	configBackground(idObj);
	configMenuStyle(idObj);
	configContent(idObj);
}

/**
 * Configura o background de acordo com a opcoes selecionada
 * @param {Object} option
 */
function configBackground(idObj) {
	if (idObj == 'guiasdomundo' || idObj == 'ddi' || idObj == 'btnBack') {
		$Y.Dom.removeClass('serviceContent', 'backgroundDefault');
	} else {
		resetMapaPaises();
		$Y.Dom.addClass('serviceContent', 'backgroundDefault');
	}
}

/**
 * Configura as interacoes com o menu principal
 * @param {Object} optSelected
 */
function configMenuStyle(idObj) {
	if (optionActive != idObj) {
		if (isMainMenu(idObj)) {
			// So marca e desmarca se for uma das opcos laterais
			$Y.Dom.replaceClass(idObj, 'optHover', 'optOn');

			// Tira o on do menu anterior
			$Y.Dom.removeClass(optionActive, 'optOn');

			// Guarda o estado somente das opcos principais
			optionActive = idObj;
		}
	}
}

/**
 * Insere o conteudo no div
 */
function configContent(idObj) {
	var div = $Y.Dom.get('scrollDiv');
	var url = 'serviceBox/'+ hashContents[idObj] +'.jsp';
	div.innerHTML = $Y.Dom.get('subjectBoxLoading').innerHTML;

	TPI.scroll.Scroll.destroy('scrollDiv');
	var callback = {
		success: function(o){
			$Y.Dom.get('scrollDiv').innerHTML = o.responseText;
			configScroll(idObj);
		}
	}
	$Y.Connect.asyncRequest('GET', url, callback);
}

/**
 * Aciona ou desabilita o scroll de acordo com a selecao
 * @param {Object} idObj
 */
function configScroll(idObj) {
	if(idObj != 'guiasdomundo' && idObj != 'ddi' && idObj != 'btnBack' && idObj != 'celular') {
		TPI.scroll.Scroll.getInstance('scrollDiv', 'mini');
	}
}

/**
 * Verifica se a opcao selecionada faz parte do menu principal
 * @param {Object} optionId
 */
function isMainMenu(optionId) {
	return (optionId == 'guiasdomundo' || optionId == 'ddi' || optionId == 'ddd' || optionId == 'cep' || optionId == 'celular');
}

var guiasdomundo_object = {'id': 'guiasdomundo'};
var ddi_object = {'id': 'ddi'};


// Config the hash object
var hashContents = {};
	hashContents['guiasdomundo'] = 'GDMMap';

	hashContents['GDMListNorthAm'] = 'GDMListNorthAm';
	hashContents['GDMListCentralAm'] = 'GDMListCentralAm';
	hashContents['GDMListSouthAm'] = 'GDMListSouthAm';
	hashContents['GDMListEuropa'] = 'GDMListEuropa';
	hashContents['GDMListAfrica'] = 'GDMListAfrica';
	hashContents['GDMListAsia'] = 'GDMListAsia';
	hashContents['GDMListOceania'] = 'GDMListOceania';

	hashContents['DDIListNorthAm'] = 'DDIListNorthAm';
	hashContents['DDIListCentralAm'] = 'DDIListCentralAm';
	hashContents['DDIListSouthAm'] = 'DDIListSouthAm';
	hashContents['DDIListEuropa'] = 'DDIListEuropa';
	hashContents['DDIListAfrica'] = 'DDIListAfrica';
	hashContents['DDIListAsia'] = 'DDIListAsia';
	hashContents['DDIListOceania'] = 'DDIListOceania';

	hashContents['ddd'] = 'DDDList';
	hashContents['ddi'] = 'DDIMap';
	hashContents['cep'] = 'CEPList';
	hashContents['celular'] = 'celularList';

function loadImagesServiceBox() {
/*	var imgs = [
		'img/serviceBox/bg_guiasmundo_over_africa.jpg',
		'img/serviceBox/bg_guiasmundo_over_amcentral.jpg',
		'img/serviceBox/bg_guiasmundo_over_amnorte.jpg',
		'img/serviceBox/bg_guiasmundo_over_amsul.jpg',
		'img/serviceBox/bg_guiasmundo_over_asia.jpg',
		'img/serviceBox/bg_guiasmundo_over_europa.jpg',
		'img/serviceBox/bg_guiasmundo_over_oceania.jpg',
	];

	var ims = [];

	for (var i = 0; i < imgs.length; i++) {
		ims['im' + i] = new Image();
		ims['im' + i].src = imgs[i];
	} */
}


Require.isLoaded['serviceBox'] = true;
var travelArray = new Array();
var travelMapasArray = new Array();

travelArray[0] = new Array(
	'L&iacute;neas de Nazca',
	'Enorme red de l&iacute;neas cuyos dibujos de animales y plantas son atribuidos a la cultura Nazca, cubren un &aacute;rea de 350 km&sup2; aproximadamente. Est&aacute; Ubicada a 25 Km. de la ciudad de Nazca.',
	'img_travel_0.jpg',
	'http://www.traveltoperu.com/esp/portal/detalle_tiptur.aspx?IDCON=1185&IDCIU=60&de=ICA&IDT=7'
);
travelArray[1] = new Array(
	'Cusco: Machupicchu',
	'El Santuario tiene una gran biodiver-<br/>sidad en 37.320 ha. La ciudadela inca destaca: su majestuosa arquitectura, sus murallas, explanadas y andenes maravillosamente adaptados al entorno.',
	'img_travel_1.jpg',
	'http://www.traveltoperu.com/esp/portal/detalle_Destacado.aspx?IdCt=346&Tip=LD&de=CUSCO'
);
travelArray[2] = new Array(
	'Parque Nacional Huascar&aacute;n',
	'El Parque fue creado en 1975, para conservar la flora y la fauna silvestre, formaciones geol&oacute;gicas, restos arqueol&oacute;gicos y bellezas esc&eacute;nicas.  Es Patrimonio Natural de la Humanidad.',
	'img_travel_2.jpg',
	'http://www.traveltoperu.com/esp/portal/detalle_tiptur.aspx?IDCON=1210&IDCIU=52&de=ANCASH&IDT=50'
);
travelMapasArray[0] = new Array(
	'1. B&uacute;squeda de calles',
	'Para encontrar una direcci&oacute;n de Lima, ingrese la informaci&oacute;n en las casillas se&ntilde;aladas. Presione enter o click en el bot&oacute;n "buscar" y aparecer&aacute; la calle con la marca de color rojo.',
	'img_mapas_0.jpg',
	'http://planos.paginasamarillas.com.pe'
);
travelMapasArray[1] = new Array(
	'2. Env&iacute;o del Plano por correo.',
	'Si quiere reunirse con sus clientes, amigos o socios, o comunicar alguna direcci&oacute;n de la ciudad de Lima, tiene la posibilidad de enviarla por email  con mucha facilidad.',
	'img_mapas_1.jpg',
	'http://planos.paginasamarillas.com.pe'
);
travelMapasArray[2] = new Array(
	'3. Coincidencias de nombres de calles',
	'Cuando busca una direcci&oacute;n cuyo nombre de calle tiene varias coincidencias, aparecer&aacute; una lista que le ayudar&aacute; a escoger la direcci&oacute;n exacta, s&oacute;lo seleccione la que necesita.',
	'img_mapas_2.jpg',
	'http://planos.paginasamarillas.com.pe'
);
travelMapasArray[3] = new Array(
	'4. Navegaci&oacute;n por Lima Metropolitana.',
	'Para pasearse por la Gu&iacute;a de calles presione un click en las flechas y el plano se mover&aacute; en ese sentido. El punto central de las flechas retornar&aacute; al plano inicial (punto rojo).',
	'img_mapas_3.jpg',
	'http://planos.paginasamarillas.com.pe'
);

function windowOpenTravel() {
	window.open($Y.Dom.get('travelUrl').innerHTML);
}

function changeTravel(p_pos) {
	$Y.Dom.get('travelTitle').innerHTML = travelArray[p_pos][0];
	$Y.Dom.get('travelContent').innerHTML = travelArray[p_pos][1];
	$Y.Dom.get('travelImage').src = 'img/travel/' + travelArray[p_pos][2];
	$Y.Dom.get('travelUrl').innerHTML = travelArray[p_pos][3];
}

function changeTravelMapas(p_pos) {
	$Y.Dom.get('travelTitle').innerHTML = travelMapasArray[p_pos][0];
	$Y.Dom.get('travelContent').innerHTML = travelMapasArray[p_pos][1];
	$Y.Dom.get('travelImage').src = 'img/travel/' + travelMapasArray[p_pos][2];
	$Y.Dom.get('travelUrl').innerHTML = travelMapasArray[p_pos][3];
}

function changeAbaTravel() {
	$Y.Dom.get('box5Content').innerHTML = '<div style="padding-top:70px; text-align:center;"><img src="img/carregando.gif" alt="" /></div>';

	$Y.Dom.removeClass('travelBoxA', 'mapasOption');
	$Y.Dom.addClass('travelBoxA', 'travelOption');
	
	_n = 1;
	
	var callback = {
		success: function(o){
			$Y.Dom.get('box5Content').innerHTML = o.responseText;
			changeTravel(0);
		}
	}
	$Y.Connect.asyncRequest('GET', 'travelContent.do', callback);
}

function changeAbaTravelMapas() {
	$Y.Dom.get('box5Content').innerHTML = '<div style="padding-top:70px; text-align:center;"><img src="img/carregando.gif" alt="" /></div>';
	
	$Y.Dom.removeClass('travelBoxA', 'travelOption');
	$Y.Dom.addClass('travelBoxA', 'mapasOption');
	
	_n = 1;

	var callback = {
		success: function(o){
			$Y.Dom.get('box5Content').innerHTML = o.responseText;
			changeTravelMapas(0);
		}
	}
	$Y.Connect.asyncRequest('GET', 'mapasContent.do', callback);
}

function changeNovedades(){
	$Y.Dom.get('box5Content').innerHTML = '<div style="padding-top:70px; text-align:center;"><img src="img/carregando.gif" alt="" /></div>';
	
	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho2');
	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho3');
    $Y.Dom.addClass('travelBoxA', 'boxInfDerecho1');

	_n = 1;
	var callback = {
		success: function(o){
			$Y.Dom.get('box5Content').innerHTML = o.responseText;
		}
	}
	$Y.Connect.asyncRequest('GET', 'boxInfDerContenido1.do', callback);
}

function changeAniversario(){
	$Y.Dom.get('box5Content').innerHTML = '<div style="padding-top:70px; text-align:center;"><img src="img/carregando.gif" alt="" /></div>';

	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho1');
	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho3');
	$Y.Dom.addClass('travelBoxA', 'boxInfDerecho2');	
	
	_n = 1;
	var callback = {
		success: function(o){
			$Y.Dom.get('box5Content').innerHTML = o.responseText;
		}
	}
	$Y.Connect.asyncRequest('GET', 'boxInfDerContenido2.do', callback);
}

function changeLlamada(){
	$Y.Dom.get('box5Content').innerHTML = '<div style="padding-top:70px; text-align:center;"><img src="img/carregando.gif" alt="" /></div>';
	
	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho1');
	$Y.Dom.removeClass('travelBoxA', 'boxInfDerecho2');
    $Y.Dom.addClass('travelBoxA', 'boxInfDerecho3');
	
	_n = 1;
	var callback = {
		success: function(o){
			$Y.Dom.get('box5Content').innerHTML = o.responseText;
		}
	}
	$Y.Connect.asyncRequest('GET', 'boxInfDerContenido3.do', callback);
}

//Fin de las modificaciones

var _n = 1;

function TravelNavigation() {
	this.next = function() {
		if ($Y.Dom.hasClass('travelBoxA', 'travelOption')) {
			totalItens = travelArray.length-1;
		} else {
			totalItens = travelMapasArray.length-1;
		}
		if (_n+1 == 1) $Y.Dom.get('imgTravelBack').style.display = 'none'; else $Y.Dom.get('imgTravelBack').style.display = 'block';
		if (_n+1 == totalItens) $Y.Dom.get('imgTravelNext').style.display = 'none'; else $Y.Dom.get('imgTravelNext').style.display = 'block';

		if ($Y.Dom.get('destaqueTravel' + (_n + 2)) == undefined) { return; }

		$Y.Dom.replaceClass('destaqueTravel' + _n, 'nbOn', 'nbOff');
		$Y.Dom.replaceClass('destaqueTravel' + (_n + 2), 'nbOff', 'nbOn');
		
		_n++;
	}

	this.prev = function() {
		if (_n-1 == 1) $Y.Dom.get('imgTravelBack').style.display = 'none'; else $Y.Dom.get('imgTravelBack').style.display = 'block';
		if (_n-1 == 3) $Y.Dom.get('imgTravelNext').style.display = 'none'; else $Y.Dom.get('imgTravelNext').style.display = 'block';

		if (_n <= 1) {
			_n = 1;
			return;
		}

		$Y.Dom.replaceClass('destaqueTravel' + (_n + 1), 'nbOn', 'nbOff');
		$Y.Dom.replaceClass('destaqueTravel' + (_n - 1), 'nbOff', 'nbOn');

		_n--;
	}
}

var travelNav = new TravelNavigation();
Require.isLoaded['travel'] = true;
var xmlLoadingHTML = '<table class="subbox-loading" style="margin-bottom:20px;"><tr><td><img src="img/carregando.gif" alt="" /></td></tr></table>';


function getXmlHttpRequest() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function loadUrl(p_url, p_div_id, p_callback) {
	var l_div = $Y.Dom.get(p_div_id);
	if (l_div == undefined) { return; }

	l_div.innerHTML = xmlLoadingHTML;

	var url = p_url;
	var callback = {
		success: function(o){
			l_div.innerHTML = o.responseText;
			if(p_callback){
				p_callback();
			}
		}, 
		failure: function(o){
			Stage.handleFailure(o);
		}
	}
	$Y.Connect.asyncRequest('GET', url, callback);
	
}

function loadUrlNoDiv(p_url) {
	var l_xmlhttp = getXmlHttpRequest();
	l_xmlhttp.open("POST", p_url, true);
	l_xmlhttp.onreadystatechange = function() {
		// 4 - Concluido (Completed). 
	}
	l_xmlhttp.send(null);
}

function loadMasInfo(p_url, p_div_id) {
	var l_div = $Y.Dom.get(p_div_id);
	if (l_div == undefined) { return; }

	l_div.innerHTML = xmlLoadingHTML;

	var url = p_url;
	var callback = {
		success: function(o){
			l_div.innerHTML = o.responseText;
			TPI.Certifica('/viewMore/viewMoreInfo.do/');
		},
		failure: function(o){
			Stage.handleFailure(o);
		}
	}
	$Y.Connect.asyncRequest('GET', url, callback);
}

function loadUrlMap(advertiseId, addressId, status){
	$Y.Dom.get('viewMoreContent').innerHTML = xmlLoadingHTML;
	var url = 'viewMoreAddress.do';
	var postdata = 'advertiseId=' + advertiseId + '&status=' + status;
	
	if (addressId){postdata +="&ende_id="+addressId;}
		
	var callback = {
		success: function(o){
			$Y.Dom.get('viewMoreContent').innerHTML = o.responseText;

			if ($Y.Dom.get('addressLatitude').value != '' && $Y.Dom.get('addressLatitude').value != 0 &&
				$Y.Dom.get('addressLongitude').value != '' && $Y.Dom.get('addressLongitude').value != 0) {
				getMap($Y.Dom.get('vmPlano0'), $Y.Dom.get("addressLenght").value, $Y.Dom.get("addressLatitude").value, $Y.Dom.get("addressLongitude").value, advertiseId, addressId);
			} else {
				$Y.Dom.addClass($Y.Dom.get('getMap').parentNode, 'off');
				$Y.Dom.addClass('planoContainer', 'planoContainerNoMap');
			}
			TPI.Certifica('/viewMore/viewMoreAddress.do/');
		}	
	}
	$Y.Connect.asyncRequest('POST', url, callback, postdata);
}

function loadUrlContact(p_url, p_div_id) {
	var callback = function(o){
		vmMsgInitial = document.getElementById('ctcComentario').value;
		TPI.Certifica('/viewMore/viewMoreContact.do/');
	}
	loadUrl(p_url, p_div_id, callback);
}

function loadUrlProduct(p_url, p_div_id) {
	var callback = function(o){
		TPI.Certifica('/viewMore/viewMoreProduct.do/');
	}
	loadUrl(p_url, p_div_id, callback);
}
Require.isLoaded['xmlHttpRequest'] = true;
