 /*
 /
 / nin - remix - test page
 /
 / requires prototype.js 1.5.1
*/
console.log("Loading main.js...");

try {
    Event.observe(window,'load', function() {
	handleMainNavigation(null);

	Event.observe(document,'mousemove', function(event) {
	    $('global-message').setStyle({
		top: (event.clientY + 15 + Position.realOffset($('global-navigation'))[1]) + 'px',
		left: (event.clientX + 15 + Position.realOffset($('global-navigation'))[0]) + 'px'
	    });
	});

	var deeplink = decodeURIComponent(readCookie('deeplink'));
	var welcome  = readCookie('welcome');

	console.log("Welcome: [%s]",welcome);

	var deeplink_data = new Array();
	if(deeplink && (deeplink != 'null')) {
	    deeplink_data = evalSafeJSON(deeplink);
	}
	if(deeplink_data[0] != null) {
	    var args = evalSafeJSON(deeplink_data[0].ARGS);
	    FwDispatch.content(deeplink_data[0].URL,deeplink_data[0].CONTAINER,null,eval(deeplink_data[0].HANDLER),null,args);
	    eraseDeeplink('deeplink',deeplink_data[0].DOMAIN);
	    updateActiveUsers();
	} else {
	    if(welcome == 'true')  {
		FwDispatch.content('/main/get_news_data','view-container',null,handleNews);		
	    } else {
		createCookie('welcome','true',999) ;
		showWelcome();
	    }
	}
    });
} catch(err) {
}

submitBtnOff = new Image();
submitBtnOff.src = 'images/btn_login_submit.gif';
submitBtnOn = new Image();
submitBtnOn.src = 'images/btn_login_submit_on.gif';

continueBtnOff = new Image();
continueBtnOff.src = 'images/btn_upload_continue.gif';
continueBtnOn = new Image();
continueBtnOn.src = 'images/btn_upload_continue_on.gif';

finishBtnOff = new Image();
finishBtnOff.src = 'images/btn_upload_continuetofinish.gif';
finishBtnOn = new Image();
finishBtnOn.src = 'images/btn_upload_continuetofinish_on.gif';

function init_btn_rollover(btnType){

  $$('.'+btnType+'-btn').each(
    function(btn){
      Event.observe(btn,'mouseover',
        function (){
          if (btnType == "submit"){
            btn.src=submitBtnOn.src;
          } else if (btnType == "continue"){
            btn.src=continueBtnOn.src; 
          } else if (btnType == "finish"){
            btn.src=finishBtnOn.src;
          }
        }
      )

      Event.observe(btn,'mouseout',
        function (){
          if (btnType == "submit"){
            btn.src=submitBtnOff.src;
          } else if (btnType == "continue"){
            btn.src=continueBtnOff.src;
          } else if (btnType == "finish"){
            btn.src=finishBtnOff.src;
          }
        }
      )
    }
  )
}


function removeMix(id,title) {
    profileSlider.setValue(0);

    var mElm = 'profile-page-content-remove-confirm';
    var mStr = '';
    mStr += '<div id="'+mElm+'">Are you sure you wish to remove the track "<b>'+title+'</b>"? <br />';
    mStr += '[<a href="/" onclick="removeMixConfirm('+id+',\''+mElm+'\');return false;">YES</a>] or [<a href="/" onclick="removeMixCancel(); return false;">CANCEL</a>]</div>';

    $('profile-page-content').update(mStr);
    $(mElm).setStyle({left:'10px',top:'10px',width:'380px',background:'#222',padding:'5px',color:'#f00'});

    console.log("Removing Mix: [%s]",id);
}

function removeMixConfirm(id,mElm) {
    $('profile-page-content').update('<div id="'+mElm+'">Removing track... Please wait...</div>');
    $(mElm).setStyle({left:'10px',top:'10px',width:'380px',background:'#222',padding:'5px',color:'#5E5E5E'});

    FwDispatch.getData('/mix/remove_mix_DATA.js?mix_id='+id,removeMixConfirmReturn,null,null);
}

function removeMixConfirmReturn() {
    $('tab-mixes-img').src = tabMixesImgOn.src;
    FwDispatch.content($('tab-mixes-link').href,'profile-page-content',null,handleMixes);    
}

function removeMixCancel() {
    $('tab-mixes-img').src = tabMixesImgOn.src;
    FwDispatch.content($('tab-mixes-link').href,'profile-page-content',null,handleMixes);
}

function showGlobalMessage(t) {
    if($('global-message')) {
	$('global-message').show();
	$('global-message').update(t);
    }
}

function showWelcome() {
    hideListen();
    hideActiveUsers();
    FwDispatch.content('/main/welcome','view-container',null,handleWelcome);
}

function handleWelcome() {
}

function hideWelcome() {
    FwDispatch.content('/main/get_news_data','view-container',null,handleNews);
}


function hideGlobalMessage() {
    if($('global-message')) {
	$('global-message').hide();
    }
}

