
String.prototype.htmlentities = function () {   return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');};


Array.prototype.ar_remove=function(s){
  for(i=0;i<this.length;i++){
    if(s==this[i]) this.splice(i, 1);
  }
}

Array.prototype.ar_find=function(s){
  for(i=0;i<this.length;i++){
    if(s==this[i]) return true;
  }
  return false;
}

Array.prototype.find=function(s){
  for(i=0;i<this.length;i++){
    if(s==this[i]) return true;
  }
  return false;
}

Util = function () {};

Util.removeClass = function(el, className) {
	if (!(el && el.className)) {
		return;
	}
	var cls = el.className.split(" ");
	var ar = new Array();
	for (var i = cls.length; i > 0;) {
		if (cls[--i] != className) {
			ar[ar.length] = cls[i];
		}
	}
	el.className = ar.join(" ");
};

Util.addClass = function(el, className) {
	Util.removeClass(el, className);
	el.className += " " + className;
};



function Randomize(from, to){
	return from + Math.floor(Math.random()*to);

}

function zpad(str, n){

	if(n == undefined)
		n = 2;
	
	str = ''+str;

	while(1){
		if(str.length >= n) break;
		str = '0' + str;
	}

	return str;
}

function CreateCSS(css_path){

	if(document.createStyleSheet) {
		document.createStyleSheet(css_path);
	}

	else {

		//var styles = "@import url('" + css_path + "');";
		var newSS=document.createElement('link');

		newSS.rel	='stylesheet';
		newSS.type	='text/css';
		newSS.href	= css_path;
		//newSS.href='data:text/css,'+escape(styles);

		document.getElementsByTagName("head")[0].appendChild(newSS);
	}
}



function gById(id){
	return document.getElementById(id);

}

function showPartial(id){
	showDiv(gById(id),				'inline');
	showDiv(gById(id+'_dot'),		'inline');
}

function showDiv(obj, type){

	if(type == undefined)
		type = 'block';

	if(obj.style.display == 'none')
		obj.style.display = type;
	else
		obj.style.display = 'none';

}

var gObj;
function showDivXml(obj, url, refresh, callback){

	if(callback == undefined)
		callback = 'xmldivresponse';
	
	if(obj.style.display == 'none'){

		if(refresh || obj.innerHTML == ''){
			gObj = obj;
			loadXMLDoc(url, callback);
		}
		else
			obj.style.display = 'block';
	}
	else
		obj.style.display = 'none';

}

function xmldivresponse(text){

	gObj.innerHTML = text;
	gObj.style.display = 'block';

}

function blinkElement(elem,time_milli,nbBlink){

	if(elem.style.visibility=='hidden'){
		elem.style.visibility='visible';
		time_milli *= 10;
	}
	else{
		elem.style.visibility='hidden';
		time_milli /= 10;
	}

	if(nbBlink)
		setTimeout('blinkElement(' + elem.id + ',' + time_milli + ',' + (--nbBlink) + ');',time_milli);
	else
		elem.style.visibility='visible';

}
		
function setMaxChar(elem,outputElem,nbChar){
	
	if(elem.value.length>nbChar)
		elem.value = elem.value.substring(0,nbChar);
	
	if(nbChar-elem.value.length>1)
		outputElem.innerHTML = '<b>' + (nbChar-elem.value.length) + '</b> caractères';
	else
		outputElem.innerHTML = '<b>' + (nbChar-elem.value.length) + '</b> caractère';
	
}

function row2color( tb, spos , row1, row2){

	if(spos == undefined) { spos = 0; }
	if(row1 == undefined){ row1 = 'listG';}
	if(row2 == undefined) { row2 = 'listW'; }

	k=0;
	for(i=spos; i< tb.rows.length; i++){
		
		if(k++%2)
			tb.rows[i].className = row2;
		else
			tb.rows[i].className = row1;
		
	}

}







function mouseX(e) {
		return  e.clientX + document.documentElement.scrollLeft;

}

function mouseY(e) {
		return  e.clientY + document.documentElement.scrollTop;

}






function getOffsetTop(element, deep) {
   return getOffsetProperty(element, 'Top', deep);
}

function getOffsetLeft(element, deep) {
   return getOffsetProperty(element, 'Left', deep);
}

function getOffsetProperty(element, property, deep) {
   var offsetValue = 0;
   offsetProperty = 'offset' + property;
   
   do {
      offsetValue += element[offsetProperty];
      element = element.offsetParent;
   } while (deep == true && element != document.body && element != null);
   return offsetValue;
}


function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


function BrowserInfo(){

	//id is the element id of the righ clicked object
	this.sAgent = navigator.userAgent.toLowerCase() ;

}

BrowserInfo.prototype.IsGecko = function(){ return(this.sAgent.indexOf("msie") == -1);};
BrowserInfo.prototype.IsIE = function(){ return(this.sAgent.indexOf("msie") != -1);};
BrowserInfo.prototype.IsNetscape = function(){ return(this.sAgent.indexOf("netscape") != -1);};
BrowserInfo.prototype.IsSafari = function(){ return(this.sAgent.indexOf("safari") != -1);};


function WindowSize(side){
	 var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  if(side == 'width')
	return myWidth;
  if(side == 'height')
	return myHeight;

}

function WindowScroll(side) {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }

  if(side == 'left')
	return scrOfX;
  if(side == 'top')
	return scrOfY;

}


var gKey = 0;
document.onkeydown 	= KeyCheck;
document.onkeyup 	= KeyReset;
function KeyReset(){
	gKey = 0;
}
function KeyCheck(e){
	gKey = (window.event) ? event.keyCode : e.keyCode; 
}
