function replace_atsigns(){
	links = document.getElementsByTagName('a');
	for(i = 0; i < links.length; i++){
		var hrf = links[i].href;
		hrf = hrf.replace(/( |%20)\[zavin(áč|%C3%A1%C4%8D)\]( |%20)/,'@');
		links[i].href = hrf;
		
		var ttl = links[i].title;
		ttl = ttl.replace(/( |%20)\[zavin(áč|%C3%A1%C4%8D)\]( |%20)/,'@');
		links[i].title = ttl;
		
		var val = links[i].innerHTML;
		val = val.replace(/( |%20)\[zavin(áč|%C3%A1%C4%8D)\]( |%20)/,'@');
		links[i].innerHTML = val;
	}
	spans = document.getElementsByTagName('span');
	for(i = 0; i < spans.length; i++){		
		var val = spans[i].innerHTML;
		val = val.replace(/( |%20)\[zavin(áč|%C3%A1%C4%8D)\]( |%20)/,'@');
		spans[i].innerHTML = val;
	}
}

function changeCaptcha(){
	var url = "captcha_ajax.php?random=" + Math.random();

	if (window.ActiveXObject){
		httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		httpRequest = new XMLHttpRequest();
	}
	httpRequest.open("GET", url, true);
	httpRequest.onreadystatechange = function () {processRequest('captchaLoader','captchaPlace','../images/captcha_loading.gif');};
	httpRequest.send(null);
}

function processRequest(loaderId,resultId,loaderImg){
	if (httpRequest.readyState == 4){
		if(httpRequest.status == 200){
			var ajaxContent = document.getElementById(resultId);
			var ajaxLoader = document.getElementById(loaderId);
			ajaxContent.style.display = "block";
			ajaxLoader.style.display = "none";
			ajaxContent.innerHTML = httpRequest.responseText;
	
			imgLoader = new Image();// preload image
			imgLoader.src = loaderImg;
		}
		else {
			alert("Loading error "+ httpRequest.status +" : "+ httpRequest.statusText);
		}
	}
	else {
		var ajaxLoader = document.getElementById(loaderId);
		var ajaxContent = document.getElementById(resultId);
		ajaxContent.style.display = "none";
		ajaxLoader.style.display = "block";
	}
}

/*validates form*/
/*input array format (keys):*/
/* 0...type of validation*/
/* 1...id of input element*/
/* 2...id of second input element (for password match)*/
/* 3...id of checkbox element. if it is checked, do the validation*/
/* 4...bad format message*/
/* 5...empty field message*/
/* 6...field importance (mandatory field if 1, voluntary if 0)*/
function validate(inputs,mainErrorMsg){
	var errorMsg = "";
	var focusInput = true;
	var doValidation = true;
	
	for(mKey = 0; mKey < inputs.length; mKey++){
		doValidation = true;
		/*if the field is conditional on checked checkbox with id = inputs[mKey][3]*/
		if (inputs[mKey][3] != ""){
			checkbox = document.getElementById(inputs[mKey][3]);
			doValidation = checkbox.checked;
		}
		/*if the element is TinyMCE editor*/
		if (inputs[mKey][0] == 15){
			elem = tinymce.EditorManager.get(inputs[mKey][1]);
			elem_value = elem.getContent();
		}
		else {
			elem = document.getElementById(inputs[mKey][1]);
			elem_value = elem.value;
		}
		/*if the field is conditional and must be in special format*/
		if (elem_value == ""){
			if ((inputs[mKey][3] == "") || ((inputs[mKey][3] != "") && (checkbox.checked)))
				if (inputs[mKey][6] > 0){
					errorMsg += "\n - " + inputs[mKey][5];
					doValidation = false;
				}
				else	
					doValidation = false;
		}
		/*if validate*/
		if (doValidation){
			switch(inputs[mKey][0]){
				/*string*/
				case 1:
					if (elem_value == "")
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*int*/
				case 2:
					var regex = /^-?\d+$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*positive int*/
				case 3:
					var regex = /^\d+$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*float*/
				case 4:
					var regex = /(^-?\d\d*(\.|\,)\d*$)|(^-?\d\d*$)/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*positive float*/
				case 5:
					var regex = /(^\d\d*(\.|\,)\d*$)|(^\d\d*$)/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*email*/
				case 6:
					var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*url*/
				case 7:
					var regex = /^(http|https|ftp):\/\/([a-zA-Z0-9\.\-]+(:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(\/[^\/][a-zA-Z0-9\.\,\?\/\'\\\+&%\$#\=~_\-@]*)*$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*string with minimal length*/
				case 8:
					if ((elem_value == "") || (elem_value.length < inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*match of two fields, e.g. passwords*/
				case 9:
					var regex = /^[a-zA-Z0-9]+$/;
					elem2 = document.getElementById(inputs[mKey][1] + '_repeat');
					if ((elem2.value != elem_value) || !regex.test(elem_value) || (elem_value.length < inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*us date*/
				case 10:
					var regex = /^\d{4}-\d{1,2}-\d{1,2}$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*smart url*/
				case 11:
					var regex = /^[a-zA-Z0-9]+((-{1}[a-zA-Z0-9]+)*)$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*login name A-Z a-z 0-9*/
				case 12:
					var regex = /^[a-zA-Z0-9]+$/;
					if (!regex.test(elem_value) || (elem_value.length <= inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*phone number*/
				case 13:
					var regex = /^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*hex color*/
				case 14:
					var regex = /^#[0-9a-fA-F]{6}$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*tinyMCE reserved*/
				case 15:
				break;
			}
		}
		if (focusInput && (errorMsg != "")){
			elem.focus();
			focusInput = false;
		}
	}
	
	if (errorMsg != "") {
		errorMsg = mainErrorMsg + errorMsg;
		alert(errorMsg);
		return false;
	}
	return true;
}

function common_validate(sButton, inputs, mainErrorMsg){
	if (validate(inputs,mainErrorMsg)){
		sButton.disabled = true;
		sButton.form.submit();
		return true;
	}
	else
		return false;
}

window.onload = startup;

function startup(){
	replace_atsigns();
}
