var FormSupport = Class.create({
	checkMandatoryFields: function () {
		var noErrors = true;
		var formElements = this.form.getInputs();
		formElements = formElements.concat(this.form.select('textarea'));
		formElements.each(function (element) {
			if ((typeof element.getAttribute('js:optional') == 'undefined') ||
					'true' != element.getAttribute('js:optional')) {
				var fieldHasError = false;
				var value;
				if (element.type == 'textarea') {
					if (!this.hasContent(element.value)) {
						value = element.innerHTML;
					} else {
						value = element.value;
					}
				} else {
					value = element.value;
				}
				if (value == null || value.strip().length == 0) {
					element.addClassName(this.errorClass);
					fieldHasError = true;
				}
				if ('true' == element.getAttribute('js:input-email')) {
					fieldHasError = !this.checkEmail(value);
					if (fieldHasError) {
						element.addClassName(this.errorClass);
					}
				}
				//check for dependend type checkbox for image upload
				if(element.type=="checkbox" && element.id=="checkOwnerOfRights"){
					
					var oIframe = document.getElementById("comment_image_upload_frame");
				    var oDoc = oIframe.contentWindow || oIframe.contentDocument;
				    if (oDoc.document) {
				        oDoc = oDoc.document;
				    }

				    var img=oDoc.getElementById("uploaded_image");
					if((img!=null && img.src!="") && !element.checked){
						element.up().addClassName(this.errorClass);
						fieldHasError=true;
					}
					if (!fieldHasError) {
						element.up().removeClassName(this.errorClass);
					}
					
				}
				if (!fieldHasError) {
					element.removeClassName(this.errorClass);
				} else {
					noErrors = false;
				}
			}
		}.bind(this));
		
		this.rootElement.select('span.'+this.errorClass).each(function (item) {
			if (noErrors) {
				item.hide();
			} else {
				item.show();
			}
		});
		
		return noErrors;
	},
	checkEmail: function (email) {
		var testresults = true;
		var invalidaddress=new Array();

		var invalidcheck=0;
		var filter=/^([a-z0-9\+\.\-_]+)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		if (filter.test(email)) {
			var tempstring=email.split("@");
			tempstring=tempstring[1].split(".");
			for (i=0;i<invalidaddress.length;i++) {
				if (tempstring[0]==invalidaddress[i]) {
					invalidcheck=1;
				}
			}
			if (invalidcheck!=1) {
				testresults=true;
			} else {
				testresults=false;
			}
		} else {
			testresults=false;
		}
		return testresults;
	},
	resetField: function (event) {
		var field = Event.element(event);
		var defValue = field.getAttribute('js:resetOnFocus');
		if (typeof defValue != 'undefined' && defValue != null) {
			if (field.type == 'textarea') {
				if (defValue == field.innerHTML) {
					field.innerHTML = '';
				}
			} else {
				if (defValue == field.value) {
					field.value = '';
				}
			}
		}
	},
	presetField: function (event) {
		var field = Event.element(event);
		var defValue = field.getAttribute('js:resetOnFocus');
		if (typeof defValue != 'undefined' && defValue != null) {
			if (field.type == 'textarea') {
				if (field.innerHTML == '') {
					field.innerHTML = defValue;
				}
			} else {
				if (field.value == '') {
					field.value = defValue;
				}
			}
		}
	},
	listen: function(form) {
		var formElements = form.getInputs();
		formElements = formElements.concat(form.select('textarea'));
		formElements.each(function (field) {
			var defValue = field.getAttribute('js:resetOnFocus');
			if (typeof defValue != 'undefined' && defValue != null) {
				field.observe('focus', this.resetField.bindAsEventListener(this));
				field.observe('blur', this.presetField.bindAsEventListener(this));
			}
		}.bind(this));
	},
	hasContent: function(value) {
		return (value != null && value.strip().length > 0);
	}
});