var Projects = new Object();

Projects.init = function() {
	var pCookie = readCookie('bg_projects');
	Projects.displayStyle = 'images';
	if(!pCookie) {
		Projects.selectall();
	}
	else {
		// Load selected filters from cookie
		aFilters = pCookie.split('|');
		aServices = aFilters[0].split(',');
		aServices.each(function(sID) {
			$('s_' + sID).className = 'on';
		});
		aCategories = aFilters[1].split(',');
		aCategories.each(function(cID) {
			$('c_' + cID).className = 'on';
		});
		Projects.displayStyle = aFilters[2];
		Projects.filter();
		if(Projects.displayStyle == 'list') {
			Projects.filter('h3');
		}
		Projects.toggleSelectAll();
	}
};

Projects.showFilters = function() {
	$('filters').style.visibility = 'visible';
};

Projects.toggleSelectAll = function() {
	var allOffFilters = $('filters').getElements('.off');
	if(allOffFilters.length == 0) {
		$('s_all').className = 'on';
	}
	else if(allOffFilters.length == 1 && allOffFilters[0].id == 's_all') {
		$('s_all').className = 'on';
	}
	else {
		$('s_all').className = 'off';
	}
};

Projects.toggle = function(oClicked, bNoFilter) {
	var aID = oClicked.id.split('_');
	switch(oClicked.className) {
		case 'on':
			oClicked.className = 'off';
			$('s_all').className = 'off';
			break;
		case 'off':
			oClicked.className = 'on';
			Projects.toggleSelectAll();
			break;
	}
	Projects.toggleSelectAll();
	if(typeof(bNoFilter) == 'undefined') {
		Projects.filter();
		if(Projects.displayStyle == 'list') {
			Projects.filter('h3');
		}
	}
};

Projects.filter = function(sElemTypes) {
	if(typeof(sElemTypes) == 'undefined') {
		var sElemTypes = 'a.project';
	}
	var allProjects = $('projects').getElements(sElemTypes);
	allProjects.each(function(project) {
		var sMatch = false;
		var cMatch = false;
		var aRel = project.getAttribute('rel').split('|');
		if(aRel[0] && aRel[1]) {
			var sid = aRel[0].split(",");
			var cid = aRel[1].split(",");
			sid.each(function(s) {
				if(s == '0' || $('s_' + s).className == 'on') {
					sMatch = true;
				}
			});
			cid.each(function(c) {
				if(c == '0' || $('c_' + c).className == 'on') {
					cMatch = true;
				}
			});
		}
		
		if(sMatch && cMatch) {
			Projects.show(project);
		}
		else {
			Projects.hide(project);
		}
	});
	
	// Save selected filters in cookie
	var tmp1 = new Array();
	var allSFilters = $('filters_services').getElements('.on');
	allSFilters.each(function(elem) {
		tmp1[tmp1.length] = elem.id.split('_')[1];	  
	});
	var tmp2 = new Array();
	var allCFilters = $('filters_categories').getElements('.on');
	allCFilters.each(function(elem) {
		tmp2[tmp2.length] = elem.id.split('_')[1];	  
	});
	createCookie('bg_projects', tmp1 + '|' + tmp2 + '|' + Projects.displayStyle, 0.3);
};

Projects.selectall = function(oClicked) {
	if($('s_all').className == 'off') {
		$('s_all').className = 'on';
		var allOffFilters = $('filters').getElements('.off');
		allOffFilters.each(function(filter) {
			filter.className = 'on';
		});
		Projects.filter();
		if(Projects.displayStyle == 'list') {
			Projects.filter('h3');
		}
	}
	else {
		$('s_all').className = 'off';
		var allOffFilters = $('filters').getElements('.on');
		allOffFilters.each(function(filter) {
			filter.className = 'off';
		});
		Projects.filter();
		if(Projects.displayStyle == 'list') {
			Projects.filter('h3');
		}
	}
};

Projects.show = function(oElem) {
	switch(Projects.displayStyle) {
		case 'images':
			oElem.style.display = 'block';
			break;
		case 'list':
			oElem.style.display = 'block';
			break;
	}
};

Projects.hide = function(oElem) {
	switch(Projects.displayStyle) {
		case 'images':
			oElem.style.display = 'none';
			break;
		case 'list':
			oElem.style.display = 'none';
			break;
	}
};

Projects.tooltip = function(oElem) {
	
	var tooltipElem = $('tooltip');
	if(oElem == null) {
		tooltipElem.style.visibility = 'hidden';
		return false;
	}
	
	var aDetails = oElem.parentNode.getAttribute('rel').split('|');
	
	var size = 48;
	var yPos = (parseInt(aDetails[1])-1) * size;
	if(aDetails[0] < 11) {
		var xPos = (parseInt(aDetails[0])) * size;
	}
	else {
		var xPos = (parseInt(aDetails[0]) - 4) * size;
	}
	
	var maxLen = 30;
	if(aDetails[2].length > maxLen) {
		aDetails[2] = aDetails[2].substr(0, maxLen).trim() + "&hellip;";
	}
	$('tooltip_inner').innerHTML = '<span class="name">' + aDetails[2] + '</span><br /><span class="details">' + aDetails[3] + '</span>';
	
	tooltipElem.style.left = xPos + 'px';
	tooltipElem.style.top = yPos + 'px';
	tooltipElem.style.visibility = 'visible';
	
};

Projects.toggleDisplayStyle = function(viewBy) {
	var pCookie = readCookie('bg_projects');
	var aCookie = pCookie.split('|');
	aCookie[2] = viewBy;
	createCookie('bg_projects', aCookie[0] + '|' + aCookie[1] + '|' + aCookie[2], 0.3);
	window.location = './';
	return false;
};

window.addEvent('domready', function() {
	Projects.init();
});

window.addEvent('load', function() {
	Projects.showFilters();
});