if (!Function.prototype.apply) {
  // Based on code from http://www.youngpup.net/
  Function.prototype.apply = function(object, parameters) {
    var parameterStrings = new Array();
    if (!object)     object = window;
    if (!parameters) parameters = new Array();
    
    for (var i = 0; i < parameters.length; i++)
      parameterStrings[i] = 'parameters[' + i + ']';
    
    object.__apply__ = this;
    var result = eval('object.__apply__(' + 
      parameterStrings.join(', ') + ')');
    object.__apply__ = null;
    
    return result;
  }
}
Function.prototype.bind = function(object) {
  var __method = this;
  return function() {
    return __method.apply(object, arguments);
  }
}


function MorphineBase() {
	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
	this.isMSIE5 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5') != -1);
	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
	this.tabImagesACharger = new Array() ;
	this.tabImagesACharger2 = new Array() ;
	this.baseURL = "" ;
}

// argument 1 le dossier, argument 2, 3, 4, etc... les fichiers dans ce dossier : au minimum 2 arguments
MorphineBase.prototype.precharger = function() {
	var j = this.tabImagesACharger.length ;
	if (j==0) morphine_base.addEvent(window, "load", MorphineBase.prototype.precharger2);
	for (var i=1;i<MorphineBase.prototype.precharger.arguments.length;i++) {
		this.tabImagesACharger[i+j-1] = MorphineBase.prototype.precharger.arguments[0]+MorphineBase.prototype.precharger.arguments[i] ;
	}
}
MorphineBase.prototype.precharger2 = function() {
	if (document.images) {
		for (var i=0;i<morphine_base.tabImagesACharger.length;i++) {
			morphine_base.tabImagesACharger2[i] = new Image();
			morphine_base.tabImagesACharger2[i].src = morphine_base.tabImagesACharger[i];
			//alert(morphine_base.tabImagesACharger2[i].src) ;
		}
	}
}

MorphineBase.prototype.getBaseURL = function() {
	var elements = document.getElementsByTagName('script');
	for (var i=0; i<elements.length; i++) {
		//alert(elements[i].src) ;
		if (elements[i].src && (elements[i].src.indexOf("MorphineBase.js") != -1)) {
			var src = elements[i].src;
			//comboBox.srcMode = (src.indexOf('_src') != -1) ? '_src' : '';
			src = src.substring(0, src.lastIndexOf('/'));
			this.baseURL = src;
			break;
		}
	}
	this.documentBasePath = document.location.href;
	if (this.documentBasePath.indexOf('?') != -1)
		this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
	this.documentURL = this.documentBasePath;
	this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
	if (this.baseURL.indexOf('://') == -1 && this.baseURL.charAt(0) != '/') {
		this.baseURL = this.documentBasePath + "/" + this.baseURL;
	}
	return this.baseURL ;
}

MorphineBase.prototype.getAttrib = function(elm, name, default_value) {
	if (typeof(default_value) == "undefined")
		default_value = "";
	if (!elm || elm.nodeType != 1)
		return default_value;
	var v = elm.getAttribute(name);
	if (name == "class" && !v)
		v = elm.className;
	if (name == "style")
		v = elm.style.cssText;
	return (v && v != "") ? v : default_value;
};

MorphineBase.prototype.addEvent = function(obj, name, handler) {
	if (this.isMSIE) {
		obj.attachEvent("on" + name, handler);
	} else
		obj.addEventListener(name, handler, false);
};

MorphineBase.prototype.insertHtmlBeforeEnd = function(element, html) {
	if (document.body.insertAdjacentHTML) {
		element.insertAdjacentHTML("beforeEnd", html);
	} else {
		var r = document.createRange();
		r.setStartBefore(element);
		var parsedNode = r.createContextualFragment(html);
		element.appendChild(parsedNode);
	}
}

MorphineBase.prototype.insertHtmlAfter = function(element, html) {
	if (document.body.insertAdjacentHTML) {
		element.insertAdjacentHTML("afterEnd", html);
	} else {
		var r = document.createRange();
		r.setStartBefore(element);
		var parsedNode = r.createContextualFragment(html);
		var parent = element.parentNode;
		if (element.nextSibling)
			parent.insertBefore(parsedNode, element.nextSibling);
		else
			parent.appendChild(parsedNode);
	}
}

// objParentId peut etre soit un string soit un objet
MorphineBase.prototype.isChildOf = function(obj,objParentId) {
	while (obj && obj.tagName != 'BODY' && obj.tagName != 'HTML') {
		if (obj.id && obj.id.indexOf(objParentId)!=-1) return true ;
		obj = obj.parentNode;
	}
	return false ;
}
MorphineBase.prototype.isChildOfObject = function(obj,objParent) {
	while (obj && obj.tagName != 'BODY' && obj.tagName != 'HTML') {
		if (obj==objParent) return true ;
		obj = obj.parentNode;
	}
	return false ;
}


MorphineBase.prototype.getInnerText = function(el) {
	if (this.isMSIE) return el.innerText;	//Not needed but it is faster
	var str = "";
	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += this.getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
		
	}
	
	return str;
}

MorphineBase.prototype.getParent = function(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return this.getParent(el.parentNode, pTagName);
}


MorphineBase.prototype.getXmlHttpObject = function() {
	if(window.XMLHttpRequest) // FIREFOX
		this.xmlhttp = new XMLHttpRequest();
	else if(window.ActiveXObject) // IE
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return(false) ;
	return(this.xmlhttp) ;
}

MorphineBase.prototype.docCharge = function() { 
			//e = window.event ;
			//target = e.srcElement ;
			//alert(this.xmlhttp.readyState);
			if(this.xmlhttp.readyState == 4) {
				var mondiv = document.getElementById(this.idMonDiv) ;
				mondiv.innerHTML = this.xmlhttp.responseText ;
			}
}

MorphineBase.prototype.setDivToXmlHttp = function(idElement, url, data) {
	//alert("toto") ;
	this.xmlhttp = this.getXmlHttpObject() ;
	//this.getXmlHttpObject() ;
	if (!this.xmlhttp) return false ;
	this.idMonDiv = idElement ;
	this.xmlhttp.open("GET", url, true);
	//xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	//if (this.isMSIE) {
		this.xmlhttp.onreadystatechange = this.docCharge.bind(this) ;//(this, idElement)
	this.xmlhttp.send(data);
}

MorphineBase.prototype.getElement = function(idelement) {
	element = null ;
	if (document.getElementById) element = document.getElementById(idelement);
	else if (document.all) element = document.all[idelement] ;
	else if (document.layers) element = document.layers[idelement] ;
	return element ;
}


MorphineBase.prototype.getAbsX = function(elt) { return this.getAbsPos(elt,"Left"); } ;//parseInt(elt.x) ? elt.x : 
MorphineBase.prototype.getAbsY = function(elt) { return this.getAbsPos(elt,"Top"); } ;//parseInt(elt.y) ? elt.y : 
MorphineBase.prototype.getAbsPos = function(elt,which) {
	iPos = 0;
	//elt = this.getElement(elt) ;
	while (elt!=null && elt.tagName!="BODY") {
		iPos += eval("elt.offset"+which);
		elt = elt.offsetParent;
	}
	return iPos;
} ;

var morphine_base = new MorphineBase() ;


function confirmerEff(url) {
	if (window.confirm("Souhaitez-vous effacer cette fiche ?")) {
		window.open(url,"_self") ;
	}
}


