var ajaxObjects = new Array();
var imageloading = '<img src="../front_common/images/loading.gif" width="94" height="126" class="preview">';
var currentfav = 'ALL';
var maximumnrfavs = 21;

function addToFavorites(account, ref, mref, language, previewdir){

	//only blink the item when it exists and is loaded
	if(document.getElementById('favcam_'+account)){
		if(favs[account] == "loaded"){
			blinkBorder(account, 3, 300);
		}
	
	//load new item
	}else{
		if(maximumnrfavs > 0){
			favs[account] = "loading";
			var ajaxIndex = ajaxObjects.length;
			loading(ajaxIndex, account);
			ajaxObjects[ajaxIndex] = new sack();
			ajaxObjects[ajaxIndex].requestFile = 'favorites.php?account='+account+'&ref='+ref+'&mref='+mref+'&language='+language+'&action=add&previewdir='+previewdir;
			ajaxObjects[ajaxIndex].onCompletion = function(){completed(ajaxIndex, account);};  
			ajaxObjects[ajaxIndex].runAJAX();
			maximumnrfavs--;
		}
	}

}

function refreshFavs(mref, ref, language){
	getFavorites(currentfav, mref, language, ref);
}

function getFavorites(status, mref, language, ref, previewdir){
	var ajaxIndex = ajaxObjects.length;

	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = 'favorites.php?mref='+mref+'&ref='+ref+'&status='+status+'&action=list&language='+language+'&previewdir='+previewdir;
	ajaxObjects[ajaxIndex].onCompletion = function(){completeGet(ajaxIndex, status, mref, language, ref);};  
	ajaxObjects[ajaxIndex].runAJAX();	
	
}

function completeGet(ajaxIndex, status, mref, language, ref){
	
	currentfav = status;
	currentmref = mref;
	currentref = ref;
	currentlanguage = language;
	
	var e = document.getElementById('favorites'); 
	
	var rows_old = Math.ceil(e.childNodes.length / 3);

	var response = ajaxObjects[ajaxIndex].response;
	e.innerHTML = response;
	
	
	//adjust frame height
	var del = checkFrameHeight(rows_old);
	var frame = window.frames['search'];
	
	var cams = frame.document.getElementById('camlist');
	var length = cams.childNodes.length;
	var currows = Math.ceil(length/3);
	
	//delete row
	if(del == 1 && currows > frame.maxpagerows){
		for(i=1; i<=3; i++){
			var child = cams.childNodes[length-i];
			cams.removeChild(child);
		}
	}
	
}

//change loading image to webcam
function completed(ajaxIndex, account) {
    var response = ajaxObjects[ajaxIndex].response;
	var e = document.getElementById('favcam_'+account); 
	e.innerHTML = response;
	favs[account] = "loaded";
}

//show loading image
//delete rows when there are to many
function loading(ajaxIndex, account){
	var div = document.createElement('div');
	div.className ='divpreview';
	div.id = 'favcam_'+account;
	div.innerHTML = imageloading;	

	var e = document.getElementById('favorites'); 
	
	var rows_old = Math.ceil(e.childNodes.length / 3);
	e.appendChild(div);
	
	//adjust frame height
	var del = checkFrameHeight(rows_old);
	var frame = window.frames['search'];
	
	var cams = frame.document.getElementById('camlist');
	var length = cams.childNodes.length;
	var currows = Math.ceil(length/3);
	
	//delete row
	if(del == 1 && currows > frame.maxpagerows){
		for(i=1; i<=3; i++){
			var child = cams.childNodes[length-i];
			cams.removeChild(child);
		}
	}
	
}

//check if items will be on new row.
function checkFrameHeight(rows_old){
	var iframe = document.getElementById('searchframe');
	var e = document.getElementById('favorites'); 
	var rows_new = Math.ceil(e.childNodes.length / 3);
	var frame = window.frames['search'];
	var new_h;
	var ret = 0;
	
	//frame.maxpagerows determines the maximum of cams
	//that can be displayed in the search results
	//if more favorites -> less search results
	if(rows_new > rows_old){
		new_h = parseInt(iframe.style.height)-150;
		iframe.style.height = new_h+'px';
		ret = 1;
		frame.maxpagerows--;
	}
	
	if(rows_new < rows_old){
		new_h = parseInt(iframe.style.height)+150;
		iframe.style.height = new_h+'px';
		ret = 2;
		frame.maxpagerows++;
	}
	
	return ret;
}

//delete of item complete
//remove the div
function deleteCompleted(ajaxIndex, account) {
	var fav = document.getElementById('favorites');
	var olddiv = document.getElementById('favcam_'+account);
	var rows_old = Math.ceil(fav.childNodes.length / 3);
	
  	fav.removeChild(olddiv);
	favs[account] = null;
	var ret = checkFrameHeight(rows_old);
}


function deleteFromFavorites(account, ref, previewdir){
	var olddiv = document.getElementById('favcam_'+account);
	olddiv.innerHTML = imageloading;

	var ajaxIndex = ajaxObjects.length;
	ajaxObjects[ajaxIndex] = new sack();
	ajaxObjects[ajaxIndex].requestFile = 'favorites.php?ref='+ref+'&account='+account+'&action=delete&previewdir='+previewdir;
	ajaxObjects[ajaxIndex].onCompletion = function(){deleteCompleted(ajaxIndex, account);}; 
	ajaxObjects[ajaxIndex].runAJAX();	
	maximumnrfavs++;
}


function blinkBorder(account, times, msec){
	for(i=0; i<times; i++){
		setTimeout("doBlink('"+account+"', '"+msec+"')", msec*i*2);
	}
}

function restoreBlink(account){
	var e = document.getElementById('preview_'+account);
	e.className = 'preview';
	
}

//blink the border div arg[times] time
function doBlink(account, msec){
	var e = document.getElementById('preview_'+account);
	e.className = 'previewblink';
	setTimeout("restoreBlink('"+account+"')", msec);
}

