// Handles image transition effects.

// CONFIG - START

TRANSITION = {};
TRANSITION.VERSION_REQUIRED = 6;
TRANSITION.BASE_CLASS = 'transition';
TRANSITION.REPLACEMENT_CLASS = 'active_transition';
TRANSITION.DEFAULT_WIDTH = 100;
TRANSITION.DEFAULT_HEIGHT = 100;
TRANSITION.FLASH_BASE_PATH = '/_assets/transitions/';
TRANSITION.DEBUG = false;

// CONFIG - END






function buildTransitions () {
	if(hasFlash) {
		var transitionNodes = getTransitionNodes();
		for ( i = 0 ; i < transitionNodes.length ; i++ ) {
			var thisNode = transitionNodes[i];
			var transName = getTransitionName(thisNode);
			if(thisNode.width) {
				var transWidth = thisNode.width;
			} else {
				var transWidth = TRANSITION.DEFAULT_WIDTH;
			}
			if(thisNode.height) {
				var transHeight = thisNode.height;
			} else {
				var transHeight = TRANSITION.DEFAULT_HEIGHT;
			}
			if(thisNode.src) {
				var transPath = thisNode.src;
			} else {
				var transPath = '';
			}
			if(thisNode.alt) {
				var transText = thisNode.alt;
			} else {
				var transText = '';
			}
			var transText = thisNode.alt;
			runTransition ( thisNode, transName, transPath, transWidth, transHeight, transText );
		}
	}
};



function runTransition ( imgNode, transition, path, width, height, textInput ) {
	var flashNode = document.createElement('div');
	flashNode.innerHTML = '<object id="'+transition+'-'+path+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+width+'" height="'+height+'"><param name="movie" value="'+TRANSITION.FLASH_BASE_PATH+transition+'.swf?file2load='+path+'&textInput='+textInput+'"><param name="menu" value="false"><param name="wmode" value="transparent"><embed src="'+TRANSITION.FLASH_BASE_PATH+transition+'.swf?file2load='+path+'&textInput='+textInput+'" bgcolor="#ffffff" name="'+transition+'-'+path+'" id="'+transition+'-'+path+'" width="'+width+'" height="'+height+'" wmode="transparent" menu="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>';
	if (TRANSITION.DEBUG) alert('transition : '+transition+'\n path : '+path+'\n width : '+width+'\n height : '+height+'\n text : '+textInput+'\n swf : '+TRANSITION.FLASH_BASE_PATH+transition+'.swf'+'\n output : '+flashNode.innerHTML);
	flashNode.className = TRANSITION.REPLACEMENT_CLASS+' '+transition;
	imgNode.parentNode.replaceChild( flashNode, imgNode );
};



function getTransitionNodes() {
	var classElements = new Array();
	node = document;
	tag = 'img';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\s)"+TRANSITION.BASE_CLASS+"\-(.+?)(\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
};



function getTransitionName (node) {
	var original = node.className;
	var reg = new RegExp("(^|\s)("+TRANSITION.BASE_CLASS+"\-(.+?))(\\s|$)");
	var trans = reg.exec(original);
	return trans[3];
};



var hasFlash = function (){
	var nRequiredVersion = TRANSITION.VERSION_REQUIRED;	
	
	if(navigator.appVersion.indexOf("MSIE") != -1 && navigator.appVersion.indexOf("Windows") > -1){
		document.write('<script language="VBScript"\> \non error resume next \nhasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & ' + nRequiredVersion + '))) \n</script\> \n');

		if(window.hasFlash != null){
			return window.hasFlash;
		};
	};
	
	if(navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"] && navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
		var flashDescription = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description;
		return parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1)) >= nRequiredVersion;
	};
	
	return false;
};

