/***************************************
*** Media Machine - The A Group 2008 ***
***************************************/

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

var ajaxObjects=new Array();
panels=['intro','video','audio','share','share_thanks','invite','invite_thanks','wait'];
fields=['from_name','recipient_name','from_email','recipient_email','captcha_code','captcha_md5','message'];
arr_hide_weeks=['invite','invite_thanks','share','share_thanks'];

var pStart, pEnd, pInc;
var fnFin=new function(){};
expdt=new Date();
expdt.setDate(expdt.getYear()+1);
amatrix=[0,.016,.047,.094,.156,.234,.328,.438,.563,.672,.766,.844,.906,.953,.984,1];
ani_delay=1;

/* Media navigation
********************************************/

function weekShow(which){
	if(curweek>0){
		$('week'+curweek).style.display='none';
		$('weektab'+curweek).innerHTML='<a href="javascript:weekShow('+curweek+')"><span>'+curweek+'</span></a>';
	}
	curweek=which;
	$('week'+curweek).style.display=document.all?'block':'table-row-group';
	$('weektab'+curweek).innerHTML='<span>'+curweek+'</span>';
}

function mediacurChange(which){
	if(weeknums.length==0){
		if(cross_ref.length>0){
			itemname=cross_ref[0];
			mediacur=itemname;
			return false;
		}
	}
	if(hicell>=0){
		itemname=cross_ref[hicell];
		if(itemname.search(/^([av])/)==0){
			mtype=RegExp.$1;
			oCell=$('mc'+hicell);
			oRow=oCell.parentNode;
			oRow.className='';
			classRem(oCell,'current');
			arrlnk=oCell.getElementsByTagName('A');
			arrlnk[0].innerHTML=(mtype=='v'?'Watch':'Listen');
		}
	}
	hicell=which;
	if(hicell>=0){
		itemname=cross_ref[hicell];
		mediacur=itemname;
		if(mediacur.search(/^([av])/)==0){
			mtype=RegExp.$1;
			nCell=$('mc'+hicell);
			nRow=nCell.parentNode;
			nRow.className='row_current';
			classAdd(nCell,'current');
			arrlnk=nCell.getElementsByTagName('A');
			arrlnk[0].innerHTML=(mtype=='v'?'Watching':'Listening');
		}
	}
}

function mediaPlay(which){
	mediacurChange(which);
	itemname=cross_ref[which];
	if(itemname.search(/^([av])(\d+)/)==0){
		mtype=RegExp.$1;
		mId=RegExp.$2;
		if(mtype=='v'){
			videoPlay(mId);
		}else{
			audioPlay(mId);
		}
	}
}

function videoPlay(which){
	hOut=Math.round(vid_player_width*media_params['v'+which].height/480);
	$('video_player').style.height=hOut+'px';
	vid=media_params['v'+which];
	sdHtml='<p class="series_date">Date: '+vid.date+'</p>';
	if(vid.description>''){
		sdHtml+='<p>'+vid.description+'</p>';
	}
	$('desc_video').innerHTML=sdHtml;
	panelShow('video',function(){videoPlayDo(which);});
}

function videoPlayDo(which){
	vid=media_params['v'+which];
	hOut=Math.round(vid_player_width*vid.height/480);
	$('video_player').style.height=hOut+'px';
	var fo = new SWFObject("/swf/player.swf", "sp", vid_player_width, hOut, "8", "#000000");
	fo.addVariable("file","/video/"+which+".mp4");
	fo.addVariable("skin", "/swf/player_embed_skin.swf");
	fo.addVariable("website", url_base);
	fo.addVariable("autostart", "true");
	fo.addVariable("fullscreen", "true");
	fo.addVariable("controlbar", "over");
	fo.addParam("allowfullscreen", "true");
	fo.write("video_player");
	
	// tracking
	var ajaxIndex=ajaxObjects.length;
	ajaxObjects[ajaxIndex]=new sack();         
	with(ajaxObjects[ajaxIndex]){
		requestFile ="/cgi-bin/media_hits.cgi";
		setVar('video_id',which);
		onCompletion=function(){hit_response(ajaxIndex);};
		runAJAX();
	}
}

function audioPlay(which){
	aud=media_params['a'+which];
	sdHtml='<p class="series_date">Date: '+aud.date+'</p>';
	if(aud.description>''){
		sdHtml+='<p>'+aud.description+'</p>';
	}
	$('desc_audio').innerHTML=sdHtml;
	panelShow('audio',audioPlayDo);
}

