/*************************************************/
/** 	needed vars							**/
/*************************************************/
var openFolder = null;
var valuesError;

/*************************************************/
/** 	Browser status						**/
/*************************************************/
function openDir(id){
 var img = 'img_' + id;
 if(document.getElementById(id).style.display == 'none') {
	// open folder
	document.getElementById(id).style.display = 'block';
	document.getElementById(img).src = '../img/iconFolderOpened.png'; // Grafik referenzieren
	// close folder
	if(openFolder != null && openFolder != id) {
		document.getElementById(openFolder).style.display = 'none';
		document.getElementById('img_' + openFolder).src = '../img/iconFolderClosed.png'; // Grafik referenzieren
	}
	// set folder to open folder
	openFolder = id;
 } else {
	document.getElementById(id).style.display = 'none';
	document.getElementById(img).src = '../img/iconFolderClosed.png'; // Grafik referenzieren
 }
}


function clearFormFields(formId) {
	var re_text = /\.text|\.password/i;
	
	for(var i = 0; i < document.getElementById(formId).elements.length; i++) {
		/* Checking file type */
		elType = '.'+document.getElementById(formId).elements[i].type;
		if ((elType).search(re_text) != -1) {
			document.getElementById(formId).elements[i].value = '';
		}
	}
}

function checkFileField(uploadField, extension) {
	var fieldValue = uploadField.value;
	if ((fieldValue).search(extension) == -1) {
		alert("Filetype should be \"" + extension + "\"! Please make sure you selected the right file.");
        uploadField.value = '';
        return false;
	}
}

function checkFormOnSubmit(formId, inputs) {
	var valuesError = false;
	var errorMsg = '';
	
	var btnSend = document.getElementById('btnSendForm');
	btnSend.disabled=false;
	btnSend.style.opacity = 1.00;
	
	for(var i = 0; i < inputs.length; i++) {
		if(document.getElementById(formId).elements[inputs[i][0]].value == '') {
			if(!valuesError) {
				document.getElementById(formId).elements[inputs[i][0]].focus();
				document.getElementById(formId).elements[inputs[i][0]].setAttribute("style", "border: 1px solid #red;");
			}
			valuesError = true;
			errorMsg += '"' + inputs[i][1] + '" is empty!\n';
		}
	}
	errorMsg += '\nPlease complete all form fields!';
	if(valuesError) {
		btnSend.disabled=true;
		btnSend.style.opacity = 0.50;
		alert(errorMsg);
		btnSend.disabled=false;
		btnSend.style.opacity = 1.00;
	} else {
		document.getElementById(formId).submit();
	}
}


function checkContactFormOnSubmit(formId, inputs) {
	var valuesError = false;
	var errorMsg = '';
	
	var btnSend = document.getElementById('btnSendForm');
	btnSend.disabled=false;
	btnSend.style.opacity = 1.00;
	
	for(var i = 0; i < inputs.length; i++) {
		if(document.getElementById(formId).elements[inputs[i][0]].value == '') {
			if(!valuesError) {
				document.getElementById(formId).elements[inputs[i][0]].focus();
				document.getElementById(formId).elements[inputs[i][0]].setAttribute("style", "border: 1px solid #red;");
			}
			valuesError = true;
			errorMsg += '"' + inputs[i][1] + '" is empty!\n';
		}
	}
	errorMsg += '\nPlease complete form field(s)!';
	if(valuesError) {
		btnSend.disabled=true;
		btnSend.style.opacity = 0.50;
		alert(errorMsg);
		btnSend.disabled=false;
		btnSend.style.opacity = 1.00;
	} else {
		document.getElementById(formId).submit();
	}
}

