// -----------------------------------------------------------------------------------
//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	getHeight: function(element) {
   		element = $(element);
    	return element.offsetHeight;
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setBottom: function(element,t) {
	   	element = $(element);
    	element.style.bottom = t +"px";
	},
	setLeft: function(element,t) {
	   	element = $(element);
    	element.style.left = t +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	},

	getPosition: function(element) {
    	element = $(element);
	    var display = element.getStyle('display');
	    var position = element.getStyle('position');
		
//		console.info('befor- position:' + position + ' display: ' + display );
    	
		if (position == null && display == 'none') { // Safari bug
 
		    // position give 'undefined' on elements with display none,
		    // so enable the element temporarily
			Element.setStyle(element, 'visibility:hidden');
			Element.show(element);
			position = element.getStyle('position');

			Element.hide(element);
			Element.setStyle(element, 'visibility:visible');
		}

//		console.info('after- position:' + position + ' display: ' + display );

    	return position;
	},



	centerToPage: function(element) {

	      if(Element.getPosition(element) == 'fixed'){
		      x = Math.round((Page.getWidth()/2) - (Element.getDimensions(element).width/2));
		      y = Math.round((Page.getHeight()/2) - (Element.getDimensions(element).height/2));

		   //   console.info(Page.getCenterY() + ' - ' + Math.round(Element.getHeight(element)/2));

	      } else {
		      x = Page.getCenterX() - Math.round(Element.getDimensions(element).width/2);
		      y = Page.getCenterY() - Math.round(Element.getDimensions(element).height/2);
	      }

	      Element.setLeft(element, x);
	      Element.setTop(element, y);
		  
		  
		  

	}

});


/*

Object.extend(Event, {

	stopObservingByName: function(element, name) {
    	var element = $(element);
		if (!Event.observers) return;

		for (var i = 0; i < Event.observers.length; i++) {
			if(Event.observers[i][0] == element && Event.observers[i][1] == name) {
	       		Event.stopObserving(element, name, Event.observers[i][2]);
	            Event.observers[i] = null;
			}
		}
	},


	removeObserverByElement: function(element) {
    	var element = $(element);
		if (!Event.observers) return;

		for (var i = 0; i < Event.observers.length; i++) {
			if(Event.observers[i][0] == element) {
				console.info(element);
//              Event.observers.remove(i);

				Event.stopObserving.apply(this, Event.observers[i]);
				Event.observers[i][0] = null;

			}
		}
	},


	cleanObserverCache: function() {
    	var element = $(element);
		if (!Event.observers) return;

		for (var i = 0; i < Event.observers.length; i++) {


//			console.info( Event.observers[i][0].parentNode );
				
			if(Event.observers[i][0].tagName == 'A' ) {
				console.info(Event.observers[i][0] + ' - ' + Event.observers[i][1]);
//              Event.observers.remove(i);

				Event.stopObserving.apply(this, Event.observers[i]);
				Event.observers[i] = null;

			}
		}
	}

	
});


*/

// Adapted from DOM Ready extension by Dan Webb
// http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
// which was based on work by Matthias Miller, Dean Edwards and John Resig
//
// Usage:
//
// Event.onReady(callbackFunction);
Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (Event._timer)  clearInterval(Event._timer);
    
    Event._readyCallbacks.each(function(f) { f() });
    Event._readyCallbacks = null;
    
  },
  onReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady;
      
      if (domReady.done) return f();
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            var dummy = location.protocol == "https:" ?  "https://javascript:void(0)" : "javascript:void(0)";
            document.write("<script id=__ie_onload defer src='" + dummy + "'><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") { domReady(); }
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});