/*
	myApp class
	
	customisations

	(c) 2008, Jiří Lýsek
	jlx@seznam.cz
	
*/

/* ========================================================================== */

function myApp() {

	this.formValidation = new formValidation();
	this.formHelper = new formHelper();
	this.removeAlt = new removeAlt();
	this.gallery = new gallery();

	//--------------------------------------------------------------------------

	function gallery() {
	
		this.openImageLarge = openImageLarge;
		this.openImageFull = openImageFull;
	
		function openImageLarge(aID) {
			if(aID != 0) {
				window.open("index.php?act=fullImage&subact=large&id=" + aID, "_blank", "width=810,height=610,resizable=yes,scrollbars=yes,left=50,top=50");
			}
		}
		
		function openImageFull(aID) {
			if(aID != 0) {
				window.open("index.php?act=fullImage&subact=full&id=" + aID, "_blank", "width=810,height=610,resizable=yes,scrollbars=yes,left=50,top=50");
			}
		}
	
	}
	
	//--------------------------------------------------------------------------
	
	function removeAlt() {

		this.perform = perform;
		
		function perform() {
			if(browser.isIE) {
				elems = document.getElementsByTagName("img");
				
				for(var i = 0; i < elems.length; i++) {
					elems[i].alt = "";
				}
			}
		}
	}
	
	//--------------------------------------------------------------------------

	//simple form validation by "js_mandatory" class
	function formValidation() {

		this.findForms = findForms;

		var mandatoryClass = "js_mandatory";
		var passwordClass = "js_password";
		var confirmClass = "js_confirmAll";
		var currentForm = null;

		function findForms() {
			var elems = document.getElementsByTagName("form");
			for(var i = 0; i < elems.length; i++) {
				if(elems[i].onsubmit == undefined) {
					//kvuli vraceni t/f musi byt jen jeden handler
					elems[i].onsubmit = validate;
				}
			}
		}

		function validEmail(str) {
			return (str.indexOf(".") > 0) && (str.indexOf("@") > 0);
		}

		function validate() {

			var errors = [];
			var l = 0;

			var passFields = [];
			
			var elems = this.getElementsByTagName("*");
			
			if(this.className.indexOf(confirmClass) != -1) {
				var confirmAll = true;
			} else {
				var confirmAll = false;
			}

			for(var i = 0; i < elems.length; i++) {
				if(elems[i].className.indexOf(mandatoryClass) != -1) {
					if(elems[i].type == "text" || elems[i].type == "password" || elems[i].tagName.toLowerCase() == "textarea") {
						if(elems[i].value == "") {
							l = errors.length;
							errors[l] = elems[i];
							errors[l]["errType"] = "noValue";
							elems[i].style.border = "1px solid red";
						} else {
							if(elems[i].name == "email") {
								if(!validEmail(elems[i].value)) {
									l = errors.length;
									errors[l] = elems[i];
									errors[l]["errType"] = "badMail";
									elems[i].style.border = "1px solid red";
								}
							} else {
								//back to normal border - by css class
								elems[i].style.border = "1px solid green";
							}
						}
					}
				}
				if(elems[i].className.indexOf(passwordClass) != -1) {
					passFields[passFields.length] = elems[i];
				}
			}

			//verify if all pass fields has same value
			var passVal = "";
			var passSet = false;
			var passError = false;

			for(var i = 0; i < passFields.length; i++) {
				if(passVal == "" && !passSet) {
					passVal = passFields[i].value;
					passSet = true;
				}
				if(passSet && (passVal == "" || passVal != passFields[i].value)) {
					l = errors.length;
					errors[l] = passFields[i];
					errors[l]["errType"] = "badPass";
					passError = true;
				}
			}

			for(var i = 0; i < passFields.length; i++) {
				if(passError) {
					passFields[i].style.border = "1px solid red";
				} else {
					if(passVal != "") {
						passFields[i].style.border = "1px solid green";
					}
				}
			}

			if(errors.length > 0) {
				var str = "";

				var errBadMail = false;
				var errNoValue = false;
				var errBadPass = false;

				for(var i = 0; i < errors.length; i++) {
					if(errors[i]["errType"] == "badMail" && !errBadMail) {
						str += appMessages.get(5) + "<br />";
						errBadMail = true;
					}
					if(errors[i]["errType"] == "noValue" && !errNoValue) {
						str += appMessages.get(0) + "<br />";
						errNoValue = true;
					}
					if(errors[i]["errType"] == "badPass" && !errBadPass) {
						str += appMessages.get(55) + "<br />";
						errBadPass = true;
					}
				}
				app.Alert(str);
				return false;
			} else {
				//form OK disable submit input
				
				setSubmitDisabledState(this, true);
				
				if(confirmAll) {
					app.ConfirmForm(appMessages.get(70), sendForm, cancelForm);
					currentForm = this;
					return false;
				} else {
					return true;
				}

			}
		}
		
		function setSubmitDisabledState(frm, val) {
			var elems = frm.getElementsByTagName("input");
					
			for(var i = 0; i < elems.length; i++) {
				if(elems[i].type == "submit") {
					elems[i].disabled = val;
				}
			}
		}
		
		function cancelForm() {
			if(currentForm) {
				setSubmitDisabledState(currentForm, false);
			}
		}
		
		function sendForm() {
			if(currentForm) {
				currentForm.submit();
			}
		}

	}
	
	//--------------------------------------------------------------------------
	
	function formHelper() {
	
		this.setFocus = setFocus;
		
		var focusClass = "js_focus";
	
		function setFocus() {
			var elems = document.getElementsByTagName("input");
			for(var i = 0; i < elems.length; i++) {
				if(elems[i].className.indexOf(focusClass) != -1) {
					elems[i].focus();
				}
			}
		}
	
	}

	//==========================================================================

	//forms
	fLib.addMyEvent("load", this.formValidation.findForms, window);
	fLib.addMyEvent("load", this.formHelper.setFocus, window);
	fLib.addMyEvent("load", this.removeAlt.perform, window);

}

var myApp = new myApp();