var current_position=0;
var duration;
var duration_old;
var error_count = 0;
var falled_back = false;
var flv_object;						//reference to flash media player
var flash_version;					//object containing major, minor and release 
var parameters;						//object containing configuration
var slide_changing = false;
var slide_scaling = false;
var slide_size;						//current slide size
var slide_last;						//current displayed slide
var player_size;					//current player size
var player_type;					//player type, will be wmv or flv
var player_running;					//indicates if player is running
var playlist_count = -1;
var resized = false;
var user_tracks = false;
var timer_running = false;
var trackbar_space = 12;
var wmv_object;						//reference	to windows media player
var unplayed = true;			//flag if wmv goes on play the first time

/**
 This function starts the hole thing.
 First it retrievs the version of flash player and saves given parameters.
 If the version of flash player is higher or equal 8, flash will be used, else windows media.
 After player initialisation divs and buttons will be initialised
 */
function init_video(input_parameters) {
	//Detecting flash version
	flash_version = swfobject.getFlashPlayerVersion();
	//Parameters are saved
	parameters = input_parameters;
	//Flash detection should be done here and if Flash is available, it's default, else WMV is used
	switch (parameters["initial_player"]) {
		case "flv":
			embed_flash();
			break;
		case "wmv":
			embed_wmv();
			break;
		default:
			embed_flash();
			break;
	}
	//Init sizes of divs and some other things
	setTimeout(init_divs,10);
	//Player buttons
	setTimeout(init_buttons,10);
}

/**
 This function embeds the flash player
 Explanations are given inside the code
 */
function embed_flash() {
	$(".player").children().remove();
	//Player type is set
	player_type = "flv";
	if (flash_version.major < 8) {
		fallback();
		return;
	}
	//Div is added, which will be replaced by the player. SWFObject works this strange way
	setTimeout(function() {$(".player").append('<div id="playerreplace"></div>');}, 10);
	//Because the player is added by SWFObject, some short js-code is added in head section, which contains the configuration
	setTimeout(function() {
		//String is generated for adding in head section
		var head_string = '<script type="text/javascript">'+
		//SWFObject needs flashvars
		'var flashvars = {};'+
		'flashvars.audio_only="'+parameters["audio_only"]+'";'+
		'flashvars.autoplay="'+ (parameters["autoplay"] || player_running) +'";'+
		'flashvars.background_image="'+parameters["background_image"]+'";'+
		'flashvars.debug="'+parameters["flv_props"]["debug"]+'";';
		if(parameters["flv_props"]["fallback"] != undefined && parameters["flv_props"]["fallback"]!= "") {
			head_string += 'flashvars.fallback="true";';
		} else {
			head_string += 'flashvars.fallback="false";';
		}
		
		//This checks if installed Flash version is able to go fullscreen, if not, button will be hidden
		if(flash_version.major > 9 || (flash_version.major == 9 && flash_version.release >= 28)) {
			head_string +='flashvars.fullscreen_mode="'+parameters["flv_props"]["fullscreen"]+'";';
		} else {
			head_string +='flashvars.fullscreen_mode="false";';
		}
		head_string +='flashvars.play_pause="'+parameters["flv_props"]["play_pause"]+'";';
		
		//Playlist generation, streamer and file get a number at the end
		var i=0;
		for (var movie in parameters["flv_props"]["playlist"]) {
			for(var prop in parameters["flv_props"]["playlist"][movie]) {
				head_string +='flashvars.'+prop + i + '="'+parameters["flv_props"]["playlist"][movie][prop]+'";';
			}
			i++;
		}
		//Movie count
		head_string +='flashvars.movies="'+ i +'";'+
		'flashvars.testrtmpt='+parameters["flv_props"]["test_rtmpt"]+';'+
		'flashvars.trackbar="'+parameters["button_props"]["trackbar"]["show"]+'";';
		
		//Some genereal flash parameters
		head_string+='var flv_params = {};'+
		'flv_params.allowscriptaccess="always";';
		if(flash_version.major > 9 || (flash_version.major == 9 && flash_version.release >= 28)) {
			head_string +='flv_params.allowfullscreen="'+parameters["flv_props"]["fullscreen"]+'";';
		} else {
			head_string +='flv_params.allowfullscreen="false";';
		}
		
		//SWFObject call, 100% in width and height is used for scaling
		head_string +=' swfobject.embedSWF('+
		'"./flash/MMplayeR.swf","playerreplace","100%", "100%", "8.0.0", null, '+
		'flashvars,'+
		'flv_params, {name:"flv_player", id:"flv_player"}, embed_wmv);'+
		'</script>'
		$("head").append(head_string);
	//This timeout is important, because Flash needs some time to initialize
	}, 100);
	// reference to Flash object is saved, timing is needed due player initialisation
	setTimeout(function() {
		flv_object = document.getElementById("flv_player");
	//This timeout is important, because Flash needs some time to initialize
	}, 300);
}

