//============= AJAX ==============
//adapted from: kirupa.com
function createRequest()
{
	if(window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function ajax(url,targetElem)
{
//	alert('about to load src:\n' + url);
	if(url=='') return;
	xmlHttp = createRequest();
	xmlHttp.open("GET", url, true);
	xmlHttp.onreadystatechange = function()
	{
		if(xmlHttp.readyState == 4)
		{
			targetElem.innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.send(null);
}
//================ END AJAX ===============




//from http://snipplr.com/view.php?codeview&id=1696
function getElementsByClassName(classname, node)  {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

function injectSwf(containerDiv, injectionClass)
{
	if(injectionClass == '') return; //we need this arg else we don't know what to process.
    if(!containerDiv)
	{
		var swfElems = getElementsByClassName("blogswf");
	}
	else
	{
		var swfElems = getElementsByClassName("blogswf", document.getElementById(injectionClass));
	}

	for(var i=0; i<swfElems.length; i++)
	{
		publishSwf(swfElems[i]);
	}
}

//swf code avail as [key:value;key:value...]
function publishSwf(elem)
{
	if(elem == undefined) return; //just a sanity check

	var start = elem.innerHTML.indexOf('[') + 1;
	var end = elem.innerHTML.indexOf(']');
	var keyValPairs; //array of key-val pairs
	var loadInstructions; //the orig code string
	var instr; //single key-val pair
	
	//swf info
	var swfName = '';
	var swfContainer = '';
	var swfWidth = '150';
	var swfHeight = '150';
	var swfType = '';
	var swfPath = '/swf';

	if(end > start)
	{//correctly specified codes
		loadInstructions = elem.innerHTML.substr(start,(end-start));
		
		//kill load instructions
		elem.innerHTML = elem.innerHTML.substr(end+1);
		
		//get key-val pairs
		keyValPairs = loadInstructions.split(';');


		//temp wait message: commenting out as it seems to kill IE7.
		//elem.innerHTML = "<p><b>Please wait while the gallery loads...</b></p>";
	}

	//process instructions
	try
	{
		for(var i=0; i<keyValPairs.length; i++)
		{
			instr = keyValPairs[i].split(':');
			if(instr[0] == 'resource')
			{
				swfName = instr[1];
				continue;
			}
			if(instr[0] == 'path')
			{
				swfPath = instr[1];
				continue;
			}

			if(instr[0] == 'type')
			{
				swfType = instr[1];
				if(swfType == 'video')
				{
					swfContainer = "flvplayer";
				}
				else if(swfType == 'simpleviewer')
				{
					swfContainer = "";
				}
				else if(swfType == 'tingallery')
				{
					swfContainer = "tg.swf";
				}
				else if(swfType == 'externalvid')
				{
					//nothing to do
				}

				//no other types supported at this time
				continue;
			}
			if(instr[0] == 'width')
			{
				swfWidth = instr[1];
				continue;
			}
			if(instr[0] == 'height')
			{
				swfHeight = instr[1];
				continue;
			}
		}
	}
	catch (e)
	{
		alert("An error occurred while embedding flash content");
	}
	
	if(swfType == 'video')
	{
		//build the swf
		var so = new SWFObject("/swf/" + swfContainer + ".swf", swfName+"Obj", swfWidth, swfHeight, "7", "#FFFFFF");
		so.addParam("quality", "high");
		so.addParam("wmode", "opaque");
		so.addVariable("playerskin", "/swf/ClearOverAll.swf");
		so.addVariable("moviepath", "/flv/" + swfName + ".flv");
	
		//publish to correct div
		so.write(elem);

	}
	else if(swfType == 'simpleviewer')
	{
		var output = '<iframe src="/gallery/'+swfName+'/index.html" width="685" height="500" frameborder="0" scrolling="no"></iframe>';
		elem.innerHTML = output;		
	}
	else if(swfType == 'tingallery')
	{
		var output = '<iframe src="/gallery/gallery.php?gal='+swfName+'&w=' +swfWidth+ '&h=' +swfHeight+ '" frameborder="0" scrolling="no" width="'+swfWidth+'" height="'+swfHeight+'"></iframe>';
		elem.innerHTML = output;		
	}
	else if(swfType == 'externalvid')
	{
		elem.innerHTML = 'Loading external video content. Please wait...';
		ajax("/embeds/" + swfName + ".txt", elem);
	}
	else
	{
		elem.innerHTML = "<p>(an unsupported media type was not embedded).</p>";
	}
}
