function dlog(string)
{
	if(window.console && window.console.log)
	{
		window.console.log(string);
	}
}

function Browser() 
{

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();


function addIntToString(string, num)
{	
	return parseInt(string) + num;
}

function addIntToInputByObjectId(obj_id, num)
{
	var string = document.getElementById(obj_id).value;
	document.getElementById(obj_id).value =  parseInt(string) + num;
}
function disableEventPropagation(e)
{
	if (!e) 
		var e = window.event;
	
		e.cancelBubble = true;
	
	if (e.stopPropagation) 
		e.stopPropagation();
}

function confirmLink(link, message, confirmVariable, e)
{
	disableEventPropagation(e);
  	var IsOK = confirm(message);
    
  	if (IsOK) 
    {
        link.href += confirmVariable;
    }
    return IsOK;
}

// Input Control
function inputAcceptOnlyNumbers(input)
{		
	input.value = stripNotNumbers(input.value);
}

function inputAcceptOnlyNumbersByObjectId(obj_id)
{		
	var obj = document.getElementById(obj_id);	
	obj.value = stripNotNumbers(obj.value);
}

function stripNotNumbers(str)
{
	var i;
	var fstr = '';
	
	for(i = 0 ; i < str.length; i++)
	{		
		
		if((str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) || str.charAt(i) == '.')
			fstr += str.charAt(i);
		else if(str.charAt(i) == ',')
			fstr += '.';
	}
	
	return fstr;
}


function telOnKeyDown(event, input)
{	
	var str = input.value;
	
	
	if(event.keyCode >= 95 && event.keyCode <= 105)
	{	
		if(str.length == 2)
			input.value = input.value + ' ';
		else if(str.length > 2 && str.length % 3 == 2)
			input.value = input.value + ' ';
	}
}

function telOnKeyUp(event, input)
{	
	var str = input.value;
		
	if(event.keyCode == 8)
	{
		if(str.charAt(str.length-1) == ' ')
			input.value = input.value.substr(0, str.length-1);
	}
}

function timeOnKeyDown(event, input)
{	
	var str = input.value;
	
	
	if(event.keyCode >= 95 && event.keyCode <= 105)
	{	
		if(str.length == 2)
			input.value = input.value + ':';
		else if(str.length > 2 && str.length % 3 == 2)
			input.value = input.value + ':';
	}
}

function timeOnKeyUp(event, input)
{	
	var str = input.value;
		
	if(event.keyCode == 8)
	{
		if(str.charAt(str.length-1) == ':')
			input.value = input.value.substr(0, str.length-1);
	}
}

function popupView(url, left, top, screenX, screenY, width, height, resizable, scrollbars)
{
	if(!resizable)
		resizable = 0;
		
	if(!scrollbars)
		scrollbars = 0;
	
	return window.open(url, '', 'toolbar=0, resizable='+resizable+', scrollbars='+scrollbars+', status=0, top='+top+', left='+left+', screenX='+screenX+', screenY='+screenY+', width='+width+', height='+height);
}

function popupViewCentered(url, width, height, resizable, scrollbars)
{
	var left = (screen.width - width)/2;
	var top = (screen.height - height)/2;
	
	return popupView(url, left, top, left, top, width, height, resizable, scrollbars);
}

function popupViewXCentered(url, top, width, height, resizable, scrollbars)
{
	var top = (screen.height - height)/2;
	
	return popupView(url, left, top, left, top, width, height, resizable, scrollbars);
}

function popupViewYCentered(url, left, width, height, resizable, scrollbars)
{
	var left = (screen.width - width)/2;
	
	return popupView(url, left, top, left, top, width, height, resizable, scrollbars);
}

function getXHR()
{
	var xhr_object = null; 
	 
	if(window.XMLHttpRequest) // Firefox 
	   xhr_object = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 	 
	}
	
	return xhr_object;
 
}

function XHRGetLoad(object_id, file, arguments_array)
{
	var xhr = null; 
	 
	if(window.XMLHttpRequest) // Firefox 
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return; 	 
	}
	
	var content_url  = 'launchAjaxScript.php?object_id='+object_id+'&script_name='+script_name;
	
	if(arguments_array)
	for(var i = 0; i < arguments_array.length; i++)
	{
		if(arguments_array[i] && arguments_array[i]['name'] && arguments_array[i]['value'])
			content_url += '&'+arguments_array[i]['name']+'='+arguments_array[i]['value'];
	}
	xhr.open('GET', content_url, true);
		
	xhr.onreadystatechange = function()
	{
		if(xhr.readyState == 4)
			eval(xhr.responseText);
	}
	
	xhr.send(null);
	
}