//This function embeds the windows media player
function embed_wmv() {
	$(".player").children().remove();
	//Player type is saved
	player_type="wmv";
	//If user comes with IE, some special behavior is needed
	if(jQuery.browser.msie) {
		//First the player object is added
		player_string = '<object style="display:none;" id="MediaPlayer1" width="100%" height="';
		if(parameters["audio_only"] != undefined && parameters["audio_only"]) {
			player_string+='width="0%" height="0%"';
		} else {
			player_string+='width="100%" height="100%"';
		}
		player_string+='classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" '+
			'codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" '+
			'type="application/x-oleobject">'+
				'<param name="URL" value="" />'+
				'<param name="AutoStart" value="0" />'+
				'<param name="AnimationAtStart" value="0" />'+
				'<param name="PlayCount" value="1" />'+
				'<param name="ClickToPlay" value="FALSE" />'+
				'<param name="EnableContextMenu" value="0" />'+
				'<param name="ShowControls" value="0" />'+
				'<param name="ShowAudioControls" value="0" />' +
				'<param name="ShowPositionControls" value="0" />' +
				'<param name="ShowDisplay" value="0" />' +
				'<param name="ShowTracker" value="0" />' +
				'<param name="ShowStatusBar" value="0" />' +
				'<param name="stretchToFit" value="1" />'+
				'<param name="uiMode" value="' + parameters["wmv_props"]["uimode"] + '" />'+
			'</object>'+
			//Handler for playstatechange-Events. This is used for play-pause-detection
			'<script type="text/jscript" for="MediaPlayer1" event="playStateChange">'+
				'<!-- \n'+
				'wmv_state_handler(); \n'+
				'// -->'+
			'</script>'+
			//Handler for slide flipping
			'<script type="text/jscript" for="MediaPlayer1" event="ScriptCommand(scType, Param)"> '+
				'<!-- \n'+
				'wmv_cuepoint_handler(scType, Param); '+
				'// -->'+
			'</script>'+
			'<script type="text/jscript" for="MediaPlayer1" event="Error()"> '+
				'<!-- \n'+
				'fallback(); '+
				'// -->'+
			'</script>';
	//Handling for other browser than IE, FF atm
	} else {
		//Player object
		player_string = '<object style="display:none;" type="application/x-ms-wmp" id="MediaPlayer1" width="100%" height="';
				if(parameters["audio_only"] != undefined && parameters["audio_only"]) {
					player_string+='0px';
				} else {
					player_string+='100%';
				}
				player_string+='">'+
				'<param name="src" value="" />'+
				//'pluginspage="http://www.microsoft.com/windows/windowsmedia/download" '+
				'<param name="autostart" value="0" />'+
				'<param name="autosize" value="1" />'+
				'<param name="AnimationAtStart" value="0" />'+
				'<param name="PlayCount" value="1" />'+
				'<param name="ClickToPlay" value="0" />'+
				'<param name="EnableContextMenu" value="1" />'+
				'<param name="stretchToFit" value="1" />'+
				'<param name="uiMode" value="' + parameters["wmv_props"]["uimode"] + '" />'+
			'</object>'+
			'<script type"text/javascript">'+
				//Handler for playstatechange-Event, used for play-pause-detection
				'function OnDSPlayStateChangeEvt(state) {'+
					'wmv_state_handler();'+
				'}'+
				//Handler for slide flipping
				'function OnDSScriptCommandEvt(bstrType,bstrParam) {'+
					'wmv_cuepoint_handler(bstrType,bstrParam);'+
				'}'+
				'function OnDSErrorEvt() {'+
					'fallback();'+
				'}'+
			'</script>';
	}
	//player is added to dom
	setTimeout(function() {
		$(".player").append(player_string);
	}, 10);
	setTimeout(function() {
		//Empty image is appended
		$(".player").prepend('<img border="0" style="display:none;">');
		//Load event function is added, which scales and centers the image and is called after loading
		$(".player img").load(function() {
			var ratio_div = $(".player").width()/$(".player").height();
			var ratio_img = $(this).width()/$(this).height();
			if ($(this).height()/$(".player").height() > $(this).width()/$(".player").width()) { // Verhältnis Bild zu Div
				$(this).height("100%");
				$(this).width(100 * (ratio_img/ratio_div) +"%");
			} else {
				var percent = (100 * (ratio_div/ratio_img));
				$(this).height(percent+"%").width("100%");
				$(".player img").css("margin-top",((100-percent)/2)+"%");
			}
			$(".player").css("text-align","center").css("vertical-align","middle");
			$(".player img").show();
		});
		//Image is loaded
		$(".player img").attr("src", parameters["background_image"]);
		//Reset of player height and width due some strange behavior of object tag
		if(parameters["audio_only"] != undefined && parameters["audio_only"]) {
			if(jQuery.browser.msie) {
				$("#MediaPlayer1").width("0").height("0");
			} else {
				$("#MediaPlayer1").width("100%").height("0");
			}
		} else {
			$("#MediaPlayer1").width("100%").height("100%");
		}
		//OnPlay is hit if autoplay, because play-pause-handler is not up at this point
		if(parameters["autoplay"]==true || player_running || resized) {
			play();
			if(jQuery.browser.msie) {
				onPlay();
			}
		}
	//Important timeout, because player has to initialize first
	},400);
}

