﻿var SelectorData_Mesos;
var SelectorData_DiesSetmana;
var SelectorData_Botons;

function SelectorData_Texts(mesos, diesSetmana, botons) {
    SelectorData_Mesos = mesos;
    SelectorData_DiesSetmana = diesSetmana;
    SelectorData_Botons = botons;
}

function SelectorData_Click(id) {
	var obj;
	obj = document.getElementById(id + '_Calendari');
	if (obj.style.display == 'block') {
		obj.style.display = 'none';
		SelectorData_ShowSelects()
	}
	else {
		obj.style.display = 'block';
		SelectorData_Change(id, false);
		SelectorData_HideSelects()
	}
}

function SelectorData_Change(id) {
	var obj;
	var data;
	var i, c;
	var dia, mes, any;
	var ara;
	
	//Data
	obj = document.getElementById(id + '_Valor');
	data = obj.value;
	//Dia
	dia = '';
	for (i = 0; i < data.length; i ++) {
		c = data.substr(i,1);
		if ( c == '/' || c == '-' || c == '.') {
			break;
		}
		else if (c != ' ') {
			dia += c; 
		}
	}
	dia = parseInt(dia, 10);
	//Mes
	mes = '';
	for (i = i + 1; i < data.length; i ++) {
		c = data.substr(i,1);
		if ( c == '/' || c == '-' || c == '.') {
			break;
		}
		else if (c != ' ') {
			mes += c; 
		}
	}
	mes = parseInt(mes, 10);
	//Any
	any = '';
	for (i = i + 1; i < data.length; i ++) {
		c = data.substr(i,1);
		if ( c == '/' || c == '-' || c == '.') {
			break;
		}
		else if (c != ' ') {
			any += c; 
		}
	}
	any = parseInt(any, 10);
	//Establir el valor
	if (isNaN(dia) || dia < 1 || dia > 31 || isNaN(mes) || mes < 1 || mes > 12) {
		SelectorData_Value(id, -1, -1, -1, false);
	}	
	else {
		mes = mes - 1;
		if (mes == 11) {
			data = new Date(any + 1, 0, 0);
		}
		else {
			data = new Date(any, mes + 1, 0);
		}
		if (dia > data.getDate()) {
			SelectorData_Value(id, -1, -1, -1, false);
		}
		else {
			SelectorData_Value(id, dia, mes, any, false);
		}
	}
}

function SelectorData_Value(id, dia, mes, any, click) {
	var obj; 
	var ara;
	var dia_txt;
	var mes_txt;
	
	obj = document.getElementById(id + '_Valor');
	if (dia == -1 || mes == -1 || any == -1) {
		obj.value = '';
		ara = new Date();
		SelectorData_Refresh(id, dia, ara.getMonth(), ara.getFullYear());	
	}
	else {
	    dia_txt = '0' + dia;
	    dia_txt = dia_txt.substr(dia_txt.length - 2, 2);
	    mes_txt = '0' + (mes + 1);
	    mes_txt = mes_txt.substr(mes_txt.length - 2, 2);
		obj.value = dia_txt + '/' + mes_txt + '/' + any;
		SelectorData_Refresh(id, dia, mes, any);
	}
	if (click) {
		SelectorData_Click(id);
        if (obj.autopostback == 'true') {
           __doPostBack(obj.name,'');
        }
	}
	return false;
}

