/* Globals
******************************/

var pwin, historylen, mp3Player, bkg_prev;
var back_clicked=false;
var audio_ispaused=false;
var audio_isactive=false;
var scroll_parent=true;
var edit_newwin=false;
var audio_curtime=-1;
var edit_list_target=0;
var tgtType='playlist';
var ico_preload=new Array();
var hist=new Array();
var icon_pos={
	playlist:0,
	rss:1,
	html_youtube:2,
	xml_applemovie:3,
	xml_shoutcast: 4,
	rss_flickr_daily: 5,
	audio: 6,
	image: 7,
	video: 8,
	text: 9,
	download: 10,
	script: 11
};

function preview_show_var(url, obj){
	scroll_parent=false;
	pos=getObjPos(obj);
	t=pos.y-300;
	if(t<8)t=8;
	$('preview').style.top=t+'px';
	preview_show(url);
	obj.blur();
}

function preview_show(URL){
	dt=new Date();
	tm=dt.getTime();
	extra='';
	if(arguments.length>1){
		arghash=arguments[1];
		parampass=['title','background','logo','description'];
		for(i=0;i<parampass.length;i++){
			if(arghash[parampass[i]]=='')arghash[parampass[i]]='+';
			if(arghash[parampass[i]]>''){
				extra+='&p_'+parampass[i]+'='+arghash[parampass[i]];
			}
		}
	}
	try {
		if(widescreen_force){
			widescreen=true;
			extra+='&widescreen_force=1';
		}
	}catch(ex){}
	pwin.location='/preview/?type=playlist&URL='+escape(URL)+'&'+tm+extra;
	$('address_bar').value=URL;
	$('addr_type_icon').style.backgroundPosition='0 0';
	if((document.documentElement.scrollTop>130 || document.body.scrollTop>130) && scroll_parent){
		document.documentElement.scrollTop=130;
		window.scroll(0,130);
	}
//	document.body.style.overflow='hidden';
	$('log_toggle').innerHTML='+log';
	$('preview').style.visibility='visible';
	historylen=0;
	hist=new Array({URL:URL,type:'playlist',ind:0,scroll:0});
}

function preview_hide(){
	$('preview').style.visibility='hidden';
	$('sim_log').style.display='none';
//	document.body.style.overflow='auto';
	$('status_proc_engine').style.visibility='hidden';
	pwin.location='/templates/preview_blank.html';

	return false;
	pwin.vidHide();
	pwin.textHide();
	audioKill();
	pwin.$('list_entries').style.display='none';
	pwin.$('description').style.display='none';
	pwin.$('please_wait').style.display='block';
}

function pFocus(){
	var sTop=document.documentElement.scrollTop;
	pwin.focus();
	pwin.document.getElementById('focus_dummy').select();
	pwin.document.getElementById('focus_dummy').focus();
	pwin.document.getElementById('version').focus();
	if(arguments.length>0){
		document.documentElement.scrollTop=sTop;
	}
}

function pnav(what){
	var inc;
	switch(what){
		case 'pgdn':inc=10;break;
		case 'down':inc=1;break;
		case 'up':inc=-1;break;
		case 'pgup':inc=-10;break;
		case 'back':inc=0;
	}
	if(inc==0){
		pwin.backspace(false);
	}else{
		pwin.itemInc(inc);
	}
	pFocus();
}

function pnavClick(what){
	$(what).className='clicked';
	setTimeout('pnavRelease("'+what+'")',180);
	pFocus();
}

function pnavRelease(what){
	$(what).className='';
}

function addressbarMon(e){
	evt=(e)?e:window.event;
	pK=e?e.keyCode:window.event.keyCode;
	if(pK==13){
		nav_to();
		return false;
	}
	return e;
	// 27=escape
}

