/*
    misc code
*/
var pageTracker;
var keyword='';
var hash=new Array();
var playershow='';
var so=false;
var code_next;
var code_current=false;
var state;

function drawResult(obj) {
    
    var counter=obj.start;
    var sample=$("sample").get('html');
    var play=$("play_row");
    $("play_row").set('html','');
    obj.row.each(function(item,key) {
	counter+=1;
	var row=new Element('div', {id: 'item'+item['f']});
	item['name']=item['i'][0]+"-"+item['i'][1];
	item['num']=counter;
	item['file']=item['f'];
//	item['goto']='/download/'+item['c']+'_'+item['u']+'_'+item['f']+'/'+item['name'].replace(/ /g,'_')+'.mp3';
	hash[item['f']]=item;
	row.set('html',sample.replace(/%([^%]+)%/g,function(s,m,z) {return item[m]?item[m]:m ;}));
	row.inject(play);
    });
}

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


function goto(str) {
    document.location='/'+str;
}


function stateListener(obj) { //IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED
	currentState = obj.newstate; 
	state=currentState;
	if(currentState == 'COMPLETED') {
	    if(code_next)   play(code_next);
	}
	else if(currentState == 'PAUSED' || currentState == 'IDLE') {
	    $('control'+code_current).set('src','/images/pics/control_play_blue.png');
	}
	else if(currentState == 'PLAYING') {
            $('control'+code_current).set('src','/images/pics/control_pause_blue.png');
	} 
}