function fallback() {
	if(parameters[player_type + "_props"]["fallback"] != undefined) {
		if(parameters[player_type + "_props"]["fallback"] == "wmv") {
			//template specific part
			$("a.Link").each(function() {
					var href= $(this).attr("href");
					var options = href.split("?")[1].split("&");
					href = href.split("?")[0]+"?";
					for(var i =0;i<options.length;i++) {
						if(i!=0) {
							href+="&";
						}
						href+=options[i].split("=")[0] + "=";
						if(options[i].split("=")[0] == "noFlash") {
							href+="true";
						} else {
							href+=options[i].split("=")[1];
						}
					}
					$(this).attr("href", href);
					if($(this).attr("href").indexOf("stream=dsl") > -1) {
						$(this).children("img").attr("src","./images/button_aktiv.png");
					}
				});
			setTimeout(function() {
				$("a.Link.Flash")
					.remove();
			}, 100);
			$("span.HinweisText").show();
			//end template specific part
			embed_wmv();
		}
	}
}

function get_playlist_count() {
	if(player_type == "wmv") {
		if(typeof(wmv_object) != 'undefined' 
			&& typeof(wmv_object.currentPlaylist) != 'undefined' 
			&& typeof(wmv_object.currentPlaylist.count) != 'undefined'
			&& typeof(wmv_object.currentMedia) != 'undefined') {
				for(var i=0;i<wmv_object.currentPlaylist.count;i++) {
					if(typeof(wmv_object.currentPlaylist.item(i)) != 'undefined'
						&& wmv_object.currentPlaylist.item(i).isIdentical(wmv_object.currentMedia)) {
							return i;
					}
				}
		}
	}
	return -1;
}

