
/**
 * ajax 검색결과를 출력하는 함수
 * 
 * @param kind			출력할 아이템 종류 (song, album, artist, score)
 * @param m				검색할 모드
 * @param id			고유 아이디
 * @param param			기타 파라메타 (tpl)
 * @param s				가져올 레코드 시작
 * @param limit 	 	가져올 레코드 갯수
 * @param displayObj	결과를 출력할 객체
 * @param callback 		콜백함수명
 */
function showItems(kind, m, id, param, s, limit, displayObj, callback, disalbeMore){
	if(!s) s = 0;
	if(!limit) limit = 20;
	
	var tmpDisplayDiv = new Date().getTime()+''+$(displayObj).attr('id');
	$.create('div', { 'id' : tmpDisplayDiv } , "").appendTo(displayObj);
	$("#"+tmpDisplayDiv).html("<img src='/images/common/blt_loading2.gif' alt='Loading...' \/>");
	
	var url = "/search/"+kind+".ajax.php?m="+m;
	if(id) url += "&id="+id;
	if(param) url += "&"+param;
	url += "&s="+s+"&limit="+limit;
	
	$("#"+tmpDisplayDiv).load(encodeURI(url), function() {
		var total_search_num = parseInt($(this).find('.search_info .total_search_num').html());
		var search_s = parseInt($(this).find('.search_info .s').html());
		var search_limit = parseInt($(this).find('.search_info .limit').html());
		var show_num = parseInt($(this).find('.search_info .show_num').html());
		var more_item_num = total_search_num - (search_s + show_num);
		if(typeof callback == 'function') {
			callback($(this).find('.search_info'));
		}
		
		if(more_item_num && !disalbeMore) {
			var moreButtonStr = "<span class='expandable_right btnShowMore' title='";
			moreButtonStr += (more_item_num > search_limit) ? search_limit : more_item_num ; 
			moreButtonStr += "개 더 보기'>";
			moreButtonStr += "<span class='bold_word'>"+number_format(more_item_num)+"</span> 개의 ";
			if(kind == 'song') moreButtonStr += "곡이";
			else if(kind == 'album') moreButtonStr += "앨범이";
			else if(kind == 'score') moreButtonStr += "악보가";
			else if(kind == 'artist') moreButtonStr += "아티스트가";
			else if(kind == 'lyrics') moreButtonStr += "가사 검색결과가 ";
			moreButtonStr += " 더 있습니다. </span>";
			/*
			moreButtonStr +=  "<span class='btnShowMore'><span class='bold_word'>";
			moreButtonStr += (more_item_num > search_limit) ? search_limit : more_item_num ; 
			moreButtonStr += "개</span> 더보기</span>";
			*/
			$(this).find('.div_more_button').html(moreButtonStr);
			$(this).find('.div_more_button').show();
			//bind 
			$(this).find('.btnShowMore').click(function(){
				showItems(kind,m,id,param,search_s+show_num,search_limit,displayObj);
				$(this).parent().remove();
			});
		}
		if(kind == 'song' && show_num > 1 && $(this).find(':checkbox').length > 1) {
			
			var songButtonStr = "";
			
			songButtonStr += "<img src='/images/music/common/btn_list_select_all.png' onclick=\"selectAll($(this).parent().parent());\" class='button' alt='전체선택' />";
			songButtonStr += "<img src='/images/music/common/btn_list_deselect_all.png' onclick=\"deselectAll($(this).parent().parent());\" class='button' alt='선택해제' />";
			
			songButtonStr += "<span class='button' onclick=\"selectAll($(this).parent().parent());playSong($(this).parent().parent());\">";
			songButtonStr += "<img src='/images/music/common/btn_list_listen_all.png' alt='전체듣기' /></span>";
			songButtonStr += "<span class='button' onclick='playSong($(this).parent().parent());'>";
			songButtonStr += "<img src='/images/music/common/btn_list_listen_selected.png' alt='선택듣기' /></span>";
			songButtonStr += "<span class='button' onclick='reserveSong($(this).parent().parent());'>";
			songButtonStr += "<img src='/images/music/common/btn_reserve_selected.png' alt='선택예약' /></span>";
			
			$(displayObj).find("#div_tracksButton").remove();
			$.create('div',{ 'id' : 'div_tracksButton'}, '').appendTo($(displayObj));
			$(this).parent().find('#div_tracksButton').html(songButtonStr);
			
			$(displayObj).find("#div_tracksButton .btnPlayAll").click(function(){
				$(this).parent().parent().find(":checkbox").each(function(){ $(this).attr('checked','checked'); });
				playSong(this,true);
			});
		}
		
	});
}
function reverseCheck(o){
	$(o).parent().parent().find(":checkbox").each(function(){
		if(!$(this).attr('disabled')){
			$(this).attr("checked",false);
		}
		else {
			if($(this).attr('checked')) {
				$(this).attr('checked',false);
			}
			else {
				$(this).attr('checked',true);
			}
		}
	});
}
function checkAll(o) {
	$(o).parent().parent().find(":checkbox").each(function(){
		if(!$(this).attr("disabled")) $(this).attr('checked',true);
	});
}
function addMusicbox(songId) {
	$.post("/musicbox/action.php", { m : 'addSong' , id : songId },
		function(data){
			var msg = new Message(data);
			msg.print();
			if(msg.isSuccess){
				$.jGrowl("임시 음악상자에 담았습니다.");
			}
		},"json");
}

