var isIE = false;
var req;
var tpl;
var rowTpl;
var currWordIdx = 0;

function getNameCountry (siteId) {
	var ml = "MercadoLibre ";
	switch(siteId) {
	case "MLA":
	  return ml + "Argentina";
	  break    
	case "MLB":
	  return "MercadoLivre Brasil";
	  break
	case "MLU":
	  return ml + "Uruguay";
	  break
	case "MPE":
	  return ml + "Perú";
	  break
	case "MLM":
	  return ml + "Mexico";
	  break
	case "MLC":
	  return ml + "Chile";
	  break
	case "MLP":
	  return ml + "Panamá";
	  break
	case "MCO":
	  return ml + "Colombia";
	  break
	case "MLV":
	  return ml + "Venezuela";
	  break
	case "MEC":
	  return ml + "Ecuador";
	  break
	default:
	  return ml + "Argentina";
	}
}

function getUrlSite (siteId) {
switch(siteId) {
	case "MLA":
	  return "http://www.mercadolibre.com.ar/";
	  break    
	case "MLB":
	  return "http://www.mercadolivre.com.br/";
	  break
	case "MLU":
	  return "http://www.mercadolibre.com.uy/";
	  break
	case "MPE":
	  return "http://www.mercadolibre.com.pe/";
	  break
	case "MLM":
	  return "http://www.mercadolibre.com.mx/";
	  break
	case "MLC":
	  return "http://www.mercadolibre.cl/";
	  break
	case "MCO":
	  return "http://www.mercadolibre.com.co/";
	  break
	case "MLV":
	  return "http://www.mercadolibre.com.ve/";
	  break
	case "MEC":
	  return "http://www.mercadolibre.com.ec/";
	  break
	default:
	  return "http://www.mercadolibre.com.ar/";
	}
}	
	
	
function processResult() {
    var xml = reques.responseXML;
    var listing = xml.getElementsByTagName("listing");
	
    if (listing.length == 0 || typeof listing.item(0) == 'undefined' || listing.item(0) == null) {
		return;
	}	

    var qty = listing.item(0).getAttribute("items_total");
    var toShow = Math.min(qty,itemsQty);
    var items = xml.getElementsByTagName("item");
    if (items.length <= 0)
    	return;
    else
	toShow = Math.min(toShow, items.length);  
    var rows = "";
    var cells = new Array(toShow);
	
	for (var i=0; i < toShow; i++ ) {
		tmp = rowTpl;

        id = items.item(i).getAttribute("id");    
    	title      = document.createTextNode(getElementTextNS("", "title", items[i], 0)).data;
    	title	   = title.substring(0,titleCharsQty);
		price      = document.createTextNode(getElementTextNS("", "price", items[i], 0)).data;
		currency   = document.createTextNode(getElementTextNS("", "currency", items[i], 0)).data;
		imageUrl   = document.createTextNode(getElementTextNS("", "image_url", items[i], 0)).data;
      	if ( imageUrl == "undefined" ) imageUrl = getUrlSite(promoSiteId)+"jm/img?s="+promoSiteId+"&f=artsinfoto.gif&v=P";
      	
		tmp = tmp.replace("##DESCR##", title);
		tmp = tmp.replace("##TITLE##", title);
		tmp = tmp.replace(/##LINK##/gi, getUrlSite(promoSiteId)+"jm/item?site="+promoSiteId+"&id="+id);
		tmp = tmp.replace("##IMG##", imageUrl);
		tmp = tmp.replace("##PRECIO##", currency+' '+price);

		cells[i] = tmp;	

    }
    for (var i=0; i < swapQty; i++ ) {
    	rnd1 = Math.round(Math.random() * 100000000) % cells.length;
    	rnd2 = Math.round(Math.random() * 100000000) % cells.length;
    	tmp = cells[rnd1];
    	cells[rnd1] = cells[rnd2];
    	cells[rnd2] = tmp;
	}
    for (var i=0; i < toShow; i++ ) {
    	rows += cells[i];	
    	if ((i+1)%cols==0) rows += "</tr><tr>";
	}	
	
	if (toShow != 0) {
        document.getElementById("galTpl").innerHTML = tpl.replace("<!--##ROWS##-->", rows);
	    document.getElementById("galTpl").style.visibility = "";
    } 	
}

//Retorna un XMlHttpRequest, handler es el nombre de la funcion q va a tratar los eventos, y  isDebugEnabled indica si se muestran mensajes para debug.
function GetXmlHttpRequest (handler, isDebugEnabled) {
	var req=false;
	//para MZ
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
			if (isDebugEnabled)
				alert (e);
        }
    // para IE
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
				if (isDebugEnabled)
					alert (e);
        	}
		}
    }
	
	if(req) {
		req.onreadystatechange = handler;
		if (isDebugEnabled)
			alert ("Request creado correctamente, el handler es: "+handler);
	}
	
	return req;
}

function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        result = parentElem.getElementsByTagName(local)[index];
    }

    if (result) {
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
        	if (result.firstChild != null ){
            	return result.firstChild.nodeValue;    		
        	}
        }
    } else {
        return "n/a";
    }
}


function actTicker(){
	tpl = document.getElementById("galTpl").innerHTML;
	tpl = tpl.replace("##SITE##", getNameCountry (promoSiteId));
	tpl = tpl.replace("##URL_SITE_VISITOR##", getUrlSite (promoSiteId));
		
	searchPromos();
	setInterval ("searchPromos()", queryDelay);
}

function searchPromos(){
	var url = promoUrlBase+"jm/searchXml?as_word="+encodeURIComponent(tags[currWordIdx])+"&o_site_id="+promoSiteId;
	reques = GetXmlHttpRequest(processReqChange, false);
	reques.open("GET", url, true);
	reques.send("");
	
	//window.status = "url="+url;
	if ( currWordIdx++ >= tags.length-1 ) currWordIdx = 0;
}

function processReqChange() {
    if (reques.readyState == 4) {
        if (reques.status == 200) {
            processResult();
         } else {
            //oops!
         }
    }
}