//Initializes buttons and sets images
function init_buttons() {
	//$(".controls a").not(".controls a:eq(1)").css("float","left");
	//$(".buttons").css("display","inline");
	$(".controls a.play").html('<img src="'+ parameters["button_props"]["active_dir"]+'play.gif" border="0">');//.css("float","left");
	//pause is passive at initialization
	$(".controls a.pause").html('<img src="'+ parameters["button_props"]["passive_dir"]+'pause.gif" border="0">');//.css("float","left");
	$(".controls a.volume_up").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_up.gif" border="0">');//.css("float","right");
	$(".controls a.volume_down").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_down.gif" border="0">');//.css("float","right");
	$(".controls a.mute").html('<img src="'+ parameters["button_props"]["active_dir"]+'sound_off.gif" border="0">');//.css("float","right");
	//$(".buttons a.scale.up").html('<img src="'+ parameters["button_props"]["active_dir"]+'zoom_in.gif" border="0">');//.css("float","right");
	//$(".buttons a.scale.down").html('<img src="'+ parameters["button_props"]["active_dir"]+'zoom_out.gif" border="0">');//.css("float","right");
}

function init_chapters() {
	if(parameters["chapters_url"] != undefined) {
		$.ajax({
			type: "GET",
			url: parameters["chapters_url"],
			cache: false,
			dataType: "json",
			success: function(json) {
				
				for (var prop in json) {
					onError(prop + ": " + json[prop]);
				}
			}
		});
	}
}

//Initializes divs
function init_divs() {
	//Player-div is set to initial player size
	player_size = parameters["player_props"]["initial_size"];
    $(".player").css("background-color", "#000000")
		.height(parameters["player_props"]["sizes"][player_size]["height"])
		.width(parameters["player_props"]["sizes"][player_size]["width"]);
    
	
	//Slide div is set to initial slide size
	$(".slides").width(parameters["slide_props"]["sizes"][parameters["slide_props"]["initial_size"]]["width"]);
	$(".slides").height(parameters["slide_props"]["sizes"][parameters["slide_props"]["initial_size"]]["height"]);
	//$(".slides").css("float","left")//.css("border","1px solid black");
	//Initial slide is loaded
	if(typeof(parameters["slide_props"]["initial_slide"]) != 'undefined' && parameters["slide_props"]["initial_slide"] != "") {
		//slide_last=parameters["slide_props"]["initial_slide"];
		slide_last=parameters["slide_props"]["initial_slide"];
		$(".slides").html("<img src=\"\">").children().addClass("loading").parent().append("<div style='width:100%;height:100%;background-color:#fff;'>").children().addClass("working");
		slide_size = "temp";
		scale_slides(parameters["slide_props"]["initial_size"]);
		/*$(".slides img").load(function() {
			$(this).addClass("working");
		});*/
	}
	
	//Controls-div is initialized
	$(".controls").css("clear","left").css("padding-top","0.25em");//.css("text-align","center");
	//$(".controls .buttons").css("display","inline");
	$(".controls .trackbar").css("padding","0.5em");
	if(parameters["button_props"]["trackbar"]["show"]) {
		$(".controls .trackbar").show();
	} else {
		$(".controls .trackbar").hide();
	}
	$(".buttons.right").parent().css("padding-top","1.5em");
	$(".buttons.left").width(parameters["player_props"]["sizes"][player_size]["width"]);
	scale_trackbar();
	
	//Errormessage-div is initialized and set to some red color
	$(".errormessage").css("color","#e55");
}

