﻿// Prototyping
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

// Global vars
var regPage = 0;
var pageCount = 0;
var group = [];
var personNr = 0;

// Validate user input
function checkEarlier() {
	var err_msg = "";
	if($("cbOldCompetitor").checked) {
		if($F("edSrchFirstName") == "") {
			err_msg += "Fornavn må fylles ut.\n";
		}
		if($F("edSrchLastName") == "") {
			err_msg += "Etternavn må fylles ut.\n";
		}
		if($F("edSrchBirthyear") == "") {
			err_msg += "Fødselsår må fylles ut.\n";
		}
		else {
			if(isNaN($F("edSrchBirthyear"))) {
				err_msg += "Fødselsår må inneholde kun siffer.\n";
			}
			else if($F("edSrchBirthyear") < 1900 || $F("edSrchBirthyear") > 2010) {
				err_msg += "Fødselsår må inneholde 4 siffer og være mellom årstallet 1900 og 2010.\n";
			}
		}
	}
	return(err_msg);
}

function valid_email(email) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) {
		 return true;
	}
	else {
		return false;
	}
}

// Validate user input
function checkEntry() {
	var err_msg = "";

	if(!$F("edFirstName")) {
		err_msg += "Fornavn må fylles ut.\n";
	}	
	if(!$F("edLastName")) {
		err_msg += "Etternavn må fylles ut.\n";
	}	
	if(!$F("edPostalCode")) {
		err_msg += "Postnummer må fylles ut.\n";
	}	
	if(!$F("edPostalAddress")) {
		err_msg += "Posted må fylles ut.\n";
	}	
	if(!$F("edCountry")) {
		err_msg += "Land må fylles ut\n";
	}	
	if($F("edBirthyear") == "") {
		err_msg += "Fødselsår må fylles ut.\n";
	}
	else {
		if(isNaN($F("edBirthyear"))) {
			err_msg += "Fødselsår må inneholde kun siffer.\n";
		}
		else if($F("edBirthyear") < 1900 || $F("edBirthyear") > 2010) {
			err_msg += "Fødselsår må inneholde 4 siffer og være mellom årstallet 1900 og 2010\n";
		}
	}
	if(!$("edPhoneCellular")) {
		err_msg += "Mobil telefon må fylles ut.\n";
	}	
	if(!$("edPhoneWork")) {
		err_msg += "Telefon arbeid må fylles ut.\n";
	}	
	if(!$("edEmail")) {
		err_msg += "E-post adresse må fylles ut.\n";
	}
	else if(!valid_email($F("edEmail"))) {
		err_msg += "Ikke gyldig e-post adresse!\n";
	} 
	if(!$F("edCompetitionCount")) {
		$("edCompetitionCount").value = 0;		
	} 
	else {
		if(isNaN($F("edCompetitionCount"))){
			err_msg += "Deltatt før må være KUN siffer\n";
		}
		else if($F("edCompetitionCount") < 0) {
			err_msg += "Antall ganger deltatt før må være større eller lik 0.\n";
		}
	}
	
	if($F("selClassId")=="") {
		err_msg += "Du må velge turklasse.\n";
	}

	return (err_msg);
}

function init_registration()
{
    pageCount= $("wizard").childElements().length;
    regPage = 0;
    displayRegPage(regPage);
    enableButtons();
    $("divGroup").hide();
}

function displayRegPage(p)
{
    switch (p)
    {
        case 0: displaySubDiv("wizard", "pnlIntro"); break;
        case 1: displaySubDiv("wizard", "pnlNavn"); break;
        case 2: displaySubDiv("wizard", "pnlFinish"); break;
    }
    displayStepNumber();
    window.scroll(0,0);
}

function enableButtons()
{
    $("btnMiniPrev").disabled = (regPage==0);
    $("btnMiniNext").disabled = (regPage==pageCount-1);
    
//    $("btnAddPersonToGroup").disabled = ($F("edPersonNr")!="");
}

function setPage(p)
{
    if ((p<pageCount) && (p>=0))
    {
        regPage=p;
        displayRegPage(regPage);
    }
    enableButtons();
}

