EII.namespace('FormHandler');

EII.FormHandler.focus = function() {
	if (typeof this.default_value == 'undefined') {
		this.default_value = $F(this);
	}
	if (this.value == this.default_value) {
		this.value = '';
	}
}

EII.FormHandler.blur = function() {
	tmp = $F(this);
	if (tmp == '') {
		this.value = this.default_value;
	}
}

EII.FormHandler.clearDefaultValues = function() {
	elms = Form.getElements(this);
	elms.each(function(elm) {
		if (elm.type == "text" || elm.tagName == "TEXTAREA") {
			if (typeof elm.default_value == "undefined" || $F(elm) == elm.default_value) {
				elm.value = ""
			}
		}
	});
}

EII.FormHandler.clearDefaultValuesOnForm = function(form) {
	elms = Form.getElements(form);
	elms.each(function(elm) {
		if (elm.type == "text" || elm.tagName == "TEXTAREA") {
			if (typeof elm.default_value == "undefined" || $F(elm) == elm.default_value) {
				elm.value = ""
			}
		}
	});
}

EII.FormHandler.setup = function() {
//This handles having the form names inside all input and textarea fields, selects the whole label on focus and if the field is empty repopulates the label
	$$('input, textarea').each(function(elm) {
		Event.stopObserving(elm, 'focus', EII.FormHandler.focus.bind(elm));
		Event.observe(elm, 'focus', EII.FormHandler.focus.bind(elm));
		
		Event.stopObserving(elm, 'blur', EII.FormHandler.blur.bind(elm));
		Event.observe(elm, 'blur', EII.FormHandler.blur.bind(elm));
	});
	
//If the form elements were never changed, remove their default values
	$$('form').each(function(f) {
		
		f.clear = EII.FormHandler.clearDefaultValues.bind(f);
		
		f.oldsubmit = f.onsubmit
		f.removeAttribute('onsubmit');
		
		f.onsubmit = function() {
			this.clear();
			this.oldsubmit();
			return false;
		};
		
		/*
		Event.stopObserving(f, 'submit', EII.FormHandler.clearDefaultValues.bind(f));
		
		Event.observe(f, 'submit', function() {
			this.clear();
			alert('cleared');
			this.oldsubmit();
			return false;
		}.bind(f));
		*/
	});

}

function setupPreviewButtons() {
  // Loop thru each image_set image div and attach preview hover behavior
  var images = $$('.image').each(function(elem){

    var image_id = elem.id;
    var button_id = "btn-view-" + image_id;

    // Add behavior for preview overlay
    	Element.onmouseenter(image_id, function(){
    		$(button_id).show();
    	});
    	Element.onmouseleave(image_id, function(){
    		$(button_id).hide();
    	});
    	// Hide overlay onclick to avoid leftovers
    	$(image_id).observe('click', function(){
    		$(button_id).hide();
    	});

  });
}