/* -----------------------------------*/
/* --->>> onDOMReady Extension <<<----*/
/* -----------------------------------*/


Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        
        
        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);
  }
});


var triveCommon = Class.create();

triveCommon.prototype = {
	
	getPosition: function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	},
	

	setXSL: function(xmlSource, xslUrl){
				
	/*
		Description:	Transforms a xml with a xsl and returns the output.
		Parameters:		xmlSource, xslUrl 
		Returns:		innerHTML
		
		Example:	
		new Ajax.Request('myXML.xml', {
  			method: 'get',
  			onSuccess: function(transport) {
				$('myContainer').innerHTML = triveCommon.prototype.setXSL(transport.responseXML,'myXSL.xsl');
  			}
		});
	*/

				if(document.implementation && document.implementation.createDocument)
				{
					
					var el = document.createElement('div');
					var xsltProcessor = new XSLTProcessor();

					var myXMLHTTPRequest = new XMLHttpRequest();
					myXMLHTTPRequest.open("GET", xslUrl, false);
					myXMLHTTPRequest.send(null);

					xslStylesheet = myXMLHTTPRequest.responseXML;
					xsltProcessor.importStylesheet(xslStylesheet);
					
					var resultDocument = xsltProcessor.transformToFragment(xmlSource, document);
					el.appendChild(resultDocument);
					return el.innerHTML;

				}
				else if(window.ActiveXObject)
				{
					
					xsl = new ActiveXObject("MSXML2.DOMDocument");
					xsl.async = false
					xsl.load(xslUrl)

					return xmlSource.transformNode(xsl);
				}
				else
				{
					return false;
				}

			}
	
}
