var duration			= 0;
var event_timer		= 0;
var montage_holder	= '';
var next_id				= 0;
var last_title			= '';
var last_desc			= '';
var last_url			= '';
var montageMode		= 0;

function loadMontage(obj, obj_width, obj_height, obj_duration) {
	if(document.getElementById(obj)) { container = document.getElementById(obj); }else{ alert('The container has not been added'); return false; }
	if(obj_width < 1) 	{ alert('The image width has not been set internally'); 		return false; }
	if(obj_height < 1) 	{ alert('The image height has not been set internally');		return false; }
	if(obj_duration < 1) { alert('The image duration has not been set internally'); 	return false; }
	
	duration = obj_duration;
	montage_holder = obj;
	
	container.style.width = obj_width+'px';	
	
	// create an image area
	var image 				= document.createElement('div');
	image.id	 				= 'montage_image_holder';
	image.style.width		= '100%';
	image.style.height	= obj_height+'px';
	container.appendChild(image);
	
		
	// let the user know the screen is loading
	var status = document.createElement('p');
	status.innerHTML		= 'Loading Montage';
	status.id				= 'montage_status';
	image.appendChild(status);
	
	// add area for information
	var info = document.createElement('div');
	info.id					= 'montage_info';
	info.style.width		= '100%';
	container.appendChild(info);
	
	// get first parcel
	getParcel();
}

function setTimer() {
	event_timer = setTimeout("getParcel()", duration);
}

function getParcel() {
	var url = 'admin/modules/photofeed/get_image.php?id='+next_id;
	post_ajax_data(url, "processParcel('RETVAL')");
}

function processParcel(retVal) {
	retVal = unescape(retVal);
	
	// check we have enough arguments
	// id
	// image location
	// title
	// description
	pieces = retVal.split('|');
	if(pieces.length < 5) { alert('An error occured with the montage data and will now stop'); return false; }
	
	next_id = pieces[0];
	if(pieces[2]) { last_url = pieces[2]; }
	if(pieces[3]) { last_title = pieces[3]; }
	if(pieces[4]) { last_desc = pieces[4]; }
	
	// request the image
	if(document.getElementById(montage_holder)) { container = document.getElementById(montage_holder); }else{ alert('The container has not been added'); return false; }
	
	container.onclick = loadURL;	
	
	if(!document.getElementById('montage_loader')) {
		var loader = document.createElement('img');
		loader.id					= 'montage_loader';
		loader.style.width		= '1px';
		loader.style.height		= '1px';
		loader.style.cssFloat	= 'left';
		loader.onload = imageArrived;
		container.appendChild(loader);
	}else{
		loader = document.getElementById('montage_loader');
	}
	loader.src = pieces[1];
}

function loadURL() {
	location.href = last_url;
}

function imageArrived() {
	//safety checks
	if(!document.getElementById('montage_image_holder')) 	{ return false; }else{ container	= document.getElementById('montage_image_holder'); }
	if(!document.getElementById('montage_loader')) 			{ return false; }else{ loader		= document.getElementById('montage_loader'); }
	
	// get rid of loading message
	if(document.getElementById('montage_status')) {
		document.getElementById('montage_status').parentNode.removeChild(document.getElementById('montage_status'));
	}
	
	// create the real image placeholder
	if(!document.getElementById('montage_image')) {
		var image = document.createElement('img');
		image.id						= 'montage_image';
		container.appendChild(image);
	}else{
		var image = document.getElementById('montage_image');
	}
	
	if(montageMode == 1) { 			// fader
		setOpacity(100, image);		// fade off
		image.src = loader.src; 	// add the image
		fadeIn('montage_image');	// fade in
	}else{
		image.src = loader.src; 	// add the image
	}
	
	// Add Info
	var info = document.getElementById('montage_info');
	while(info.hasChildNodes()) {
		info.removeChild(info.lastChild);
	}
	var snippet = '';
	
	if(last_title) {
		snippet = document.createElement('h1');
		snippet.innerHTML = last_title;
		info.appendChild(snippet);
	}
	
	if(last_desc) {
		snippet = document.createElement('p');
		snippet.innerHTML = last_desc;
		info.appendChild(snippet);
	}
	
	
	// set timer
	setTimer();
}
