// JavaScript Document

/* mouse over src changing image */
_button_preloadImages=[];
var Button={};
Button = Class.create(
	{
		initialize:function(ele,options){
			this.ele=$(ele);	
			this.options=Object.extend({
										   
			},options);
			_button_preloadImages.push(this.options.mouseover_src);
			
			this.default_src=this.ele.readAttribute("src");

			Event.observe(this.ele, 'mouseover', function() {
                this.ele.src = this.options.mouseover_src;
            }.bind(this));
            Event.observe(this.ele, 'mouseout', function() {
                this.ele.src = this.default_src;
            }.bind(this));

		}
	}						  
);

Button.preload=function(){
	for(var i=0; i<_button_preloadImages.length; i++){
		var src=_button_preloadImages[i];
		_button_preloadImages[i]=new Image();
		_button_preloadImages[i].src=src;
	}
}

//var ImageCheckBox = {};
var ImageCheckBox = Class.create();
ImageCheckBox.prototype = {
	initialize: function(ele, options) {
		this.ele=$(ele);
		this.options=Object.extend({
			
		},options);
		this.inputElement = null;
		this.srcChecked = this.ele.readAttribute('lowsrc');
		this.srcUnCheck = this.ele.readAttribute('src');
		
		this.checked = false;
		
		//$(ele).objImageCheckBox = {};
		//$(ele).ondblclick = function() { this.toggleCheck() };
		//$(ele).ondblclick = this;
		//Object.extend($(ele).ondblclick, this);
		//$(ele).addMethods = Object.clone(this);
		//this.ele.ondblclick = this;

		Event.observe(this.ele, 'click', this.toggleCheck.bindAsEventListener(this), false);
		//Event.observe(this.ele, 'widget:whenclick', this.toggleCheck.bindAsEventListener(this), false);
		
	},
	toggleCheck: function() {
		if (this.ele.src == this.srcChecked && !this.checked) this.checked = true;
		if (this.checked) {
			Element.remove(this.inputElement);
			this.ele.src = this.srcUnCheck;
			this.checked = false;
		} else {
			this.inputElement = new Element('input', {
				type: 'hidden',
				name: this.ele.name,
				value: this.ele.readAttribute('value')
			});
			Element.insert(this.ele.up(), {bottom: this.inputElement});
			this.ele.src = this.srcChecked;
			this.checked = true;
		}
	}
};
//
var init = {};
init.mouseover_button = function(){
	$$(".mouseover_button").each(function(e){
		new Button(e,{mouseover_src:e.readAttribute("lowsrc")})
	});
	Button.preload();
};
/*init.image_checkbox = function() {
	$$('.image_checkbox').each(function(e) {
			regcmp(new ImageCheckBox(e), $(e).identify());
			//window.testtest = 'test';
	});	
};*/
init.numberField = function() {
	$$('input.numberField').each(function(e) {
		Event.observe(e, 'keydown', function(key) {
		  if (!((key.keyCode>=96 && key.keyCode<=105) || (key.keyCode>=48 && key.keyCode<=57)) && (key.keyCode>0 && key.keyCode!=8 && key.keyCode!=46 && key.keyCode!=35 && key.keyCode!=36 && key.keyCode!=9) || key.shiftKey) {
			  key.preventDefault();
		  }
		});
	});
};
init.default_value = function() {
	$$('input.default_value').each(function(e) {
		Element.writeAttribute(e, 'default_value', Form.Element.getValue(e));
		
		Event.observe(e, 'focus', function(event) {
			if (Element.hasClassName(e, 'default_value')) Form.Element.clear(e);
			Element.removeClassName(e, 'default_value');
			Element.setStyle(e, {
					color:'#000'
				});
		}.bindAsEventListener(this));
		
		Event.observe(e, 'blur', function(event) {
			if (Element.readAttribute(e, 'default_value')==Form.Element.getValue(e) || Form.Element.getValue(e).strip().blank()) {
				//Element.writeAttribute(e, 'value', Element.readAttribute(e, 'default_value'));
				e.value =  Element.readAttribute(e, 'default_value');
				Element.addClassName(e, 'default_value');
				Element.setStyle(e, {
					color:'#ccc'
				});
				//console.debug(Element.readAttribute(e, 'default_value'));
			}
		}.bindAsEventListener(this));
	});
};
init.addBoxStyletoInputBox = function() {
	$$('input[type="text"]').each(function(e) {
		Element.addClassName(e, 'box');
		Element.addClassName(e, 'field');
	});
};

Event.observe(document, 'dom:loaded', function() {
	
	for (var f in init) init[f].defer();

	Ajax.Responders.register({
	  onCreate: function() {
		Ajax.activeRequestCount++;
		//console.debug('activeRequestCount = '+Ajax.activeRequestCount);
	  },
	  onComplete: function() {
		Ajax.activeRequestCount--;
		//console.debug('activeRequestCount = '+Ajax.activeRequestCount);
		if (init)
			for (var f in init) init[f].defer();
	    }
	});

});


