/**
 * box_display.js  http://laurettaprevost.com
 *
 * Copyright 2009 Matt Thomas
 * rmatthewthomas@gmail.com
 *
 * This file was custom-made for use on the site at laurettaprevost.com
 * It contains a variety of htmlDOM transformations to allow complex
 * content to be displayed from simple, correct XHTML.  As such, it is
 * entirely unsuitable as-is for use elsewhere.  Moreover, no support
 * will be provided to anyone other than the owner of the domain who
 * commissioned the site.
 *
 * (In short, if you can read this mess, feel free to use it.)
 *
 * Enjoy! 
 *
**/

var BOXWIDTH=188, TOPOFFSET=4, WINHEIGHT=0, WINWIDTH=0, MARGIN=1, DELAY=280;
junk = new Array();
junk[0] = new Image();
junk[1] = new Image();
junk[0].src = "src/images/screen.png";
junk[1].src = "src/images/screentop.png";

function preload() {
	makeinfobox();
	makedisplaybox();
	rewritelist();
	initplayer();
	rewritecontact();
	hidewarning();
}

function makeinfobox() {
	if (document.getElementById('page')) {
		pagea = document.getElementById('page');
		INFOBOX = document.createElement('div');
		INFOBOX.name = 'infobox';
		TITLE = document.createElement('em');
		PIC = document.createElement('img');
		LINK = document.createElement('span');
		TEXT = document.createElement('span');
		LINK.id = 'link';
		LINK.appendChild(PIC);
		LINK.appendChild(TITLE);
		LINK.appendChild(TEXT);
		INFOBOX.appendChild(LINK);
		INFOBOX.id = 'infobox';
		pagea.appendChild(INFOBOX);
	}
}

function makedisplaybox() {
	if(document.getElementById('blocker')) {
		blockera = document.getElementById('blocker');
		displaybox = document.createElement('div');
		displaytitle = document.createElement('em');
		displaydesc = document.createElement('span');
		displaybox.id = 'clipinfo';
		displaybox.appendChild(displaytitle);
		displaybox.appendChild(displaydesc);
		blockera.appendChild(displaybox);
	}
}

function rewritelist() {
	if (document.getElementById('playlist')) {
		contenta = document.getElementById('content');
		playlista = document.getElementById('playlist');
		pl = document.createElement('div');
		pl.id = 'pl';
		pl.className = 'entries';
		listings = playlista.getElementsByTagName('li');
		endoflist = listings.length;
		for(i = 0; i < endoflist; i++) {
			spana = listings[i].getElementsByTagName('span');
			itema = listings[i].getElementsByTagName('a')[0];
			imga = itema.getElementsByTagName('img');
			ema = itema.getElementsByTagName('em');
			clipid = i + "";
			spana = spana[0];
			newlink = document.createElement('a');
			newlink.href = itema.title;
			newlink.onmouseover = countdown;
			newlink.onmouseout = killinfobox;
			newlink.onclick = displayClip;
			newlink.id = clipid;
			newimg = document.createElement('img');
			newimg.src = imga[0].src;
			newem = document.createElement('em');
			newem.innerHTML = ema[0].innerHTML;
			newspan = document.createElement('span');
			newspan.className = 'full';
			newspan.innerHTML = spana.innerHTML;
			newlink.appendChild(newimg);
			newlink.appendChild(newem);
			newlink.appendChild(newspan);
			pl.appendChild(newlink);
		}
		contenta.appendChild(pl);
		contenta.removeChild(playlista);
	}
}

function initplayer() {
	if(document.getElementById('player')) {
		playera = document.getElementById('player');
		playera.href = playera.title;
		playera.title = "";
		var img = playera.getElementsByTagName('img');
		if(document.getElementById('clip_title')) {
			displaytitle.innerHTML = document.getElementById('clip_title').innerHTML;
			blockera.removeChild(document.getElementById('clip_title'));
		} else {
			displaytitle.innerHTML = "";
		}
		if(document.getElementById('clip_desc')) {
			displaydesc.innerHTML = document.getElementById('clip_desc').innerHTML;
			blockera.removeChild(document.getElementById('clip_desc'));
		} else {
			displaydesc.innerHTML = "";
		}
	}
}

