var G_cssImageURL = "/images";
var G_dataURL = "/data";


/* ---------------- Regular Expressions ------------------- */
var regEx = new Array();
regEx['email']="^(([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?))?$";
regEx['url']="^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$";
regEx['currency']="^([0-9]{1,3}((,|\\.)[0-9]{1,2})?)?$";
regEx['date']="^(([0-9]{1,2})\\.){2}([0-9]{4})$";
regEx['decimal']="^([0-9]{1,7}((,|\\.)([0-9]{1,2})?)?)?$";
regEx['password']="^(([a-zA-Z0-9_\\-]){6,12})?$";
regEx['username']="^(([a-zA-Z0-9_\\-]){4,12})?$";
regEx['integer']="^[0-9]*$";
regEx['text']="^[a-zA-ZäöüÄÖÜß\\-\\.\\ ]{2,99}$";
regEx['textNoSpaces']="^[a-zA-ZäöüÄÖÜß0-9\\-\\.\\_]*$";
regEx['houseNo']="^[0-9]{1,5}([a-zA-Z]{0,1}|\ 1/2)$";
regEx['alphanumeric']="^[a-zA-ZäöüÄÖÜß\\ ]{2,99}$";
regEx['notNull']="^[^0]$";
regEx['noHTML']="^[^<@>]*$";
regEx['noNumber']="[^0-9]";
regEx['title']="^[^<@>\"]*$";



G_A_datePickerConfig = {
		dateFormat:'dd.mm.yy',
		changeMonth: false,
		changeYear: false,
		showOn: 'button', 
		buttonImage: G_cssImageURL+"/calendarButton.gif",
		buttonText: "Wählen Sie ein Datum aus dem Kalender", 
		buttonImageOnly: true
	};
	
G_A_datePickerConfigStandalone = {
		dateFormat:'dd.mm.yy',
		changeMonth: false,
		changeYear: false		
	};

function openNewWindow(url,height,width,name){

	if(!height) var height = 700;
	if (!width)	var width = 950;
	if (!name)	var name = 'Fenster';

	if (url.indexOf(".doc") != -1 || url.indexOf(".pdf") != -1){
		var params="menubar=yes,toolbar=no,height="+height+",width="+width+",resizable,scrollbars=yes,status=yes";
	}
	else{
		var params="menubar=no,toolbar=no,height="+height+",width="+width+",resizable,scrollbars=yes,status=yes";
	}

	win1=window.open(url,name,params);
	win1.focus();
}


function openFlash(url) {
	w = screen.width - 10;
	h = screen.height - 55;
	open (url+"?width=" +screen.width+ "&height=" +screen.height+"","","scrollbars=yes,screenX=0,screenY=0,resizable=yes,width=" + w + ",height=" + h);
}


var msg_noUndo = "Dieser Vorgang kann nicht r%FCckg%E4ngig gemacht werden%21";
function confirmDelete(type,objectname){

	if(type == 'file'){
		return confirm(unescape("Sind Sie sicher%2C dass Sie die Datei %27" + objectname + "%27 l%F6schen wollen%3F %0A" + msg_noUndo));
	}
	else if (type == 'object' && objectname != null){
		return confirm(unescape("Sind Sie sicher%2C dass Sie das Objekt %27" + objectname + "%27 l%F6schen wollen%3F %0A" + msg_noUndo));
	}
	else if (type == 'object'){
		return confirm(unescape("Sind Sie sicher%2C dass Sie das Objekt l%F6schen wollen%3F %0A" + msg_noUndo));
	}
}


/* ruft edithandler-window auf, nachdem Löschen bestätigt wurde */
function deleteObject(url,height,width,name,id) {
	
	$("#confirmationDelete").dialog('option', 'buttons', 
								{
									'Ja, Objekt löschen': function() {
										$.get(url, function(data){ 
											
											if($("#sortableObject_"+id).length){
												$("#sortableObject_"+id).css({display:'none'});
												$("#confirmationDelete").dialog('close');
											}else{
											//	alert("reload " + location.href);
											//	location.href = location.href;
												location.reload();
											}
										});
									},
									'Nein, abbrechen': function() {
										$(this).dialog('close');
									}
								});
	
	$("#confirmationDelete").dialog('open');
}


