
//
// Jquery functions.
//
(function($) {
    // VERTICALLY ALIGN FUNCTION
    $.fn.vAlign = function() {
        return this.each(function() {
            var ah = $(this).height();
            var ph = $(this).parent().height();
            var mh = (ph - ah) / 2;
            if (mh < 0) {
                mh = 0;
            };
            $(this).css('padding-top', mh);
        });
    };
})(jQuery);

//
// JavaScript functions
//

String.prototype.trim = function() {
    return jQuery.trim(this)
};


// RemoveSpaces
function removeSpaces(string) {
    var tstring = "";
    string = '' + string;
    splitstring = string.split(" ");
    for (i = 0; i < splitstring.length; i++)
        tstring += splitstring[i];
    return tstring;
}


// Invoer controlers.

// Check e-mail.
function funcheck_email(email_field) {
    var str = email_field
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,}(?:\.[a-z]{2})?)$/i
    if (filter.test(str))
        return (true)
    else {
        return (false)
    }
}

//Controleer postcode
function funcheck_Postcode(postcode) {
    postcode = removeSpaces(postcode);
    match = /^\d{4}[a-zA-Z]{2}$/i.exec(postcode);
    if (match) {
        return true;
    }
    else {
        return false;
    }

}

// Controleer Telefoonnummer, mogen wel voorloopnullen bevaten
function funcheck_Telefoonnr(telefoonnr) {
    if (telefoonnr.trim() != "") {
        var match = /^\d+$/i.exec(telefoonnr);
        if (match) {
            return true;
        }
        else {
            return false;
        }
    }
}	

// Test geheel getal, mogen geen voorloopnullen bevaten
function funcheck_GeheelGetal(waarde) {
    if (waarde == parseInt(waarde)) {
        return (true);
    }
    else {
        return (false);
    }
}

// Test numeriek, mogen geen voorloopnullen bevaten
function funcheck_Nummeriek(waarde) {
    if (waarde == parseFloat(waarde)) {
        return (true);
    }
    else {
        return (false);
    }
}


// BEGIN ValidateDatum
// funIsLeeg behorende bij funValidateDatum
function funIsLeeg(strVeld) {
    if (String(strVeld).replace(/(^\s+)|(\s+$)/g, '').length > 0) {
        return false;
    }

    return true;
}

// Test op geldige datum
function funValidateDatum(strDatum_DD_in, strDatum_MM_in, strDatum_JJJJ_in) {

    if ((funIsLeeg(strDatum_DD_in) == true)
		|| (funIsLeeg(strDatum_MM_in) == true)
		|| (funIsLeeg(strDatum_JJJJ_in) == true)) {
        return false;
    }

    // de functie getmonth begint te tellen bij de 0 en niet bij 1!!!       
    strDatum_MM_in = strDatum_MM_in - 1;

    var test = new Date(strDatum_JJJJ_in, strDatum_MM_in, strDatum_DD_in);

    if ((strDatum_JJJJ_in == test.getFullYear())
		&& (strDatum_MM_in == test.getMonth())
		&& (strDatum_DD_in == test.getDate())) {
        return true;
    }

    return false;
}
// EINDE ValidateDatum


// BEGIN Datum control

// Remarks:
// Datum control met maand, dag, jaar
// op te starten via date_showdate
//
// de volgende function zijn private:
//  date_addZero
//  date_updateDate

var date_delimit = '-';

function date_showdate(name, day, month, year, minyear, maxyear) {
    var str = '<input type="hidden" name="' + name + '" id="' + name + '" value="' + date_addZero(day) + date_delimit + date_addZero(month) + date_delimit + year + '" />';

    str += date_getSelect(name + '_dag', 1, 31, day);
    str += date_getSelect(name + '_maand', 1, 12, month);
    str += date_getSelect(name + '_jaar', minyear, maxyear, year);

    document.write(str);
}

function date_addZero(str) {
    str = String(str);
    if (str.length == 1) { return "0" + str; }
    return str;
}


// Bijwerken van input type="hidden" name="
function date_updateDate(o) {
    var nm = o.name;
    var parts = nm.split("_");

    var inp = document.getElementById(parts[0]);

    var dateParts = inp.value.split(date_delimit);

    switch (parts[1]) {
        case "dag": dateParts[0] = date_addZero(o.value); break;
        case "maand": dateParts[1] = date_addZero(o.value); break;
        case "jaar": dateParts[2] = o.value; break;
    }

    inp.value = dateParts.join(date_delimit);

}


// Uitlezen en initieel waarden vullen
function date_getSelect(nm, min, max, curr) {
    var str = '<select name="' + nm + '" OnChange="date_updateDate(this);">';
    str += '<option value="">&nbsp;</option>';

    for (var i = min; i <= max; i++) {
        str += '<option';

        if (i == curr) {
            str += ' selected="selected"';
        }

        str += ' value="' + i + '"';

        str += '>' + i + '</option>';
    }

    str += '</select>';
    return str;
}
// EINDE Datum control
