﻿// ThumbnailStrip Class
// author: 	Rafal Niechajewicz
// email:	rafal@itpassion.net
// web:		http://www.itpassion.net
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function ThumbnailStrip(){
	this.addElement = ThumbnailStrip_addElement;
	this.embed = ThumbnailStrip_embed;
	this.refreshXML = ThumbnailStrip_refreshXML;
	this.onSelect = ThumbnailStrip_onSelect;
	this.loadElements = ThumbnailStrip_loadElements;
	this.thumbs = new Array();
	this.xml = ':)';
	this.height = 100;
	this.gap = 0;
	this.swf = 'ThumbnailStrip.swf';
	this.embeded = false;
	this.loop = true;
	var tmp=0;
	do{
		tmp++;
		this.id = "ThumbnailStripId" + tmp;
	}while(typeof(window[this.id])!='undefined');
	
	window[this.id] = this;
	this.onSelectStr = this.id + "OnSelect";
	//window[this.onSelectStr] = ':)';
}

function ThumbnailStrip_onSelect(eventHandler){
	window[this.onSelectStr] = eventHandler;
}

function ThumbnailStrip_Element(_img,_id){
	this.img = _img;
	this.id = _id;
}

function ThumbnailStrip_addElement(_img,_id){
	var element = new ThumbnailStrip_Element(_img,_id);
	this.thumbs.push(element);
	//this.refreshXML();
}

function ThumbnailStrip_embed(){
	if(!this.embeded){
		obj = '<object id="'+this.id+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="100%" height="100%" align="middle">'
		+'<param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" />'
		+'<param name="movie" value="'+this.swf+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />'
		+'<param name="wmode" value="transparent">'
		+'<embed name="'+this.id+'" src="'+this.swf+'" quality="high" bgcolor="#ffffff" width="100%" height="100%" align="middle"'
		+ 'wmode="transparent" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'
		+'</object>';
		
		this.refreshXML();
		document.write(obj);
		this.embeded = true;
	}else{
		alert('Object is already embedded');
	}
}

function ThumbnailStrip_refreshXML(){
	this.xml = '<ThumbnailStripElements>';
	for(index=0;index<this.thumbs.length;index++)
	{
		this.xml+= '<element src="'+this.thumbs[index].img+'" id="'+this.thumbs[index].id+'"/>'
	} 
	this.xml+= '</ThumbnailStripElements>';
}

function ThumbnailStrip_loadElements(xmlFile){
	var xmlDoc = loadXMLDoc(xmlFile);
	
	if(xmlDoc!=null){
		tmp = xmlDoc.childNodes[0];
		for(index=0;index<tmp.childNodes.length;index++){
			if(tmp.childNodes[index].nodeName[0]!='#'){ // protection against FireFox XML white spaces
				this.addElement(tmp.childNodes[index].getAttribute("src"),tmp.childNodes[index].getAttribute("id"));
			}
		}
	}
}

function loadXMLDoc(url)
{
	xmlhttp=null;
	if (window.XMLHttpRequest) {// code for all new browsers
		xmlhttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {// code for IE5 and IE6
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if (xmlhttp!=null){
		try{
			xmlhttp.open("POST",url,false);
			xmlhttp.send(null);
			if (xmlhttp.readyState==4){// 4 = "loaded"
				if (xmlhttp.status==200){// 200 = OK
					return xmlhttp.responseXML;
				} else {
					alert("Problem retrieving XML data\nINFO:\nscript location must be URL\nNOT local file system");
				}
			}
		}catch(e){
			alert("Problem retrieving XML data: "+e.message+"\nINFO:\nscript location must be URL\nNOT local file system");
		}
	} else {
		alert("Your browser does not support XMLHTTP.");
	}
}
