/**
 * Changes image source
 * @param imgName content of img name attribute
 * @param newName name of new image in images array
 */
function setImage(imgName, newName) {
	document.images[imgName].src = images[newName].src;
	return true;
}

/**
 * aligns size of two layers
 * @param sourceLayerName
 * @param targetLayerName
 */
function alignLayerSize(sourceLayerName, targetLayerName) {
	var sourceLayer = document.getElementById(sourceLayerName);
	var width = getObjectWidth(sourceLayer);
	var height = getObjectHeight(sourceLayer);
	
	var targetLayer = document.getElementById(targetLayerName);
	targetLayer.style.width = width;
	targetLayer.style.height = height;
}

/**
 * Asks server if page is still up to date.
 * If not, page is reloaded.
 * Used if not logged in.
 */
function updatePage() {
	var h = new PageJSHandler();
	var data = h.updatePage(page.id, lastPageUpdate);
	
	if (data == null) {
		return;
	}
	
	lastPageUpdate = data[0];
	
	if (data[1] == "1") {
		location.reload();
	}
}

/**
 * Steps through all modules (in float modus) and
 * forces start at new line if module y pos differs from last one.
 * Prevents ugly positioning where module fills gap if module above
 * is not very high (esp. Firefox)
 */
function trimFloat() {
	/*
	// interims
	modules.sort(sortByCreated);
	if (page.sortdir == 2) {
		modules.reverse();
	}
	*/
	
	var lastY = 0;
	var y = 0;
	var trimmer;
	var next;
	var moduleHtmlId;
	var modulearea = document.getElementById("modulearea");
	
	for (var i = 0; i < modules.length; i++) {
		if (modules[i].page_id == page.id) {
			lastY = y;
			moduleHtmlId = "m_" + modules[i].type + "_" + modules[i].id;
			dd.getPageXY(dd.elements[moduleHtmlId].div);
			dd.elements[moduleHtmlId].defx = dd.elements[moduleHtmlId].x = dd.x;
			dd.elements[moduleHtmlId].defy = dd.elements[moduleHtmlId].y = dd.y;
			y = dd.elements[moduleHtmlId].y;
			
			if (y != lastY && lastY != 0) {
				next = document.getElementById(moduleHtmlId + "_outer");
				trimmer = document.createElement("div");
				trimmer.style.clear = "both";
				modulearea.insertBefore(trimmer, next);
				
				// get new position for module in new row
				dd.getPageXY(dd.elements[moduleHtmlId].div);
				dd.elements[moduleHtmlId].defx = dd.elements[moduleHtmlId].x = dd.x;
				dd.elements[moduleHtmlId].defy = dd.elements[moduleHtmlId].y = dd.y;
				y = dd.elements[moduleHtmlId].y;
			}
		}
	}
}

function sortByCreated(a, b) {
	return a.created - b.created;
}

function sortByName(a, b) {
	var lowerA = a.name.toLowerCase();
	var lowerB = b.name.toLowerCase();
	
	if (lowerA < lowerB) {
		return -1;
	}
	
	if (lowerA > lowerB) {
		return 1;
	}
	
	return 0;
}

/**
 * Determines max y pos + height for modules in free modus,
 * and sets height of content area accordingly
 */
function setBackgroundLength() {
	var maxY = 0;
	
	for (var i = 0; i < modules.length; i++) {
		if (modules[i].page_id == page.id) {
			moduleHtmlId = "m_" + modules[i].type + "_" + modules[i].id;
			
			if (dd.elements[moduleHtmlId].y + dd.elements[moduleHtmlId].h > maxY) {
				maxY = dd.elements[moduleHtmlId].y + dd.elements[moduleHtmlId].h;
			}
		}
	}
	
	var newHeight = maxY + 100;
	
	if (newHeight > 1000) {
		var moduleareaCell = document.getElementById("moduleareaCell");
		moduleareaCell.style.height = newHeight + "px";
	}
}