function SelectorData_Refresh (id, dia, mes, any) {
	var html;
	var mesAnterior, anyAnterior, mesSeguent, anySeguent; 
	var i;
	var data;
	var diaSetmanaIniciMesActual;
	var diesMesActual;
	var diesMesAnterior;
	var obj;
	var ara;

	//Mes i any
	if (mes == 0) {
	    mesAnterior = 11;
	    anyAnterior = any - 1;
	}
	else {
	    mesAnterior = mes - 1;
	    anyAnterior = any;
	}
	if (mes == 11) {
	    mesSeguent = 0;
	    anySeguent = any + 1;
	}
	else {
	    mesSeguent = mes + 1;
	    anySeguent = any;
	}
	html = '';
	html += '<table>';
	html += '<tr>';
	html += '<th class="AnarAnteriorMes"><input type="Button" onclick="SelectorData_Refresh(\'' + id + '\',-1,' + mesAnterior + ',' + anyAnterior + ');"></th>';
	html += '<th colspan="5">' + SelectorData_Mesos[mes] + ' ' + any + '</th>';
	html += '<th class="AnarSeguentMes"><input type="Button" onclick="SelectorData_Refresh(\'' + id + '\',-1,' + mesSeguent + ',' + anySeguent + ');"></th>';
	html += '</tr>';
	//Dies de la setmana
	html += '<tr class="DiesSetmana">';
	for (i = 0; i < 7; i ++) {
		html += '<td>' + SelectorData_DiesSetmana[i] + '</td>';
	}
	html += '</tr>';
	//Dies del mes
	data = new Date(any, mes, 1);
	diaSetmanaIniciMesActual = (data.getDay() - 1 + 7) % 7;
	if (mes == 11) {
		data = new Date(any + 1, 0, 1);
	}
	else {
		data = new Date(any, mes + 1, 1);
	}
	data.setDate(0);
	diesMesActual = data.getDate();
	data = new Date(any, mes, 1);
	data.setDate(0);
	diesMesAnterior = data.getDate();
	for (i = 0; i < 42; i ++) {
		if (i % 7 == 0) {
			html += '<tr>';
		}
		html += '<td>';
		if (i < diaSetmanaIniciMesActual) {
			html += diesMesAnterior - diaSetmanaIniciMesActual + i + 1;
		}
		else if (i - diaSetmanaIniciMesActual + 1 <= diesMesActual) {
			if (i - diaSetmanaIniciMesActual + 1 == dia) {
				html += '<a href="#" class="Seleccionat" onclick="return SelectorData_Value(\'' + id + '\',' + (i - diaSetmanaIniciMesActual + 1) + ',' + mes + ',' + any + ',true)">' + (i - diaSetmanaIniciMesActual + 1) + '</a>';
		}
			else {
				html += '<a href="#" onclick="return SelectorData_Value(\'' + id + '\',' + (i - diaSetmanaIniciMesActual + 1) + ',' + mes + ',' + any + ',true)">' + (i - diaSetmanaIniciMesActual + 1) + '</a>';
			}
		}
		else {
			html += (i - diaSetmanaIniciMesActual + 1) % diesMesActual;
		}	
		html += '</td>';
		if (i % 7 == 6) {
			html += '</tr>';
		}
	}
	//Botons
	ara = new Date();
	html += '<tr class="BarraBotons">';
	html += '<td colspan="7">';
	html += '<a href="#" onclick="return SelectorData_Value(\'' + id + '\',' + ara.getDate() + ',' + ara.getMonth() + ',' + ara.getFullYear() + ',true)">' + SelectorData_Botons[0] + '</a>';
	html += '|';
	html += '<a href="#" onclick="SelectorData_Value(\'' + id + '\',-1,-1,-1,true)">' + SelectorData_Botons[1] + '</a>';
	html += '</td>';
	html += '</tr>';
	html += '</table>';
	//Calendari
	obj = document.getElementById(id + '_Calendari');
	obj.innerHTML = html; 
}

function SelectorData_HideSelects() {
    var f, e;
    for (f = 0; f < document.forms.length; f++){
        for (e = 0; e < document.forms[f].length; e++) {
            if (document.forms[f].elements[e].options) {
                document.forms[f].elements[e].style.visibility = 'hidden';
            }
        }
    } 
}

function SelectorData_ShowSelects() {
    var f, e;
    for (f = 0; f < document.forms.length; f++){
        for (e = 0; e < document.forms[f].length; e++) {
            if (document.forms[f].elements[e].options) {
                document.forms[f].elements[e].style.visibility = 'visible';
            }
        }
    } 
}
