/*********************
 *
 * www.1-2-3-info.se
 * Javascript library
 *
 */



function moveGrip(i) {
	if (isProject(elements[i]) || isExtra(elements[i])) {
		var main;
		if (isProject(elements[i])) {
			main = eval('dd.elements.prj' + i);
		} else {
			main = eval('dd.elements.ext' + i);
		}
		var rb = eval('dd.elements.siz' + i);
		var w = main.x+main.w-rb.w+1;
		var h = main.y+main.h-rb.h+1;
		rb.moveTo(w, h);
		rb.show();
	}
}

function moveShadow(i, offsetX, offsetY) {
	if (isProject(elements[i]) || isExtra(elements[i])) {
		var main;
		if (isProject(elements[i])) {
			main = eval('dd.elements.prj' + i);
		} else {
			main = eval('dd.elements.ext' + i);
		}
		var rb = eval('dd.elements.shd' + i);
		var w = main.x+main.w-rb.w+1;
		var h = main.y+main.h-rb.h+1;
		rb.moveTo(w + offsetX, h + offsetY);
		rb.show();
	}
}

function showGrips(num) {
	for (var i = 0; i < num; i++) {
		moveGrip(i);
	}
}

function isProject(o) {
	return (o.charAt(0) == "p");
}

function isExtra(o) {
	return (o.charAt(0) == "e");
}

function element(id, pre, isdd) {
	if (isdd) {
		return eval('dd.elements.' + pre + id);
	} else {
		if(!document.getElementById) return;
		return document.getElementById(pre + id);
	}
}

function setMode(i, mode, save) {
	if (isProject(elements[i])) {
		if (mode) {
			setHidden(element(i, "img", false), true);
			setHidden(element(i, "txt", false), false);
		} else {
			setHidden(element(i, "img", false), false);
			setHidden(element(i, "txt", false), true);
		}
	}
	if (save) {
		dhtmlLoadScript('js/changes.js?j=' + projId[i] + '&v=' + mode);
	}
}

function getMode(i) {
	var el = element(i, "txt", false);
	if (el.style.display == '') return 0;
	else return 1;
}

function showMode(mode) {
	for (var i=0; i<elements.length; i++) setMode(i, mode, false);
	if (mode) setInnerHTML('show', '<a href="#" onclick="showMode(0); return false;">text</a> / images');
	else setInnerHTML('show', 'text / <a href="#" onclick="showMode(1); return false;">images</a>');
	dhtmlLoadScript('js/changes.js?j=-1&v=' + mode);
}

function setHidden(el, visible) {
	if (visible) el.style.display = '';
	else el.style.display = 'none';
}

function setInnerHTML(id, str) {
	if(!document.getElementById) return;
	var e = document.getElementById(id);
	if (e) document.getElementById(id).innerHTML = str;
}

function fontSize(id, full, current, defaultSize, limit) {
	var newSize = Math.round(defaultSize * current / full);
	if (newSize < 1) newSize = 1;
	element(id, 'txt', false).style.fontSize = newSize + 'px';

	var lines = '';
	var ch;
	if (newSize <= limit && innerHTML[id] == null) {
		innerHTML[id] = element(id, 'txt', false).innerHTML;
		for (var i=0; i<innerHTML[id].length; i++) {
			ch = innerHTML[id].charAt(i);
			if (ch == ' ' || ch == '\n') lines = lines + ch;
			else lines = lines + '—';
		}
		setInnerHTML('txt' + id, lines);
	}
	if (newSize > limit && innerHTML[id] != null) {
		setInnerHTML('txt' + id, innerHTML[id]);
		innerHTML[id] = null;
	}
}

function dhtmlLoadScript(url) {
	var e = document.createElement("script");
	e.src = url;
	e.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
}

function click(id) {
	if (dblClick) {
		if (isProject(elements[id])) {
			showExtras(id);
		}
		if (isExtra(elements[id])) {
			showVideo(id);
		}
	} else if (sglClick) {
		if (isProject(elements[id])) {
			setMode(id,(getMode(id)+1)%2,true);
		}
		if (isExtra(elements[id])) {
			showVideo(id);
		}
	}
	dblClick = false;
	sglClick = false;
	setTimeout('semaphore = false', 100);
}

function sglBodyClick() {
	if (moveDetect) {
		sglClick = false;
		dblClick = false;
	} else if (sglClick) {
		dblClick = true;
	} else {
		sglClick = true;
	}
}