function XHRModuleGetLoad(object_id, package_name, module_name, sub_dir, file, arguments_array, arguments_string, method)
{
			
	var content_url  = 'launchAjaxScript.php?object_id='+object_id+'&package_name='+package_name+'&module_name='+module_name+'&script_name='+file;
	
	if(arguments_array)
	for(var i = 0; i < arguments_array.length; i++)
	{
		if(arguments_array[i] && arguments_array[i]['name'] && arguments_array[i]['value'])
			content_url += '&'+arguments_array[i]['name']+'='+arguments_array[i]['value'];
	}
	
	if(arguments_string)
		content_url += '&'+arguments_string;
		
	method = method || 'get';
		
	new Ajax.Request(content_url, {
		  method: method,
		  contentType: 'text/javascript',
			  onComplete: function(transport) 
			  {	    
			    eval(transport.responseText);
			}});
	
}

function XHRModuleImplGetLoad(object_id, package_name, module_name, impl_name, sub_dir, file, arguments_array, arguments_string, method)
{
	var xhr = null; 
	 
	if(window.XMLHttpRequest) // Firefox 
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	   return; 	 
	}
	
	method = method || 'get';
	
		
	var content_url  = 'launchAjaxScript.php?object_id='+object_id+'&package_name='+package_name+'&module_name='+module_name+'&impl_name='+impl_name+'&script_name='+file;
	
	var arguments = '';
	
	if(arguments_array)
	for(var i = 0; i < arguments_array.length; i++)
	{
		if(arguments_array[i] && arguments_array[i]['name'] && arguments_array[i]['value'])
			arguments += '&'+arguments_array[i]['name']+'='+arguments_array[i]['value'];
	}
	
	if(arguments_string)
		arguments += '&'+arguments_string;
		
	new Ajax.Request(content_url, {
		  method: method,
		  parameters:arguments,
		  contentType: 'text/javascript',
			  onComplete: function(transport) 
			  {	    			  	
			    eval(transport.responseText);
			}});
	
}

function XHRModuleGenericGetLoad(object_id, package_name, module_name, sub_dir, file, arguments_array, arguments_string, method)
{
	var content_url  = 'launchAjaxScript.php?object_id='+object_id+'&package_name='+package_name+'&module_name='+module_name+'&script_name='+file;
		
	
	var arguments = '';
	if(arguments_array)
	for(var i = 0; i < arguments_array.length; i++)
	{
		if(arguments_array[i] && arguments_array[i]['name'] && arguments_array[i]['value'])
			arguments += '&'+arguments_array[i]['name']+'='+arguments_array[i]['value'];
	}
	
	
	method = method || 'get';
	
	if(arguments_string)
		arguments += '&'+arguments_string;
				
	new Ajax.Request(content_url, {
		  method: method,
		  contentType: 'text/javascript',
		  parameters:arguments,
			  onComplete: function(transport) 
			  {	    
			    eval(transport.responseText);
			}});
	
}

function XHRArrayPut(key, value, array)
{
	var ar = new Array;
	if(array && array.length)
		ar = array;
		
	var index = ar.length;
	ar[index] = new Array;
	ar[index]['value'] = value;
	ar[index]['name'] = key;
	
	return ar;
		
}

function AjaxScriptAsync(script_name, parameters, method, onComplete)
{
	
	method = method || 'get';
	
	new Ajax.Request('launchAjaxScript.php?script_name='+script_name, {
		  method: method,
		  asynchronous:true,
		  parameters:parameters,		  
		  contentType: 'text/javascript',
			  onSuccess: function(transport) 
			  {
			  	try
			  	{	 
			 	  	eval(transport.responseText);					
			   	}
			   	catch(e)
			   	{
						dlog("An exception occurred in the script. Error name: " + e.name 
						+ ". Error message: " + e.message);
			
			}},onComplete:onComplete
			});
}

function AjaxScriptSync(script_name, parameters, method, onComplete)
{
	
	var method = method || 'get';
	
	new Ajax.Request('launchAjaxScript.php?script_name='+script_name, {
		  method: method,
		  asynchronous:false,
		  parameters: parameters,
		  contentType: 'text/javascript',
			  onSuccess: function(transport) 
			  {
			  	try
			  	{	 
			 	  	eval(transport.responseText);					
			   	}
			   	catch(e)
			   	{
					if(console && console.log)
					{
						console.log("An exception occurred in the script. Error name: " + e.name 
						+ ". Error message: " + e.message);
					}
					else
					{
			   			alert("An exception occurred in the script. Error name: " + e.name 
						+ ". Error message: " + e.message);
					}
			}},onComplete:onComplete
			});
}

