var homeOption = 'home';
var validPages = ['home', 'history', 'events', 'news', 'images', 'folders', 'videos', 'opinions', 'links','queries'];
var listMenus = ['events', 'news', 'images', 'folders', 'videos', 'links'];
var listParameters = [['folders', 'parent'], ['news', 'newsCategory'], ['images', 'imagesCategory'], ['opinions', 'columnist']];
var elementsPerPages = [['events', 6], ['news', 6], ['images', 12], ['videos', 1], ['opinions', 6], ['links', 12]];
var particularPages = [['queries', '/front/queries/add.do'], ['opinions', '/front/opinions/generalList.do?elementsPerPage=6']];

/* --- Funcion para descargar archivo --- */
function downloadFile(frameId, fileURL) {
	document.getElementById(frameId).src = fileURL;
}
/* -------------------------------------- */

/* --- Funciones para llamadas de navegación --- */
function goTo(page, parameters)
{
	if (parameters == undefined) {
		parameters = "";
	}

	if (isValidPage('/' + page)) {
		SWFAddress.setValue(page + parameters);
	}
}

function goBack() {
	history.back();
}

function goToTop() {
	self.scrollTo(0, 0);
}

function seeDetail(type, id) {
	SWFAddress.setValue('detail?type=' + type + '&ID=' + id);
}

function loadList(type, currentPage, parametersValues) {
	var parameters = 'type=' + type + processListExtraParameters(type, currentPage, parametersValues);

	SWFAddress.setValue('list?' + parameters);
}

function loadListExtended(type, currentPage, parametersValues, listPage) {
	var parameters = 'type=' + type + processListExtraParameters(type, currentPage, parametersValues);

	SWFAddress.setValue(listPage + '?' + parameters);
}

var selectedPage = undefined;

function changeSelectedPage(page)
{
    if (selectedPage != undefined) {
        document.getElementById(selectedPage).className =  '';
    }

	selectedPage = page;
	document.getElementById(selectedPage).className =  'selected';
}
/* --------------------------------------------- */

/* --- Funciones extras --- */
function processListExtraParameters(type, currentPage, parametersValues) {
	var extraParameters = "";
	var elementsPerPage = getElementsPerPage(type);
	var listExtraParameters = getListParameters(type);

	if (elementsPerPage != undefined) {
		extraParameters += "&page=" + (currentPage != undefined ? currentPage : "1");
	}

	if (listExtraParameters != undefined) {
		if (parametersValues != undefined && parametersValues != 0 && parametersValues != "") {
			extraParameters += "&" + listExtraParameters + "=" + parametersValues;
		}
	}

	return extraParameters;
}

function getListParameters(type) {
	var listExtraParameters = undefined;
	for (var i = 0; i < listParameters.length && listExtraParameters == undefined; i++) {
		if (listParameters[i][0] == type) {
			listExtraParameters = listParameters[i][1];
		}
	}

	return listExtraParameters;
}

function getElementsPerPage(type) {
	var elementsPerPage = undefined;
	for (var i = 0; i < elementsPerPages.length && elementsPerPage == undefined; i++) {
		if (elementsPerPages[i][0] == type) {
			elementsPerPage = elementsPerPages[i][1];
		}
	}

	return elementsPerPage;
}

function isListMenu(page) {
	var type = page;
	var found = false;

	if (page.startsWith('/')) {
		type = page.substring(1);
	}

	for (var i = 0; i < listMenus.length && !found; i++) {
		found = listMenus[i] == type;
	}

	return found;
}

function getParticularPage(page) {
	var type = page;
	var particularPage = undefined;

	if (page.startsWith('/')) {
		type = page.substring(1);
	}

	for (var i = 0; i < particularPages.length && particularPage == undefined; i++) {
		if (particularPages[i][0] == type) {
			particularPage = particularPages[i][1];
		}
	}

	return particularPage;
}

function isValidPage(page) {
	var type = page;
	var found = false;

	if (page.startsWith('/')) {
		type = page.substring(1);
	}

	for (var i = 0; i < validPages.length && !found; i++) {
		found = validPages[i] == type;
	}

	return found;
}
/* ------------------------ */

/* --- Manejador de SWFAddress --- */
function handleChange(event) {
	var page = event.path;
	var parameters = event.parameters;
	if (event.path == '/') {
	    	page = '/' + homeOption;
    } else if (isListMenu(page)) {
		parameters['type'] = page.substring(1);
		parameters['page'] = '1';
		page = '/list';
	}

	changePage(page, parameters);

}

