if (!String.prototype.startsWith)
    String.prototype.startsWith = function(str) {return (this.match("^"+str)==str);};
if (!String.prototype.trim)
    String.prototype.trim = function() {return this.replace(/^\s+|\s+$/g,"");};

function ltrim(s)
{
	var l=0;
	while(l < s.length && s[l] == ' ')
	{	l++; }
	return s.substring(l, s.length);
}

function rtrim(s)
{
	var r=s.length -1;
	while(r > 0 && s[r] == ' ')
	{	r-=1;	}
	return s.substring(0, r+1);
}

// Détection système
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


// Si on est sur un mac on remplace tous les classes picOutlook
window.addEvent("domready", function() {
    $$("img.picOutlook").each(function(img) {
        if (BrowserDetect.OS == "Mac") {
            img.src = "Contents/images/btn/pic_macmail.png";
            img.title = "Add to Mac Mail";
            img.alt = "Add to Mac Mail";
        }
    });        
});


// Fonction permettant de lancer plusieurs fonctions dans le window.onload
function lancer(fct) {
    if (window.addEventListener)
        window.addEventListener('load', fct, false);
    else
        window.attachEvent('onload', fct);
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function getParam(name)
{  
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
    var regexS = "[\\?&]"+name+"=([^&#]*)";  
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)    
        return "";
    else
        return results[1];
}      

function encodeMyHtml(value) {
    encodedHtml = escape(value);
    encodedHtml = encodedHtml.replace(/\//g,"%2F");
    encodedHtml = encodedHtml.replace(/\?/g,"%3F");
    encodedHtml = encodedHtml.replace(/=/g,"%3D");
    encodedHtml = encodedHtml.replace(/&/g,"%26");
    encodedHtml = encodedHtml.replace(/@/g,"%40");
    encodeHtml.htmlEncoded.value = encodedHtml;
} 

function refreshWindow()
{   
    if (window.TB_Remove)
        TB_Remove();
    location.replace(location.href);
}

function setUpperCase(txtObj) 
{
    if (!txtObj)
        return;
    var reg = new RegExp("\n");
    var txtValue = txtObj.value.replace(reg, "");
    newVal = '';
    txtValue = txtValue.split(' ');
    for(var c=0; c < txtValue.length; c++) {
        newVal += txtValue[c].toUpperCase() + ' ';
    }    
    txtObj.value = ltrim(rtrim(newVal));
}

function setFirstCharCap(txtObj)
{
    if (!txtObj)
        return;
    var reg = new RegExp("\n");
    var txtValue = txtObj.value.replace(reg, "");
    newVal = '';
    txtValue = txtValue.split(' ');
    for(var c=0; c < txtValue.length; c++) {
        newVal += txtValue[c].substring(0,1).toUpperCase() +
        txtValue[c].substring(1,txtValue[c].length) + ' ';
    }
    txtObj.value = ltrim(rtrim(newVal));
}

function setTrim(txtObj)
{
    if (!txtObj)
        return;
    var txtValue = ltrim(rtrim(txtObj.value));
    txtObj.value = txtValue;
}

function validEmail(strEmail) {
    var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
	if(reg.test(strEmail))
		return true;
	else
		return false;
}
            