function audioPlayDo(){
	if(mediacur.search(/^a(\d+)/)==0){
		which=RegExp.$1;
		var s1=new SWFObject("/swf/mp3spectrum.swf", "aplayer", "528", "180", "9");
		s1.addVariable("song",'/audio/custom/'+which+'.mp3');
		//s1.addVariable("image","/images/custom/"+series_graphic+".jpg");
		s1.addVariable("image","/images/sized/"+series_graphic+"/320x/audio.jpg");
		s1.addParam("wmode", "transparent");
		s1.write("audio_player");
	}

	// tracking
	var ajaxIndex=ajaxObjects.length;
	ajaxObjects[ajaxIndex]=new sack();         
	with(ajaxObjects[ajaxIndex]){
		requestFile ="/cgi-bin/media_hits.cgi";
		setVar('audio_id',which);
		onCompletion=function(){hit_response(ajaxIndex);};
		runAJAX();
	}
}

/* Share
********************************************/

var shareType;
function mediaShare(){
	if(mediacur.search(/^([va])(\d+)/)==0){
		mType=RegExp.$1;
		mId=RegExp.$2;
	}
	
	if(mType=='v'){
		imgId=mId;
		banner_html='<embed type="application/x-shockwave-flash" src="'+url_base+'/swf/player_embed.swf" id="cpvPlayer" name="cpvPlayer" '+
		'bgcolor="#000000" quality="high" allowfullscreen="true" flashvars="'+
		'file='+url_base+'/video/'+mId+'.mp4'+
		'&amp;website='+url_base+
		'&amp;image='+url_base+'/video/'+mId+'.jpg'+
		'&amp;mediaLink='+mediacur+
		'&amp;skin='+url_base+'/swf/player_embed_skin.swf'+
		'&amp;autostart=false&amp;fullscreen=true&amp;controlbar=over'+
		'&amp;string='+escape(series_title)+
		'&amp;seriesLink='+url_base+'/media/'+series_url+'/'+
		'" width="480" height="'+(media_params[mediacur].height+60)+'">';
		bVerb='Embed video player';
		mediaName='video';
	}else{
		imgId=series_graphic;
		bVerb='Embed audio player';
		mediaName='audio';
		banner_html='<embed type="application/x-shockwave-flash" src="'+url_base+'/swf/mp3spectrum_embed.swf" id="cpaPlayer" name="cpaPlayer" '+
		'bgcolor="#000000" quality="high" allowfullscreen="true" '+
		'flashvars="song='+url_base+'/audio/'+mId+'/'+series_url+'.mp3'+
		'&amp;image='+url_base+'/images/sized/'+series_graphic+'/280x/'+series_url+'.jpg'+
		'&amp;string='+escape(media_params[mediacur].title)+
		'&amp;mediaLink='+mediacur+
		'&amp;seriesLink='+url_base+'/media/'+series_url+'" '+
		'width="320" height="218">';

	}
	shareLink=url_base+'/media/'+series_url+'/'+mediacur;
	$('banner_verb').innerHTML=bVerb;
	$('share_linkto_object').innerHTML='this '+mediaName;
	$('share_title_extra').innerHTML=(mType=='v'?'Video':'Audio');
	$('share_url').value=shareLink;
	$('share_link').value='<a href="'+shareLink+'" target="_blank">'+series_title+' '+mediaName+': '+media_params[mediacur].title+'</a>';
	$('share_banner').value=banner_html;
	//$('banner_preview').innerHTML=banner_html;
	$('banner_container').style.display='block';
	panelShow('share',fnNull());
}

function seriesShare(){
	txt="Check out media from Cross Point's &ldquo;"+series_title+"&rdquo; series.";
	$('share_title_extra').innerHTML='Series';
	shareLink=url_base+'/media/'+series_url+'/';
	if(series_banner>0){
		banner_html='<a href="'+shareLink+'" target="_blank"><img border="0" height="185" src="'+url_base+'/images/custom/'+series_banner+'/banner_'+series_url+'.jpg" alt="'+series_title+'" /></a>';
		disp='block';
	}else{
		banner_html='';
		disp='none';
	}
	$('banner_verb').innerHTML='Banner code';
	$('share_linkto_object').innerHTML='this series';
	$('banner_preview').innerHTML=banner_html;
	$('share_banner').value=banner_html;
	$('banner_container').style.display=disp;
	$('share_url').value=shareLink;
	$('share_link').value='<a href="'+shareLink+'" target="_blank">'+series_title+'</a>';
//	panelShow('share',fnNull());
	panelShow('share',function(){$('media_player').style.overflow='visible';});
}

