// JavaScript Document
toTarget = function(obj, target, funct){
    var target = document.getElementById(target);
    obj[i].onclick = function(target){
        switch(funct){
            case "focus":
                target.focus();
                break;
            case "check":
                target.setAttribute("checked", "checked");
                break;
        }
    };
};

function trim(value) {
    return value.replace(/\s+$|^\s+/g,"");
}



function getLabelByFor(value){
    var labels = document.getElementsByTagName("label");
    for(var i = 0; i < labels.length; i++){
        if(labels[i].getAttribute("for") && labels[i].getAttribute("for") == value ){
            return labels[i];
        }
        else if(labels[i].htmlFor && labels[i].htmlFor == value){
            return labels[i];
        }
    }
}

window.onload = function(){

    addButton();
    deleteButton("1");
    inputsActivate(false,'t1',true);
    // copio tutte le province in un altro array che mantengo intatto in memoria
    allprovince = new Array();
    province = document.getElementById('provincia').getElementsByTagName("option");
    for(var i = 0; i < province.length; i++){
        allprovince[i] = province[i];
    }
    // svuoto le provincie selezionabili (solo se non ho già inviato il form) mantenendo la prima opzione con valore nullo
	if(document.getElementById("regione").options[0].selected == false){
        //non va bene: var selectedProv = document.getElementById('provincia').options.selectedIndex;
        var selectedReg = document.getElementById('regione').options.selectedIndex;
        for(a = province.length; a > 0; a--){
        	document.getElementById('provincia').options[a] = null;
        }
        filtra_province(selectedReg);
        for(a = 0; a < province.length; a++){
        	if(document.getElementById('provincia').options[a].value == selectedProv){
                document.getElementById('provincia').options[a].selected = true;
            }
        }
    }
	else{
       for(a = province.length; a > 0; a--){
		  document.getElementById('provincia').options[a] = null;
	   }
    }

    // validazione del form
    form = document.getElementById("signup-form");
    form.onsubmit = function(){
        elements = this.elements;
        for(var i = 0; i < elements.length; i++){
            var cur = elements[i];
            var value = trim(cur.value);
            if(cur.getAttribute("type") && cur.getAttribute("type") == "checkbox" && cur.checked == false){
                var msg = "";
                switch(cur.name){
                    case "maggiorenne":
                        msg = "Per iscriverti devi dichiarare di essere maggiorenne";
                        break;
                    case "condizioni":
                        msg = "Per iscriverti devi accettare le condizioni di utilizzo e il trattamento dei dati personali";
                        break;
                    case "regolamento":
                        msg = "Per iscriverti devi accettare il regolamento della rassegna";
                        break;
                }
                alert(msg);
                cur.focus();
                return false;
                exit;
            }
            // campi NON obbligatori
            var campi_facoltativi = new Array('site');
            var campi_facoltativi_base = new Array('nome1', 'cognome1', 'artistname', 'beginyear', 'genre', 'strumentomusicale1');
            var skip_nonartista = (document.getElementById('hiddenartista').value == 0) && find_in_array(cur.getAttribute("id"), campi_facoltativi_base);
            var cur_facoltativo = find_in_array(cur.getAttribute("id"), campi_facoltativi);
 			var cur_disabled = (cur.getAttribute("disabled") == "disabled" || cur.getAttribute("disabled") == true || cur.tagName == "BUTTON");

            // check
            if(value == "" && !cur_disabled && !skip_nonartista && !cur_facoltativo) {
                var nome = getLabelByFor(cur.getAttribute("id")).firstChild.data;
                alert("Riempi il campo '"+nome+"'");
                cur.focus();
                return false;
                exit;
            }
        }
        this.submit();
    }

};

var memberCounter = 0;
var maxMember = 50; //TODO: configurable

addTable = function(){
    if((memberCounter+1)>maxMember){
        alert("Numero massimo membri raggiunto");
        return false;
    }
    var cloned = "t";
    //var deleteB = "deleteMember";
    var tableContainer = "membersContainer";
    var tableCounter = memberCounter;

    var table = document.getElementById(cloned+"1").cloneNode(true);
    var newI = table.getElementsByTagName("input");
    var newT = table.getElementsByTagName("textarea");

    tableCounter ++;
    table.setAttribute("id", cloned+tableCounter);
    inputsIncrement(table.getElementsByTagName("input"), tableCounter);
    deleteValues(table.getElementsByTagName("input"));
    inputsIncrement(table.getElementsByTagName("label"), tableCounter);
    //deleteValues(table.getElementsByTagName("textarea"));
    inputsIncrement(table.getElementsByTagName("select"), tableCounter);
    deleteValues(table.getElementsByTagName("select"));
    tr = table.getElementsByTagName("a")[0].parentNode.parentNode.parentNode;
    inputsIncrement(tr, tableCounter);
    checkIncrement();
    document.getElementById(tableContainer).appendChild(table);
    deleteButton(tableCounter);
    return tableCounter;
}

deleteValues = function(incrementing){
    for(var i = 0; i < incrementing.length; i++){
        incrementing[i].value = '';
    }
}

