

// Separador para la serializacion de avisos.
var ADVERTISE_SEPARATOR = "|";
// Array con avisos seleccionados.
var SELECTEDS_ADVS = new Array(0);
// Cookie de los seleccionados.
var cookie_selected = $.cookie(COOKIE_SELECTED_NAME);

/**
 * Si no existe la cookie , la creo
 * 
 * @return
 */
function crearSelectedCookie() {
	
	var cookie_selected = $.cookie(COOKIE_SELECTED_NAME);
	if (cookie_selected != null || cookie_selected != '') {
		//-si existe entonces la deserializo.
		SELECTEDS_ADVS = unserializeAdvertises(cookie_selected);		
	}
}


/**
 *  Guardo la cookie
 */
function saveCookie() {
	$.cookie(COOKIE_SELECTED_NAME, serializeAdvertises(SELECTEDS_ADVS),COOKIE_DEFAULT_OPTIONS);
}

/**
 * - Evento que maneja el cambio del valor de un checkbox.
 * - Agrego el aviso a la lista de avisos o lo borra en su defecto.
 */
function onCheck(object, sufix) {
	 
	var idCheck = object.id.replace("selected-" + sufix, "");
	var wasChecked = object.wasChecked;
	var checked = object.checked;
	if (wasChecked != checked) {
		if (object.checked) {
			//	alert("onchange (insert) : "+idCheck + sufix);
			// sincronizacion con mapa
			$('#selected-'+idCheck).attr('checked', true);
			$('#selected-map-'+idCheck).attr('checked', true);
			// Inserto el aviso a los seleccionados, y guardo la cookie.
			insertAdv(idCheck);
			saveCookie();
		} else {
			//alert("onchange (delete) : "+idCheck + sufix);
			// sincronizacion con mapa
			$('#selected-'+idCheck).attr('checked', false);
			$('#selected-map-'+idCheck).attr('checked', false);
			// La busco y la borro, y guardo la cookie.
			var found = searchAdv(idCheck);
			if (found > -1) {
				deleteAdv(found);
				saveCookie();
			}
			//Si esta checkeado el checkAll, lo deselecciono. 
			$('#checkAll').attr("checked", false);
		}
	}
	try {
		document.getElementById('selected-'+idCheck).wasChecked = object.checked;
		document.getElementById('selected-map-'+idCheck).wasChecked = object.checked;
	} catch (e) {
		//puede salir por null, no le doy bola.
	}
	
	addNoCacheParameter();
	return true;
}
/**
 * checkea todos los avisos.
 * @return
 */
function onCheckAll(object) {
	$('.checkAdvertise').attr("checked", object.checked);
	$('.checkAdvertise.checkListado').change();
	
	addNoCacheParameter();
}

function addNoCacheParameter() {
	changeHrefTimestampParameter($('#print-tool'));
	changeHrefTimestampParameter($('#send-email-to-friend'));
	changeHrefTimestampParameter($('#send-multimail'));
}

/**
 * Agrega un parámetro falso a la URL para que IE no haga caching. 
 * @return
 */
function changeHrefTimestampParameter(aObject) {
	var hrefUrl = aObject.attr('href').split('?')[0];
	var hrefNewUrl = hrefUrl + '?ts=' + new Date().getTime();
	aObject.attr('href', hrefNewUrl);
}

/**
 * Agrega un aviso a la seleccion de avisos.
 * @param idCheck
 * @return
 */
function insertAdv(idCheck) {
	var index = SELECTEDS_ADVS.length;
	SELECTEDS_ADVS[index] = composeOrderIdCheck(idCheck);
}

function composeOrderIdCheck(idCheck) {
	return  idCheck + "-" + resultsOrder[idCheck];
}

function getIdCheck(selectedAdv) {
	var index = selectedAdv.indexOf("-");
	if (index == -1) {
		return selectedAdv;
	} else {
		return selectedAdv.substr(index + 1);
	}
}

function getIdCheckValue(selectedAdv) {
	var index = selectedAdv.indexOf("-");
	if (index == -1) {
		return selectedAdv;
	} else {
		return selectedAdv.substr(0, index);
	}
}

function sortAdv(result) {
	result.sort(function(a, b) {
		return a.split("-")[0] - b.split("-")[0];
	});
}

/**
 * Borra un aviso de la seleccion de avisos.
 * @return
 */
function deleteAdv(index) {
	SELECTEDS_ADVS.splice(index, 1);
}

/**
 * Busca el aviso en la coleccion de avisos seleccionados.
 * @return
 */
function searchAdv(idCheck) {
	var orderedIdCheck = composeOrderIdCheck(idCheck);
	for (adv in SELECTEDS_ADVS) {
		if (SELECTEDS_ADVS[adv] == orderedIdCheck) {
			return adv;
		}
	}
	return -1;
}

/**
 * Serializa un array de avisos.
 * @param arrayAdvertiseSelecteds
 * @return
 */
function serializeAdvertises(arrayAdvertises) {
	sortAdv(arrayAdvertises);
	var result = "";
	if (arrayAdvertises.length > 0) {
		var separador = "";
		for (adv in arrayAdvertises) {
			if (adv == 0) {
				separador = "";
			} else {
				separador = ADVERTISE_SEPARATOR;
			}
			result += separador + arrayAdvertises[adv];

		}
	}
	return result;
}

/**
 * Deserializa un string de avisos.
 * @param serialized
 * @return
 */
function unserializeAdvertises(serialized) {
	var result = new Array();
	if (serialized != undefined && serialized != "") {
		var arrayAdvertises = serialized.split(ADVERTISE_SEPARATOR);
		for (adv in arrayAdvertises) {
			result[adv] = arrayAdvertises[adv];
		}
		sortAdv(result);
	}
	return result;
}
 
 /**
 * 
 * @param idTooltip
 * @return
 */
 function showTooltip(idTooltip) {
 	var cant = SELECTEDS_ADVS.length;
 	if (cant > 0 || idTooltip == "tooltip-selectall") {
 		$('.selected-cant').text(SELECTEDS_ADVS.length);
 		$('#' + idTooltip).show();
 		if($.browser.msie){
 			$('#searchBox').css("zIndex","-1");
 		}
 	}
 
 }
 /**
 * 
 * @param idTooltip
 * @return
 */
 function hideTooltip(idTooltip) {
 	$('#' + idTooltip).hide();
 	if($.browser.msie){
		$('#searchBox').css("zIndex","999");
	}
 }