function nav_to(){
	navurl=$('address_bar').value;
	srch=navurl.search(/\.(\w+)$/);
	ext=srch>0?RegExp.$1:'';
	ext=ext.toLowerCase();
	if(navurl.search(/:\/\//)<0)
	{
		navurl='http://'+navurl;
		$('address_bar').value=navurl;
	}
	
	if(pwin.arrJw.inArray(ext)||pwin.arrWm.inArray(ext)||pwin.arrQt.inArray(ext)||tgtType=='video'){
		tgtType='video';
		addrTypeSet(tgtType);
		pwin.videoHandle(navurl);
		pFocus();
		return false;
	}

	if(pwin.arrAudio.inArray(ext)||tgtType=='audio'){
		tgtType='audio';
		addrTypeSet(tgtType);
		pwin.audioHandle(navurl);
		pFocus();
		return false;
	}

	if(pwin.arrImg.inArray(ext)||tgtType=='image'){
		tgtType='image';
		addrTypeSet(tgtType);
		pwin.imageShow(navurl);
		pFocus();
		return false;
	}

	// auto-select type
	if(navurl.search(/\.plx$/i)>0){
		tgtType='playlist';
	}
	else if(navurl.search(/^http:\/\/(www\.)?apple\.com\/trailers/i)==0)
	{
		tgtType='xml_applemovie';
	}
	else if(navurl.search(/^http:\/\/(?:www\.)?youtube\.com\/(v\/|watch\?)?/i)==0)
	{
		if(RegExp.$1>''){
			tgtType='video';
			addrTypeSet(tgtType);
			pwin.videoHandle(navurl);
			pFocus();
			return false;
		}else{
			tgtType='html_youtube';
		}
	}
	else if(navurl.search(/^http:\/\/(www\.)?shoutcast\.com\/sbin\/newxml\.phtml/i)==0)
	{
		tgtType='xml_shoutcast';
	}
	else if(navurl.search(/^http:\/\/(www\.)?flourish\.org\/news\/flickr/i)==0)
	{
		tgtType='rss_flickr_daily';
	}
	else if(navurl.search(/\.(?:rss|xml)$/i)>0)
	{
		tgtType='rss';
	}
	
	addrTypeSet(tgtType);
	historylen++;
	hist[historylen]={
		URL:navurl,
		ind:pwin.item_current,
		scroll:pwin.scroll_ind,
		type:tgtType
	};
	pwin.location='/preview/?type='+tgtType+'&URL='+escape($('address_bar').value);
	pFocus();
}

function addrTypeSet(which){
//	alert('*'+which+'*, '+icon_pos[which]);
	$('addr_type_icon').style.backgroundPosition='0px -'+(icon_pos[trim(which)]*13)+'px';
}

function addrTypeVisToggle(){
	$('addr_type_select').style.visibility=($('addr_type_select').style.visibility=='hidden'?'visible':'hidden');
}

function addrTypeSelect(which){
	tgtType=which;
	addrTypeSet(which);
	$('addr_type_select').style.visibility='hidden';
}

function list_edit(){
	if(edit_list_target>0){
		if(edit_newwin){
			window.open('http://navix.turner3d.net/mylists/?action=edit&id='+edit_list_target);
		}else{
			window.location='http://navix.turner3d.net/mylists/?action=edit&id='+edit_list_target;
		}
	}else{
		pwin.dialog_alert('static','Message',"You may only edit your own playlists",{top:-60,left:28});
	}
}

function edit_button_set(){
	$('btn_list_edit').className=(edit_list_target>0 && edit_list_target!=list_id?'':'disabled');
}

function previewHome(){
	if(!hist[0]) return false;
	$('address_bar').value=hist[0].URL;
	nav_to();
}

/* sim log
******************************/

var log_verbose=0;
var mousepos,logHeightOri;

function logVerboseToggle(){
	if(log_verbose==0){
		log_verbose=1;
		$('chk_verbose').className='checked';
	}else{
		log_verbose=0;
		$('chk_verbose').className='';
	}
	pFocus(true);
}

function logVisToggle(){
	if($('sim_log').style.display=='none'){
		$('sim_log').style.display='block';
		$('log_toggle').innerHTML='-log';
	}else{
		$('sim_log').style.display='none';
		$('log_toggle').innerHTML='+log';
	}
	pFocus(true);
}

function logResizeDown(){
	logHeightOri=$('txt_log').offsetHeight;
	addEvent(document,'mousemove',logResizeMove,false);
	addEvent(document,'mouseup',logResizeUp,false);
	document.onselectstart='return false';
	$('container').className='nosel';
	var ev=window.event||arguments.callee.caller.arguments[0];
	mousepos=getMousePos(ev);
}

function logResizeUp(){
	removeEvent(document,'mousemove',logResizeMove,false);
	removeEvent(document,'mouseup',logResizeUp,false);
	document.onselectstart='';
	$('container').className='';
	pFocus(true);
}

function logResizeMove(ev){
	posNew=getMousePos(ev);
	hNew=logHeightOri+posNew.y-mousepos.y;
	if(hNew<0) hNew=0;
	$('txt_log').style.height=hNew+'px';
	return false;
}

/* audio player
******************************/

function audioPlay(filename){
	audio_isactive=true;
  mp3Player.sendEvent("stop");
	mp3Player.loadFile({file:filename})
  mp3Player.sendEvent("playpause");
  $('btn_audio_playpause').src='/images/music-pause-nofocus.png';
  audio_ispaused=false;
	$('audio_controls').style.visibility='visible';
}

function audioKill(){
	audioStop();
	audio_curtime=-1;
	$('audio_controls').style.visibility='hidden';
}

function audioStop(){
  mp3Player.sendEvent("stop");
  audio_isactive=false;
	$('audio_controls').style.visibility='hidden';
  pFocus();
}

function audioPlaypause(){
	audio_isactive=true;
  mp3Player.sendEvent("playpause");
  audio_ispaused=(audio_ispaused?false:true);
  if(audio_ispaused){
  	classAdd($('btn_audio_playpause'),'paused');
  }else{
  	classRem($('btn_audio_playpause'),'paused');
  }
  pFocus();
}

function getUpdate(typ,pr1,pr2,swf) {
	if(typ=='time' && pr1!=audio_curtime){
		audio_curtime=pr1;
		m=parseInt(pr1/60);
		$('audio_time').innerHTML=printf('%02d',m)+':'+printf('%02d',pr1-m*60);
	}
};

function thisMovie(swf) {
  if(navigator.appName.indexOf("Microsoft") != -1) {
    return window[swf];
  } else {
    return document[swf];
  }
};

/* aspect
******************************/

function aspectToggle(){
	var wcookie;
	if(pwin.widescreen){
		$('css_pp_wide').href='about:blank';
		$PW('css_wide').href='about:blank';
		pwin.widescreen=false;
		wcookie=0;
	}else{
		$('css_pp_wide').href='/css/preview_parent_wide.css';
		$PW('css_wide').href='/css/preview_wide.css';
		pwin.widescreen=true;
		wcookie=1;
	}
	document.cookie='wide='+wcookie+'; path=/; expires=Mon, 1 Jan 2020 00:00:01 GMT;';
	pwin.aspectVarSet();
	pwin.thumbLoaded();
	pwin.focus();
	pwin.document.getElementById('focus_dummy').select();
	pwin.document.getElementById('focus_dummy').focus();
	pwin.document.getElementById('version').focus();
}

/* init
******************************/

function preview_init(){
	pwin=window.frames[0];
	if(!$('preview_nav')) return false;
	pButtons=$('preview_nav').getElementsByTagName('LI');
	for(i=0;i<pButtons.length;i++){
		pButtons[i].onmousedown=function(){this.className='clicked';};
		pButtons[i].onmouseout=function(){this.className='';};
		pButtons[i].onmouseup=function(){this.className='';};
	}
	addrTypeSel=$('addr_type_select').getElementsByTagName('LI');
	for(i=0;i<addrTypeSel.length;i++){
		addrTypeSel[i].onclick=function(){addrTypeSelect(this.innerHTML);};
		addrTypeSel[i].onmouseover=function(){classAdd(this,'over');};
		addrTypeSel[i].onmouseout=function(){classRem(this,'over');};
	}
	acntrl=$('audio_controls').getElementsByTagName('A');
	for(i=0;i<acntrl.length;i++){
		acntrl[i].onmousedown=function(){classAdd(this,'down');};
		acntrl[i].onmouseup=function(){classRem(this,'down');};
		acntrl[i].onmouseout=function(){classRem(this,'down');};
	}
	ico_sources=['audio','download','favorite','image','playlist','rss','script','search','text','video'];
	for(i=0;i<ico_sources.length;i++){
		ico_preload[i]=new Image();
		ico_preload[i].src='/images/preview/icons3/icon_'+ico_sources[i]+'.png';
	}
	var prev_sources=['bkg3.png','bkg3_wide.png','bkgmain_default.jpg'];
	for(i=0;i<prev_sources.length;i++){
		var ind=ico_preload.lengt;
		ico_preload[ind]=new Image();
		ico_preload[ind].src='/images/preview/'+prev_sources[ind];
	}
	var s1 = new SWFObject("/swf/mediaplayer.swf", "mpl", "250", "20", "7");
	s1.addVariable("enablejs","true");
	s1.addVariable("javascriptid","mpl");
	s1.addVariable("height", "20");
	s1.addVariable("displayheight", "0");
	s1.addVariable("width", "250");
	s1.write("aplayer");
	mp3Player=thisMovie("mpl");
	ppos=getObjPos($('preview'));
	$('audio_controls').style.top=(ppos.y+325)+'px';
}