function rxFindPerson(transport)
{
    var strJson = transport.responseText || "";
    if (strJson=="") {
        alert('Navnet ble ikke funnet i databasen.');
        return false;
    }
    var rxData = eval(strJson);
    $("edPersonNr").value="";
    $("edCustomerId").value=rxData.CustomerId;
    $("edFirstName").value=rxData.FirstName;
    $("edLastName").value=rxData.LastName;
    $("edBirthyear").value=rxData.Birthyear;
    $("edAddress1").value=rxData.Address1;
    $("edAddress2").value=rxData.Address2;
    $("edPostalCode").value=rxData.PostalCode;
    $("edPostalAddress").value=rxData.PostalAddress;
    $("edCountry").value=rxData.Country;
    $("edPhonePrivate").value=rxData.PhonePrivate;
    $("edPhoneCellular").value=rxData.PhoneCellular;
    $("edPhoneWork").value=rxData.PhoneWork;
    $("edEmail").value=rxData.Email;
    $("edClub").value=rxData.Club;
    $("edBirkId").value=rxData.BirkId;
    $("edCompetitionCount").value=rxData.CompetitionCount;
/*    var sel = $("selClassId");
    for (var i=0;i<sel.options.length;i++) 
    {
        if (sel.options[i].value==rxData.ClassId) { sel.options[i].selected = true; }
    }*/
    $("edComment").value=rxData.Comment;
    setPage(1);
    enableButtons();
}

function errFindPerson()
{
    alert('Navnet ble ikke funnet i databasen.');
}
    
function btnNextClick()
{
    if (regPage==1) {
        if ((group.length==0) && (checkEntry()!="")) {
            alert("Før du kan gå videre, må du legge inn en eller flere deltagere.");
        } else {
            alert('Før du kan gå videre til neste side, må du trykke på "Ferdig"-knappen.');
        }
        return false;
    }
    setPage(regPage+1);
}

function btnPrevClick()
{
    setPage(regPage-1);
}

function displayStepNumber()
{
    var str="";
    for (i=1;i<=pageCount;i++) {
        if (i==regPage+1) {
            str+=" <span class=\"step_active\">"+i.toString()+"</span>";
        } else {
            str+=" "+i.toString();
        }
    }
    $("spanStepNum").innerHTML = str;
}

function btnAddPersonClick()
{
    $("divGroup").show();
    var err_msg = checkEntry();
    if (err_msg=="") {
        personNr++;

        group.push({"PersonNr":personNr});
        var i = group.length-1;
        savePerson(i);
        displayGroup();
        clearFields();
    } else {
        alert(err_msg);
    }
}

function selectedOption(sel)
{
    var sel = $("selClassId");
    for (var nr=0;nr<sel.options.length;nr++) 
    {
        if (sel.options[nr].selected) { return(sel.options[nr].value); }
    }
    return("0");
}

function savePerson(i)
{
    group[i].CustomerId = $F("edCustomerId");
    var iSelClassId=selectedOption($("selClassId"));
    group[i].FirstName = $F("edFirstName");
    group[i].LastName=$F("edLastName");
    group[i].Birthyear=$F("edBirthyear");
    group[i].Address1=$F("edAddress1");
    group[i].Address2=$F("edAddress2");
    group[i].PostalCode=$F("edPostalCode");
    group[i].PostalAddress=$F("edPostalAddress");
    group[i].Country=$F("edCountry");
    group[i].PhonePrivate=$F("edPhonePrivate");
    group[i].PhoneCellular=$F("edPhoneCellular");
    group[i].PhoneWork=$F("edPhoneWork");
    group[i].Email=$F("edEmail");
    group[i].Club=$F("edClub");
    group[i].CompetitionCount=$F("edCompetitionCount");
    group[i].Comment=$F("edComment");
    group[i].BirkId=$F("edBirkId");
    group[i].Cancer=$F("cbCancer")==1;
    group[i].ClassId=iSelClassId;
}

function btnNewPersonClick()
{
    checkAndSavePerson();
    clearFields();
}

function clearFields()
{
    $("edCustomerId").value="";
    $("edPersonNr").value = "";
    $("edFirstName").value="";
    $("edLastName").value="";
    $("edBirthyear").value="";
    $("edAddress1").value="";
    $("edAddress2").value="";
    $("edPostalCode").value="";
    $("edPostalAddress").value="";
    $("edCountry").value="";
    $("edPhonePrivate").value="";
    $("edPhoneCellular").value="";
    $("edPhoneWork").value="";
    $("edEmail").value="";
    $("edClub").value="";
    $("edCompetitionCount").value="";
    $("edComment").value="";
    $("edBirkId").value="";
    $("cbCancer").checked=false;
    enableButtons();
}

function displayGroup()
{
    $("tblGroup").innerHTML="";
    for (i=0;i<group.length;i++) {
        if (i==0) {
		    str = "<div class=\"groupheading\">";
		    str += "Kontaktperson";
		    str += "</div>";
		    $("tblGroup").innerHTML += str;
        } else if (i==1) {
		    str = "<div class=\"groupheading\">";
		    str += "Øvrige deltakere";
		    str += "</div>";
		    $("tblGroup").innerHTML += str;
        } 
        if (i==0) { group[i].contact=true; } else { group[i].contact=false; }
		str = "<div class=\"split\">";
		str += "<span class=\"left\"><a onclick=\"displayPerson("+i+")\">"+group[i].FirstName+"</a></span>";
		str += "<span class=\"right\"><a onclick=\"deletePerson("+i+")\">[Slett]</a></span>";
		str += "</div>";
		$("tblGroup").innerHTML += str;
    }
}