function updateActiveUsers() {
    if($('online-members')) {
	FwDispatch.content('/main/logged_in_data','online-members',null,null);	
    }
}

function eraseDeeplink(name,domain) {
    document.cookie = name+'=; expires=; domain='+domain+'; path=/';
}
function getFlashMovie(movieName) {
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}
function sendPlay(id) {
    getFlashMovie("remixPlayer").playerPlayNow(id);
}
function sendPlaylist(id,title) {
    console.log(" ___ sendPlaylist()");
    if (title == null){
      title='';
    }

    getFlashMovie("remixPlayer").playerAddList(id,title);
}
function sendQueue(id) {
    console.log(" ___ sendQueue(%s)",id);
    getFlashMovie("remixPlayer").playerQueue(id);
}
function sendLogin() {
    getFlashMovie("remixPlayer").playerLogIn();
    getFlashMovie("listen").listenLogIn();
}
function showListen() {
    getFlashMovie("listen").listenVisible(true);
}

function hideListen() {
    getFlashMovie("listen").listenVisible(false);
}

function showProfileTitle(name) {
    getFlashMovie("listen").listenProfile(name);
}

function getInfo(id) {
    hideActiveUsers();
    FwDispatch.punt('view-container',handleListen);
    getFlashMovie("listen").listenInfo(id);
}

function showInfo(res) {
    hideActiveUsers();
    getFlashMovie("listen").listenShowInfo();
}

function gotoFAQ() {
    hideActiveUsers();
    hideListen();
    FwDispatch.content($('nav-faq').href,'view-container',null,handleFAQ);
}

function gotoFeeds() {
    hideActiveUsers();
    hideListen();
    FwDispatch.content($('nav-feed').href,'view-container',null,handleFeed);
}

function gotoMix() {
    hideActiveUsers();
    hideListen();
    FwDispatch.content('mix/mix_intro','view-container',null,handleUploadIntro);
}

function gotoProfile(id) {
    hideActiveUsers();
    hideListen();
    FwDispatch.content('/profile/profile' + '?user_id='+id,'view-container',null,handleProfile);
}

function gotoListen() {
    hideActiveUsers();
    FwDispatch.punt('view-container',handleListen);
}

function gotoLogin() {
    hideListen();
    FwDispatch.content($('nav-login').href,'view-container',null,handleLogin);
}

function gotoRegister() {
    hideListen();
    hideActiveUsers();
    FwDispatch.content($('nav-register').href,'view-container',null,handleRegister);
}
/*
function gotoMix() {
    hideListen();
    hideActiveUsers();
    FwDispatch.content('/mix/upload_step_1','view-container',null,handleUploadStep1);
}
*/

function gotoLoginReturn() {
    FwDispatch.content($('nav-login').href,'view-container',null,handleLogin);
}

function flashPlayerConsole(msg) {
    console.log("Message From PLAYER: [%s]",msg);
}

function flashListenConsole(msg) {
    console.log("Message From LISTEN: [%s]",msg);
}

function hideActiveUsers() {
    $('online-members').hide();
}

function showActiveUsers() {
    $('online-members').show();    
}

// common functions
//
function scrollVertical(value, element, slider) {
    element.scrollTop = Math.round(value / slider.maximum * (element.scrollHeight - element.offsetHeight));
}

/** Event handler for mouse wheel event. */
function wheel(event){
    var delta = 0;
    if (!event) /* For IE. */
	event = window.event;
    if (event.wheelDelta) { /* IE/Opera. */
	delta = event.wheelDelta/120;
	/** In Opera 9, delta differs in sign as compared to IE. */
	if (window.opera)
	    delta = -delta;
    } else if (event.detail) { /** Mozilla case. */
	/** In Mozilla, sign of delta is different than in IE.
             * Also, delta is multiple of 3.
             */
	delta = -event.detail/3;
    }
    
    if (delta)
	handle(delta);
    
    if (event.preventDefault)
	event.preventDefault();
    
    event.returnValue = false;
}

var wheel_focused_slider;
var wheel_factor = 1000;

function setWheel(slider,content_element,active_area_element) {
    wheel_factor = ($(content_element).scrollHeight * .2);
    wheel_focused_slider = slider;

    // mozilla
    Event.observe(active_area_element, 'DOMMouseScroll', wheel);
    
    // IE/Opera
    Event.observe(active_area_element, 'mousewheel', wheel);
}

function handle(delta) {
    if(wheel_focused_slider) {
	wheel_focused_slider.setValueBy(-delta/wheel_factor);
    }
}
    
function makeSelect(id,data,id_key,val_key,first) {
    var selectStatement = '<select id="'+id+'">'+"\n";

    if(first) {
	selectStatement += '<option value="0">'+first+'</option>'+"\n";
    }

    $A(data).each(function(item) {
	selectStatement += '<option value="'+item[id_key]+'">'+item[val_key]+'</option>'+"\n";
	console.log("*** makeSelect: id: [%s] album: [%s]",item[id_key], item[val_key]);
    });


    selectStatement += '</select>'+"\n";

    return selectStatement;
}