function setMouseOverClass(obj)
{
	if(obj.className.length)
	{
		if(obj.className.substr(obj.className.length-5, 5) != '_over')
		{
			obj.className = obj.className+'_over';
		}
	}
}


function setMouseOutClass(obj)
{
	if(obj.className.length)
	{
		if(obj.className.substr(obj.className.length-5, 5) == '_over')
		{
			obj.className = obj.className.substr(0, obj.className.length-5);
		}
	}
}

function setMouseOverImage(obj)
{
	if(obj.className.length)
	{
		if(obj.className.substr(obj.className.length-5, 5) != '_over')
		{
			obj.className = obj.className+'_over';
		}
	}
}


function setMouseOutImage(obj)
{
	if(obj.src && obj.src.length)
	{
		obj.src = obj.src.replace('_over', '');			
		
	}
}

function setMouseOverImage(obj)
{
	if(obj.src && obj.src.length)
	{
		obj.src = obj.src.replace(/(\.[^.]*)$/, '_over$1');				
	
	}
}

function disableEventPropagation(e)
{
	if (!e) 
		var e = window.event;
	
		e.cancelBubble = true;
	
	if (e.stopPropagation) 
		e.stopPropagation();
}

function getViewportScrollX() 
{
	var scrollX = 0;
	if( document.documentElement && document.documentElement.scrollLeft ) 		  
		scrollX = document.documentElement.scrollLeft;		  
	else if( document.body && document.body.scrollLeft ) 		  
		scrollX = document.body.scrollLeft;		  
	else if( window.pageXOffset ) 		  
		scrollX = window.pageXOffset;		  
	else if(window.scrollX) 			
		scrollX = window.scrollX;
	
	return scrollX;
}
	
function getViewportScrollY() 
{
	var scrollY = 0;
	if( document.documentElement && document.documentElement.scrollTop )
		scrollY = document.documentElement.scrollTop;			
	else if( document.body && document.body.scrollTop )
		scrollY = document.body.scrollTop;			
	else if( window.pageYOffset )
		scrollY = window.pageYOffset;			
	else if( window.scrollY )
		scrollY = window.scrollY;
	
	return scrollY;
}

function loadCssFile(filepath)
{
	
	childs = document.getElementsByTagName('link');
	found = false;
	if(childs.length)
	for(i = 0; i < childs.length; i++)
	{
		child = childs.item(i);
		if(child.href == filepath)
		{
			found = true;
			break;
		}
	}
	
	if(!found)
	{
		
		head = document.getElementsByTagName('head').item(0);
		
			
		link = document.createElement('link');
	
		link.href=filepath;
		link.rel = 'stylesheet';
		link.type = 'text/css';
		
		head.appendChild(link);
	
		
	}	
}

function test()
{
	alert('bla');
}

function loadJavascriptFile(filepath)
{	
	
	childs = document.getElementsByTagName('script');
	found = false;
	if(childs.length)
	for(i = 0; i < childs.length; i++)
	{
		child = childs.item(i);
		if(child.src == filepath)
		{
			found = true;
			break;
		}
	}
	
	if(!found)
	{		
		head = document.getElementsByTagName('head').item(0);
		
		script = document.createElement('script');
		
		script.src=filepath;
		script.type = 'text/javascript';
							
		head.appendChild(script);
	}	
}

function loadJavascript(content)
{
	
	head = document.getElementsByTagName('head').item(0);
		
	script = document.createElement('script');
	script.type = 'text/javascript';			
	
	script.text = content;
	head.appendChild(script);
	
	
}

function getNumberZeroFilled(num, num_chars)
{
	
	var cnum = num.toString();
	
	if(cnum.length >= num_chars)
		return cnum;
	else
	{
		fnum = '';
		for(var i = 0; i < num_chars-cnum.length; i++)
		{
			fnum += '0';
		}	
		fnum += cnum;
		
		return fnum;
	}
}

function secondsToFormattedTime(seconds)
{
	var hours = parseInt(seconds/3600);
	var min = parseInt(seconds/60)%60;
	var sec = seconds % 60;
	
	if(hours)
		return hours+' h  '+min+' m  '+sec+' s';
	else if(min)
	{
		return min+' m  '+sec+' s';
	}
	else 
		return sec+' s';
}