function share_submit(){
	// field validation
	$('error_message').innerHTML='';
	$('media_player').style.height='auto';
	for(i=0;i<5;i++){
		if(!$(fields[i]+'_share').value){
			$(fields[i]+'_share').focus();
			err_msg('Required information missing','_share');
			return false;
		}
	}
	msg=email_check($('from_email_share').value);
	if(msg>''){
		$('from_email_share').focus();
		err_msg(msg,'_share');
		return false;
	}
	msg=email_check($('recipient_email_share').value);
	if(msg>''){
		$('recipient_email_share').focus();
		err_msg(msg,'_share');
		return false;
	}

	// submit via ajax
	$('btn_submit_share').style.display='none';
	$('submit_wait_share').style.display='block';
	var ajaxIndex=ajaxObjects.length;
	ajaxObjects[ajaxIndex]=new sack();         
	for(i=0;i<fields.length;i++){
		ajaxObjects[ajaxIndex].setVar(fields[i],$(fields[i]+'_share').value);
	}
	with(ajaxObjects[ajaxIndex]){
		requestFile ="/cgi-bin/share.cgi";
		setVar('series_url',series_url);
		setVar('mediacur',mediacur);
		onCompletion=function(){share_response(ajaxIndex);};
		runAJAX();
	}
}

function share_response(index){
	c_newcode('share');
	txt=ajaxObjects[index].response;
	$('submit_wait_share').style.display='none';
	$('btn_submit_share').style.display='inline';
	if(txt=='error'){
		err_msg("Captcha code incorrect. Please try with this new one.",'_share');
		return false;
	}else if(txt=='success'){
		panelShow('share_thanks',fnNull());
	}else{
		alert(txt);
	}
}

/* Invite
********************************************/

function seriesInvite(){
	clearFields=['recipient_name','recipient_email','captcha_code'];
	for(i=0;i<clearFields.length;i++){
		$(clearFields[i]).value='';
	}
	panelShow('invite',fnNull());
}

function invite_submit(){
	// field validation
	$('error_message').innerHTML='';
	$('media_player').style.height='auto';
	for(i=0;i<5;i++){
		if(!$(fields[i]).value){
			$(fields[i]).focus();
			err_msg("Required information missing");
			return false;
		}
	}
	msg=email_check($('from_email').value);
	if(msg>''){
		$('from_email').focus();
		err_msg(msg);
		return false;
	}
	msg=email_check($('recipient_email').value);
	if(msg>''){
		$('recipient_email').focus();
		err_msg(msg);
		return false;
	}

	// submit via ajax
	$('btn_submit').style.display='none';
	$('submit_wait').style.display='block';
	var ajaxIndex=ajaxObjects.length;
	ajaxObjects[ajaxIndex]=new sack();         
	for(i=0;i<fields.length;i++){
		ajaxObjects[ajaxIndex].setVar(fields[i],$(fields[i]).value);
	}
	ajaxObjects[ajaxIndex].setVar('copy_sender',($('copy_sender').checked?1:0));
	with(ajaxObjects[ajaxIndex]){
		requestFile ="/cgi-bin/invite.cgi";
		setVar('series_url',series_url);
		onCompletion=function(){invite_response(ajaxIndex);};
		runAJAX();
	}
}

function invite_response(index){
	txt=ajaxObjects[index].response;
	$('submit_wait').style.display='none';
	$('btn_submit').style.display='inline';
	if(txt=='error'){
		c_newcode();
		err_msg("Captcha code incorrect. Please try with this new one.");
		return false;
	}else if(txt=='success'){
		panelShow('invite_thanks',fnNull());
		c_newcode('invite');
	}else{
		alert(txt);
		return false;
		err_msg(txt);
	}
}

function err_msg(what){
	errdiv_suffix=(arguments.length>1?arguments[1]:'');
	$('error_message'+errdiv_suffix).innerHTML=what;
}

/* Captcha
********************************************/

function c_newcode(which){
	var ident=(which=='share'?'_share':'');
	$('captcha'+ident).style.visibility='hidden';
	$('captcha_wait'+ident).style.visibility='visible';
	var ajaxIndex=ajaxObjects.length;
	ajaxObjects[ajaxIndex]=new sack();
	with(ajaxObjects[ajaxIndex]){
		requestFile ="/cgi-bin/aj_captcha.cgi";
		onCompletion=function(){c_newcode_response(ajaxIndex,which);};
		runAJAX();
	}
}

function c_newcode_response(index,which){
	if(!which) which='invite';
	var ident=(which=='share'?'_share':'');
	txt=ajaxObjects[index].response;
	$('captcha_img'+ident).src='/captcha/images/'+txt+'.png';
	$('captcha_wait'+ident).style.visibility='hidden';
	$('captcha'+ident).style.visibility='visible';
	$('captcha_md5'+ident).value=txt;
	if($('pnl_'+which).style.display=='block'){
		$('captcha_code'+ident).focus();
	}
}