function openLyricsLayer(id){
	var layerWidth = 400;
	var layerHeight = 500;
		
	var songId = id
	
	if(!$("#lyricsLayer").text()) {
		$.create('div',{'id' : 'lyricsLayer'},'').appendTo($('body'));

		$("#lyricsLayer").draggable({
			handle : '.layer_header'
		});

	}
	else {
		$("#lyricsLayer").html('Loading...');
	}
	var startLeft = Math.round($('body').width()/2 - layerWidth/2);
	var startTop = $(window).scrollTop() + ($(window).height()/2 - layerHeight/2);
	$("#lyricsLayer").css({ 'left' : startLeft , 'top' : startTop });
	$("#lyricsLayer").load("/music/lyrics.ajax.php?songId="+songId,function(){
		$("#lyricsLayer").show();
	});
}

function openTagLayer(kind, itemId, e){
	var ex = e.pageX ? e.pageX : e.x;
	var ey = e.pageY ? e.pageY : e.y;
	var layerWidth = 400;
	var layerHeight = 310;
	
	if(!$("#tagLayer").text()) {
		$.create('div',{'id' : 'tagLayer'},'').appendTo($('body'));
		$('#tagLayer').draggable({
			handle : '.layer_header'
		});
	} else {
		$('#tagLayer').html('Loading...');
	}
	$('#tagLayer').load("/music/tag.ajax.php?kind="+kind+"&id="+itemId+"&tpl=song",function(){
		var startLeft = ex + 15;
		var startTop = ey + 10;
		if(startTop + layerHeight + 20 > $(window).scrollTop() + $(window).height()) { 
			startTop = $(window).scrollTop()  + $(window).height() - layerHeight - 30;
		}
		$('#tagLayer').css({ 'left' : startLeft , 'top' : startTop});			
		$('#tagLayer').show();
	});
	
}

function showAlbumImageLayer(albumId,obj){
	if(!$("#albumImageLayer").html()) {
		$.create('div',{'id' : 'albumImageLayer'},'').appendTo($('#container'));
	}
	$("#albumImageLayer").html("<img src='/album/"+albumId+"/image/100' />");
	
	var p = $(obj).position();
	var startLeft = p.left + 45;
	var startTop = p.top + 10;

	$("#albumImageLayer").css({ 'left' : startLeft , 'top' : startTop , 'display' : 'block' });	
	
}

function hideAlbumImageLayer() {
	$("#albumImageLayer").hide();
}

function drawScoreTag(id, obj, callback){
	$(obj).load("/score/tag.ajax.php?id="+id,function(){
		if(typeof callback == 'function') {
			callback($(this).find('.tag_info'));
		}
	});
}

