/***********************************************************************

THIS SCRIPT ADDS FUNCTION TO RUN on body.onload and body.onresize

************************************************************************/

window.onload = runLoadTasks;	
window.onresize = runResizeTasks;
window.onunload = cleanLoadTasks;

if( typeof(loadTaskList)=='undefined' )
    loadTaskList = new Array();

if( typeof(resizeTaskList)=='undefined' )
    resizeTaskList = new Array();


function Task(func, priority, delay){
	this.func = func;
	this.priority = typeof(priority)=='undefined' || priority==null ? 0 : priority;
	this.delay = typeof(delay)=='undefined' || delay==null ? 0 : delay;
}


function registerLoadTask(func, priority, delay){
	loadTaskList[loadTaskList.length] = new Task(func, priority, delay);
}

function registerResizeTask(func, priority, delay){
	resizeTaskList[resizeTaskList.length] = new Task(func, priority, delay);
}


function runLoadTasks() {
	loadTaskList = loadTaskList.sort(comparator);	
	for(var i=0; i< loadTaskList.length; i++) {
		if( loadTaskList[i].delay != 0)
			setTimeout(loadTaskList[i].func, loadTaskList[i].delay);
		else
			loadTaskList[i].func();
	}
	//loadTaskList = null;
}

function runResizeTasks() {
	resizeTaskList = resizeTaskList.sort(comparator);
	for(var i=0; i< resizeTaskList.length; i++) {
		if( resizeTaskList[i].delay != 0)
			setTimeout(resizeTaskList[i].func, resizeTaskList[i].delay);
		else
			resizeTaskList[i].func();
	}
	//do not make it null, resize can occur more than once!
}

function cleanLoadTasks(){
	for(var i=0; i< loadTaskList.length; i++) {
		loadTaskList[i].func = null;
	}
	loadTaskList.length = 0;
	loadTaskList = null;
}


function comparator(task1, task2){
	return task2.priority - task1.priority;	
}



    