addButton = function(){
    var button = document.getElementById("addmember");
    button.onclick = function(){
        if(memberCounter == 0){
            inputsActivate(true);
            document.getElementById("t1").style.display = 'block';
            memberCounter++;
        }
        else{
            memberCounter = addTable();
        }
        return false;
    }
}

deleteButton = function(num){
    var button = document.getElementById("t"+num).getElementsByTagName("a")[0];
    button.onclick = function(num) {
        if(memberCounter!=1){
            this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode.parentNode.parentNode.parentNode);
            memberCounter--;
            checkIncrement();
            return false;
        }
        else{
            inputsActivate(false);
            this.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = 'none';
            memberCounter--;
            return false;
        }
    }
}

checkIncrement = function(){
    var prefix = "t";
    var elements = document.getElementById("membersContainer").getElementsByTagName("table");
    //first element changes too
    for(var i = 0; i < elements.length; i++){
        var idNum = i + 1;
        if(elements[i].getAttribute("id") != prefix+idNum){
            elements[i].setAttribute("id", prefix+idNum);
            inputsIncrement(elements[i].getElementsByTagName("input"), idNum);
            inputsIncrement(elements[i].getElementsByTagName("label"), idNum);
            inputsIncrement(elements[i].getElementsByTagName("select"), idNum);
        }
    }
}

inputsIncrement = function(incrementing, numID){
    if(incrementing.tagName && incrementing.tagName == "TR"){
        if(incrementing.id.charAt(incrementing.id.length-2)>=0){
            var inputname = incrementing.id.substr(0, incrementing.id.length-2);
        }
        else {
            var inputname = incrementing.id.substr(0, incrementing.id.length-1);
        }
        incrementing.setAttribute("id", inputname+numID);
        incrementing.style.display = "block";
    }
    else{
        for(var i = 0; i < incrementing.length; i++){
            if(incrementing[i].name){
                if(incrementing[i].name.charAt(incrementing[i].name.length-2)>=0){
                    var inputname = incrementing[i].name.substr(0, incrementing[i].name.length-2);
                }
                else {
                    var inputname = incrementing[i].name.substr(0, incrementing[i].name.length-1);
                }
                incrementing[i].setAttribute("name", inputname+numID)
            }
            if(incrementing[i].id){
                if(incrementing[i].id.charAt(incrementing[i].id.length-2)>=0){
                    var inputname = incrementing[i].id.substr(0, incrementing[i].id.length-2);
                }
                else {
                    var inputname = incrementing[i].id.substr(0, incrementing[i].id.length-1);
                }
                incrementing[i].setAttribute("id", inputname+numID);
            }
            if(incrementing[i].getAttribute("for")){
                if(incrementing[i].getAttribute("for").charAt(incrementing[i].getAttribute("for").length-2)>=0){
                    var inputname = incrementing[i].getAttribute("for").substr(0, incrementing[i].getAttribute("for").length-2);
                }
                else {
                    var inputname = incrementing[i].getAttribute("for").substr(0, incrementing[i].getAttribute("for").length-1);
                }
                incrementing[i].setAttribute("for", inputname+numID);
            }
        }
    }
}

inputsActivate = function(action, id, firsttime){
    if(!id) var id = "t1";
    var container = document.getElementById(id);
    var elements = container.getElementsByTagName("input");
    for(var i = 0; i < elements.length; i++){
        if(action == false){
            if (!firsttime || !elements[i].value) elements[i].setAttribute("disabled", "disabled");
        }
        else{
            elements[i].removeAttribute("disabled");
        }
    }
}

function find_in_array(needle, array) {
    var ret = false;
    for (var i = 0; i < array.length ; i++) {
        if (array[i] == needle) {
            ret = true;
        }
    }
    return (ret);
}

function filtra_province(id_regione) {
    var sel_provincia = document.getElementById('provincia');
	var num_option = sel_provincia.options.length;
	var newOptions = new Array(); // nuovo array contenente le nuove opzioni
	newOptions[0] = new Option( allprovince[0].text, allprovince[0].value ); // creo la prima opzione con valore nullo
    //cancello le provincie se ce ne sono
	for(a = num_option; a >= 0; a--){
		sel_provincia.options[a] = null;
	}
	//trovo le provincie che mi servono e le salvo nell'array precedentemente creato
	if(id_regione != ""){
        for(var i = 0; i < allprovince.length; i++) {
            found = find_in_array(allprovince[i].getAttribute("value"), regioni[id_regione]);
            if(found && allprovince[i].value != "") {
                newOptions.push(new Option( allprovince[i].text, allprovince[i].value));
            }
        }
    }
    //popolo la select con le nuove provincie
	for(var i = 0; i < newOptions.length; i++) {
        sel_provincia.options[i] = newOptions[i];
    }
}
function doAnnullaArtista() {
	document.getElementById('profiloArtista').style.display = 'none';
	document.getElementById('annullaArtista').parentNode.parentNode.parentNode.getElementsByTagName('p')[1].style.display = 'block';
	document.getElementById('hiddenartista').value = 0;
	document.getElementById('attivaArtista').style.display = 'block';
	//document.getElementById('descrizioneArtista').style.display = 'block';
}