function goToEvent(id) {
	seeDetail('events', id);
}

function downloadFile(fileURL) {
	document.getElementById('downloadFile').src = fileURL;
}

var doMove = false;
var MOVING_TIMER = null;

function evaluateEventTabs() {
	var tabsUL = document.getElementById("eventTabsUL");
	var eventTabs = document.getElementById("eventTabs");
	var lis = tabsUL.childNodes;
	var width = 0;
	var selectedPos = 0;
	for (var i = 0; i < lis.length; i++) {
		if (lis[i].clientWidth != undefined) {
			if (lis[i].className == "selected") {
				selectedPos = width;
			}
			width += lis[i].clientWidth;
		}
	}

	tabsUL.style.width = (width + 10) + "px";

	if (width > eventTabs.clientWidth) {
		document.getElementById("eventTabsScrollerLeft").style.display = '';
		document.getElementById("eventTabsScrollerRight").style.display = '';
	}
	eventTabs.scrollLeft = selectedPos;
	if ((width - tabsUL.scrollLeft) < eventTabs.clientWidth) {
		eventTabs.scrollLeft = width;
	}
}

function move(direction) {
	var eventTabs = document.getElementById("eventTabs");
	eventTabs.scrollLeft = eventTabs.scrollLeft + (direction * 10);

	if (doMove) {
	        MOVING_TIMER = setTimeout("move(" + direction + ");", 75);
	} else {
		MOVING_TIMER = null;
	}
}

function stopMove(scroller) {
	doMove = false;
	scroller.className = "eventTabsScroller";
}

function eventsScroll(scroller, direction)
{
	doMove = true;
	if (MOVING_TIMER != null) {
		clearTimeout(MOVING_TIMER);
	}
	scroller.className = "eventTabsScrollerOver";
	move(direction);
}

function changeAfiliateCategory(selectItem) {
	var selectedValue = selectItem.options[selectItem.selectedIndex].value;
	var yearField = document.getElementById('afiliateYear');
	if (selectedValue != '1') {
		yearField.style.display = '';
		document.getElementById('afiliate-afiliate-year').value = '';
	} else {
		yearField.style.display = 'none';
		document.getElementById('afiliate-afiliate-year').value = '0';
	}
}

function goToTop() {
	self.scrollTo(0, 0);
}

function goTo(page, parameters) {
	if (parameters == undefined) {
		parameters = "";
	}
	SWFAddress.setValue(page + parameters);
}

function seeDetail(type, id, page) {
	if (page != undefined) {
		SWFAddress.setValue('detail?type=' + type + '&ID=' + id + '&page=' + page);
	} else {
		SWFAddress.setValue('detail?type=' + type + '&ID=' + id);
	}
}

function loadList(type, currentPage, categorySelect) {
	var page = 1;
	var categoryString = "";

	if (categorySelect != undefined && categorySelect != 0 && categorySelect != "") {
		categoryString = "&" + type + "Category=" + categorySelect;
	}

	if (currentPage != undefined) {
		page = currentPage;
	}

	var parameters = 'type=' + type + "&page=" + page + categoryString;
	SWFAddress.setValue('list?' + parameters);
}

function getSectionName(page) {
	if (page.startsWith('/')) {
		return page.substring(1);
	} else {
		return 'home';
	}
}

function formatTitle(page) {
	var title = "Sociedad Uruguaya de Medicina Intensiva";
	if (page == '/home') return title + " - Inicio";
	if (page == '/news') return title + " - Noticias";
	if (page == '/articles') return title + " - Art\u00EDculos";
	if (page == '/secretary') return title + " - Secretar\u00EDa";
	if (page == '/authorities') return title + " - Autoridades - Comisi\u00F3n Directiva";
	if (page == '/authorities2') return title + " - Autoridades - Comisi\u00F3n Fiscal";
	if (page == '/authorities3') return title + " - Autoridades - Comisi\u00F3n de Educaci\u00F3n M\u00E9dica Cont\u00EDnua";
	if (page == '/authorities4') return title + " - Autoridades - Comisi\u00F3n de Asuntos Gremiales";
	if (page == '/authorities5') return title + " - Autoridades - Comit\u00E9 Editorial de Revista Paciente Cr\u00EDtico";
	if (page == '/events') return title + " - Eventos";
	if (page == '/afiliate') return title + " - Afiliarse";
	if (page == '/magazines') return title + " - Revistas";
	if (page == '/links') return title + " - Enlaces de inter\u00E9s";
	if (page == '/detail-news') return title + " - Noticias - Detalle";
	if (page == '/detail-articles') return title + " - Art\u00EDculos - Detalle";
	if (page == '/queries') return title + " - Consultas";
	return title;
}

