/*
timCMS Form Generator javascript functions
Copyright (c) team in medias (www.inmedias.de)
Author - Igor Dobrovolskyi (i.dobrovolskyi@inmedias.de)
*/

function isEmail(string) {
	return string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)+[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1
		&& string != "";
}

function isFloat(string) {
	if (string == "") return false;	
	var n = Number(string);
	return !isNaN(n);
}

function isPositiveFloat(string) {
	if (string == "") return false;	
	var n = Number(string);
	if (isNaN(n)) return false;
	return n >= 0;
}

function isInteger(string) {
	return isFloat(string) && string.indexOf(".") < 0;
}

function isPositiveInteger(string) {
	if (string == "" || string.indexOf(".") >= 0) return false;	
	var n = Number(string);
	if (isNaN(n)) return false;
	return n >= 0;
}

function isGreateZeroInteger(string) {
	if (string == "" || string.indexOf(".") >= 0) return false;	
	var n = Number(string);
	if (isNaN(n)) return false;
	return n > 0;
}

function isDate(string) {
	if (string == "") return false;
	isplit = string.indexOf('/');
	if (isplit == -1) isplit = string.indexOf('.');
	if (isplit == -1 || isplit == string.length) return false;
	sDay = string.substring(0, isplit);
	monthSplit = isplit + 1;
	isplit = string.indexOf('/', monthSplit);
	if (isplit == -1) isplit = string.indexOf('.', monthSplit);
	if (isplit == -1 ||  (isplit + 1 )  == string.length) return false;
	sMonth = string.substring((sDay.length + 1), isplit);
	sYear = string.substring(isplit + 1);

	if (!isGreateZeroInteger(sYear)) return false;
	if (!isGreateZeroInteger(sMonth)) return false;
	if (!isGreateZeroInteger(sDay)) return false;

	var day = Number(sDay);
	var month = Number(sMonth);
	var year = Number(sYear);
	
	if (month < 1 || month > 12) return false;
	if (day > 31) return false;
	if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) return false;
	if (month == 2)
		if (year % 4 == 0 || (year % 100 > 0 && year % 1000 == 0)) {
			if (day > 29) return false;
		}
		else {
			if (day > 28) return false;
		}
	
	return true;
}