﻿function SDPlayer (name) {

	var previewPlayerName = name;
	var cookieName = "playerdata";	
	var maxCookieTracks = 10;
			
	this.loadPreviewPlayer = function(divID, initMessage, initPreviewLength, initCallback, initCallbackParam) {
		flashVars = "height=200";
		flashVars += initMessage != undefined ? "&initMessage=" + initMessage : "";
		flashVars += !isNaN(parseInt(initPreviewLength)) ? "&maxplay=" + initPreviewLength : "";
		flashVars += initCallback != undefined ? "&initCallback=" + initCallback : "";
		flashVars += initCallbackParam != undefined ? "&initCallbackParam=" + initCallbackParam : "";		
				
		var FO = {	movie:"/stores/flash/player/previewplayer.swf",
			id:previewPlayerName, 
			name:previewPlayerName, 
			width:"100%",
			height:"100%",
			majorversion:"7",
			build:"0",
			bgcolor:"#ffffff",
			flashvars:flashVars };
		UFO.create(FO, divID);						
	};
	
/*------------------------------
	Page interface
------------------------------*/
	this.loaded = function() {
		//sdplayer.loadCookiePlaylist();
	}
	
	this.playList = function(obj) {
		//yuk, this needs to know the name of the sdplayer variable...
		this.loadFile(obj, 'sdplayer.playFirstItem');
		showToolTip('ttPreviews','flashPlayer',-210,-2,'BR');
	}
	
	this.playFirstItem = function() {
		sdplayer.sendEvent('playitem', 0);
	}
	
	this.playFile = function(obj) {
		//this.addTrackToCookieList(obj);
		this.addItem(obj, 0);
		sdplayer.sendEvent('playitem', 0);
		showToolTip('ttPreviews','flashPlayer',-210,-2,'BR');
	}
				
/*------------------------------
	Internal interface
------------------------------*/	
	this.sendEvent = function(typ,prm) {
		thisMovie(previewPlayerName).sendEvent(typ,prm);
	};
	
	this.loadFile = function(file, callback) {
		thisMovie(previewPlayerName).loadFile(file, callback);
	};

	this.addItem = function(obj,idx) { 
		thisMovie(previewPlayerName).addItem(obj,idx); 
	};
	
	this.removeItem = function(idx) { 
		thisMovie(previewPlayerName).removeItem(idx); 
	};
	
	this.getItemData = function getItemData(idx) {
		return thisMovie(previewPlayerName).itemData(idx);
	};
					
	var thisMovie = function(movieName) {
	    if(navigator.appName.indexOf("Microsoft") != -1) {
			return window[movieName];
		} else {
			return document[movieName];
		}
	};
	
	/*------------------------------
		Cookie
	------------------------------*/	
	this.loadCookiePlaylist = function() {	
		try {
			var tracks = getCookieTracks();
			if (tracks.length > 0) {
				this.removeItem(0);
			}

			for (var track = 0; track < tracks.length; track++) {			
				trackData = unpackTrack(tracks[track]);
				this.addItem(trackData, 0);
			}
		} catch(err) {
			//Problem communicating with player...
		}
	};
	
	this.addTrackToCookieList = function(obj) {		
		var tracks = getCookieTracks();		
		var objString = packTrack(obj);
		tracks.unshift(objString);
		//setCookieTracks(tracks);
	};
	
	var getCookieTracks = function() {
		var list = getCookie(cookieName);
		if (list != undefined) {
			var items = list.split('|', maxCookieTracks);
		} else {
			items = new Array();
		}
		return items;
	};
	
	var setCookieTracks = function(tacks) {		
		//setCookie(cookieName, tacks.join('|'), 1);			
	};
	
	var packTrack = function(obj) {		
		return encodeURIComponent(obj.file) + '~' + encodeURIComponent(obj.title) + '~' + encodeURIComponent(obj.link);	
	};
	
	var unpackTrack = function(obj) {
		var bits = obj.split('~');
		return { file: decodeURIComponent(bits[0]), title: decodeURIComponent(bits[1]), link: decodeURIComponent(bits[2]) };
	};		
}
