// JavaScript Document

var composite_images = new Array();
composite_images['portret'] = new Array();
composite_images['landscape'] = new Array();

var pWidth = 32;
var pHeight = 48;
var lWidth = 72;
var lHeight = 48;

var composite_page = 0;
var composite_added = 0;


function resetComposite() {
	composite_images = new Array();
	composite_images['portret'] = new Array();
	composite_images['landscape'] = new Array();
	composite_page = 0;
	composite_added = 0;
	compositeBuild();
}


function compositeNextPage() {
	var pages = compositeGetPages();
	var next = composite_page+1;	
	composite_added = 0;	
	if (pages.length > next) {
		composite_page++;
		compositeBuild();
	}
}


function compositePreviousPage() {
	var pages = compositeGetPages();
	var previous = composite_page-1;
	composite_added = 0;
	if (previous >= 0) { 
		if (previous < pages.length) {
			composite_page--;
			compositeBuild();
		}
	}
}


function setupCCell(td, page, imgnum) {
	td.height = pHeight;
	if (page['images'][imgnum]) {
		image = page['images'][imgnum];
		if (image['type'] == 'landscape') {
			td.width = lWidth;
			iWidth = lWidth;
			iHeight = lHeight;		
			td.colSpan = 2;		
		}
		else {
			td.width = pWidth;
			iWidth = pWidth;
			iHeight = pHeight;			
		}
		td.innerHTML = "<a href=\"javascript:compositeRemove('"+image['id']+"', '"+image['type']+"');\"><img src=\"/image.php?id="+image['id']+"&size=resize&maxheight="+iHeight+"&maxwidth="+iWidth+"\" border=\"0\"></a>";		
	}
	else {
		td.bgColor = "#96845c";
		td.innerHTML = "<img src=\"/images/tspacer.gif\" width=\""+pWidth+"\" height=\""+pHeight+"\">";
	}
}


function gotoLastPage(pages) {
	if (composite_page <= 0) return true;
	if (!pages[composite_page]) {
		composite_page--;
		gotoLastPage(pages);
	}
}


function compositeBuild() {
	var pages = compositeGetPages();
	if (pages.length == 0) {
		var page = new Array();
		page['format'] = '2-2';
		page['images'] = new Array();
		pages[0] = page;		
	}
	if (!pages[composite_page]) gotoLastPage(pages);
	page = pages[composite_page];
	document.getElementById('cPage').innerHTML = composite_page+1;
	document.getElementById('tPage').innerHTML = pages.length;
	var tableThumbs = document.createElement("table");
	tableThumbs.cellPadding = "0";
	tableThumbs.cellSpacing = "8";	
	var oTR = tableThumbs.insertRow(0);
	var oTD = oTR.insertCell(0);	
	imgnum = 0;
	if (page['format'].substr(0,1) == 2) {
		setupCCell(oTD, page, imgnum);
		imgnum++;		
		oTD = oTR.insertCell(1);	
		if (page['images'][imgnum] && page['images'][imgnum]['type'] == 'portret') {
			setupCCell(oTD, page, imgnum);	
			imgnum++;		
		}
		else {
			setupCCell(oTD, page, 5);	
		}
	}
	else {
		setupCCell(oTD, page, imgnum);
		imgnum++;
	}	
	oTR = tableThumbs.insertRow(1);
	oTD = oTR.insertCell(0);	
	if (page['format'].substr(2,1) == 2) {
		setupCCell(oTD, page, imgnum);	
		imgnum++;		
		oTD = oTR.insertCell(1);	
		setupCCell(oTD, page, imgnum);
	}	
	else {
		setupCCell(oTD, page, imgnum);			
	}
	document.getElementById('cPreview').innerHTML = "";
	document.getElementById('cPreview').appendChild(tableThumbs);	
}


function compositeGetPages() {
	var pages = new Array();	
	var remP = composite_images['portret'].length%4;	
	var process = composite_images['portret'].length - remP;
	image = 0;
	pageCount = 0;
	for (i=0;i<process;i++) {
		if (image == 0) {
			var page = new Array();
			page['format'] = '2-2';
			page['images'] = new Array();
			pages[pageCount] = page;
		}
		newImage = new Array();
		newImage['id'] = composite_images['portret'][i];
		newImage['type'] = 'portret';		
		if (composite_added == newImage['id']) {composite_page = pageCount;}
		var count = pages[pageCount]['images'].length;		
		pages[pageCount]['images'][count] = newImage;
		image++;
		if (image >= 4) {
			image = 0;
			pageCount++;
		}
	}
	var remL = composite_images['landscape'].length%2;	
	var mixedL = 0;
	if (remP > 0) {		
		if (remP <= 2 && composite_images['landscape'].length > 0) {mixedL = 1;}
		var page = new Array();
		page['images'] = new Array();
		if (mixedL > 0) {page['format'] = '2-1';}
		else {page['format'] = '2-2';}		
		for (i=process;i<composite_images['portret'].length;i++) {
			newImage = new Array();
			newImage['id'] = composite_images['portret'][i];
			newImage['type'] = 'portret';
			if (composite_added == newImage['id']) {composite_page = pageCount;}
			page['images'][page['images'].length] = newImage;
		}
		for (i=0;i<mixedL;i++) {
			newImage = new Array();
			newImage['id'] = composite_images['landscape'][i];
			newImage['type'] = 'landscape';
			if (composite_added == newImage['id']) {composite_page = pageCount;}
			page['images'][page['images'].length] = newImage;			
		}
		pages[pageCount] = page;
		pageCount++;
	}
	image=0;
	for (i=mixedL;i<composite_images['landscape'].length;i++) {
		if (image == 0) {
			var page = new Array();
			page['format'] = '1-1';
			page['images'] = new Array();
			pages[pageCount] = page;
		}
		newImage = new Array();
		newImage['id'] = composite_images['landscape'][i];
		if (composite_added == newImage['id']) {composite_page = pageCount;}
		newImage['type'] = 'landscape';		
		var count = pages[pageCount]['images'].length;		
		pages[pageCount]['images'][count] = newImage;			
		image++;
		if (image >= 2) {
			image = 0;
			pageCount++;	
		}
	}	
	return pages;
}