function checkInputValue(value, id, accepted) {
	valuesError = true;
	
	var iconSpan = document.getElementById('check_'+id);
	var btnSend = document.getElementById('btnSendForm');
	btnSend.disabled=false;
	btnSend.style.opacity = 1.00;
	
	var acceptedValues = null;
	
	switch(accepted) {
		case "date" : acceptedValues = "0123456789."; break;
		case "email" : acceptedValues = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM"; break;
		case "login" : acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; break;
		case "a-z" : acceptedValues = "abcdefghijklmnopqrstuvwxyz"; break;
		case "a-zA-Z" : acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; break;
		case "a-z0-9" : acceptedValues = "abcdefghijklmnopqrstuvwxyz0123456789"; break;		
		case "a-zA-Z0-9" : acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; break;
		case "a-zA-Z0-9Uml" : acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"+unescape("%F6")+unescape("%D6")+unescape("%FC")+unescape("%DC")+unescape("%E4")+unescape("%C4")+unescape("%DF"); break;
		case "A-Z0-9" : acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; break;
		default: acceptedValues = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-+*/\\#!:.,;(){}\"\'&%\r\n "+unescape("%F6")+unescape("%D6")+unescape("%FC")+unescape("%DC")+unescape("%E4")+unescape("%C4")+unescape("%DF"); break;
	}
	
	for (var Pos = 0; Pos < value.length; Pos++) {
		if (acceptedValues.indexOf(value.charAt(Pos)) == -1) {
			valuesError = false;
		}
	}
	
	if (!valuesError) {
		iconSpan.innerHTML = '<img src="../img/iconDeactivate.png" style="margin: 0px 0px 0px 0px; vertical-align: middle;" alt="ERROR!" title="ERROR!"/> Not supported character in string!';
		btnSend.disabled=true;
		btnSend.style.opacity = 0.50;
	} else {
		//iconSpan.innerHTML = '<img src="../img/iconActivate.png" style="margin: 6px 0px 0px 0px; vertical-align: top;" alt="OK!" title="OK!"/>';
		iconSpan.innerHTML = '';
		btnSend.disabled=false;
		btnSend.style.opacity = 1.00;
	}
	
	if(accepted == "date") {
		if(valuesError && !checkDateFormat(value)) {
			iconSpan.innerHTML = '<img src="../img/iconInformation.png" style="margin: 0px 0px 0px 0px; vertical-align: middle;" alt="INFORMATION!" title="INFORMATION!"/> Format eg.: "22.03.2005"';
			btnSend.disabled=true;
			btnSend.style.opacity = 0.50;
		}
	}
	
	if(accepted == "email") {
		if(valuesError && !checkEmailFormat(value)) {
			iconSpan.innerHTML = '<img src="../img/iconInformation.png" style="margin: 0px 0px 0px 0px; vertical-align: middle;" alt="INFORMATION!" title="INFORMATION!"/> Format eg.: "meine@deine.de"';
			btnSend.disabled=true;
			btnSend.style.opacity = 0.50;
		}
	}
	
	if(value.length == 0) {
		iconSpan.innerHTML = '';
		btnSend.disabled=false;
		btnSend.style.opacity = 1.00;
	}
}


function checkDateFormat(dateValue) {
	var date_spacer = '.';	// für das Datum
		
	var pos_day = 0;	// An welcher Stelle soll der Tag erscheinen
	var pos_mon = 1;	// An welcher Stelle soll der Monat erscheinen
	var pos_jea = 2;	// An welcher Stelle soll das Jahr erscheinen
	
	var date_old = true;	// darf das Datum in der Vergangenheit liegen
		
	var rxdArr = new Array();
	var dAr    = new Array();

	rxdArr[pos_day] = '(0[1-9]|1\\d|2\\d|3[01])';
	rxdArr[pos_mon] = '(0[1-9]|1[0-2])';
	rxdArr[pos_jea] = '(\\d{4})';

	var rxd = new RegExp('^' + rxdArr.join('') + '$', '');

	with (dateValue) {
		var dI = dateValue.split(date_spacer).join('');

		if ((dAr = dI.match(rxd)) == null) {
			return false;
		}
	}
	return true;
}
function checkEmailFormat(email) {
	re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;

	if (!email.match(re) && email.match(re_two)) {
		return true;		
	}
	
	return false;
}

function setContactForm(id, userName) {
	var userNameField = document.getElementById("user_name");
	userNameField.innerHTML = '';
	userNameField.innerHTML = userName;
	
	var idField = document.getElementById("id");
	idField.value = '';
	idField.value = id;
	
	var messageField = document.getElementById("message");
	messageField.value = '';
}


/**
 * hide background
 */
function hideBackground(){
	var backgroundLayer = document.getElementById("backgroundLayer");
	backgroundLayer.style.backgroundColor = "#000000";
	backgroundLayer.style.opacity = 0.50;
	backgroundLayer.style.display = "block";
	backgroundLayer.style.width = "100%";
	backgroundLayer.style.height = "150%";
	backgroundLayer.style.left = "0px";
	backgroundLayer.style.top = "0px";
	backgroundLayer.style.zIndex = 2;	
}

