// **********************************************
//
// © 2006-2008 Ignition72, LLC
// All rights reserved.
// www.ignition72.com
//
// **********************************************
//
// $Id: portfolio.js, v 1.0 2008/09/22 7:00:00 joew Exp $

/**
	File:				meta.js
	Fullpath:			/themes/ignition72/assets/js/portfolio.js
	Author:				Ignition72 - Joe Wilson
	Date:		2008.09.23
	Revision:	1.1		Updated for IE6 compatibility, enhanced Prototype library usage

				1.0		Initial file creation

	To do:				

	Purpose:			To manage addition/modificationa and removal of custom meta tags to 
						external website
	
	Requirements:		NOTE: Theme-specific script must be called onload for a portfolio page.

**/

var PORTFOLIO = new Object();



/*
	loadProject
	Revision:	1.1		Changed structure to pass image-specific variables to separate function for preloading & display - showImage
						
				1.0		Initial creation
	To Do:				
	Purpose:			To read JSON data from page, replace text, description, link and large image, as well as enable prev/next
						navigation if more than 1 image supplied.

	Return:				NULL
*/
PORTFOLIO.loadProject = function () {
	var jsonData = sJson.evalJSON(true);
	var oCaller	= EventUtil.getEvent().target;
	while (oCaller.nodeName != 'LI') {
		oCaller = oCaller.parentNode;
	}
	var iWhich	= oCaller.id.split('_').pop();
	var oTarget	= $('portfolio_image');
	DOMUtil.setClass($('portfolio_large'),'portfolio_hidebkrd');
	var sSrc	= jsonData.projects[iWhich].data[0].replace(/_thumb/,'_full');
	PORTFOLIO.showImage(oTarget.getElementsByTagName('img')[0],jsonData.projects[iWhich].path + sSrc,'image_' + iWhich + '_0_' + (jsonData.projects[iWhich].data.length - 1));
	var oName	= $('portfolio_name').getElementsByTagName('span')[0];
	oName.firstChild.nodeValue = jsonData.projects[iWhich].name;
	DOMUtil.setClass($('portfolio_name'),'active');
	var oText = $('portfolio_detail').getElementsByTagName('p')[0];
	var oSpan = oText.getElementsByTagName('span')[0];
	if (jsonData.projects[iWhich].description == null) {
		jsonData.projects[iWhich].description = '';
	}
	if (oSpan.hasChildNodes()) {
		oSpan.firstChild.nodeValue = jsonData.projects[iWhich].client + ' - ' + jsonData.projects[iWhich].description;
	} else {
		DOMUtil.createText(oSpan,jsonData.projects[iWhich].client + ' - ' + jsonData.projects[iWhich].description);
	}
	var oLink	= $('portfolio_launch').getElementsByTagName('a')[0];
	if (jsonData.projects[iWhich].link1.length > 0) {
		oLink.href = jsonData.projects[iWhich].link1;
		oLink.style.display = 'inline';
	} else {
		oLink.href = '#';
		oLink.style.display = 'none';
	}
	if (jsonData.projects[iWhich].data.length > 1) {
		Effect.Appear('portfolio_next');
		Effect.Appear('portfolio_prev');
	} else {
		Effect.Fade('portfolio_next');
		Effect.Fade('portfolio_prev');
	}
};



/*
	toggleDetail
	Revision:	1.0		Initial creation
	To Do:				
	Purpose:			To show / hide pane of descriptive text about portfolio item

	Return:				NULL
*/
PORTFOLIO.toggleDetail = function () {
	var oTarget	= EventUtil.getEvent().target;
	while(oTarget.nodeName != 'DIV') {
		oTarget = oTarget.parentNode;
	}
	Effect.toggle(oTarget.getElementsByTagName('p')[0],'blind',{duration: 0.2});
};