function isUnique(arr, imageId) {
	for (i=0;i<arr.length;i++) {
		if (arr[i] == imageId) {return false;}
	}
	return true;
}


function compositeAdd_CB(req, imageId, type) {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var xmldoc = req.responseXML;
			if (xmldoc) {var rootNode = xmldoc.getElementsByTagName('root').item(0);}
			else {rootNode = false;}
			if (xmldoc && rootNode) {
				value = AJAX_xml_value(rootNode, 'result');
				if (value != 1) {
					alert('Error adding image to composite.'); 
					return false;
				}
				if (isUnique(composite_images[type], imageId)) {
					composite_images[type][composite_images[type].length] = imageId;
				}
				composite_added = imageId;
				compositeBuild();
				return true;
			}
			else {
				alert('Error adding image to composite.');
				return false;
			}		
		}
		else {
			alert('Error adding image to composite.');
			return false;
		}
	}
}


function compositeRemove_CB(req, imageId, type) {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var xmldoc = req.responseXML;
			if (xmldoc) {var rootNode = xmldoc.getElementsByTagName('root').item(0);}
			else {rootNode = false;}
			if (xmldoc && rootNode) {
				value = AJAX_xml_value(rootNode, 'result');
				if (value != 1) {
					alert('Error removing image from composite.'); 
					return false;
				}				
				composite_added = 0;
				var temp = new Array();
				for (i=0;i<composite_images[type].length;i++) {
					if (composite_images[type][i] != imageId) {temp[temp.length] = composite_images[type][i]}
				}				
				composite_images[type] = temp;				
				compositeBuild();
				return true;
			}
			else {
				alert('Error removing image from composite.');
				return false;
			}		
		}
		else {
			alert('Error removing image from composite.');
			return false;
		}
	}
}


function compositeMail_CB(req, imageId, type) {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var xmldoc = req.responseXML;
			if (xmldoc) {var rootNode = xmldoc.getElementsByTagName('root').item(0);}
			else {rootNode = false;}			
			if (xmldoc && rootNode) {
				value = AJAX_xml_value(rootNode, 'result');	
				if (value != 0) {
					alert(msgMC_2); 
					return false;
				}
				alert(msgMC_3); 
				return true;
			}
			else {
				alert(msgMC_2); 
				return false;
			}		
		}
		else {
			alert(msgMC_2); 
			return false;
		}
	}
}


function compositeAdd(sessionId, imageId, type) {
	if (request = AJAX_getHttpRequest()) {	
		request.onreadystatechange = function() {
			compositeAdd_CB(request, imageId, type); 
		};
		url = '/xml/composite_add.php?sessionId='+sessionId+'&imageId='+imageId+'&type='+type;
		url = url + '&time='+Date.parse(new Date());
		request.open('GET', url, true);
		request.send(null);  
	}
}


function compositeRemove(imageId, type) {
	if (request = AJAX_getHttpRequest()) {	
		request.onreadystatechange = function() {
			compositeRemove_CB(request, imageId, type); 
		};
		url = '/xml/composite_remove.php?imageId='+imageId;
		url = url + '&time='+Date.parse(new Date());
		request.open('GET', url, true);
		request.send(null);  
	}
}


function compositeMail(id) {
	if (composite_images['portret'].length == 0 && composite_images['landscape'].length == 0) {
		alert(msgMC_4);
		return false;
	}
	var email = document.getElementById('emailField').value;
	var clear = 0;
	if (document.getElementById('clearField').checked) clear = 1;
	if (email == "" || !isEmail(email)) {
		alert(msgMC_1);
		return false;
	}
	if (request = AJAX_getHttpRequest()) {	
		request.onreadystatechange = function() {
			compositeMail_CB(request); 
		};
		url = '/xml/composite_mail.php?id='+id+'&email='+email+'&clear='+clear;
		url = url + '&time='+Date.parse(new Date());
		request.open('GET', url, true);
		request.send(null);  
	}	
	if (clear) {
		resetComposite();
	}
}


function compositePrint(id) {
	if (composite_images['portret'].length == 0 && composite_images['landscape'].length == 0) {
		alert(msgMC_4);
		return false;
	}
	else {
		url = '/composite_print.php?id='+id;
		url = url + '&noCache='+Date.parse(new Date());
		window.open(url, 'pdf', '');
	}
}
