var cur_z = 1;
var open_windows = 0;

function init() {
	if (document.getElementById('cards')) {
		// store a reference to the cards container
		var cardholder = document.getElementById('cards');
		// get all cards from the DOM
		var cards = document.getElementsByClassName('card');
		var cards_length = cards.length;
		// for each card...
		for (i = 0; i < cards_length; i++) {
			// ...set id
			cards[i].setAttribute('id', 'card_'+i);
			// ...check if there's a cookie
			var pos = readCookie('card_'+i);
			if (pos) {
				var pos = pos.split(',');
				// ...clone the card so we keep 'gaps' when rendered
				var clone = cards[i].cloneNode(false);
				// ...unset the id for the original card and set for the clone
				cards[i].setAttribute('id', '');
				clone.setAttribute('id', 'card_'+i);
				// ...position the card based on the cookie data
				clone.style.position = 'absolute';
				clone.style.top = pos[0]+'px';
				clone.style.left = pos[1]+'px';
				clone.style.zIndex = 5;
				// ...append the card to the cards container
				cardholder.appendChild(clone);
				// ...set content
				clone.innerHTML = cards[i].innerHTML;
				// ...unset original content
				cards[i].innerHTML = '';
				// ...make card visible
				clone.style.visibility = 'visible';
			} else {
				// ...make card visible
				cards[i].style.visibility = 'visible';
			}
			// make card dragable
			new Draggable('card_'+i, {revert:storePosition,starteffect:false,endeffect:false});
		}
	}
	
	setTarget('_blank');
}

function storePosition(draggable) {
	cur_z++;
	setTimeout(function(){ draggable.style.zIndex = cur_z; }, 1);
	createCookie(draggable.id, (draggable.offsetTop - 3)+','+(draggable.offsetLeft - 3), 365);
}

function resetCards() {
	for (i = 0; i < 100; i++) {
		eraseCookie('card_'+i);
	}
	location.reload();
}

function showItem(url, color) {
	var id = url.replace(/\//g, '_');
	if ($(id)) {
		return false;
	}
	open_windows++;
	var multiply = (open_windows < 20) ? open_windows : 20;
	var offset = scrollOffset();
	var add = (offset[1] < 92) ? 0 : (offset[1] - 92);
	var top = (multiply * 10) + add;
	var left = multiply * 10;
	var div = document.createElement('div');
	div.className = 'card_big';
	div.style.top = top + 'px';
	div.style.left = left + 'px';
	div.id = id;
	div.innerHTML = '<div class="inner"></div><div style="border: solid 1px #'+color+'"><iframe src="'+url+'" border="0" frameborder="0" id="iframe'+id+'"></iframe></a>';
	$('cards').appendChild(div);
}

function hideItem(url) {
	var id = url.replace(/\//g, '_');;
	open_windows--;
	$(id).remove();
}

function setTarget(target) {
	locationHref = location.href;
	var thissite = new Array();
	thissite = locationHref.split('/');
	thissite = thissite[2];
	
	l = document.links
	for (a = 0; a < l.length; a++) {
		lnk = l[a];
		linkhost = lnk.hostname;
		
		if (thissite != linkhost) {
			lnk.target = target;
		}
	}
}

function scrollOffset() {
	var x, y;
	
	if (self.pageYOffset) {
		x = self.pageXOffset;
		y = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	} else if (document.body) {
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	
	return [x, y];
}

// Cookie stuff
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

window.onload = init;