Event.observe( window, 'load', function() {
    z = new ProtoHistoryManager();
    var l = window.location.href;
    currentHash = l.replace( /(.*)?\/muzik\/(.*)/, "$2" );
    
    z.initialize();
    if ( Prototype.Browser.IE ) {
        z.setIframe( $( 'history_iframe' ) );
    }
    z.start();
    z.setOptions({
        onStateChange : function( link ) {
    		$('mnew-logo-link').scrollTo();

    		mDoCall( "/muzik/" + link );
        }
    });
});



mAjaxUpdater = Class.create(Ajax.Updater, {
		 initialize: function($super, container, url, options) {
			options.asynchronous=true;
			$super(container, url, options);
		}
	}
);
		
		
function mOutCall(link,obj) {
	if ( link == "/muzik/anasayfa" ) {
		mCall( link );
	} else {
		window.open( obj.href );
	}
	return false;
}

function mCall( link ) {
 	if ( link.replace( /(.*)?\/muzik\/(.*)/, "#$2" ) == window.location.hash ) {
		mDoCall( link ); // history disabled
	}
 	window.location.hash = link.replace( /(.*)?\/muzik\/(.*)/, "#$2" );
 	 	
 	$j('#mnew-s li').removeClass('menu-hi-1');    
 	
	var n = window.location.hash.split('/');
	var link_type = n[0];

	if(link_type == '#profilim') { $j('#mnew-s #menu-item-1').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-1').addClass('menu-hi-1'); }	
	if(link_type == '#liste' || link_type == '#listeler') { $j('#mnew-s #menu-item-2').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-2').addClass('menu-hi-1'); }
	if(link_type == '#sanatci' || link_type == '#sanatcilar') { $j('#mnew-s #menu-item-3').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-3').addClass('menu-hi-1'); }
	if(link_type == '#album' || link_type == '#albumler') { $j('#mnew-s #menu-item-4').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-4').addClass('menu-hi-1'); }
	if(link_type == '#sarki' || link_type == '#sarkilar') { $j('#mnew-s #menu-item-5').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-5').addClass('menu-hi-1'); }
	if(link_type == '#haber' || link_type == '#haberler') { $j('#mnew-s #menu-item-6').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-6').addClass('menu-hi-1'); }
	if(link_type == '#fotogaleri' || link_type == '#fotogaleriler') { $j('#mnew-s #menu-item-7').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-7').addClass('menu-hi-1'); }
	if(link_type == '#yardim') { $j('#mnew-s #menu-item-8').removeClass('menu-lo-1'); $j('#mnew-s #menu-item-8').addClass('menu-hi-1'); }
	
    return false;
}




function mDoCall( link ) {
    //mPrelistenDestroy();
	upSearch.cleanUp();
	mResetListEdit();
	Tips.hideAll();
	
    if ( link == '/muzik/' ) {
         link = window.location.pathname;
    }
    
    mPage( 'mL', link );
    
    //mWebtrends(link);
    wtAjaxParse(link);
    pageTracker._trackPageview(link);
   
	return false;
}

function mWebtrends(link) {
	var n=link.split('/');
	if ( (n[2]=="sanatci") || (n[2]=="album") || (n[2]=="sarki") ) {
		dcsMultiTrack('DCS.dcsuri','/'+n[1]+'/'+n[2],'DCSext.'+n[2],n[3]);
	}
	else {
		dcsMultiTrack('DCS.dcsuri',link);
	}
}


function mScrollTo( id ) {
	Effect.ScrollTo( id, { offset : -40 } );
	return false;
}

function mTitle(title) {
	document.title=title; // "gnçtrkcll :: Müzik :: "+
}

function mBC(className) {
	$("mT").className = "mb-"+className;
	
}

function mPage(section,link,r) {
	var d = $( section );
	var params = {ajax:"true"};
	
	d.update('<div class="loadingpage"> Yükleniyor</div>');
	new mAjaxUpdater( d,
		link,
		{ method: 'get', parameters: params, evalScripts:true}
	);
}


function mLogin() {
	mWin.iframe();
}

function loginRePopup() {
	mWin.cancel();
	setTimeout('loginPopup()',2000);
}




function mLastListenSet(list) {
	document.cookie ='lastlisten='+list+'; path=/';	
}

function cookieGet(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
	
}

function mLastListenGet() {
	return cookieGet('lastlisten');

}

function mLastListenSelect(forcelist) {
	var lastListen = mLastListenGet();
	if (lastListen !=null) {
		alert(lastListen);
		try {mPlayer.forceload(lastListen);}catch (err) {alert(err);}
	}
	else {
		alert(forcelist);
		try {mPlayer.forceload(forcelist);}catch (err) {alert(err);}
	}
}

function mListen(type,id) {
	try {clearTimeout(mPTime);}catch (err) {}
	if (currPlayerMode == "radio") {
		mUpdatePlayers();
		
	}
	var obj = swfobject.getObjectById("musicPlayer");
	if (type=="artist") {
		mLastListenSet('/muzik/sanatci/list-json/artist_id/'+id+'.xml');
		mPlayer.load('/muzik/sanatci/list-json/artist_id/'+id+'.xml')
	}
	if (type=="album") {
		mPlayer.load('/muzik/album/list-json/album_id/'+id+'.xml');
		mLastListenSet('/muzik/album/list-json/album_id/'+id+'.xml');
	}
	if (type=="mylist") {
		mPlayer.load('/muzik/listem/list-json/liste_id/'+id+'.xml');
		mLastListenSet('/muzik/listem/list-json/liste_id/'+id+'.xml');
	}	
	if (type=="plist") {
		mPlayer.load('/muzik/liste/list-json/liste_id/'+id+'.xml');
		mLastListenSet('/muzik/liste/list-json/liste_id/'+id+'.xml');
	}
}

mWin = new mWindowManager();


function mFeedback() {
	mWin.request("/muzik/feedback");
}
function mFeedBackRequest() {

new Ajax.Request( "/muzik/feedback/post", {
    parameters : $( 'mFeedbackForm' ).serialize(),
    onComplete: function( transport ) {
			Dialog.closeInfo();	
	}
  });
}

function mDownload(type,id) {
	if (type=="track") {type="sarki";}
	mWin.request("/muzik/cebineindir/"+type+"/"+id , 'download');
}

function mDownloadCmptr(id) {
	mWin.request("/muzik/download/sarki/id/" + id , 'download');
}

function openMuyapPopup(link) {
	day = new Date();
	
	id = day.getTime();
	
	eval("page" + id + " = window.open('" + link + "' , '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=300,left = 380,top = 150');");
}

function mBuyTrack ( sid , id ) {
    var error_message;
    var link;
    
    $j('#download_spinner_' + id).show();
    
	new Ajax.Request( "/muzik/download/download/sid/" + sid + "/id/" + id , {
      onComplete: function( transport ) {       
		  if (transport.responseJSON.error) {
		      switch (transport.responseJSON.message) {
		    	  case 'WRONG_PARAMS':
		    		  error_message = 'Hatalı parametre.'; break;
		    		  
		    	  case 'SONG_NOT_FOUND':
		    		  error_message = 'Şarkı bulunamadı.'; break;

		    	  case 'UNAVAILABLE_CONTENT':
		    		  error_message = 'İçerik bulunamadı.'; break;
		    		  
		    	  case 'LOGIN_REQUIRED':
		    		  error_message = '<a href="javascript:void(0);" onclick="return loginPopup();" style="text-decoration:none;">Şarkı satın almak için <span style="text-decoration:underline;">üye girişi</span> yapmalısınız.</a>'; break;
		    		  
		    	  default:
		    		  error_message = 'Hata oluştu';
		      }  

				$('download_'+id).update('<h4>' + error_message + '</h4>');
				mWin.recenter();
		  }
		  else {
			  // link = '<a href="' + transport.responseJSON.dl_link + '"><img border="0" src="' + transport.responseJSON.asset_music + 'web/b-bi.gif" /></a>';
			  link = transport.responseJSON.dl_link
			  
			  // $('download_'+id).update(link);
			  // mWin.recenter();
			  
			  mWin.cancel();
			  openMuyapPopup(link);
		  }
		  
		  $j('#download_spinner_' + id).hide();
    	}
    });
}

/*
function mBuyTrack ( sid , id ) {
	// var mbuyconfirm =  $j('#mbuy-confirm').val();
	// var mbuycode = $j('#mbuy-code').text();
	
	// if ( mbuyconfirm != mbuycode ) {
	// 	return false;
	// }
	
	mWin.cancel();
	// setTimeout('mDownloadTrack("' + sid + '" , "' + id + '")' , 2000);
	
	mDownloadTrack( sid , id );
}

function mDownloadTrack( sid , id ) {
	mWin.request( "/muzik/download/download/sid/" + sid + "/id/" + id );
}
*/


function mRBT(type,id) {
	if (type=="track") {type="sarki";}
	mWin.request("/muzik/cebineindir/"+type+"/"+id,'download');
}

function mDownloadTrigger(type,id,filter,token,ref) {
	
	var tm='http://turkcell-im.turkcell.com.tr/dsb/searchResult/searchResultWeb.do?subcategory=&category=&searchKeyword=';
	if (type=="fake-tm") {
		Dialog.closeInfo();
		window.open(tm+id);
	}
	if (type=="tm") {
		//Dialog.closeInfo();
		ref.removeAttribute("onclick");
		$('download_'+id).update("<div class='loadingpage'> İsteğin iletiliyor.</div>");
		mWin.recenter();
		new Ajax.Request('/muzik/cebineindir/track-request?id='+id+"&token="+token, {
			  method: 'get',
			  onComplete : function(transport) {
				if(transport.responseJSON.success=="true") {
					//Dialog.closeInfo();
					$('download_'+id).update("Cep telefonuna indirebilmen için gerekli link birazdan sms olarak iletilecek.");
					mWin.recenter();
				}
				else {
					//Dialog.closeInfo();
					$('download_'+id).update("Bu şarkı cep telefonuna indirilebilinir şarkılar arasında bulunmuyor.");
					mWin.recenter();
				}
			  }
			});
	}
	if (type=="fake-rbt") {
		Dialog.closeInfo();
		window.open('http://www.calarkendinlet.turkcell.com.tr/webui/searchpage?q='+id+'&singerNameFilter='+filter+'&tn=on');
		
	}
	
}

var mWindow;
var currentListEdited;

function mResetListEdit() {
	if (currentListEdited!="") {
		currentListEdited="";
	}
}

function mAddTrack(id) {

	mWin.request("/muzik/listelerim/ekle/?track="+id,"addtrack");
	// mWindow=Dialog.info({url: "/muzik/listelerim/ekle/?track="+id, options: {method: 'get'}}, {className: "alphacube",zIndex:10, width:540,showEffectOptions:{duration:0}});


}

function mRemoveTrack( track_id ) {
    if ( ! window.confirm( "Bu şarkıyı listenden silmek istediğinden emin misin?" ) ) {
        return;
    }
    $( 'track_' + track_id ).remove();
    $( 'list_save_button' ).enable();
    $( 'list_save_button' ).className="enabled";
}

function mAddTrackComplete (list,track,newlist) {
	if (list=="0") {
		$('mNewListErr').update('Liste Seçmelisin');
		$('mNewListErr').show();
		 
	}
	else if ((list=="n") && ((newlist == undefined) || (newlist == "")) ) {
		$('mNewListErr').update('Yeni Listene isim vermelisin');
		$('mNewListErr').show();
		$('mNewListName').focus();
		 
	}
	else {
		$('mNewListErr').hide();
		if (list==currentListEdited) {
			mSaveListOrder( currentListEdited );
			
		}
		
		new Ajax.Request("/muzik/listelerim/ekle/", {
		  method: 'post',
		  parameters : {list: list, track: track, newlist: newlist},
		  onComplete : function(transport) {
			Dialog.closeInfo();
			mUpdateLists('my');
			if (list==currentListEdited) {
				mCall('/muzik/listem/'+currentListEdited);
			}
		  }
		});
	}
	
	mWin.delaycenter();
	
}

function mShowNewList(v) {
	if (v=="n") {$('mNewList').show();}
	else {$('mNewList').hide();}
	mWin.delaycenter();
}


function mUpdatePlayers() {
		new mAjaxUpdater( 'myPlayers',
				'/muzik/player/?r='+Math.random(),
				{method: 'get',evalScripts:true}
			);	
		currPlayerMode == "mzk";
}

var currPlayerMode = 'mzk';

function mRadyo(station) {
	radyo();
	/*
	 * will be replaced with actual code
	 * 
	 new Ajax.Updater( 'myPlayers',
			'/muzik/radyo/?r='+Math.random(),
			{method: 'get',evalScripts:true}
		);
	currPlayerMode = 'radio';
	*/
}

function mUpdateLists(s,p) {
	if ( p == undefined ) {
		p=1;
		
	}
	if (s=="my") {
		
		new mAjaxUpdater( 'myLists',
				'/muzik/profilim/mini-listeler?r='+Math.random()+'&mode=my&p='+p,
				{method: 'get',evalScripts:true,
					onComplete : function () {
						$("mMiniLists").className = "mMiniLists-m";
					}
				}
			);
	}
	if (s=="shared") {
		
		new mAjaxUpdater( 'myLists',
				'/muzik/profilim/mini-listeler?r='+Math.random()+'&mode=shared&p='+p,
				{method: 'get',evalScripts:true,
					onComplete : function () {
						$("mMiniLists").className = "mMiniLists-s";
					}
				}
			);
	}
	if (s=="fav") {
		new mAjaxUpdater( 'myFavLists',
				'/muzik/profilim/mini-listeler?r='+Math.random()+'&mode=fav&p='+p,
				{method: 'get',evalScripts:true,
					onComplete : function () {
						$("mMiniFavLists").className = "mMiniLists-f";
					}
				}
			);
	}
	
}

function mSaveListOrder( list_id ) {
    $( 'list_save_button' ).disable();
    $( 'list_save_button' ).className="disabled";
    new Ajax.Request( '/muzik/listelerim/tasi', {
        parameters : Sortable.serialize( $( "private_list_container" ) ) + '&list_id=' + list_id,
        onFailure : function( transport ) {
            $( 'list_save_button' ).enable();
            $( 'list_save_button' ).className="enabled";
        }
    });
}

function mRemovePlaylist( list_id, list_name ) {
    if ( ! window.confirm( list_name + " isimli listeyi silmek istediğinden emin misin?" ) ) {
        return;
    }
    new Ajax.Request( '/muzik/listelerim/sil', {
        parameters : 'list_id=' + list_id,
        onComplete : function( transport ) {
            //$( 'playlist_' + list_id ).remove();
			if (transport.responseJSON.error) {
				mAlert(transport.responseJSON.error_message);
			}
			else {
				mAlert('Listen Silindi');
			}
			 mUpdateLists('my');
        }
    });
    //mPage('mLists','/muzik/profilim/tum-listelerim');
   
}

function mPublishList( list_id ) {
	mWin.request("/muzik/listelerim/yayinla/list_id/" + list_id);
}

function mPublishListComplete ( list_id ) {
    new Ajax.Request( "/muzik/listelerim/yayinla-save/list_id/" + list_id, {
      parameters : $( 'publish_form' ).serialize(),
      onComplete: function( transport ) {
        
        mUpdateLists('my');
			if (transport.responseJSON.error) {
				mWin.error(transport.responseJSON.error_message);
			}
			else {
				if ($('fbshare').checked == true) {
					shareLink('facebook' , transport.responseJSON.plist_link );
				}
				
				mWin.notify('Listen başarıyla yayınlandı.');
			}

    	}
    });
}

function mDiscoverSong(tab,o,g) {
	$("mDiscoverSong-head").className="mDiscoverSong-head-p"+tab;
	mPage("mDiscoverSong","/muzik/sarkilar/enpopuler/"+o+"/"+g);
	void(0);
}

function mDiscoverAlbum(tab,no) {
	$("mDiscoverAlbum-head").className="mDiscoverAlbum-head-p"+tab;
	mPage("mDiscoverAlbum","/muzik/albumler/yenialbumler/"+no);
	void(0);
}


function mHToplist(tab,no) {
	$("mHTopLists-head").className="mHTopLists-head-p"+tab;
	mPage("mHTopLists-contents","/muzik/anasayfa/toplistselect/"+no);

	void(0);
	
}

function mToplist(part,tab,no) {
	
	$('mTopList-'+part+'-head').className="mTopList-"+part+"-head-p"+tab;
	mPage('mTopList-'+part+'-contents','/muzik/anasayfa/toplists/'+no);

	void(0);
}

function mFavoriteRemove(itemid,location) {
	new Ajax.Request( '/muzik/favorites/remove-from-favorites', {
        parameters : 'item_id='+itemid,
        onComplete : function( transport) {
		
		var response = transport.responseText || "";
		if (response=="ok") {
			if (location == "favori") {
				try {mPage('mLists','/muzik/profilim/favori-listelerim/');}
				catch (e){}
			}
			else {
				try {mPage('mFavItems','/muzik/profilim/sevdiklerim/'+$("mFavselect").value);}
				catch (e){}
			}
			mAlert("Favorilerinden Çıkarıldı");
			mFavToogle(false);
			
		}
		else {
			alert("Favorilerine ekleyebilmek/çıkarabilmek için üye girişi yapmalısın");
		}
			
        }
    });
}

function mFavToogle(direction) {
	if (direction) {
		try {
			$('mLikeAction').show();
			$('mUnlikeAction').hide();
		}
		catch (e){}
	}
	else {
		try {
			$('mLikeAction').hide();
			$('mUnlikeAction').show();
		}
		catch (e){}
	}
	
}


function mFavorite(itemid,trackid) {
	if (itemid=="track") {
		params = 'track_id='+trackid;
	}
	else {
		params = 'item_id='+itemid;
	}
	new Ajax.Request( '/muzik/favorites/add-to-favorites', {
        parameters : params,
        onComplete : function( transport) {
		
		var response = transport.responseText || "";
		if (response=="ok") {
			mAlert("Favorilerine Eklendi");
			mFavToogle(true);
		}
		else {
			alert("Favorilerine ekleyebilmek için üye girişi yapmalısın");
			
		}
			
        }
    });
	
}

function mHelp() {
	addHelp();
	mHelpNext();
}
var $helpCurrent = -1;

function mHelpNext() {
	$helpCurrent++;
	try{$helpTips[$helpCurrent].prototip.show();
		var elmPos =$helpTips[$helpCurrent].viewportOffset();
		var docPos = document.viewport.getDimensions();
		
		if  ( (elmPos.top > docPos.height ) || (elmPos.top<0) ) {
			Effect.ScrollTo($helpTips[$helpCurrent]);
		}
	}
	catch (e) {}
	
}

function mHelpPrev() {
	$helpCurrent--;
	try{
		var elmPos =$helpTips[$helpCurrent].viewportOffset();
		var docPos = document.viewport.getDimensions();
		$helpTips[$helpCurrent].prototip.show();
		//console.log( 't:' + elmPos.top + ' h:' + docPos.height );
		if  ( (elmPos.top > docPos.height ) || (elmPos.top<0) ) {
			Effect.ScrollTo($helpTips[$helpCurrent]);
		}

	}
	catch (e) {}
	
}

var cTime;
function mAlert(msg) {
	
	
	/*
	new Tip($('bodyHook'), msg, {style:'help',stem: 'leftMiddle',showOn:'mousemove',hideAfter:5,viewport:true,hook: { tip: 'leftMiddle', mouse: true }});
	
	$('bodyHook').prototip.show();
	clearTimeout(cTime);
	cTime=setTimeout("Tips.remove($('bodyHook'))",7000);
	*/
	
//	$("mAlert").hide();
	$("mAlert").update('<div class="mAlerter">'+msg+'</div>');
	
	new Effect.Appear('mAlert');
	
	new Effect.Fade('mAlert', {delay:10, queue: 'end' });
	
	
}

function mAsk(msg) {
	
	$("mAlert").hide();
	$("mAlert").update('<div class="mAlerter">'+msg+'</div>');
	new Effect.SlideDown('mAlert');
	//new Effect.SlideUp('mAlert', {delay:5, queue: 'end' });
}
function mAskClose() {
	
	new Effect.SlideUp('mAlert');
}

function mComments( p, thisUrl, item_id ) {
	var d = $( 'mComments' );
	var url = '/muzik/yorumlar/';
	
	var params = 'url=' + thisUrl + '&p=' + p + '&item_id=' + item_id;
	new mAjaxUpdater( d,
		url,
		{method: 'get', parameters: params}
	);
}

function mRemoveFriend( nick_seo, friend_name ) {
    if ( ! window.confirm( friend_name + " isimli kişiyi takip listenden silmek istediğine emin misin?" ) ) {
        return;
    }
    new Ajax.Request( '/muzik/profilim/remove-from-friends/', {
        parameters : 'name=' + nick_seo,
        onComplete : function( transport ) {
    	 	mPage('mMiniFriends','/muzik/anasayfa/minifriends');
    		mAlert( friend_name + ' takip listenden silindi.' );
           
        }
    });
}

function mAddFriend( nick_seo, friend_name ) {
    /*
	if ( ! window.confirm( friend_name + " isimli kişiyi takip listene eklemek istediğinden emin misin?" ) ) {
        return;
    }
    */
    new Ajax.Request( '/muzik/profilim/add-to-friends/', {
        parameters : 'name=' + nick_seo,
        onComplete : function( transport ) {
    	 	mPage('mMiniFriends','/muzik/anasayfa/minifriends');
    	 	mAlert( friend_name + ' takip listene eklenmiştir.' );
        }
    });
}

function biomore() {
new Effect.Tween('bio', $('bio').getHeight(), $('biofull').getHeight()+20, {duration:2},function (p) {$('bio').style.height=p+'px'}); 
Effect.BlindUp('biomore');
}
function rsession(){a=document.cookie.split(';');for(i=0;i<a.length;i++){b=a[i].split('=');if(b[0].replace(/^\s+|\s+$/g,'')=='GNCSESSID'){return b[1];}}}


function str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return(o.join('')); }

function sprintf() {
  var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
  while (f) {
    if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
    else if (m = /^\x25{2}/.exec(f)) o.push('%');
    else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) throw("Too few arguments.");
      if (/[^s]/.test(m[7]) && (typeof(a) != 'number'))
        throw("Expecting number but found " + typeof(a));
      switch (m[7]) {
        case 'b': a = a.toString(2); break;
        case 'c': a = String.fromCharCode(a); break;
        case 'd': a = parseInt(a); break;
        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
        case 'o': a = a.toString(8); break;
        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
        case 'u': a = Math.abs(a); break;
        case 'x': a = a.toString(16); break;
        case 'X': a = a.toString(16).toUpperCase(); break;
      }
      a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
      x = m[5] - String(a).length;
      p = m[5] ? str_repeat(c, x) : '';
      o.push(m[4] ? a + p : p + a);
    }
    else throw ("Huh ?!");
    f = f.substring(m[0].length);
  }
  return o.join('');
}