function changePage(page, parameters) {
	var sectionName = '';
	var pageName = '';
	var params = '';
	var particularPage = getParticularPage(page);

    if (page == '/detail') {
        sectionName = parameters['type'];
        pageName = '/front/' + sectionName + '/detail.do';
        params = 'ID=' + parameters['ID'];
    } else if (page == '/list' || page == '/generalList') {
        sectionName = parameters['type'];
        pageName = '/front/' + sectionName + page + '.do';

	    var elementsPerPage = getElementsPerPage(sectionName);
	    var listExtraParameters = getListParameters(sectionName);

	    if (elementsPerPage != undefined) {
		    params += "page=" + (parameters['page'] != undefined ? parameters['page'] : "1");
		    params += "&elementsPerPage=" + elementsPerPage;
	    }

	    if (listExtraParameters != undefined) {
		    var extraParameters = listExtraParameters.split(",");
		    for (var i = 0; i < extraParameters.length; i++) {
			    var extraParameter = extraParameters[i];
				if (parameters[extraParameter] != undefined && parameters[extraParameter] != 0 && parameters[extraParameter] != "") {
					params += (params == "" ? "" : "&") + extraParameter + "=" + parameters[extraParameter];
				}
			}
	    }
    } else if (particularPage != undefined) {
        sectionName = getSectionName(page);
        pageName = particularPage;
    } else if (isValidPage(page)) {
		sectionName = getSectionName(page);
		pageName = '/front/content/' + sectionName + '.vm';

		for (var p in parameters) {
			params += (params == '' ? '' : '&') + p + '=' + parameters[p];
		}
	} else {
		sectionName = getSectionName('/' + homeOption);
		pageName = '/front/content/' + sectionName + '.vm';
	}

    changeSelectedPage(sectionName);

	updatePage(pageName, 'dynamicContent', params);
}

function getSectionName(page) {
	if (page.startsWith('/')) {
		return page.substring(1);
	} else {
		return 'home';
	}
}

function updatePage(page, contentToUpdate, parameters) {
    var method = 'POST';
    var options = createOptions(method, parameters);

	options.onComplete = function() {
		if (fixPngs != undefined) {
			fixPngs();
		}
	}
	updateContentWithOptions(page, contentToUpdate, options);
}

SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);
/* ------------------------------- */

/* --- Carga inicial del sitio --- */
function doLoading(dayNames, monthNames) {
	gsDayNames = dayNames;
	gsMonthNames = monthNames;
}
/* ------------------------------- */

//--- FUNCIONES DE FECHAS PARA CALENDARIOS ---
// a global month names array
var gsDayNames = new Array();
var gsMonthNames = new Array();

// Agrego la función de formato al tipo Date
Date.prototype.format = function(f)
{
    if (!this.valueOf()) {
		return '&nbsp;';
	}

    var d = this;
	return f.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
        function($1)
        {
            switch ($1.toLowerCase())
            {
            case 'yyyy': return d.getFullYear();
			case 'yy':	 return String(d.getFullYear()).substring(2, 4);
            case 'mmmm': return gsMonthNames[d.getMonth()];
            case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
            case 'mm':   return (d.getMonth() + 1).zf(2);
            case 'dddd': return gsDayNames[d.getDay()];
            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
            case 'dd':   return d.getDate().zf(2);
            case 'hh':   return d.getHours().zf(2);
            case 'nn':   return d.getMinutes().zf(2);
            case 'ss':   return d.getSeconds().zf(2);
            case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
            }
        }
    );
}

//Agrega ceros hasta tener el formato deseado
Number.prototype.zf = function(zeros)
{
	var n = this;
	var formattedNumber = "";
	var count = 1;
	for (i = 1; i < zeros; i++) count = count * 10;
	while ((n < count) && (count > 1)) {
		formattedNumber = "0" + formattedNumber;
		count = count / 10;
	}
	formattedNumber = formattedNumber + n;
	return formattedNumber;
}

// Recibe una fecha en formato dd-MM-yyyy y la imprime con el patron recibido por parametro
function printDay(date, pattern, content)
{
	var split = date.split("-");
	var today = new Date(split[2], split[1] - 1, split[0]);

	if (content != undefined) {
		document.getElementById(content).innerHTML = today.format(pattern);
		return "";
	} else {
		return today.format(pattern);
	}
}
//--------------------------------------------

function preloadImages()
{
	if (document.images)
	{
	  pic1= new Image(100,25);
	  pic1.src="/img/front/last.gif";

	  pic2= new Image(240,55);
	  pic2.src="/img/front/next.gif";

	  pic3= new Image(88,31);
	  pic3.src="/img/front/pause.gif";

	  pic4= new Image(88,31);
	  pic4.src="/img/front/continue.gif";

	  pic5= new Image(100,25);
	  pic5.src="/img/front/last_over.gif";

	  pic6= new Image(240,55);
	  pic6.src="/img/front/next_over.gif";

	  pic7= new Image(88,31);
	  pic7.src="/img/front/pause_over.gif";

	  pic8= new Image(88,31);
	  pic8.src="/img/front/continue_over.gif";

	  pic9= new Image(88,31);
	  pic9.src="/img/front/link_arrow.jpg";

	  pic10= new Image(88,31);
	  pic10.src="/img/front/link_arrow_hover.jpg";
	}

}