var vwidth=598;
var vheight=360;
var stream_port=19876;
var player = null;
var fullfilelist = new Array();
var currentState = null;
var previousState = null;
var curtor = null;

function doState(obj) {
    alert(obj.state);
}

function check_liveconnect(mylcc) {
    document.jPatupApplet.callback_liveconnect(mylcc);
}

function ready_for_dl() {
//    document.jPatupApplet.start_dl();
}

function doCallBack(errcode,msg) {
//    alert(errcode+": "+msg);
    if (errcode < 5) {
    } else if (errcode == 5) {
	if (msg.split(":")[0] == "percent") {
	    var percent = Math.round(msg.split(":")[1]);
	    update_downloaded(msg.split(":")[3]);
	    //drawPercentBar(200,percent,'red');
	}
    } else if (errcode == 6) {
	do_filelist(msg);
    } else if (errcode == 7) {
	update_port(msg);
    }
}	

function update_downloaded(piecenr) {
    var i=0;
//    alert(piecenr);
    piecenr = parseInt(piecenr);
    for(i=0;i<fullfilelist.length;i++) {
	fullfilelist[i][0] = parseInt(fullfilelist[i][0]);
	fullfilelist[i][1] = parseInt(fullfilelist[i][1]);
	fullfilelist[i][2] = parseInt(fullfilelist[i][2]);
	if (piecenr >= fullfilelist[i][0] && piecenr < fullfilelist[i][1]) {
	    fullfilelist[i][2] = fullfilelist[i][2] + 1;
	    var range = fullfilelist[i][1]-fullfilelist[i][0];    
	    var percentage = (fullfilelist[i][2] / range) * 100;
	    var percdiv = document.getElementById('percentage-'+i);
	    if (percdiv) {
		percdiv.innerHTML = Math.round(percentage) + "% "+fullfilelist[i][2]+"/"+range;
	    }
	    break;
	}    
    }
}

function update_port(msg) {
    if(msg.length > 0) {
	stream_port = msg;
    }
}

function new_movie(filename,type1) {
    document.jPatupApplet.getFile(filename);
    var vname = "VideoPlayer"; 

    var so = new SWFObject("/jpatupcli/mediaplayer.swf", "mpl", vwidth, vheight, '9');
    so.addVariable('id', "mpl");
    so.addVariable('preview', '/screenshots/noimg.gif');
    so.addVariable('shuffle', 'false');
    so.addVariable('autostart', 'true');
//    so.addVariable('plugins', 'drelated-1');
    so.addVariable('bufferlength', '2');
    if (type1 == "sound") {
	so.addVariable('file', "http://127.0.0.1:"+stream_port+"/"+filename);
	so.addVariable('type', "sound");
    } else {
	so.addVariable('file', '/'+filename);
	so.addVariable('streamer', "http://127.0.0.1:"+stream_port+"/streamer.php");
	so.addVariable('type', 'http');
    }
    
//    so.addVariable('drelated.dxmlpath', "/related.xml");
//    so.addVariable('drelated.dposition', "bottom");
//    so.addVariable('drelated.dtarget', "_self");
    so.addParam('allowfullscreen', 'true');
    so.addParam('allowscriptaccess', 'always');
    so.addParam('wmode', 'transparent');
    so.write(vname);
}

function do_filelist(msg) {
    var filelist = msg.split("||");
    var i =0;
    var finalbuffer = "<table><small>";
    var type = "";
    var ext = "";
    var firsttype = "";
    var filename = "";
    var range = "";
    for(i=0;i<filelist.length;i++) {
	filename = filelist[i].split(":");
	range = filename[0].split("-");
	filename = filename.slice(1).join(":");
	ext = filename.split('.');
	ext = ext[ext.length-1].toLowerCase();
	type = "";
	if (ext == "mp3" || ext == "wav")
	    type = "sound";
	else if (ext == "jpg" || ext == "png" || ext == "gif")
	    type = "image";
	else if (ext == "flv" || ext == "mp4" || ext == "mkv" || ext == "m4v")
	    type = "video";
	else
	    type = "http";
	if (i == 0)
	    firsttype = type;
	
	var tmpvar = new Array();
	if (i > 0) {
	    if (parseInt(fullfilelist[i-1][1]) >= parseInt(range[0])) {
		range[0] = parseInt(fullfilelist[i-1][1])+1;
	    }
	}
	tmpvar[0] = range[0];
	tmpvar[1] = range[1];
	tmpvar[2] = 0;
	tmpvar[3] = filename;
	fullfilelist.push(tmpvar);
	finalbuffer += "<tr><td><div id='percentage-"+i+"'>0%</div></td><td><a href='javascript:new_movie(\""+filename+"\",\""+type+"\");'>" + filename + "</a></td></tr>";
//	addItem({file:''+filename+''});
    }
    finalbuffer += "</table></small>";
    document.getElementById('filelist').innerHTML = finalbuffer;
    new_movie(filelist[0].split(":").slice(1).join(":"),type);
}