function init_trackbar() {
	if(parameters["button_props"]["trackbar"]["show"]) {
		duration_old = duration;
		if(player_type=="flv") {
			if(typeof(flv_object) != 'undefined') {
				duration = flv_object.duration();
			} else {
				return;
			}
		} else if(player_type=="wmv") {
			if(typeof(wmv_object) != 'undefined'
				&& typeof(wmv_object.currentMedia) != 'undefined'
				&& typeof(wmv_object.currentMedia.duration) != 'undefined') {
					duration = wmv_object.currentMedia.duration;
					if(!timer_running) {
						timer_running=true;
						wmv_time();
					}
			} else {
				return;
			}
		}
		if(duration==undefined) {
			return;
		} else {
			if(duration_old != duration) {
				$("#trackbar").slider('destroy');
				setTimeout(function() {
					$("#trackbar").slider({
						animate:true,
						range:'min',
						max:duration,
						start: function(event, ui) {
							user_tracks=true;
						},
						stop: function(event, ui) {
							track_to(ui.value);
							user_tracks=false;
						}
					});
				}, 100);
			} else {
				setTimeout(function() {
					if (parameters["button_props"]["trackbar"]["enable"]) {
						$(".trackbar #trackbar").slider('enable');
					} else {
						$(".trackbar #trackbar").slider('disable');
					}
				}, 100);
			}
		}
	}
}

//Function for player muting
function mute() {
	//simple handling for flv
	if(player_type=="flv" && typeof(flv_object) != 'undefined') {
		flv_object.mute();
	//complex handling for wmv
	} else if (player_type=="wmv" 
		&& player_running 
		&& typeof(wmv_object) != 'undefined'
		&& typeof(wmv_object.settings) != 'undefined'
		&& typeof(wmv_object.settings.volume) != 'undefined'
		&& typeof(wmv_object.settings.mute) != 'undefined'
		&& (wmv_object.settings.volume>0)) {
			if(wmv_object.settings.mute) {
				wmv_object.settings.mute=false;
			} else {
				wmv_object.settings.mute=true;
			}
			//Important call, which wmp does not on it's on
			onMute(wmv_object.settings.mute);
	}
}

/*
 * This is a "Dual-call". It is used by player object, where size will be undefined and by ui, where size will be set.
 * So there's a case differentiation if size is undefined or slide has changed.
 */
function onCuePoint(slide, slide_scaling) {
	//if slide or size has changed, something is done
	if (slide != slide_last || (typeof(slide_scaling) != 'undefined' && slide_scaling ==true)) {
		//new empty image with class new is appended and hidden
		//$("div.slides .loading").remove();
		setTimeout(function() {
			$("div.slides")
				.append("<img class=\"loading\">")
				.children(".loading").hide()
				//Event handler, when new slide is loaded
				.load(function() {
					slide_last=slide;
					for (var i = 0;i < $(".slides .loading").length;i++) {
						if($(".slides .loading:eq("+i+")").attr("src") == $(this).attr("src")) {
							$(".slides .loading:lt("+i+")").remove();
						}
					}
					$(this)
						.removeClass()
						.addClass("loaded")
						.parent()
						.children()
						.remove(".working")
						.remove(".loading")
						.parent()
						.children()
						.removeClass()
						.width("100%").height("100%")
						.show()
						.addClass("working");
				})
				.parent()
				.children(".loading:last")
				.attr("src",parameters['slide_props']['url']+slide_size+ "/" + slide);
		}, 100);
	}
}

//Function for printing something in Errormessage-div
function onError(value) {
	cur_date=new Date();
	hours = cur_date.getHours();
	if(hours < 10) {
		hours = "0" + hours;
	}
	minutes = cur_date.getMinutes();
	if(minutes <10) {
		minutes = "0" + minutes;
	}
	seconds = cur_date.getSeconds();
	if(seconds <10) {
		seconds = "0" + seconds;
	}
	$("div.errormessage").prepend("("+ hours + ":" + minutes + ":" + seconds + ") " + value + "<br />");
}