function copyCutPasteObject(srcID,srcPageID) {
	
	// falls existent, das Ergebnis vom letzten Kopier-Vorgang entfernen
	if($(".copyCutPasteResult").length){
		$(".copyCutPasteResult").remove();
	}
	
	$("#copyCutPaste").dialog('option', 'buttons', 
								{
									'Objekt kopieren': function() {
										destPageID = document.getElementById("copyCutPasteDestination").value;
										
										$.get('/data/copyCutPaste.php?srcID='+srcID+'&destPageID='+destPageID+'&mode=copy', 
												function(data){ 
													// Nach erfolgreicher Option nur noch Schließen-Button anzeigen
													$("#copyCutPaste").dialog('option', 'buttons', {'Schließen': function() {
																										$('#copyCutPaste').dialog('close');
																									}});
													// Ergebnis in einem DIV anhängen
													$("#copyCutPaste").append("<div class='copyCutPasteResult'>"+data+"</div>");
												}
										);
										
									},
									'Objekt verschieben': function() {
										destPageID = document.getElementById("copyCutPasteDestination").value;
										
										$.get('/data/copyCutPaste.php?srcID='+srcID+'&srcPageID='+srcPageID+'&destPageID='+destPageID+'&mode=cut', 
												function(data){ 
													// Nach erfolgreicher Option nur noch Schließen-Button anzeigen
													$("#copyCutPaste").dialog('option', 'buttons', {'Schließen': function() {
																										location.href = location.href;
																										$('#copyCutPaste').dialog('close');
																									}});
													// Ergebnis in einem DIV anhängen
													$("#copyCutPaste").append("<div class='copyCutPasteResult'>"+data+"</div>");
		
												}
										);
									},
									'Abbrechen': function() {
										$(this).dialog('close');
									}
								});
	
	$("#copyCutPaste").dialog('open');
}


/* selektiert den übergebenen selectValue aus der übergebenen selectBox */
function optionSelect(selectName,selectValue){
	document.getElementsByName(selectName)[0].value = selectValue;
}

/* checkBox als gecheckt markieren */
function checkboxCheck(selectName){
	document.getElementsByName(selectName)[0].checked = true;
}

/* überprüft, ob das angegebene Datum gueltig ist, Format: YYYY-MM-DD*/
function isValidDate (datum){
	//(Schritt 1) Fehlerbehandlung
	if (!datum) return false;

	datum=datum.toString();

	//(Schritt 2) Aufspaltung des Datums in ein Array
 	datum=datum.split("-");
	if (datum.length!=3) return false;

	//(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats
	datum[2]=parseInt(datum[2],10); 		// Tag
 	datum[1]=parseInt(datum[1],10)-1;		// Monat

	//(Schritt 4) Behandlung Jahr nur zweistellig
	if (datum[0].length==2) datum[0]="20"+datum[0];

	//(Schritt 5) Erzeugung eines neuen Dateobjektes
	var kontrolldatum=new Date(datum[0],datum[1],datum[2]);

	//(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
	if (kontrolldatum.getDate()==datum[2]
			&& kontrolldatum.getMonth()==datum[1]
			&& kontrolldatum.getFullYear()==datum[0])
    	return true;
    else
    	return false;

}

//globale JS-Variable, die anzeigt, ob das gerade geprüfte Feld gültig ist
var valueOK=true;

// Prüft die übergebenen Werte anhand von Regular Expressions
// umrahmt das Feld ROT und entfernt danach Umrandung wieder
// bei onblur aufrufen!
function testRegEx(fieldName,regExType,message,b_mandatory){
	//default: kein Pflichtfeld
	if(!b_mandatory){
		b_mandatory = 0;
	}

	thisField=document.getElementsByName(fieldName)[0];

	// wenn kein Pflichtfeld und TextFeld ist leer >> OK
	if(b_mandatory == 0 && !thisField.value.length){
		valueOK = true;
	// wenn Pflichtfeld und TextFeld ist leer >> False
	}else if(b_mandatory == 1 && !thisField.value.length){
		valueOK = false;
	// ansonsten Regex prüfen
	}else{
		valueOK = thisField.value.match(regEx[regExType]);
	}

	if(!valueOK){
		alert(message);
		origClassName=thisField.className;
		thisField.className=thisField.className + " redBorder";
		thisField.focus();
		valueOK=false;
		return false;
	}else{
		//roten Rahmen wieder entfernen
		thisField.className=thisField.className.replace(/ redBorder/, "");
		valueOK=true;
		return true;
	}
}