function dblBodyClick() {
	if (navigator.appName == 'Microsoft Internet Explorer') {
		sglBodyClick();
	}
}

function debug(txt) {
	setInnerHTML('debug', document.getElementById('debug').innerHTML + txt + '<br>\n');
}

function moveObjectToFront(id) {
	var o;
	o = eval('dd.elements.shd' + id);
	o.maximizeZ();
	o = eval('dd.elements.prj' + id);
	o.maximizeZ();
	o = eval('dd.elements.siz' + id);
	o.maximizeZ();
}

function showExtras(id, mainInFront) {
	dd.elements.shade.maximizeZ();
	var o;
	if (!mainInFront) moveObjectToFront(id);
	for (var i=0; i<extras[id].length; i++) {
		o = eval('dd.elements.shd' + extras[id][i]);
		o.show();
		o.maximizeZ();
		o = eval('dd.elements.ext' + extras[id][i]);
		o.show();
		o.maximizeZ();
		o = eval('dd.elements.siz' + extras[id][i]);
		o.show();
		o.maximizeZ();
	}
	if (mainInFront) moveObjectToFront(id);
}

function hideExtras() {
	dd.elements.shade.setZ(10);
	for (var i=0; i<elements.length; i++) {
		if (extras[i] != null) {
			for (var j=0; j<extras[i].length; j++) {
				o = eval('dd.elements.ext' + extras[i][j]);
				o.hide();
				o = eval('dd.elements.siz' + extras[i][j]);
				o.hide();
				o = eval('dd.elements.shd' + extras[i][j]);
				o.hide();
			}
		} else if (videos[i]) {
//			eval('document.mov' + i + '.Stop();');
			setHidden(element(i, "img", false), true);
			setHidden(element(i, "vid", false), false);
		}
	}
}

function showVideo(id) {
	if (videos[id] != '') {
		setHidden(element(id, "img", false), false);
		setHidden(element(id, "vid", false), true);
	}
}

function didBrowserResize(minW, minH) {
	var tmpH, tmpW;
	if (maxH == 0 || maxW == 0) {
		for (var i=0; i<elements.length; i++) {
			o = eval('dd.elements.shd' + i);
			tmpW = o.x + o.w;
			tmpH = o.y + o.h;
			if (tmpH > maxH) maxH = tmpH;
			if (tmpW > maxW) maxW = tmpW;
		}
	}
	if (maxW < minW) maxW = minW;
	if (maxH < minH) maxH = minH;
	dd.elements.shade.resizeTo(maxW, maxH);
}

function shadowResize(id, w, h) {
	o = eval('dd.elements.shd' + id);
	o.resizeTo(w+9, h+9);
	o = document.getElementById('shw' + (id*3 + 1));
	o.style.width = (w+8) + 'px';
	o.style.height = (h+8) + 'px';
	o = document.getElementById('shw' + (id*3 + 2));
	o.style.width = (w+8) + 'px';
	o.style.height = (h+8) + 'px';
	o = document.getElementById('shw' + (id*3 + 3));
	o.style.width = (w) + 'px';
	o.style.height = (h) + 'px';
}

function orderObject(ob, count, i, lineLimit, isProject) {
	var maxRow = 6;
	var maxH = 150;
	var maxW = 150;
	var topSpace = 90;
	var leftSpace = 30;
	var midSpace = 10;
	var modI;
	var divI;

	w = maxW;
	h = Math.round(w*ob.h/ob.w);
	if (h > maxH) {
	h = maxH;
	w = Math.round(h*ob.w/ob.h);
	}
	ob.resizeTo(w,h);
	shadowResize(i, w, h);
	moveGrip(i);
	if (isProject) fontSize(i,266,w,12,lineLimit);
	
	modI = count % maxRow;
	divI = Math.floor(count / maxRow);
	ob.moveTo(leftSpace + modI*midSpace + modI*maxW, topSpace + divI*midSpace + divI*maxH);
	moveGrip(ob.name.substring(3, ob.name.length));
	moveShadow(ob.name.substring(3, ob.name.length), 8, 8);
}

function orderThumbs(lineLimit, includeExt) {
	var ob;
	var count = 0;
	for (var i=0; i<elements.length; i++) {
		if (isProject(elements[i])) {
			ob = eval('dd.elements.prj' + i);
			orderObject(ob, count, i, lineLimit, true);
			count++;
		}
		if (includeExt && isExtra(elements[i])) {
			ob = eval('dd.elements.ext' + i);
			orderObject(ob, count, i, lineLimit, false);
			count++;
		}
	}
}