function play(code) {
    if(hash[code] == undefined) return;
    if(hash[code].next) code_next=hash[code].next; else code_next=false;

    if(code_current == code) {
	if($('control'+code_current).get('src') == '/images/pics/control_pause_blue.png') {
	    $('control'+code_current).set('src','/images/pics/control_play_blue.png');
	} else {
	    $('control'+code_current).set('src','/images/pics/control_pause_blue.png');
	}
    	getPlayer().sendEvent("PLAY");
	return;
    }



    if(code_current) {
	$('item'+code_current).set('style','');
	$('control'+code_current).set('src','/images/pics/control_play_blue.png');
    }

    code_current=code;
    $('control'+code_current).set('src','/images/pics/control_pause_blue.png');

    var item=hash[code];
    item['name']=item['i'][0]+"-"+item['i'][1];
//    item['name']=encodeURIComponent(decodeURIComponent(item['name']).replace(/&#([0-9]+);/g,function(k,v) { return String.fromCharCode(v);}).replace(/( |%20)/g,'+').replace(/[?]+/g,''));
    item['name']="play";
//    var url='http://cs'+item['c']+'.'+String.fromCharCode(118, 107, 111, 110, 116, 97, 107, 116, 101)+'.ru/u'+item['u']+'/'+item['t']+'/'+item['f']+'.mp3';
//    var url='/download/'+item['c']+'_'+item['u']+'_'+item['f']+'/'+item['name'].replace('?','').replace('#','')+'.mp3';
    var url='/download/'+item['c']+'_'+item['u']+'_'+item['f']+'/'+decodeURIComponent(item['name'])
    .replace(/&#([0-9]+);/g,function(k,v) { return String.fromCharCode(v);}).
    replace(/( |\%20)/g,'+').
    replace(/[\?]+/g,'').
    replace('?','').
    replace('#','').
    replace(/&[^;]+;/g,' ')+'.mp3';


    if(!so) {
	so=new SWFObject('/swf/player.swf','mp3player','470','20','9');
        so.addParam('allowscriptaccess','always');
        so.addParam('allowfullscreen','false');
	so.addVariable('enablejs', 'true');
	so.addVariable('javascriptid', 'mp3player');
    //    so.addParam('flashvars','&duration=33&file='+url+'&playlist=bottom&repeat=list&autostart=true');
	so.addParam('flashvars','&file='+url+'&autostart=true');
        so.write('player');
	$("player").setStyle('display','block');
	addListeners();
    } else {
	getPlayer().sendEvent("LOAD",{file:url,type:'sound',title:item['name']});
    }
    
    location.hash="#"+$$('#item'+code+' th')[0].innerHTML.replace('.','');

    var myEffect = new Fx.Morph('item'+code_current, {duration: 2000, transition: Fx.Transitions.Sine.easeOut});
    myEffect.start('.act');

    
}
function addListeners() {
    try { 
	getPlayer().addModelListener("STATE", "stateListener");
    } catch(err) {
	setTimeout("addListeners()",100);
    }
}

function add(code) {

    var item=hash[code];
    
    var jsonRequest = new Request.JSON({
	url: "/save_to_playlist", 
	method: 'post',
	onComplete: function(obj) { 
	}
    }).post(item);

}

function download(code) {
    var item=hash[code];
    item['name']=item['i'][0]+"/"+item['i'][1];
    var url='/download/'+item['c']+'_'+item['u']+'_'+item['f']+'/'+decodeURIComponent(item['name'])
    .replace(/&#([0-9]+);/g,function(k,v) { return String.fromCharCode(v);}).
    replace(/( |\%20)/g,'+').
    replace(/[\?]+/g,'').
    replace('?','').
    replace('#','').
    replace(/&[^;]+;/g,' ')+'.mp3';
    state=true;
    document.location=url;
}

function open(name) {
    document.location.hash=name;
}

function drawNotFound() {
    alert('404');

}
function drawWindow ()  {
    if(keyword != location.hash.toString()) {
	keyword=location.hash;
        $("searchword").value=keyword.toString().replace('#','');
	var jsonRequest = new Request.JSON({url: "/"+keyword.toString().replace('#','')+".json", onComplete: function(obj) { if(obj.row) { drawResult(obj);} else { drawNotFound();}}}).get();
    }
    setTimeout(drawWindow,50);
}
				

Events:addEvent('domready', function() {
    $$("input @[type=image]")[0].disabled=false;
    Asset.javascript('/js/swfobject.js');


    if($("searchword")) {
	$("searchword").set("def",$("searchword").value)
	$("searchword").addEvent('mouseover',function(e) {
    	    if($("searchword").get("def") == $("searchword").value) {
        	$("searchword").value="";
    	    }
	});
	$("searchword").addEvent('mouseout',function(e) {
    	    if($("searchword").value=="") {
        	$("searchword").value=$("searchword").get("def");
    	    }
	});
	$("searchword").focus();
	if(
    	    document.location.pathname == '/' ||
            document.location.pathname == '/index'
        ) {
            $("searchword").value="";

        }
    }




    if($("search")) {
	$("search").addEvents({
	    'submit':function() {
		if($("searchword").value != $("searchword").get('org')){
		    location='/'+$("searchword").value.replace(/\//g,'');
		}
		return false;
	    }
	});

    }

    if($("searchword")) {
	    $("searchword").addEvents({
		'mouseover':function() { 
		    if($("searchword").value == $("searchword").get('org')){
		    $("searchword").value='';
		}
		return false;
	    },
	    'mouseout':function() { 
		if($("searchword").value == ''){
		    $("searchword").value=$("searchword").get('org');
		}
		return false;
	    }
	});
    }
    if($("send_mail")) {

	Asset.css('/js/formcheck/theme/classic/formcheck.css');
	Asset.javascript('/js/formcheck/lang/ru.js');

        Asset.javascript('/js/formcheck/formcheck.js',{onload:function() {
	    $("send_mail").grab(new Element('div', {id: 'log_res'}));
		new FormCheck('send_mail', {
                display : {
                        flashTips : 1,
                        fadeDuration : 1000
                },
		onAjexRequest:function() {
		    $('log_res').empty().addClass('ajax-loading');
		},
		onAjaxSuccess:function(response) {
		var log = $('log_res').empty().addClass('ajax-loading');
		    var json=JSON.decode(response);

		    if(json.good) {
			new Element('div', {html: 'Спасибо :)'}).replaces($('send_mail'));
		    } else {
			$('log_res').removeClass('ajax-loading');
                	$('log_res').set('html', json.html);
		    }
					    
		    
		},
		submitByAjax:true
    	    	});
	    }
	});
    
    }    


    
/*	$("send_mail").addEvents({
	    'submit':function() {

		var obj=Object();

		obj['send']='yo';
		$$("#send_mail textarea","#send_mail input").each(function(el) {
		    if(obj) {
			if(el.getAttribute('need') != null && el.value == '') {obj=false;}
			    obj[el.name]=el.value;
		    }
					    
		});
		

		if(!obj) {
		    alert('ошибка заполните обязательные поля');
		    return false;
		}
		
		var jsonRequest = new Request.JSON({
		    url: "/contacts", 
	    	    method: 'post',
		    onComplete: function(obj) { 
		    
		    }
		}).post(obj);
		
		return false;
	    }
	});
*/
    
    if(location.hash != '') {
	var num=location.hash.toString().replace('#','')-1;
	if($$("#play_row table tr")[num]) {
	    setTimeout("play($$('#play_row table tr')["+num+"].id.replace('item',''))",2000);
	}
    }
//    drawWindow();

});


window.onbeforeunload = function (oEvent) {
    if(state) {
	state=false;
	return;
    }
    var p = getPlayer();
    if(!p) return;
    // Stop buffering
    p.sendEvent("STOP");

    // Break circular references
    p.getConfig = null;
    p.getPlaylist = null;
    p.addControllerListener = null;
    p.addModelListener = null;
    p.addViewListener = null;
    p.sendEvent = null;
}







function fav() {
    url="http://mp3m.ru/";
    title="MP3m.RU - Качай и Слушай";
    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url,"");
	addEngine("http://mp3m.ru/se.xml");
    } else if( window.external ) { // IE Favorite
        window.external.AddFavorite( url, title); }
    else if(window.opera && window.print) { // Opera Hotlist
        return true;
    }
}

function addEngine(A) {
    if (window.external && ("AddSearchProvider" in window.external)) {
        window.external.AddSearchProvider(A);
        return false;
    } else {
        return true;
    }
}