// Prüft ob die Checkbox markiert ist
// umrahmt das Feld ROT und entfernt danach Umrandung wieder
// bei onblur aufrufen!
function testChecked(fieldName,message){

	thisField=document.getElementsByName(fieldName)[0];

	// wenn checkbox markiert ist >> OK
	if(thisField.checked){
		valueOK = true;
	// ansonsten
	}else{
		valueOK = false;
	}


	if(!valueOK){
		alert(message);
		origClassName=thisField.className
		thisField.className=thisField.className + " redBorder";
		thisField.focus();
		return false;
	}else{
		//roten Rahmen wieder entfernen
		thisField.className=thisField.className.replace(/ redBorder/, "");
		return true;
	}
}




// funktion loopt über alle Felder eines Formulares und
// führt ggf. die Funktion im onchange-Handler aus, normalerweise testRegEx()
// valueOK ist eine globale Variable, die von der onChange-Funktion gesetzt werden muss
function testFields(formName){
	var i = 0;
	while(document[formName].elements[i]){
		if (document[formName].elements[i].onchange
			&& document[formName].elements[i].type != "file"){
			document[formName].elements[i].onchange();
			if(valueOK == false)	return false;
		}

		i++;
	}
	return true;
}

function textarealength(number,field,info) {
	len = field.value.length;

	if (len > number){
		alert ("Es dürfen maximal "+number+" Zeichen eingegeben werden. Sie verwenden zur Zeit "+len+" Zeichen.");
		field.value=field.value.substring(0,number);
		len=field.value.length;
	}

	// ggf. Info-Feld füllen
	if(info){
		document.getElementById(info).innerHTML=len;
	}
}

function oneToThreeCatsChecked(formName){
	var i = 0;
	var checked=0;
	while(document[formName].elements[i]){
		if (document[formName].elements[i].name.search(/cat/) == 0 &&
			document[formName].elements[i].checked){
			checked ++;
		}
		i++;
	}

	if(checked == 0){
		alert("Bitte wählen Sie mindestens eine Kategorie aus. Sie haben keine Kategorie gewählt");
		valueOK=false;
		return false;
	}

	if(checked > 3){
		alert("Bitte wählen Sie nicht mehr als 3 Kategorien aus. Sie haben zur Zeit " + checked + " Kategorien gewählt.");
		valueOK=false;
		return false;
	}
	valueOK=true;
	return true;
}


function closeAndReload(){
	B_doClose = true;
	if(B_changeDone && B_changeDone == true){
		B_doClose = confirm("Sie haben Änderungen vorgenommen, die Sie noch nicht gespeichert haben. Möchten Sie das Fenster trotzdem schließen?");
	}

	if(B_doClose == true){

		if(window.opener){
			try{
				window.opener.location.reload();
				window.opener.focus();
			}
			catch(e) {}
		}
		window.close();
	}
}


function replaceQuotes(field){
	field.value=field.value.replace(/'/g,"");
}



function highlight(fieldName){
	thisField=document.getElementsByName(fieldName)[0];
	thisField.className=thisField.className + " redBorder";
	thisField.focus();
}



function checkBoxSwitch(activatorName,checkBoxesName){

	var checkBoxes = document.getElementsByName(checkBoxesName);
	var activator = document.getElementsByName(activatorName)[0];

	for(var i = 0; i < checkBoxes.length; i++){
		checkBoxes[i].checked = activator.checked;
	}
}

function openWebcam(){
	var params="toolbar=no,height=460,width=480,resizable,scrollbars=no,status=no";
	win1=window.open("/webcam/webcam_NES.php","",params);
}