function showSongSum(id, e) {
	var ex = e.pageX ? e.pageX : e.x;
	var ey = e.pageY ? e.pageY : e.y;
	var layerWidth = 400;
	var layerHeight = 200;
	
	if(!$("#songSumLayer").text()) {
		$.create('div',{'id' : 'songSumLayer'},'').appendTo($('body'));
		$("#songSumLayer").draggable({
			handle : '.layer_header'
		});
	} else {
		$("#songSumLayer").html("Loading...");
	}
	
	$("#songSumLayer").load("/search/song.ajax.php?m=theSong&id="+id+"&tpl=sum",function(){
		var startLeft = ex + 15;
		var startTop = ey + 10;
		if(startTop + layerHeight + 20 > $(window).scrollTop() + $(window).height()) {
			startTop = $(window).scrollTop() + $(window).height() - layerHeight - 30;
		}
		$("#songSumLayer").css({ 'left' : startLeft , 'top' : startTop});
		$("#songSumLayer").show();
	});
}

function goScore(id,target){
	$.getJSON("/music/action.php?act=getRelateScores&id="+id,
		function(data){
			var msg = new Message(data);
			msg.print();
			if(msg.data == null) return ;
			if(msg.data.length == 1){
				var url = "/score/"+msg.data[0].id;
				if(target) {
					window.open(url,'parents');
				} else {
					location.href = url;
				}

			} else {
				if(!$("#scoreSelectLayer").text()) {
					$.create('div',{'id' : 'scoreSelectLayer'} , '').appendTo($('#container'));
				}
				
				var loadUrl = "/search/score.ajax.php?m=ofSong&tpl=select&id="+id;
				if(target) {
					loadUrl += "&target="+target;
				}
				$('#scoreSelectLayer').load(loadUrl);
				$('#scoreSelectLayer').modal({
					containerCss : { height: 250, width : 600 }
				});
			}
		});
}


function buyContents(kind, itemId) {
	$.post("/member/action.php", { act : 'putCart' , kind : kind , id : itemId },
		function(data) {
			var msg = new Message(data);
			if(msg.isSuccess == true) {
				if(kind == 'score') {
					if(confirm("악보를 장바구니에 담았습니다.\n결제화면으로 이동하시겠습니까?")) {
						location.href = "/member/?m=cart";
					}else {
						$.jGrowl("장바구니에서 언제든지 결제하실 수 있습니다.");
					}
				}
				else {
					$.jGrowl("장바구니에 담았습니다.");
				}
				updateSideCart();				
			}
			msg.print();
		}, "json"); 
}

function addFavorite(wh, id) {
	$.post("/music/action.php", { act : 'addFavorite' , wh : wh , id : id },
		function(data){
			var msg = new Message(data);
			if(msg.isSuccess == true) {
				if(wh == 'album') var str = "관심앨범으로 등록하였습니다.";
				else if(wh == 'artist') var str = "관심사역자로 등록하였습니다.";
				$.jGrowl(str);
				$(".ajax_favorite_num").effect("highlight",{color:'#ff0000'},2000);
				$(".ajax_favorite_num").html(parseInt($(".ajax_favorite_num").html())+1);
				$(".btn_add_favorite").attr("src","/images/music/common/btn_joininnow_orange.png");
			}
			msg.print();
	}, "json");
}

function deleteFavorite(wh, itemId, memberId, obj) {
	if(!confirm("관심항목에서 삭제하시겠습니까?")){
		return false;
	}
	$.post("/music/action.php", { act : 'deleteFavorite', wh : wh , itemId : itemId , memberId : memberId },
		function(data) {
			var msg = new Message(data);
			if(msg.isSuccess == true) {
				$(obj).parent().parent().fadeOut();
			}
			msg.print();
	}, "json");
}

function setExtraBarPosition(){
	if($("#extrabar").css("display") == "none") {
		return false;
	}
	//var startX = $(window).width() / 2 + 460 + 5;
	var startX = 925;
	var startY = $(window).scrollTop() + 40;
	if(startY < 145) startY = 145;
	$("#extrabar").css( { 'left' : startX , 'top' : startY });
}

function updateSideCart(){
	$("#extrabar").load("/member/sidecart.ajax.php",function(){
		setExtraBarPosition();			
	});
}

function showVideocast(id){
	window.open(
			"/help/video.php?id="+id,
			"videocast_player", 
			"width=970px,height=640px,toolbar=no,menubar=no,status=no,resizable=0,fullscreen=no");	
}

$(function(){
	updateSideCart();	
	$(window).bind("resize",function(){ setExtraBarPosition(); });
	$(window).bind("scroll",function(){ setExtraBarPosition(); });
});
