ï»¿
// designed by iFactory, Würzburg, Germany       //

// Copyright 2000-2008 by iFactory               //
// All rights reserved.                          //
// Duplication in any form or any use of this    //
// script or parts of it are strictly prohibited //
// for private and commercial use.               //

// Module for checking content of forms          //


/**********************************************************
 * constants
 **********************************************************/



/**********************************************************
 * variables
 **********************************************************/



/****************************************************************
 * functions
 ****************************************************************/



/****************************************************************
 * classes
 ****************************************************************/

var Parse = {

	/**
	 * checks number format
	 * @para    val   field value
	 * @para    len   min. length
	 * @return        0 - ok, 1 - empty, 3 - too short
	 */
	chr: function (val,len) {
		if (val == '') return 0x1;
		if (val.length < len) return 0x3;
		return 0x0;
	},

	/**
	 * checks number format
	 * @para    val   field value
	 * @para    len   min. length
	 * @return        0 - ok, 1 - empty, 2 - wrong, 3 - too short
	 */
	number: function (val,len) {
		if (val == '') return 0x1;
		if (val.length < len) return 0x3;
		if (!val.match(/^\d+$/)) return 0x2;
		return 0x0;
	},



	/**
	 * checks user format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	user: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^[a-z][a-z0-9]*\.?[a-z0-9]+$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks password format
	 * @para    val   field value
	 * @para    len   min. length
	 * @return        0 - ok, 1 - empty, 2 - wrong, 3 - too short, 4 - no parameter length
	 */
	pass: function (val,len) {
		if (!len) len = 4;
		if (val == '') return 0x1;
		if (val.length < len) return 0x3;
		if (!val.match(/^\w+$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks full name format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	name: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]+([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w][- ]|\. ))*[ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]+([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]|\.) [ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}([- ][ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,})*$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks first name format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	firstname: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]+([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w][- ]|\. ))*[ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]+([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]|\.)$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks prename format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	surname: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^[ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}([- ][ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,})*$/)) return 0x2;
		return 0x0;
	},



	/**
	 * checks date format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	date: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^(0?[1-9]|[1-2]\d|3[01])\.(0?[1-9]|1[012])\.(19|20)?\d\d$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks time format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	time: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^[0-2]?\d:[0-5]\d(:[0-5]\d)?$/)) return 0x2;
		return 0x0;
	},



	/**
	 * checks address format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	address: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}\.?[- ]?)*([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}\.?)( \d+\w?)*$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks zip format
	 * @para    val   field value
	 * @para    len   min. length
	 * @return        0 - ok, 1 - empty, 2 - wrong, 3 - too short
	 */
	zip: function (val) { //,len=5) {
		return Parse.number(val,5);
	},

	/**
	 * checks place format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	place: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^([ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}\.?)+([- \/]?[ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]+\.?)*$/)) return 0x2;
		return 0x0;
	},



	/**
	 * checks domain format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	domain: function (val) {
		if (val == '') return 0x1;
/*
		val = val.split('.');
		if (val.length < 2) return 0x2;
		for (var i=0; i<val.length; i++)
			if (!val[i].match(/^[-ÃŸÃ¶Ã¤Ã¼Ã„Ã–ÃœÃ©Ã¨Ã«Ã‰Ãˆ\w]{2,}$/)) return 0x2;
		if (val[val.length-1].length > 6) return 0x2;
*/
		if (!val.match(/^([-ÃŸÃ¶Ã¤Ã¼Ã„Ã–Ãœï»¿Ã¤Ã¶Ã¼Ã„Ã–ÃœÃŸÃ©Ã¨ÃªÃˆÃˆÃŠ\w]{2,}\.)+\w{2,6}$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks URL format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	url: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^(https?:\/\/)?([-\w]{2,}\.)+\w{2,6}(\/[-.\w]*)*([#\?]\w+(=\w+)*(&\w+(=\w+)*)*)?$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks mail format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	mail: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^([-\w]+\.)*([-\w]+)+@([-\w]{2,}\.)+\w{2,6}$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks phone format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	phone: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^(\+\d+)?( ?\(\d+\) ?|\/?\d{2,}\/|( \/ )?\d{2,} \/ |[- ])?\d{2,}(-\d+| \d{2,})*$/)) return 0x2;
		return 0x0;
	},



	/**
	 * checks bank code format
	 * @para    val   field value
	 * @return        0 - ok, 1 - empty, 2 - wrong
	 */
	bank: function (val) {
		if (val == '') return 0x1;
		if (!val.match(/^\d{8}$/)) return 0x2;
		return 0x0;
	},

	/**
	 * checks bank account format
	 * @para    val   field value
	 * @para    len   min. length
	 * @return        0 - ok, 1 - empty, 2 - wrong, 3 - too short
	 */
	account: function (val,len) {
		if (!len) len = 3;
		if (val == '') return 0x1;
		if (val.length < len) return 0x3;
		if (!val.match(/^\d+$/)) return 0x2;
		return 0x0;
	}
};
