
////////////////////////////////////////////////////////////////////////////////////////////////////
// Adds a parameter to a url, makes sure separators are properly used.
////////////////////////////////////////////////////////////////////////////////////////////////////
function addUrlParam(iUrl, iParam, iValue)
{
    var sep = (iUrl.indexOf('?') >= 0) ? '&' : '?';
    return iUrl + sep + iParam + '=' + iValue;
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Extend an object with properties of another
////////////////////////////////////////////////////////////////////////////////////////////////////
function Extend(destination, source)
{
    for (var property in source)
        destination[property] = source[property];
    return destination;
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Identifies if an object is defined, returns true if it is, false otherwise
////////////////////////////////////////////////////////////////////////////////////////////////////
function isUndefined(iObject)
{ return typeof iObject == "undefined"; }

////////////////////////////////////////////////////////////////////////////////////////////////////
// Identifies if an object is defined, returns true if it is, false otherwise
////////////////////////////////////////////////////////////////////////////////////////////////////
function isDefined(iObject)
{ return typeof iObject != "undefined"; }

////////////////////////////////////////////////////////////////////////////////////////////////////
// Language
////////////////////////////////////////////////////////////////////////////////////////////////////
var Language =
{
    entries: new Array(),

    lang: 'en',

    setEntry: function(iId, iText)
        { this.entries[iId] = iText; },

    getEntry: function(iId)
        {
            if (this.entries[iId])
                return this.entries[iId];
            return iId;
        },
    
    setEntries: function(iPairs)
        {
            for (var i = 0; i < iPairs.length; i += 2)
                this.setEntry(iPairs[i], iPairs[i+1]);
        }
};

////////////////////////////////////////////////////////////////////////////////////////////////////
// Displays a popup
////////////////////////////////////////////////////////////////////////////////////////////////////
function ShowPopup(iName, iUrl, iWidth, iHeight)
{
    window.open(
        iUrl, iName,
        'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0,width='+iWidth+',height='+iHeight
    );
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Creates an EventHandler
////////////////////////////////////////////////////////////////////////////////////////////////////
function EventHandler()
{
    var eventHandler = this;

    this.eventHandlers = new Array();
    
    this.add = function(iEventHandler)
        { this.eventHandlers[this.eventHandlers.length] = iEventHandler; }

    this.invoke = function(iArg)
         {
            for (var i = 0; i < eventHandler.eventHandlers.length; i++)
            {
                var handler = eventHandler.eventHandlers[i];
                if (typeof handler == "object")
                    handler.invoke(iArg);
                else
                    handler(iArg);
            }
        }
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Strings
////////////////////////////////////////////////////////////////////////////////////////////////////
Extend(
    String.prototype,
    {
        endsWith: function(iString)
            {
                return (this.substr(-iString.length, iString.length) == iString);
            },    
    
        padLeft: function(iChar, iLength)
            {
                var ret = this;
                for (var i = 0; ret.length < iLength; i++)
                    ret = iChar + ret;
                return ret;
            },

        padRight: function(iChar, iLength)
            {
                var ret = this;
                for (var i = 0; ret.length < iLength; i++)
                    ret = iChar + ret;
                return ret;
            },
            
        startsWith: function(iString)
            {
                return (this.substr(0, iString.length) == iString);
            },
            
        trim: function()
            {
                return this.replace(/^\s+|\s+$/, '');
            }
    }
);


////////////////////////////////////////////////////////////////////////////////////////////////////
// Elements
////////////////////////////////////////////////////////////////////////////////////////////////////
var Elements =
{
    create : function(iElement, iAttributes, iContent)
        {
            var element = document.createElement(iElement);
            
            if (iAttributes)
            {
                for (var property in iAttributes)
                {
                    element.setAttribute(property, iAttributes[property]);
                    if (property == 'class')
                        element.setAttribute('className', iAttributes[property]);
                }
            }
            
            if (iContent)
            {
                if (typeof iContent == "string")
                    element.appendChild(document.createTextNode(iContent));
                else if (iContent instanceof Array)
                {
                    for (var i = 0; i < iContent.length; i++)
                    {
                        if (typeof iContent[i] == "string")
                            element.appendChild(document.createTextNode(iContent[i]));
                        else
                            element.appendChild(iContent[i]);
                    }
                }
                else if (typeof iContent == "object")
                    element.appendChild(iContent);            
            }
            
            return element;
        },
        
    getByClassName : function(iNode, iClassName)
        {
            var nodes = [];
            var re = new RegExp('\\b' + iClassName + '\\b');
            var elements = iNode.getElementsByTagName("*");
            for(var i = 0; i < elements.length; i++)
            {
                if (re.test(elements[i].className))
                    nodes.push(elements[i]);
            }
            return nodes;            
        }
    
};


////////////////////////////////////////////////////////////////////////////////////////////////////
// popup
////////////////////////////////////////////////////////////////////////////////////////////////////
function popupcenter(page,largeur,hauteur,options,propriete)
{     
	var top=(screen.height-hauteur)/2;     
	var left=(screen.width-largeur)/2;    
	propriete = "menubar=yes,scrollbars=yes,statusbar=yes,resizable=yes,directories=yes,location=yes"
	window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options +propriete); 
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// Onload
////////////////////////////////////////////////////////////////////////////////////////////////////
var Onload =
{
    eventHandler : new EventHandler(),

    init : function()
        {
            var f = window.onload;
            
            window.onload = Onload.eventHandler.invoke;
            
            if (f)
                 Onload.add(f);       
        },
        
    add : function(iEventHandler)
        {
            Onload.eventHandler.add(iEventHandler);
        }
       
};

Onload.init();

////////////////////////////////////////////////////////////////////////////////////////////////////
// IE6
////////////////////////////////////////////////////////////////////////////////////////////////////
//var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

////////////////////////////////////////////////////////////////////////////////////////////////////
 
		
////////////////////////////////////////////////////////////////////////////////////////////////////
// IFRAME resizeing
////////////////////////////////////////////////////////////////////////////////////////////////////

			/*************************************************************************
			This code is from dyn-web.com
			free for all uses as long as this notice retained
			*************************************************************************/
			/*  dw_loader.js  version date: July 2008
			loads url in iframe, transfers body content into div
			provides defaults for iframe and display div ID's 
			also supports use with multiple iframes and divs
			optional message for loading in display div 
			supports functions to be called once the div has been populated with new content 
			function in iframed document can be invoked should some operations need to be performed from there */
			
			function dw_loadExternal(url, ifrmId, divId, bLoadMsg) {
			
			ifrmId = ifrmId || 'buffer'; divId = divId || 'display-iframe'; 
			if ( window.frames[ifrmId] ) {
			
			window.frames[ifrmId].location = url;
			var lyr = document.getElementById? document.getElementById(divId): null;
			if ( lyr && bLoadMsg ) { // Option to display message while retrieving data 
				lyr.innerHTML = '';
				lyr.style.display = 'block'; 
			}
			return false;
			} 
			return true; 
			}

			function dw_displayExternal(ifrmId, divId, fp) {
			
			ifrmId = ifrmId || 'buffer'; divId = divId || 'display-iframe'; 
			
			var lyr = document.getElementById? document.getElementById(divId): null;
			if ( window.frames[ifrmId] && lyr ) {
			lyr.innerHTML = window.frames[ifrmId].document.body.innerHTML;
			lyr.style.display = 'block'; 
			
			if ( typeof fp == 'function' ) {
				fp();
			}

			if ( typeof window.frames[ifrmId].doOnIframedLoad == 'function' ) {
				window.frames[ifrmId].doOnIframedLoad();
			}
			}
			}