/**
 * show background
 */
function showBackground(){
	var backgroundLayer = document.getElementById("backgroundLayer");
	backgroundLayer.style.display = "none";
}

/**
 * hide MenuEditForm with id-input
 */
function hideElement(id) {
	var formElement = document.getElementById(id);
	formElement.style.display = 'none';
	showBackground();
}

function hideElementById(id) {
	var formElement = document.getElementById(id);
	formElement.style.display = 'none';
}
/*************************************************/
/**
  * Base64 String
  */
var base64s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
/**
  * Base64Encode
  */
function base64_encode(decStr) {
	var bits;
	var dual;
	var i = 0;
	var encOut = '';
	while(decStr.length >= i + 3) {
		bits = (decStr.charCodeAt(i++) & 0xff) <<16 |
		 (decStr.charCodeAt(i++) & 0xff) <<8  |
		 decStr.charCodeAt(i++) & 0xff;

		encOut += base64s.charAt((bits & 0x00fc0000) >>18) +
		 base64s.charAt((bits & 0x0003f000) >>12) +
		 base64s.charAt((bits & 0x00000fc0) >> 6) +
		 base64s.charAt((bits & 0x0000003f));
	}
	if(decStr.length -i > 0 && decStr.length -i < 3) {
		dual = Boolean(decStr.length -i -1);
		bits = ((decStr.charCodeAt(i++) & 0xff) <<16) |
		 (dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);

		encOut += base64s.charAt((bits & 0x00fc0000) >>18) +
		 base64s.charAt((bits & 0x0003f000) >>12) +
		 (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '=') +
		 '=';
	}
	return(encOut);
}
/**
  * Base64Decode
  */
function base64_decode(encStr) {
	var bits;
	var decOut = '';
	var i = 0;
	for(; i<encStr.length; i += 4) {
		bits = (base64s.indexOf(encStr.charAt(i))    & 0xff) <<18 |
		 (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 |
		 (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 |
		  base64s.indexOf(encStr.charAt(i +3)) & 0xff;
		
		decOut += String.fromCharCode((bits & 0xff0000) >>16, (bits & 0xff00) >>8, bits & 0xff);
	}
	if(encStr.charCodeAt(i -2) == 61) {
		return(decOut.substring(0, decOut.length -2));
	} else if(encStr.charCodeAt(i -1) == 61) {
		return(decOut.substring(0, decOut.length -1));
	} else {return(decOut)};
}
/*************************************************/
/**
  * getXMLHTTPRequest Object
  */
function getXMLHttpRequest(){
	var req = null;
	try {
		req = new XMLHttpRequest();
	}catch (ms){
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (nonms) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				req = null;
			}
		}  
	}
	return req;	
}
/*************************************************/
/**
 * get psl-info
 */
function getPSLInfo(pwd, fieldId){
	// encode string to base64
	var encVar = base64_encode(pwd);
	
	// create xhr object
	var xhr = getXMLHttpRequest();
	
	xhr.open("POST", "../helper/cmd:psl;");	
	xhr.onreadystatechange = function() {
		switch(xhr.readyState) {
			case 4:				
				if(xhr.status!=200) {
					//alert(req.responseText);
				}else{
					// objects sent by server
					switch(xhr.responseText) {
						case "0": document.getElementById("psl_"+fieldId).style.cssText = "width: 25%; background-color: #FF0000;"; /*red*/ break;
						case "1": document.getElementById("psl_"+fieldId).style.cssText = "width: 50%; background-color: #FFA500;"; /*orange*/ break;
						case "2": document.getElementById("psl_"+fieldId).style.cssText = "width: 75%; background-color: #ADFF2F;"; /*greenyellow*/ break;
						case "3": document.getElementById("psl_"+fieldId).style.cssText = "width: 100%; background-color: #32CD32;"; /*limegreen*/ break;
						default: document.getElementById("psl_"+fieldId).style.cssText = "width: 0px; background-color: none;"; break;
					}
					if(pwd === "")
						document.getElementById("psl_"+fieldId).style.cssText = "width: 0px; background-color: none;";
						
				}				
				break;
			default: return false; break;
		}
	}
	xhr.setRequestHeader("If-Modified-Since", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("var="+encVar);
}
/*************************************************/