function handleChange(event) {
    var links = document.getElementsByTagName('a');
    for (var i = 0, link; link = links[i]; i++) {
        link.className = link.rel == event.value ? 'selected' : '';
    }

	var title = event.path;
	var page = event.path;
	var parameters = event.parameters;
	if (event.path == '/') {
    	page = '/home';
    } else if (event.path == '/articles') {
		page = '/list';
		parameters['type'] = 'articles';
		parameters['page'] = '1';
	} else if (event.path == '/magazines') {
		page = '/list';
		parameters['type'] = 'magazines';
		parameters['page'] = '1';
    } else if (event.path == '/news') {
		page = '/list';
		parameters['type'] = 'news';
		parameters['page'] = '1';
    } else if (event.path == '/links') {
		page = '/list';
		parameters['type'] = 'links';
		parameters['page'] = '1';
    } else if (event.path == '/events') {
		page = '/list';
		parameters['type'] = 'events';
		parameters['page'] = '1';
	}

	if (page == '/list') {
		title = '/' + parameters['type'];
	} else if (page == '/detail') {
		title = page + '-' + parameters['type'];
	}
	changePage(page, parameters);

    SWFAddress.setTitle(formatTitle(title));
}

function changePage(page, parameters) {
	var sectionName = '';
	var leftPage = '';
	var rightPage = '';
	var params = '';

	if (page == '/detail') {
		sectionName = parameters['type'];
		leftPage = '/front/' + sectionName + '/seeDetail.do';
		rightPage = '/front/rightContent/' + sectionName + '.vm';
		if (parameters['page'] != undefined) {
			params = 'ID=' + parameters['ID'] + '&page=' + parameters['page'];
		} else {
			params = 'ID=' + parameters['ID'];
		}

		if (sectionName == 'events') {
			rightPage = '/front/' + sectionName + '/seeDetailRight.do';
		}
	} else if (page == '/list') {
		sectionName = parameters['type'];
		leftPage = '/front/' + sectionName + '/list.do';
		rightPage = '/front/rightContent/' + sectionName + '.vm';

		var pageNumber = 1;
		var elementsPerPage = 6;
		var categoryString = "";

		if (sectionName == 'magazines') {
			elementsPerPage = 9;
		}

		var categoryName = sectionName + "Category";
		if (parameters[categoryName] != undefined && parameters[categoryName] != 0 && parameters[categoryName] != "") {
			categoryString = "&" + categoryName + "=" + parameters[categoryName];
		}

		if (parameters['page'] != undefined) {
			pageNumber = parameters['page'];
		}

		params = 'elementsPerPage=' + elementsPerPage + "&page=" + pageNumber + categoryString;
	} else if (page == '/afiliate') {
        sectionName = getSectionName(page);
        leftPage = '/front/afiliate/afiliate.do';
        rightPage = '/front/rightContent/afiliate.vm';
	} else if (page == '/queries') {
        sectionName = getSectionName(page);
        leftPage = '/front/queries/add.do';
        rightPage = '/front/rightContent/news.vm';
	} else if (isValidPage(page)) {
		sectionName = getSectionName(page);
		leftPage = '/front/leftContent/' + page + '.vm';
		rightPage = '/front/rightContent/' + page + '.vm';

		for (var p in parameters) {
			params += (params == '' ? '' : '&') + p + '=' + parameters[p];
		}
	} else {
		sectionName = getSectionName('/home');
		leftPage = '/front/leftContent/home.vm';
		rightPage = '/front/rightContent/home.vm';
	}


	updatePage('/front/events/loadRandom.do', 'headerFlash', 'sectionName=' + sectionName);
	updatePage(leftPage, 'leftContent', params, true);
	updatePage(rightPage, 'rightContent', params);
}

function isValidPage(page) {
	return page.startsWith('/home') || page.startsWith('/events') || page.startsWith('/authorities') || page.startsWith('/secretary') || page.startsWith('/queries');
}

function updatePage(page, contentToUpdate, parameters, doOnload) {
    var method = (page == '/front/afiliate/afiliate.do' || page == '/front/queries/add.do') ? 'GET' : 'POST';
    var options = createOptions(method, parameters);
	if (doOnload != undefined) {
		options.onComplete = appear;
	}

    updateContentWithOptions(page, contentToUpdate, options);
}

function appear(xhr, value) {
	var content = document.getElementById('contentContainer');
    if (typeof value == 'undefined') value = 0;
	var property = content.filters ? 'filter' : 'opacity';

    if (value >= 1) {
		content.removeAttribute("style");
		return;
	} else {
		content.style[property] = content.filters ? 'alpha(opacity=' + value*100 + ')' : value;
		setTimeout(function () {appear(xhr, value + .1)} , 50);
	}
}

SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);

/* --- Genera los arrays con los nombres de los días y meses --- */
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);
	}
}
//--------------------------------------------