function drawPercentBar(width, percent, color, background) 
{ 
    width = vwidth;
    var pixels = width * (percent / 100); 
    if (!background) { background = "none"; }
 
    var percentbar = "<div style=\"position: relative; line-height: 1em; background-color: " 
                   + background + "; border: 1px solid black; width: " 
                   + width + "px\">"
		   + "<div style=\"height: 1.5em; width: " + pixels + "px; background-color: "
                   + color + ";\"></div>"
		   +"<div style=\"position: absolute; text-align: center; padding-top: .25em; width: " 
                   + width + "px; top: 0; left: 0\">" + percent + "%</div>"
		   +"</div>"; 
    document.getElementById('percentbar').innerHTML = percentbar;
} 

function play_video(torid, url) {
    curtor = torid;
    document.getElementById("japplet").innerHTML = "<applet name='jPatupApplet' CODE='MainApplet' ARCHIVE='/jpatupcli/jPatup.jar' WIDTH=0 HEIGHT=0 MAYSCRIPT>\n"
                    				 + "<param name='url' value='"+url+"'>\n"
						 + "<param name='lowerport' value='10000'>\n"
                				 + "<param name='upperport' value='20000'>\n"
                				 + "</applet>\n";
}

function playerReady(thePlayer) {

    player = document.getElementById(thePlayer.id);
    addListeners();
    display_autoplay();
}

function addListeners() {
    if (player) {
	player.addModelListener("STATE", "stateListener");
    } else {
	setTimeout("addListeners()", 100);
    }	
}

function stateListener(obj) {
    currentState = obj.newstate;
    previousState = obj.oldstate;
    if ((currentState == "COMPLETED")&&(previousState == "PLAYING")) {
	var autoplay = get_cookie("autoplay");
	if (autoplay == "true") {
	    // Need a rewrite
	    window.location = document.links["related-0"].href+"?startplaying=1";
	}
    } else if ((currentState == "BUFFERING")&&(previousState != "BUFFERING")) {
    
    } else if ((currentState == "PLAYING")&&(previousState != "PLAYING")) {
	
    }
    httpGETRequest("http://www.patup.com/api.php?action=playerstatus&tid="+curtor+"&status="+currentState, "none");
}

function gid(name) {
    return document.getElementById(name);
}

function display_autoplay() {
    var onoff = "Off";
    var autoplay = get_cookie("autoplay");
    if (autoplay == "true")
	onoff = "On";

    document.getElementById("autoplay").innerHTML = "<b>AutoPlay</b>: <a href='#' onclick='javascript: toggle_autoplay();return false;'>"+onoff+"</a>";
}

function toggle_autoplay() {
    var autoplay = get_cookie("autoplay");
    if (autoplay == "true") {
	document.cookie = "autoplay=false;path=/;";
    }
    else {
	document.cookie = "autoplay=true;path=/;";
    }
    display_autoplay();
}

function set_autoplay(val) {
    if (val == "true")
	document.cookie = "autoplay=true;path=/;";
    else
	document.cookie = "autoplay=false;path=/;";
    display_autoplay();
}

function get_cookie(cookiename)
{
    var results = document.cookie.match('(^|;) ?' + cookiename + '=([^;]*)(;|$)');
    if (results)
	return (unescape(results[2]));
    else
	return null;
}
    
