/* ACN (c) Rens van Dongen, Cortana 2008 <acnsite@mosymuis.nl> */

function goGebruikers(modeIsAdd)
{
	checkFieldLengthsArr = [
		['userVoornaam',lang['user_voornaam'], 3],
		['userAchternaam',lang['user_achternaam'], 3],
		['userGebruikersnaam',lang['user_gebruikersnaam'], 6],
		['userEmail',lang['user_email'], 8]
	];

	if ( modeIsAdd || varGet('#userWachtwoord1').length > 0 || varGet('#userWachtwoord2').length > 0 )
	{
		checkFieldLengthsArr.push(['userWachtwoord1',lang['user_wachtwoord'], 6], ['userWachtwoord2',lang['user_wachtwoordherhaald'], 6])
	}

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goKlanten(modeIsAdd)
{
	checkFieldLengthsArr = [
		['userBedrijfsnaam',lang['user_bedrijfsnaam'], 2],
		['userVoornaam',lang['user_voornaam'], 2],
		['userAchternaam',lang['user_achternaam'], 2],
		['userGebruikersnaam',lang['user_gebruikersnaam'], 6]
	];

	if ( modeIsAdd || varGet('#userWachtwoord1').length > 0 || varGet('#userWachtwoord2').length > 0 )
	{
		checkFieldLengthsArr.push(['userWachtwoord1',lang['user_wachtwoord'], 6], ['userWachtwoord2',lang['user_wachtwoordherhaald'], 6])
	}

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		if ( varGet('#userAccountmanager') == 0 )
		{
			showErrorMsg(lang['user_accountmanager']+' '+lang['message_nietingevuld'], '');
			markErrorField("userAccountmanager");
		}
		else
		{
			return true;
		}
	}
	return false;
}

function goMeting()
{
	if ( varGet('#afspraakId') == 0 )
	{
		showErrorMsg(lang['afspraken_afspraak']+' '+lang['message_nietingevuld'], '');
		markErrorField("afspraakId");
	}
	else
	{
		return true;
	}

	return false;
}

function goLogin()
{
	if ( varGet("#loginUser") != lang['login_username'] && $("#loginPass").val() != lang['login_password'] )
	{
		if ( checkFieldLengths([['loginUser',lang['login_username'],3],['loginPass',lang['login_password'],6]], 'login') )
		{
			$("#loginPassSHA1").val(hex_sha1(varGet("#loginPass")+passwordSalt));

			$("#loginPass").val('');
			$("#doLogin").val(lang['login_inloggen']+'...').attr('disabled', true);

			$("#loginForm").submit();
		}
	}
	else
	{
		markErrorField("loginUser");
		markErrorField("loginPass");
		showErrorMsg(lang['session_form'], 'login');
	}
	return false;
}

function goKlantZoeken()
{
	if ( varGet('#zoekBedrijf') || varGet('#zoekNaam') )
	{
		return true;
	}
	else
	{
		showErrorMsg(lang['message_klantenzoeken'], '');
		markErrorField('zoekNaam');
		markErrorField('zoekBedrijf');

		return false;
	}
}

function goWatersysteemZoeken()
{
	if ( varGet('#systeemId') && varGet('#systeemId') != 0 )
	{
		return true;
	}
	else
	{
		showErrorMsg(lang['wsysteem_zoeken'], '');
		markErrorField('zoekBedrijf');
		markErrorField('zoekWatersysteem');

		return false;
	}
}

function goZoeken()
{
	if ( checkFieldLengths([['searchQuery',lang['zoeken_trefwoorden'], 2]], 'zoeken') )
	{
		return true;
	}
	return false;
}

function goWebsitePagina()
{
	checkFieldLengthsArr = [
		['paginaTitelNl',lang['website_titel'], 5],
		['paginaIntroNl',lang['website_intro'], 5]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goWebsiteContent()
{
	checkFieldLengthsArr = [
		['contentTitelNl',lang['website_titel'], 5]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		if ( varGet('#paginaId') == 0 )
		{
			showErrorMsg(lang['website_pagina']+' '+lang['message_nietingevuld'], '');
			markErrorField("paginaId");
		}
		else
		{
			return true;
		}
	}
	return false;
}

function goFotos()
{
	checkFieldLengthsArr = [
		['fileTitel',lang['upload_titel'], 5]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		if ( varGet('#klantId') == 0 )
		{
			showErrorMsg(lang['user_klant']+' '+lang['message_nietingevuld'], '');
			markErrorField("klantId");
		}
		else
		{
			return true;
		}
	}
	return false;
}

function goAfspraak()
{
	checkFieldLengthsArr = [];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		if ( varGet('#systeemId') == 0 )
		{
			showErrorMsg(lang['wsysteem_watersysteem']+' '+lang['message_nietingevuld'], '');
			markErrorField("systeemId");
		}
		else
		{
			return true;
		}
	}
	return false;
}

function goWatersysteem()
{
	checkFieldLengthsArr = [
		['systeemNaamNL',lang['wsysteem_naam'], 3],
        ['systeemNaamEN',lang['wsysteem_naam'], 3],
	];
	// hier moeten we eigenlijk ook de waterstromen checken, maar da's vervelend in JS

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		if ( varGet('#klantId') == 0 )
		{
			showErrorMsg(lang['user_klant']+' '+lang['message_nietingevuld'], '');
			markErrorField("klantId");
		}
		else
		{
			return true;
		}
	}
	return false;
}