function deletePerson(nr)
{
    group.splice(nr, 1);
    displayGroup();
    enableButtons();
}

function checkAndSavePerson()
{
    // Check if current person should be saved to structure
    if ($F("edPersonNr")!="") {
        // Find the person in the array
        for (var i=0;i<group.length;i++) {
            if (group[i].PersonNr == $F("edPersonNr")) {
                savePerson(i);
                break;
            }
        }
    }
}

function displayPerson(nr)
{
    checkAndSavePerson();
    $("edCustomerId").value = group[nr].CustomerId;    
    $("edPersonNr").value = group[nr].PersonNr;
    $("edFirstName").value = group[nr].FirstName;
    $("edLastName").value = group[nr].LastName;
    $("edBirthyear").value = group[nr].Birthyear;
    $("edAddress1").value = group[nr].Address1;
    $("edAddress2").value = group[nr].Address2;
    $("edPostalCode").value = group[nr].PostalCode;
    $("edPostalAddress").value = group[nr].PostalAddress;
    $("edCountry").value = group[nr].Country;
    $("edPhonePrivate").value = group[nr].PhonePrivate;
    $("edPhoneCellular").value = group[nr].PhoneCellular;
    $("edPhoneWork").value = group[nr].PhoneWork;
    $("edEmail").value = group[nr].Email;
    $("edClub").value = group[nr].Club;
    $("edCompetitionCount").value = group[nr].CompetitionCount;
    $("edComment").value = group[nr].Comment;
    $("edBirkId").value = group[nr].BirkId;
    $("cbCancer").checked = group[nr].Cancer;
    var sel = $("selClassId");
    var iSelClassId = 0;
    for (var i=0;i<sel.options.length;i++) 
    {
        sel.options[i].selected = (sel.options[i].value==group[nr].ClassId)
    }
    enableButtons();
}

function btnFindPersonClick()
{
    // Sjekk mot database
    new Ajax.Request('ajaxFindPerson.aspx',
    {
        method:'post',
        parameters: {'edSrchFirstName':$F('edFirstName'),
                     'edSrchLastName':$F('edLastName'),
                     'edSrchBirthyear':$F('edBirthyear')},
        onSuccess: rxFindPerson,
        onFailure: errFindPerson
    });
    return false;
}

function blurBirthyear()
{
    if ($F('edAddress1').trim().length==0) {
        // Sjekk mot database
        new Ajax.Request('ajaxFindPerson.aspx',
        {
            method:'post',
            parameters: {'edSrchFirstName':$F('edFirstName'),
                         'edSrchLastName':$F('edLastName'),
                         'edSrchBirthyear':$F('edBirthyear')},
            onSuccess: rxFindPerson
        });
    }
    return false;
}


function rxFinished(transport) 
{
    var str = transport.responseText || "";
    str = str.trim();
    if (str!="FAIL") {
        window.location="Invoice.aspx?kid="+str;
    } else {
        alert("Beklager! Påmeldingssystemet er ute av drift");
    }
}

function btnFinishedClick()
{
    // Dersom editfeltene ikke er i lista, 
    if ($F("edPersonNr")=="") {
        // sjekk om det er verdt å lagre
        if ($F("edFirstName")!="") {
            btnAddPersonClick();
            // Dersom fortsatt tekst i firstname, betyr det at AddPerson har feilet.
            if ($F("edFirstName").trim()!="") {
                return false;
            }
        } else {
            // Alt ok. Trenger ikke lagre
        }
    } else {
        // Dersom editfeltene allerede ER i lista, lagre denne personen
        checkAndSavePerson();
    }
    
    // Sjekk nå om lista er minimum 1 lang
    if (group.length>=1) {
        // Lag objekt som skal sendes
        var obj = {};
        obj.comment = $F("edRegComment");
        obj.group = group;
        new Ajax.Request('ajaxAddOrder.aspx',
        {
            method:'post',
            parameters:
            {
            json:Object.toJSON(obj)
            },
            onSuccess: function(transport) {
                var str = transport.responseText || "";
                if (str.trim().length==14) {
                    window.location = "Invoice.aspx?kid="+str;
                } else {
                    alert("Beklager. En feil oppstod! Kan ikke gå videre.");
                }
            },
            onFailure: function () { alert("Beklager. En feil oppstod. Kan ikke gå videre."); }
        });
    } else {
        alert("Vennligst legg inn minst et navn før du går videre!");
    }
}