/* Utility
********************************************/

function aniToggle(){
//	use_ani=$('chk_ani').checked;
	setCookie('media_ani',use_ani,expdt,'/');
}

var ani_threshold=100;
var use_ani=true;
var ani_test=true;
var ani_start;
function panelShow(what,fn){
	if(curpanel==what){
		if(fn)fn();
		return false;
	}

	// kill video if playing
	if(curpanel=='video') $('video_player').innerHTML='';

	// kill audio if playing
	if(curpanel=='audio') $('audio_player').innerHTML='';

	// kill banner preview - only needed if we're showing the audio/video player
	// if(curpanel=='share') $('banner_preview').innerHTML='';

	pInc=0;
	// measure start height
	pStart=$('media_player').offsetHeight-2;

	// hide overflow, temporarily display target panel for measurement
	with($('media_player').style){
		height=pStart+'px';
		overflow='hidden';
		visibility='hidden';
	}

	// measure target panel
	$('pnl_'+what).style.display='block';
	pEnd=$('pnl_'+what).offsetHeight;
	$('pnl_'+what).style.display='none';
	with($('media_player').style){
		overflow='visible';
		visibility='visible';
	}

	// hide current panel, assign callback
	$('pnl_'+curpanel).style.display='none';
	fnFin=fn||fnNull;
	if(use_ani){
		$('pnl_wait').style.display='block';
	}else{
		pInc=amatrix.length;
	}

	// show or hide week nav/media
	week_vis=(arr_hide_weeks.inArray(what)?'none':'block');
	if(weeknums.length==0)week_vis='none';
	$('week_nav').style.display=week_vis;
	$('week_media').style.display=week_vis;

	// init transition
	ani_start=new Date().getTime();
	panelInc(what);
}

function panelInc(pnl){
	pInc++;
	if(ani_test==true && (pInc==2)){
		ani_test=false;
		timestamp=new Date().getTime();
		if(timestamp-ani_start>ani_threshold){
			use_ani=false;
			pInc=amatrix.length;
			panelInc(pnl);
			//alert("turning off animation");
			return false;
		}else{
			//alert("looks good: "+(timestamp-ani_start));
		}
	}
	if(pInc<amatrix.length){
		hCur=amatrix[pInc]*(pEnd-pStart)+pStart;
		$('media_player').style.height=hCur+'px';
		setTimeout('panelInc("'+pnl+'")',ani_delay);
	}else{
		$('pnl_wait').style.display='none';
		$('media_player').style.height=pEnd+'px';
		$('pnl_'+pnl).style.display='block';
		curpanel=pnl;
		fnFin();
	}
}

function fnIntro(){
	mediacurChange(-1);
	mediacur='';
}

var desc_expanded=false;
var desc_maxheight=100;
function descriptionExpand(){
	if(desc_expanded){
		$('series_description_collapse').style.paddingBottom='0';
		desc_mh=desc_maxheight;
		desc_txt='show more &raquo;';
		desc_expanded=false;
	}else{
		$('series_description_collapse').style.paddingBottom='1.6em';
		desc_mh=$('series_description_collapse').scrollHeight;
		desc_txt='&laquo; show less';
		desc_expanded=true;
	}
	if(document.all){
		$('series_description_collapse').style.height=desc_mh+'px';
	}else{
		$('series_description_collapse').style.maxHeight=desc_mh+'px';
	}
	$('series_description_morelink').innerHTML=desc_txt;
}

function hit_response(index){
	txt=ajaxObjects[index].response;
}

function fnNull(){}


Array.prototype.inArray=function(value){
	var i;
	for(i=0;i<this.length;i++) {
		if(this[i]===value){
			return true;
		}
	}
	return false;
};


/* Init
********************************************/


function mediaMachineInit(){
	if(mediacur.search(/^([av])(\d+)/)==0){
		mtype=RegExp.$1;
		mId=RegExp.$2;
		if(mtype=='v'){
			videoPlay(mId);
		}else{
			audioPlay(mId);
		}
	}
	c_newcode('invite');
	c_newcode('share');
	if(series_banner>0){
		prel=new Image();
		prel.src='/images/custom/'+series_banner+'/banner_'+series_url+'.jpg';
	}
/*
	if($('series_description_collapse').scrollHeight>desc_maxheight){
		$('series_description_morelink').style.visibility='visible';
	}
*/
}

addEvent(window,'load',mediaMachineInit,false);