/*
	navigate
	Revision:	1.1		Revised to use new image loading mechanism - showImage
				1.0		Initial creation
	To Do:				
	Purpose:			Parse JSON data, supply new src/class to showImage for loading and display

	Return:				NULL
*/
PORTFOLIO.navigate = function () {
	var oNav	= EventUtil.getEvent().target;
	var oImage	= $('portfolio_image').getElementsByTagName('img')[0];
	var jsonData = sJson.evalJSON(true);
	var aItem	= DOMUtil.getClass(oImage).split('_');
	switch (oNav.id) {
		case 'portfolio_next':
			var iNew	= (aItem[2] * 1) + 1;
			if (iNew > aItem[3]) {
				iNew = 0;
			}
			break;
		case 'portfolio_prev':
			var iNew	= (aItem[2] * 1) - 1;
			if (iNew < 0) {
				iNew = aItem[3];
			}
			break;
	}
	var sSrc	= jsonData.projects[aItem[1]].data[iNew].replace(/_thumb/,'_full');
	PORTFOLIO.showImage(oImage,jsonData.projects[aItem[1]].path + sSrc,'image_' + aItem[1] + '_' + iNew + '_' + (jsonData.projects[aItem[1]].data.length - 1));
}



/*
	showImage
	Revision:	1.0		Initial creation
	To Do:				
	Purpose:			Created to preload images on request
						Take supplied data, hide target image, create a blank image to hold new src,
						preload that src, measure width/height and apply to target image, as well as new src

	Return:				NULL
*/
PORTFOLIO.showImage = function (oTarget,sSrc,sClass) {
	var oImage		= new Image();
	$(oTarget).style.display = 'none';
	var sOldClass	= DOMUtil.getClass($(oTarget));
	$(oTarget).removeClassName(sOldClass);
	$(oTarget).addClassName(sClass);
	oImage.onload = function () {
		$(oTarget).width	= oImage.width;
		$(oTarget).height	= oImage.height;
		$(oTarget).src		= sSrc;
		Effect.Appear($(oTarget),{duration: 0.2});
	}
	oImage.src = sSrc;
};



/*
	window.onload
	Revision:	1.0		Initial creation
	To Do:				
	Purpose:			Set up portfolio structure, list projects and set initial states

	Return:				NULL
*/
window.onload = function() {
	Effect.Appear('portfolio_large',{duration: 0.5,queue: 'end'});
	Effect.Appear('portfolio_image',{queue: 'end'});
	var oImage		= DOMUtil.createImage($('portfolio_image'),'/assets/images/blank.gif');
	var jsonData	= sJson.evalJSON(true);
	var oList		= DOMUtil.createList($('portfolio_list'));
	var oMain		= $('portfolio_large');
	for (i in jsonData.projects) {
		if (!isNaN(i)) {
			var oLi		= DOMUtil.createLi(oList);
			DOMUtil.setId(oLi,'preview_' + i);
			if (isMinIE6 != true) {
				oLi.style.display = 'none';
			}
			var oLink	= DOMUtil.createLink(oLi,'javascript:;');
			EventUtil.addEventHandler(oLink,'click',PORTFOLIO.loadProject);
			var oImage	= DOMUtil.createImage(oLink,jsonData.projects[i].path + jsonData.projects[i].data[0]);
		}
	}
	var oLis	= oList.getElementsByTagName('li');
	for (i in oLis) {
		if (!isNaN(i)) {
			if (oLis[i].style.display == 'none') {
				Effect.Appear(oLis[i],{duration: 0.2,queue: 'end'});
			}
		}
	}
	var oLink	= $('portfolio_detail').getElementsByTagName('a');
	EventUtil.addEventHandler(oLink[1],'click',PORTFOLIO.toggleDetail);
	oLink[0].style.display = 'none';
	var oLink = DOMUtil.createLink('portfolio_large','javascript:;');
	oLink.style.display = 'none';
	DOMUtil.setClass(oLink,'portfolio_arrow');
	DOMUtil.setId(oLink,'portfolio_next');
	EventUtil.addEventHandler(oLink,'click',PORTFOLIO.navigate);
	var oLink = DOMUtil.createLink('portfolio_large','javascript:;');
	oLink.style.display = 'none';
	DOMUtil.setClass(oLink,'portfolio_arrow');
	DOMUtil.setId(oLink,'portfolio_prev');
	EventUtil.addEventHandler(oLink,'click',PORTFOLIO.navigate);
};