function rewritecontact() {
	if(document.getElementById('footer')) {
		footera = document.getElementById('footer');
		email = document.createElement('span');
		phone = document.createElement('span');
		linky = document.createElement('a');
		newloc = document.createElement('span');
		var first = document.getElementById('first');
		var second = document.getElementById('second');
		var third = document.getElementById('third');
		var start = document.getElementById('start');
		var mid = document.getElementById('mid');
		var end = document.getElementById('end');
		var loc = document.getElementById('loc');
		var fixedaddr = start.innerHTML + '@' + mid.innerHTML + '.' + end.innerHTML;
		var fixedphone = first.innerHTML + second.innerHTML + third.innerHTML;
		linky.innerHTML = fixedaddr;
		linky.href = "mailto:" + fixedaddr;
		email.appendChild(linky);
		phone.innerHTML = fixedphone;
		newloc.innerHTML = loc.innerHTML;
		email.className = "email";
		phone.className = "phone";
		newloc.className = "loc";
		footera.appendChild(email);
		footera.appendChild(phone);
		footera.appendChild(newloc);
		footera.removeChild(first);
		footera.removeChild(second);
		footera.removeChild(third);
		footera.removeChild(start);
		footera.removeChild(mid);
		footera.removeChild(end);
		footera.removeChild(loc);
	}
}

function hidewarning() {
	if(document.getElementById('warning')) {
		y = document.getElementById('blocker');
		x = document.getElementById('warning');
		y.removeChild(x);
	}
}

function displayClip() {
	killinfobox();
	CLIP = this;
	currtitle = this.getElementsByTagName('em');
	displaytitle.innerHTML = currtitle[0].innerHTML;
	currdesc = this.getElementsByTagName('span');
	displaydesc.innerHTML = currdesc[0].innerHTML;
}

function countdown(evt) {
	var e = (window.event) ? window.event : evt;
	SHOW = true;
	XOFFSET = e.clientX;
	YOFFSET = e.clientY;
	CLIP = this.id;
	var ATTEMPT = Math.ceil((Math.random() * 1000000));
	CHECK = ATTEMPT;
	setTimeout('makeitbig("' + CLIP + '","' + XOFFSET + '","' + YOFFSET + '","' + ATTEMPT + '")',DELAY);
}

function makeitbig(CLIP,XOFFSET,YOFFSET,VALIDATE) {
	if (document.getElementById(CLIP)) {
		PAGE = document.getElementById('page');
		A = document.getElementById(CLIP);
		if (A.href != LINK.href) {
			DESC = A.getElementsByTagName('span');
			DESC = DESC[0];
			IMG = A.getElementsByTagName('img');
			IMG = IMG[0];
			EM = A.getElementsByTagName('em');
			EM = EM[0];
			LINK.href = A.href;
			INFOBOX.onmouseout = A.onmouseout;
			PIC.src = IMG.src;
			TITLE.innerHTML = EM.innerHTML;
			TEXT.innerHTML = DESC.innerHTML;
		}
		if ((SHOW == true) && (CHECK == VALIDATE)) {
			INFOBOX.style['display'] = 'block';
			INFOBOX.style['top'] = checkYPos();
			INFOBOX.style['left'] = checkXPos();
		}
	}
}

function checkXPos() {
	divleft = A.offsetLeft;
	ITEMWIDTH = A.clientWidth;
	LEFTOFFSET = Math.round((BOXWIDTH - ITEMWIDTH) / 2);
	XOFFSET = divleft - LEFTOFFSET;
	FROMLEFT = XOFFSET;
	if( typeof(window.innerWidth ) == 'number' ) {
		WINWIDTH = window.innerWidth;
	} else if(document.documentElement && ( document.documentElement.clientWidth)) {
		WINWIDTH = document.documentElement.clientWidth;
	}
	if( typeof(document.body.scrollLeft) == 'number' ) {
		SCROLLWIDTH = document.body.scrollLeft;
	} else if(document.documentElement && ( document.documentElement.scrollLeft)) {
		SCROLLWIDTH = document.documentElement.scrollLeft;
	}
	if(WINWIDTH) {
		if(FROMLEFT > (SCROLLWIDTH + (WINWIDTH - BOXWIDTH))) { FROMLEFT = SCROLLWIDTH + (WINWIDTH - BOXWIDTH); }
		if(FROMLEFT < SCROLLWIDTH) { FROMLEFT = SCROLLWIDTH; }
	}
	return (FROMLEFT + 'px');
}

function checkYPos() {
	divtop = A.offsetTop;
	BOXHEIGHT = INFOBOX.clientHeight;
	YOFFSET = divtop - TOPOFFSET - BOXHEIGHT;
	ITEMHEIGHT = A.clientHeight;
	FROMTOP = YOFFSET;
	if( typeof( document.body.scrollTop ) == 'number' ) {
		WINHEIGHT = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.scrollTop ) ) { WINHEIGHT = document.documentElement.scrollTop; }
	if(FROMTOP < WINHEIGHT) {
		FROMTOP = divtop + ITEMHEIGHT + TOPOFFSET;
	}
	if(FROMTOP < WINHEIGHT) { FROMTOP = WINHEIGHT; }
	return (FROMTOP + 'px');
}

function killinfobox() {
	SHOW = false;
	INFOBOX.style['display'] = 'none';
}

$(document).ready(function() { preload(); });