function goWaterstroom()
{
	checkFieldLengthsArr = [
		['stroomNaamNL',lang['wstroom_naam'], 3],
        ['stroomNaamEN',lang['wstroom_naam'], 3]

	];


	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goSjabloon()
{
	checkFieldLengthsArr = [
		['sjabloonNaam',lang['sjabloon_naam'], 3]
	];

    if (!checkBerekenFormules()) {
        return false;
    }

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goParameter()
{
	checkFieldLengthsArr = [
		['parameterNaamNL',lang['parameter_naam'], 5],
        ['parameterNaamEN',lang['parameter_naam'], 5],
		['parameterEenheid',lang['parameter_eenheid'], 1]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goNieuws()
{
	checkFieldLengthsArr = [
		['nieuwsTitelNl',lang['nieuws_titel'], 5]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goMailinglist()
{
	checkFieldLengthsArr = [
		['mailinglistOnderwerp',lang['mailinglist_onderwerp'], 5]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goNotitie(notitieId)
{
	checkFieldLengthsArr = [
		['notitieOnderwerp'+notitieId,lang['message_onderwerp'], 3]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, '') )
	{
		return true;
	}
	return false;
}

function goInformatieAanvraag()
{
	checkFieldLengthsArr = [
		['contactNaam',lang['site_uwnaam'], 5],
		['contactEmail',lang['site_uwemail'], 8]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, 'informatieAanvraag') )
	{
		return true;
	}
	return false;
}

function goContact()
{
	checkFieldLengthsArr = [
		['contactNaam',lang['site_uwnaam'], 5],
		['contactEmail',lang['site_uwemail'], 8],
		['contactBericht',lang['site_bericht'], 10]
	];

	if ( checkFieldLengths(checkFieldLengthsArr, 'contact') )
	{
		return true;
	}
	return false;
}

function goNieuwsbrief()
{
	if ( varGet("#nieuwsbriefEmail") == lang['site_uwemail'] )
	{
		markErrorField("nieuwsbriefEmail");
		showErrorMsg(lang['site_uwemail']+' '+lang['message_nietingevuld'], 'nieuwsbrief');
	}
	else if ( checkFieldLengths([['nieuwsbriefEmail',lang['site_uwemail'], 8]], 'nieuwsbrief') )
	{
		return true;
	}
	return false;
}

function _updateValue(tablename, previousNum, newValue) {
    var toSearch = false;

    $('#' + tablename + ' tr').each(function() {
        toSearch = $(this).find("td").eq(0).html();
        if (toSearch == previousNum) {
            $(this).find("td").eq(0).html(newValue);
            toSearch = true;
        }
    });
    return toSearch;
}

function moveUp(tablename, item) {
    var currentVal = parseInt(item.parentNode.parentNode.children[0].innerHTML);
    if (currentVal == 0) {
        // Can't move the higest value up.
        return;
    }

    if (_updateValue(tablename, currentVal-1, currentVal)) {
        item.parentNode.parentNode.children[0].innerHTML = currentVal -1;
    }

    $('#' +tablename).tablesorter({
		// sort on the first column and third column, order asc
		sortList: [[0,0]]
	});
}


function moveDown(tablename, item) {
    var currentVal = parseInt(item.parentNode.parentNode.children[0].innerHTML);
    var rowCount = $('#' + tablename + ' >tbody tr').length-1;


    if (rowCount == currentVal) {
        // Can't move the lowest value down.
        return;
    }

    if (_updateValue(tablename, currentVal+1, currentVal)) {
        item.parentNode.parentNode.children[0].innerHTML = currentVal +1;
    }

    $('#' + tablename).tablesorter({
		// sort on the first column and third column, order asc
		sortList: [[0,0]]
	});
}

var dropdownTopID=new Array();

function addDropdownItem(tablename, parameter_id) {
    var rowCount = dropdownTopID[tablename];

    // Add table row.
    // Copied from dropdownparameter::makeDataTable().
    $('#'+ tablename +' > tbody:last').append('<tr>' +
        '<td id="num_'+ rowCount + '">'+rowCount+'</td>' +
        '<td><input type="checkbox" name="parameter-' + parameter_id + '_waarschuwing_' + rowCount +' id="parameter-' + parameter_id + '_waarschuwing_' + rowCount +' tabindex=1">' +
        ' <input class="text choicefieldleft" name="parameter-' + parameter_id + '_choice_nl_' + rowCount +'" id="parameter-' + parameter_id + '_choice_nl_' + rowCount +'" maxlength="100" style="width:30px;">'+
        '</td>' +
        '<td>' +
        '<input class="text choicefieldright" name="parameter-' + parameter_id + '_choice_en_' + rowCount +'" id="parameter-' + parameter_id + '_choice_en_' + rowCount +'" maxlength="100" style="width:30px;">' +
        ' <img height="14" src="images/icons/1uparrow.png" onclick="moveUp(\''+ tablename + '\', this);"><img height="14" src="images/icons/1downarrow.png"  onclick="moveDown(\''+ tablename + '\', this);"><img height="14" src="images/icons/cancel.png" onclick="rowDelete(\''+ tablename + '\', this);">' +
        '</td>'+
        '</tr>');


    $("#" +  tablename + " td:nth-child(1),th:nth-child(1)").hide();
    dropdownTopID[tablename] = rowCount  + 1;

}

function rowDelete(tablename, item) {
    // Find the parent and delete it.
    // img  td       tr
    $(item).parent().parent().remove();

}
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function selectWaterstroomRaport(client) {
    var select = $('#waterstroomid');
    select.text('');
    select.append($("<option></option>").attr("value",0).text("*"));
    if (isNumber(client) && client != 0) {
        // Clients
        $.each(rapportArr[client], function (inner_key, inner_value) {
            // Waterstromen of regel client
            if (selectedwaterstroomid == inner_key) {
                // geselecteerd
                if (inner_key != 'client') {
                   select.append($("<option></option>").attr('selected', 'selected').attr("value",inner_key).text(inner_value['naam']));
                }
            } else {
                // niet geselecteerd
                if (inner_key != 'client') {
                   select.append($("<option></option>").attr("value",inner_key).text(inner_value['naam']));
                }

            }
        });
    } else {
        $.each(rapportArr, function (key, value) {
            // Clients
            $.each(value, function (inner_key, inner_value) {
                // Waterstromen of regel client
                if (inner_key != 'client') {
                    if (selectedwaterstroomid == inner_key) {
                        select.append($("<option></option>").attr('selected', 'selected').attr("value",inner_key).text(inner_value['naam']));
                    } else {

                    }
                } else {
                    select.append($("<optgroup>").attr("label",inner_value));
                }
            });
        });
    }
}


function copyBerekenToInput(item) {
    var value = $("#"+item+"-select option:selected").text();
    var currentValue = $("#"+item+"_formule").val(); // <- formule tekst
    $("#"+item+"_formule").val(currentValue + " [" + value + "] " );
    $("#"+item+"_formule").focus();
}


/** Check dmv een ajaxcall of de ingevulde formule wel geldig is.
  */
function checkBerekenInput(item) {
    var currentValue = $("#"+item+"_formule").val(); // <- formule tekst
    var inputsuccess = null;
    var postData = {data: currentValue , name: item };

    $.ajax({
        type: "POST",
        url: "/ajaxcall.php?mode=parameterCheck&action=check&parameter=berekeningparameter",
        data: postData,
        dataType: "json",
        async: false,   // Async omdat de checkBerekenFormules meteen reactie wil.
        success: function(msg){
            if (msg.succes == true) {
                $("#"+item+"-msg").html("<font color='green'>" + msg.errorMsg + "</font>");
                inputsuccess = true;
            } else {
                $("#"+item+"-msg").html("<font color='red'>" + msg.errorMsg + "</font>");
                inputsuccess = false;
            }
        }
    });
    return inputsuccess;
}

function checkBerekenFormules() {
    // Check alle berekeningparameters
    var success = true;

    $(':regex(id,^(parameter-[0-9]+_formule))').each(function(){
        // this.name = formule-\d-name
        var naam= this.name.replace('\_formule', '');
        var id = naam.replace("parameter-", '');
        // Dit had oko heel mooi met een regex gekunt, maar we hadden er toch al een replace.

        // Gebruiken we deze parameter?
        if ($('#parameter-'+id+'_tonen_1.checkbox').is(':checked') == true) {
            // jep. Please check.
            if (checkBerekenInput(naam) == false) {
                success = false
            }
        }
      });
    return success;
}


function copyOpmerkingen() {
    var value = $("#metingOpmerkingenVorige").html();
    tinyMCE.execInstanceCommand('metingOpmerkingen', 'mceSetContent', false, value);
    tinyMCE.triggerSave();
}

function copyMemo() {
    var value = $("#metingen_memoVorige").html();
    tinyMCE.execInstanceCommand('metingMemo', 'mceSetContent', false, value);
    tinyMCE.triggerSave();

}