//Callback which handles buttons if player muted or unmuted
function onMute(value) {
	if(value==true) {
		$(".controls a.volume_up").html('<img src="'+ parameters["button_props"]["passive_dir"]+'volume_up.gif" border="0">');//.addClass("ui-state-disabled"); 
		$(".controls a.volume_down").html('<img src="'+ parameters["button_props"]["passive_dir"]+'volume_down.gif" border="0">');//.addClass("ui-state-disabled"); 
		$(".controls a.mute").html('<img src="'+ parameters["button_props"]["active_dir"]+'sound_off.gif" border="0">');//.removeClass("ui-state-disabled"); 
	} else {
		$(".controls a.mute").html('<img src="'+ parameters["button_props"]["passive_dir"]+'sound_off.gif" border="0">');
		if(player_type=="wmv" 
			&& typeof(wmv_object) != 'undefined' 
			&& typeof(wmv_object.settings) != 'undefined' 
			&& typeof(wmv_object.settings.volume) != 'undefined') {
				onVolume(wmv_object.settings.volume);
		}
	}
}

//Callback which handles buttons if player is paused
function onPause() {
	$(".controls a.play").html('<img src="'+ parameters["button_props"]["active_dir"]+'play.gif" border="0">'); 
	$(".controls a.pause").html('<img src="'+ parameters["button_props"]["passive_dir"]+'pause.gif" border="0">'); 
	player_running=false;
}


//Callback which handles buttons if player is playing
function onPlay() {
	$(".controls a.play").html('<img src="'+ parameters["button_props"]["passive_dir"]+'play.gif" border="0">'); 
	$(".controls a.pause").html('<img src="'+ parameters["button_props"]["active_dir"]+'pause.gif" border="0">');
	player_running=true;
	init_trackbar();
	get_playlist_count();
}

//Callback which handles buttons if player is stopped
function onStop() {
    if(player_type=="flv") {
        embed_flash();
    } else {
    	$(".controls a.play").html('<img src="'+ parameters["button_props"]["passive_dir"]+'play.gif" border="0">'); 
	    $(".controls a.pause").html('<img src="'+ parameters["button_props"]["passive_dir"]+'pause.gif" border="0">');
    	$(".trackbar #trackbar").slider('disable');
	    player_running=false;
    }
}

function onTime(time) {
	if(parameters["button_props"]["trackbar"]["show"] && time!=undefined && !user_tracks) {
		$(".trackbar #trackbar").slider('value', Math.round(time)); 
	}
}

//Callback which handles buttons on volume change
function onVolume(value) {
	if(value==100) {
		$(".controls a.volume_up").html('<img src="'+ parameters["button_props"]["passive_dir"]+'volume_up.gif" border="0">');//.addClass("ui-state-disabled");
		$(".controls a.volume_down").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_down.gif" border="0">');//.removeClass("ui-state-disabled");
	} else if (value==0) {
		$(".controls a.volume_down").html('<img src="'+ parameters["button_props"]["passive_dir"]+'volume_down.gif" border="0">');//.addClass("ui-state-disabled"); 
		$(".controls a.volume_up").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_up.gif" border="0">');//.removeClass("ui-state-disabled"); 
		$(".controls a.mute").html('<img src="'+ parameters["button_props"]["passive_dir"]+'sound_off.gif" border="0">');//.addClass("ui-state-disabled");
	} else {
		$(".controls a.volume_up").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_up.gif" border="0">');//.removeClass("ui-state-disabled"); 
		$(".controls a.volume_down").html('<img src="'+ parameters["button_props"]["active_dir"]+'volume_down.gif" border="0">');//.removeClass("ui-state-disabled"); 
		$(".controls a.mute").html('<img src="'+ parameters["button_props"]["active_dir"]+'sound_off.gif" border="0">');//.removeClass("ui-state-disabled");
	}
}

