/**
 * Envia eventos Omniture.
 *
 * @param eventDataList Array de objetos. Cada objeto contiene los datos de un evento.
 */
function sendOmnitureEvents( eventDataList ) {
	// Lista de eventos que se enviarán a Omniture.
	var eventList = [];
	
	// Indica el método de envío de los eventos:
	// sendTrackLink = true  -> Modo eventos de usuario -> yellSendTrackLinkEvent(this, eventList); 
	// sendTrackLink = false -> Modo página vista       -> yellSendPageEvents();
	var sendTrackLink = true;
	var e;
	var evData;
	for (var i=0; i<eventDataList.length; i++) {
		evData = eventDataList[i];
		
		if ( evData.name ) {
			switch (evData.name) {
				case "YellAdsView":
					// listaObjecto es una lista de objetos YellAd
					if (evData.listaObjeto){
						var adsView = new YellAdsView();
						for (var j=0; j<evData.listaObjeto.length; j++){
							 adsView.addAd(evData.listaObjeto[j]);
						}
						eventList.push(adsView);
					}else{
						// objeto es un objeto YellAd
						eventList.push( new YellAdsView().addAd(evData.objeto) );
					}
					break;

				case "YellClickAd": 
					//e = new YellClickAd(YellEvent.TOOLTIP_VIEW, null, evData.objeto);
					e = new YellClickAd(evData.resultado, evData.id, evData.objeto);
					eventList.push(e);
					break;
					
				case "YellHitPay": 
					e = new YellHitPay( evData.id, evData.objeto, evData.resultado);
					eventList.push(e);
					break;
					
				case "YellHitFree": 
					e = new YellHitFree( evData.id, evData.objeto, evData.resultado);
					eventList.push(e);
					break;
					
				case "YellSearch":
					e = new YellSearch( (evData.id)? "" + evData.id : null );
					if (evData.direccion  ) e.setAddress      (evData.direccion);
					if (evData.localidad  ) e.setCity         (evData.localidad); 
					if (evData.calle      ) e.setStreetName   (evData.calle); 
					if (evData.numero     ) e.setStreetNumber (evData.numero);
					if (evData.enCocheAPie) e.setByCarByFoot  (evData.enCocheAPie);
					if (evData.actividad  ) e.setActivity     (evData.actividad);
					eventList.push(e);
					break;
					
				case "YellResults":
					e = new YellResults(evData.resultado, evData.id);
					if (evData.mode          ) e.setMode           (evData.mode          );
					if (evData.pagination    ) e.setPagination     (evData.pagination    );
					if (evData.resultsPerPage) e.setResultsPerPage (evData.resultsPerPage);
					if (evData.totalResults  ) e.setTotalResults   (evData.totalResults  );
					eventList.push(e);
					break;
					
				case "YellEvent":
					e = new YellEvent(evData.n_event, evData.id);
					if ((evData.dest_channel) && (evData.propChannel) ){
						e.setProp(evData.propChannel, evData.dest_channel);
					}
					eventList.push(e);
					break;
					
				case "YellPageView":
					e = new YellPageView();
					if (evData.nombrePag  ) e.setPageName   ("Callejero - " + evData.nombrePag);
					if (evData.seccion    ) e.setSection    (evData.seccion); 
					if (evData.server     ) e.setServer     (evData.server);
					if (evData.site       ) e.setSite       (evData.site);
					if (evData.userIp     ) e.setUserIP     (evData.userIp);
					if (evData.pagination ) e.setPagination (evData.pagination);
					eventList.push(e);
					sendTrackLink = false;
					break;
					
				case "YellInterpreter":
					e = new YellInterpreter( (evData.id)? "" + evData.id : null  );
					if (evData.city        ) e.setCity         (evData.city);
					if (evData.province    ) e.setProvince     (evData.province);
					if (evData.streetName  ) e.setStreetName   (evData.streetName);
					if (evData.streetNumber) e.setStreetNumber (evData.streetNumber);
					if (evData.activity    ) e.setActivity     (evData.activity);
					eventList.push(e);
					break;
			}
		}
	}
	
	// Eliminación de eventos anteriores para evitar la duplicidad.
	try { 
		s.events = null; 
		for (i = 0; i < 70; i++) { 
			s['eVar' + i] = null; 
			s['prop' + i] = null; 
		} 
	} catch (e) { } 	

	if ( sendTrackLink ) {
		// Modo de envío de eventos como acciones del usuario.
		yellSendTrackLinkEvent(this, eventList);
	}
	else {
		// Modo de envío de eventos como Página Vista.
		// Se simula la carga de de la página creando un nuevo objeto YellPageEvents 
		// y asignandolo a la variable global del FW yellPageEvents.
		yellPageEvents = new YellPageEvents();
		
		// Se cargan todos los objetos de la lista en yellPageEvents
		for (var j=0; j<eventList.length; j++) {
			yellPageEvents.add( eventList[j] );
		}
		yellSendPageEvents();
	}
}
function moscaOmniHit(res, c, id, free) {
	var eventos = [];
	var ev;
	var inse = "IP";
	
	if( free ) {
		ev = { name: "YellHitFree" };
		inse = "IG";
	}
	else {
		ev = { name: "YellHitPay" };
	}
	var yAd = new YellAd(c, null, null, null, inse, null, null);
	ev.id = id;
	ev.resultado = res;
	ev.objeto = yAd;
	eventos.push(ev);
	
	ev = { name: "YellClickAd" };
	ev.resultado = YellEvent.WEB_VIEW;
	ev.id = id;
	ev.objeto = yAd;
	eventos.push(ev);
	sendOmnitureEvents( eventos );
}
function moscaOmni(n_event, dest) {
	var yellEv = window.YellEvent || parent.YellEvent || null;
	if ( yellEv != null ) {
		var eventos = [];
		var ev;
		ev = { name: "YellEvent" };
		switch (n_event) {
			case "channel":
				//ev.n_event = new YellEvent(YellEvent.CHANNEL, '');
				ev.n_event = yellEv.CHANNEL;
				ev.propChannel = YellProp.DEST_CHANNEL;
				if (dest) ev.dest_channel = dest;
				break;
			case "send":
				ev.n_event = yellEv.MAP_SEND;
				break;
			case "print":
				ev.n_event = yellEv.MAP_PRINT;
				break;
			case "webcam":
				ev.n_event = yellEv.WEBCAM;
				break;
		}
		ev.id = null;
		eventos.push(ev);
		sendOmnitureEvents( eventos );
	}
}

