/**
 * JavaScript Funktionen zur Just-in-Time Prüfung der Angaben. Für jedes Format
 * wird eine eigene Funktion angelegt, die später in den Popup Fenstern genutzt
 * wird.
 * 
 * @author Philipp Schmiedel
 */

var indicator_img = "img/errorindicator.png";

/**
 * Prüft die Korrektheit einer Telefonnummer nach DIN 5008 und gibt Meldung an
 * den übergebenen Indikator<br>
 * Bsp: 0123 456789
 * 
 * @param string
 *            zu prüfende Nummer
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkTelFormat(string, indicator) {
	var result = string.search(/^\d+ \d+$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp 0123 44567)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft die Korrektheit eines Datums Bsp: 24.11.2001
 * 
 * @param string
 *            zu prüfendes Datum
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkDateFormat(string, indicator) {
	var result = string.search(/^[0-3]\d\.[0-1]\d\.[1-2]\d\d\d$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp 24.11.2001)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Pürft ob Preis das richtige Format hat Bsp: 12345,59
 * 
 * @param string
 *            zu prüfender Preis
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkPriceFormat(string, indicator) {
	var result = string.search(/^\d+,\d{2}$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp 1234,56)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft ob Baujahr das richtige Format für die Datenbank hat (MM JJJJ)
 * 
 * @param string
 *            zu prüfendes Baujahr
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkBaujahrFormat(string, indicator) {
	var result = string.search(/^\d{2} \d{4}$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp 04 2001)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft die Korrektheit einer PLZ und gibt Meldung an den übergebenen Indikator<br>
 * Bsp: 01234
 * 
 * @param string
 *            zu prüfende Nummer
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkPlzFormat(string, indicator) {
	var result = string.search(/^\d\d\d\d\d$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp 01234)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft die Korrektheit einer e-Mail und gibt Meldung an den übergebenen
 * Indikator<br>
 * Bsp: name.vorname@mail-provide.tld
 * 
 * @param string
 *            zu prüfende Adresse
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkMailFormat(string, indicator) {
	var result = string.search(/^([\w\-\.]+)@(([\w\-]{2,}\.)+[\w]{2,4})$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp max.mustermann@example.org)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft die Korrektheit einer URL und gibt Meldung an den übergebenen Indikator<br>
 * Bsp: http://wwww.foo.de/bar/news.html#absatz
 * 
 * @param string
 *            zu prüfende Adresse
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkWebsiteFormat(string, indicator) {
	var result = string
			.search(/^(http:\/\/(www\.){0,1}[\w\-]{2,}\.[\w]{2,4}[\w\/\.#]*)$/);
	if (result == -1 && string != "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> falsches Format (Bsp http://www.example.de/news)";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Pürft ob in string nur Zahlen enthalen sind
 * 
 * @param string
 *            zu prüfende Nummer
 * @param indicator
 *            id des Status Indikators
 * @return true wenn gültig, sonst false
 */
function checkDigitsOnly(string, indicator) {
	var result = string.search(/^\d{1,}$/);
	if (result == -1) {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img
				+ "\" valign=middle border=0> bitte nur Ziffern ohne Leerzeichen eingeben";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}

/**
 * Prüft ob ein String leer ist
 * 
 * @param string
 *            zu prüfender String
 * @param indicator
 *            id des Status Indikators
 * @return true wenn nicht leer
 */
function checkNotEmpty(string, indicator) {
	if (string == "") {
		document.getElementById(indicator).innerHTML = "<br><img src=\""
				+ indicator_img + "\" valign=middle border=0> Pflichtfeld";
		return false;
	} else {
		document.getElementById(indicator).innerHTML = "";
		return true;
	}
}