//function which sets player to playing
function play() {
	//Simple handling for flv
	if(player_type == "flv") {
		unplayed=false;
		flv_object.play_video();
	//Complex handling for wmv
	} else if(player_type == "wmv") {
		if(unplayed || (resized!=undefined && resized) || falled_back) {
			//initial image is faded out
			if(parameters["audio_only"] != undefined && parameters["audio_only"]) {
				player_fade_in();
			} else {
				$(".player img").fadeOut(500,player_fade_in);
			}
			unplayed = false;
		//else player simply goes to play
		} else if(typeof(wmv_object) != 'undefined' 
			&& typeof(wmv_object.controls) != 'undefined' 
			&& wmv_object.controls.isAvailable('play')) {
				wmv_object.controls.play();
		}
	}
	
	function player_fade_in() {
		$("#MediaPlayer1").fadeIn(500, function() {
			wmv_object = document.MediaPlayer1;
			if(typeof(wmv_object) != 'undefined') {
				//Playlist creation
				var playlist = wmv_object.newPlaylist("playlist_test", "");
				// Make the retrieved playlist the current playlist.
				wmv_object.currentPlaylist = playlist;
				
				var movie;
				//Movies are appended to new playlist
				for (var movie in parameters["wmv_props"]["playlist"]) {
					movie = wmv_object.newMedia(parameters["wmv_props"]["playlist"][movie]["url"]);
					wmv_object.currentPlaylist.appendItem(movie);
				}
				if(typeof(resized)!='undefined' && resized) {
					resized=false;
					if(playlist_count>-1) {
						wmv_object.currentMedia = wmv_object.currentPlaylist.item(playlist_count);
						wmv_object.controls.currentPosition = current_position;
					}
				}
				wmv_object.controls.play();
			}
		});
		//image is removed
		$(this).remove();
	}
}

//Pauses player
function pause() {
	if(player_type=="flv") {
		flv_object.pause_video();
	} else if(player_type=="wmv" 
		&& typeof(wmv_object) != 'undefined' 
		&& typeof(wmv_object.controls) != 'undefined') {
			if(wmv_object.controls.isAvailable('pause')) {
				wmv_object.controls.pause();
			} else {
				wmv_object.controls.stop();
			}
	}
}

//Rescales player
function scale_player(size) {
	//first is a lookup if size is in defined sizes
	for(var sizes in parameters["player_props"]["sizes"]) {
		if (size==sizes && size != player_size) {
			player_size=size;
			$(".player").width(parameters["player_props"]["sizes"][player_size]["width"]).height(parameters["player_props"]["sizes"][player_size]["height"]);
			scale_trackbar();
			if(player_type=="wmv") {
				if(typeof(wmv_object) != 'undefined' && typeof(wmv_object.controls) != 'undefined' && typeof(wmv_object.controls.currentPosition) != 'undefined') {
					//Reset of player height and width due some strange behavior of object tag
					current_position = wmv_object.controls.currentPosition;
					playlist_count = get_playlist_count();
					pause();
					resized=true;
					embed_wmv();
				}
			}
		}
	}
}

//resizes slides, maybe needless
function scale_slides(size) {
	//if slide or size has changed, something is done
	if (size != undefined && size!=slide_size) {
		var max =0;
		for(var prop_size in parameters["slide_props"]["sizes"]) {
			max++;
		}
		var i = 0;
		//if size has changed, slide stays the same, but another size is loaded
		for(var prop_size in parameters["slide_props"]["sizes"]) {
			i++;
			if (prop_size == size) {
				slide_scaling=true;
				if(i== max) {
					$(".buttons a.scale.up").html('<img src="'+ parameters["button_props"]["passive_dir"]+'zoom_in.gif" border="0">');
				} else {
					$(".buttons a.scale.up").html('<img src="'+ parameters["button_props"]["active_dir"]+'zoom_in.gif" border="0">');
				}
				if(i==1) {
					$(".buttons a.scale.down").html('<img src="'+ parameters["button_props"]["passive_dir"]+'zoom_out.gif" border="0">');
				} else {
					$(".buttons a.scale.down").html('<img src="'+ parameters["button_props"]["active_dir"]+'zoom_out.gif" border="0">');
				}
				//images in slide div are set to 100% to let them fade nicely
				$("div.slides img").width("100%").height("100%");
				slide_size=size;
				onCuePoint(slide_last, true);
				$(".slides")
					.width(parameters["slide_props"]["sizes"][slide_size]["width"])
					.height(parameters["slide_props"]["sizes"][slide_size]["height"]);
				break;
			}
		}
	}
};

