// JavaScript Document

// Function used by ProxyData class to retreive the file size of a group of files to load
function getBytesTotal(path)
{
	var bytesTotal	= 0;
	var domain		= '';
	var reponse		= null;
	var skipAJAX	= false;
	
	if(typeof(path) !== 'undefined' && path.indexOf('http') == 0)
	{	
		domain	= path.substring(path.indexOf('://') + 3);
		if(path.indexOf(domain) !== 0)
		{
			skipAJAX	= true;
		}
	}
	
	if($.browser.safari)
	{
		skipAJAX	= true;
	}
	
	if(!skipAJAX)
	{
		try
		{
			response = $.ajax({
				type: "HEAD",
				url: path,
				async: false
			});
	
			bytesTotal = parseInt(response.getResponseHeader('Content-Length'));
		}
		catch(exception)
		{
			// Do nothing
		}
	}
	
	if(isNaN(bytesTotal) || bytesTotal == 0)
	{
		bytesTotal = 50;
	}

	return bytesTotal;
}

function popup(url, width, height, menuBar)
{
	width = (typeof(width) == 'undefined')? 800 : width;
	height = (typeof(height) == 'undefined')? 600 : height;
	menuBar = (menuBar)? 'yes' : 'no';
	
	window.open(url, '', 'toolbar=no,location=no,status=no,menubar=' + menuBar + ',scrollbars=yes,resizable=no,width=' + width + ',height=' + height);
}

function addOnLoad(func) {
	var args = arguments;
	
	var oldLoad = window.onload;
	window.onload = function() {
		if(oldLoad)
		{
			oldLoad();
		}
		func(args[1]);
	};
}

function addOnResize(func) {
	var args = arguments;
	
	var oldResize = window.onresize;
	window.onresize = function() {
		if(oldResize)
		{
			oldResize();
		}
		func(args[1]);
	};
}

function getClientDimensions() {
	var dimensions;
	
	dimensions			= {};
	dimensions.width	= 0;
	dimensions.height	= 0;
	
	if(window.innerWidth) {
		dimensions.width = window.innerWidth;
		dimensions.height = window.innerHeight;
	}
	else if(document.documentElement && document.documentElement.clientWidth) {
		dimensions.width = document.documentElement.clientWidth;
		dimensions.height = document.documentElement.clientHeight;
	}
	else {
		dimensions.width = document.body.clientWidth;
		dimensions.height = document.body.clientHeight;
	}
	return dimensions;
}

function getScrollOffset() {
	var scrollOffset;
	
	scrollOffset = {};
	scrollOffset.x = (window.pageXOffset)? window.pageXOffset : (document.documentElement)? document.documentElement.scrollLeft : (document.body)? document.body.scrollLeft : 0;
	scrollOffset.y = (window.pageYOffset)? window.pageYOffset : (document.documentElement)? document.documentElement.scrollTop : (document.body)? document.body.scrollTop : 0;
	
	return scrollOffset;
}

function getCursorPosition(event) {
	var position;
	
	position = {};
	position.x = ((event.pageX)? event.pageX : event.clientX);
	position.y = ((event.pageY)? event.pageY : event.clientY);

	return position;
}

function getOffset(obj) {
	var offset;
	var tempOffset;
	
	offset = {};
	offset.x		= 0;
	offset.y		= 0;
	offset.width	= 0;
	offset.height	= 0;

	if(obj) {
		offset.x		+= obj.offsetLeft;
		offset.y		+= obj.offsetTop;
		offset.width	+= obj.offsetWidth;
		offset.height	+= obj.offsetHeight;
		
		if(obj.offsetParent) {
			tempOffset = getOffset(obj.offsetParent);
			offset.x		+= tempOffset.x;
			offset.y		+= tempOffset.y;
		}
	}
	
	return offset;
}

function getUrlVar(name) {
	var urlVars	= '';
	var url		= window.location + '';
	var value	= null;
	var regExp;
	
	regExp	= new RegExp('^.*(?:\\?|&)' + name + '=([^&#]*)');
	urlVars	= url.match(regExp);
	if(urlVars !== null)
	{
		value	= urlVars[1];
	}
	return value;
}

function appendUrlVar(url, name, value)
{
	var delimiter;
	
	if(url.indexOf('?') == -1)
	{
		delimiter	= '?';
	}
	else
	{
		delimiter	= '&';
	}
	
	return url + delimiter + name + '=' + escape(value);
}

function updateDefaultValue(e) {
	var currentTarget, relatedTarget;
	
	if(!e) {
		e=window.event;
	}
	
	currentTarget	= (window.event)? e.srcElement: e.target;
	relatedTarget	= (e.toElement)? e.toElement: e.relatedTarget;
	
	switch(e.type) {
		case 'blur':
			if(currentTarget.value === '') {
				currentTarget.value = currentTarget.defaultValue;
			}
			break;
		case 'focus':
			if(currentTarget.value == currentTarget.defaultValue) {
				currentTarget.value = '';
			}
			break;
	}
}

function delegate(_fn,_scope){
	var fn = _fn, scope = _scope||window, args = Array.prototype.slice.call(arguments,2);
	return function(){ 
		return fn.apply(scope,args.concat( Array.prototype.slice.call(arguments,0) )); 
	};
}

function gotoUrl(url) {
	window.location = url;
}

function padZero(str, num) { 
	var pd = '', i; 

	str = str.toString(); 
	if (num > str.length) 
	{ 
		for (i=0; i < (num-str.length); i++) 
		{ 
			pd += '0'; 
		} 
	} 
	return pd + str.toString(); 
} 