function scale_trackbar() {
	$(".controls .trackbar")
		//.width(parameters["player_props"]["sizes"][player_size]["width"]-trackbar_space)
		.css("font-size","0.7em")
		.height("1.25em")
		.css("display","block")
		.parent()
		.width(parameters["player_props"]["sizes"][player_size]["width"]-200);
}

function track_to(time) {
	if(player_type=="flv" && typeof(flv_object) != 'undefined') {
		flv_object.seek_video(time);
	} else if (player_type=="wmv" 
		&& typeof(wmv_object) != 'undefined' 
		&& typeof(wmv_object.controls) != 'undefined' 
		&& typeof(wmv_object.controls.currentPosition) != 'undefined') {
			wmv_object.controls.currentPosition = time;
	}
}

//Volumes down
function volume_down() {
	//FLV does it on it's own
	if(player_type=="flv" && typeof(flv_object) != 'undefined') {
		flv_object.volume_down();
	//WMV needs an absolute value
	} else if(player_type=="wmv" 
		&& player_running 
		&& typeof(wmv_object) != 'undefined'
		&& typeof(wmv_object.settings) != 'undefined'
		&& typeof(wmv_object.settings.mute) != 'undefined'
		&& typeof(wmv_object.settings.volume) != 'undefined'
		&& !wmv_object.settings.mute) {
			if(wmv_object.settings.volume - 10 >0) {
				wmv_object.settings.volume = wmv_object.settings.volume -10;
			} else {
				wmv_object.settings.volume = 0;
			}
			//important call, which wmv does not on it's own
			onVolume(wmv_object.settings.volume);
	}
}

//Volume up
function volume_up() {
	//FLV does it on it's own
	if(player_type=="flv" && typeof(flv_object) != 'undefined') {
		flv_object.volume_up();
	//WMV needs an absolute value
	} else if(player_type=="wmv" 
		&& player_running 
		&& typeof(wmv_object) != 'undefined'
		&& typeof(wmv_object.settings) != 'undefined'
		&& typeof(wmv_object.settings.mute) != 'undefined'
		&& typeof(wmv_object.settings.volume) != 'undefined'
		&& !wmv_object.settings.mute) {
			if(wmv_object.settings.volume + 10 < 100) {
				wmv_object.settings.volume = wmv_object.settings.volume +10;
			} else {
				wmv_object.settings.volume = 100;
			}
			//important call, which wmv does not on it's own
			onVolume(wmv_object.settings.volume);
	}
}

//Wrapper function for wmv and cuepoints
function wmv_cuepoint_handler(type, param) {
	if(parameters["wmv_props"]["debug"]) {
		onError("Cuepoint: type: " + type + ", param: " + param);
	}
	if(type=="image") {
		onCuePoint(param,undefined);
	}
}



//Wrapper function for wmv and play state change
function wmv_state_handler() {
	if(typeof(wmv_object) != 'undefined' && typeof(wmv_object.playState) != 'undefined') {
		var state=wmv_object.playState;
		if(state ==1 || state ==2 || state==10) {
			onPause();
		} else if(state ==3 || state==6 || state==7) {
			onPlay();
		}
	}
}

function wmv_time() {
	if(player_running) {
		if(typeof(wmv_object) != 'undefined' && typeof(wmv_object.controls) != 'undefined' && typeof(wmv_object.controls.currentPosition) != 'undefined') {
			onTime(wmv_object.controls.currentPosition);
		}
		setTimeout(wmv_time,250);
	} else {
		if(typeof(wmv_object) != 'undefined' && wmv_object.playState == 1) { //if stopped
			$("#trackbar").slider("disable");
		}
		timer_running=false;
	}
}