var jst_music_item_prev=new String('\
{if !isDiy}\
 <div class="check"><input id="$$_music_check_${item.id}" type="checkbox"/></div>\
 <div class="sgname g_t_hide">{if item.lrc!=null && item.lrc.trim()!=""}<span class="n_ k3m g_c_hand" title="歌词" onclick="window.open(\'http://s.blog.163.com/s/slrc.s?p=${item.lrc}&n=${item.name|default:""|js_string}&a=${item.author|default:""|js_string}\',\'歌词\',\'resizable=no,scrollbars=yes,status=yes,width=440px,height=400px\')">&nbsp;</span>{/if}{if item.haveCircle && item.circleMusic}<a href="http://s.blog.163.com/s/circle.s?n=${item.name|default:""|js_string}&a=${item.author|default:""|js_string}"  target="_blank" class="c05" title="${item.name|escape}">${item.name|escape}</a>{else}${item.name|default:"&nbsp;"|escape}{/if}</div>\
 <div class="try"><span class="n_ k0m g_c_hand" onclick="${objName}.listenMusic(\'${item.id}\');" title="歌曲试听">&nbsp;</span></div>\
 <div class="sger g_t_hide">{if item.haveCircle && item.circleMusic}<a class="c06" href="http://s.blog.163.com/s/circle.s?n=${item.name|default:""|js_string}&a=${item.author|default:""|js_string}" target="_blank">${item.author|escape}</a>{elseif item.author!=null && item.author.trim()!=""}${item.author|escape}{else}&nbsp;{/if}</div>\
 <div class="ctgry">{if item.musicType == 2}<span class="p_{if item.diyMusicType==0} p14m{elseif item.diyMusicType==1} p15m{else} p16m{/if}">&nbsp;</span>{else}&nbsp;{/if}</div>\
 <div class="time c07">${item.duration|default:0|toTimeLength}</div>\
 <div class="popular c07">{if item.haveCircle && item.circleMusic}${item.circleMusic.popularity|default:0}{else}&nbsp;{/if}</div>\
 <div class="comments">{if item.haveCircle && item.circleMusic}<a class="c06" href="http://s.blog.163.com/s/circle.s?n=${item.name|default:""|js_string}&a=${item.author|default:""|js_string}" target="_blank">${item.circleMusic.commentCount|default:0}</a>{else}&nbsp;{/if}</div>\
 <div class="ring">{if item.wapId && item.wapId > \'1000\'}<a class="n_ k2m" href="http://my.12530.com/newchannel/orderTone/${item.wapId}/1/5300/blog/-/-/order.htm" target="_blank" title="铃声下载">&nbsp;</a>{else}&nbsp;{/if}</div>\
 {if isPrev == false}\
  <div class="edit"><span class="n_ e7m g_c_hand e" onclick="${objName}.editMusic(\'${item.id}\');" title="编辑">&nbsp;</span><span class="n_ e8m d">&nbsp;</span></div>\
 {else}\
  <div class="collect"><span class="n_ k16 g_c_hand" onclick="${objName}.collectMusic(\'${item.id}\');" title="收藏">&nbsp;</span></div>\
 {/if}\
 <div class="rank">{if item.haveCircle && item.circleMusic}<div id="r_music${item.id}">${showMusicRank(objName,item.id,\'r_music\',item.circleMusic.rank,item.circleMusic.voteRank,item.circleMusic.voteUserCount,true)}</div>{else}&nbsp;{/if}</div>\
{else}\
 <div class="check"><input id="$$_music_check_${item.id}" type="checkbox"/></div>\
 <div class="sgname g_t_hide">{if item.allowView!=1 && isPrev}(私密)&nbsp;${item.name|escape}{else}{if item.allowView!=1}(私密)&nbsp;{/if}<a href="http://${item.userName|parentDomain}/music/diy/entry/${item.id}/" target="_blank" class="c05" title="${item.name|escape}">${item.name|escape}</a>{/if}</div>\
 <div class="try">{if item.allowView!=1 && isPrev}&nbsp;{else}<a class="n_ k0m" href="http://${item.userName|parentDomain}/music/diy/entry/${item.id}/" target="_blank" title="歌曲试听">&nbsp;</a>{/if}</div>\
 <div class="sger g_t_hide">${item.artist|default:"&nbsp;"|escape}</div>\
 <div class="ctgry"><span class="p_{if item.type==0} p14m{elseif item.type==1} p15m{else} p16m{/if}">&nbsp;</span></div>\
 <div class="time c07">${item.duration|default:0|toTimeLength}</div>\
 <div class="popular c07">${item.viewCount|default:0}</div>\
 <div class="comments">{if item.allowView!=1 && isPrev}${item.commentCount|default:0}{else}<a class="c06" href="http://${item.userName|parentDomain}/music/diy/entry/${item.id}/" target="_blank">${item.commentCount|default:0}</a>{/if}</div>\
 {if isPrev == false}\
  <div class="edit"><span class="n_ e7m g_c_hand e" onclick="${objName}.editDiyMusic(\'${item.id}\');" title="编辑">&nbsp;</span><span class="n_ e8m d">&nbsp;</span></div>\
 {else}\
  <div class="collect">{if (item.allowView!=1 || item.allowCollect!=1)&& isPrev}&nbsp;{else}<span class="n_ k16 g_c_hand" onclick="${objName}.collectMusic(\'${item.id}\');" title="收藏">&nbsp;</span>{/if}</div>\
 {/if}\
 <div class="rank"><div id="r_diy${item.id}">${showMusicRank(objName,item.id,\'r_diy\',item.rank,item.voteRank,item.voteUserCount,isPrev&&item.allowView==1)}</div></div>\
{/if}\
');
var jst_music_list=new String('\
 <div id="$$_music_list" class="g_mus_mlist{if isDiy} g_mus_mlist_diy{/if} g_c_enable">\
  <div id="$$_music_base" class="head c09">\
   <div class="check">&nbsp;</div><div class="sgname">歌曲名{if isPrev == false && allowDrag == true}　<span class="c06 g_c_ul g_c_hand" onclick="${objName}.sortMusic();">音乐排序</span>{/if}</div><div class="try">试听</div><div class="sger">歌手</div><div class="ctgry">&nbsp;</div><div class="time">时间</div><div class="popular">人气</div><div class="comments">评论</div>{if !isDiy}<div class="ring">铃声</div>{/if}\
   {if isPrev == false}<div class="edit">编辑</div>{else}<div class="collect">收藏</div>{/if}<div class="rank">评价</div>\
  </div>\
  <div class="body"{if items!=null && items.length > 10} style="height:300px;"{/if}>\
  {for item in items}\
   <div id="$$_music_${item.id}" class="item g_htc_selitm">\
   '+jst_music_item_prev+'\
   </div>\
  {forelse}\
   <div class="item" style="width:300px;">&nbsp;</div>\
  {/for}\
  </div>\
  <br class="g_p_clear" />\
 </div>\
');
var jst_music_item_edit=new String('\
 {macro createInputText(sId,sValue,iLen,iWidth)}\
  <input type="text" class="bd01 g_c_input g_w_${iWidth|default:90} g_htc_focus" id="${sId}" value="${sValue|default:""|escape}" maxlength="${iLen}" />\
 {/macro}\
{if !isDiy}\
 {if item.musicType > 0}\
 <div class="check">&nbsp;</div>\
 <div class="sgname_edit g_t_hide">${item.name}</div>\
 <div class="sger_edit g_t_hide">${item.author}</div>\
 <div class="album_edit" id="$$_music_album_select${item.id}">&nbsp;</div>\
 <div class="btzone"><input type="button" class="g_c_button bd01 butn c05" id="$$_music_submit${item.id}" value="确 定" onclick="${objName}.saveEditMusic(\'${item.id}\')"/>　<input type="button" class="g_c_button bd01 butn c05" id="$$_music_cancel${item.id}" value="取 消" onclick="${objName}.cancelEditMusic(\'${item.id}\')"/></div>\
 {else}\
 <div class="check">&nbsp;</div>\
 <div class="sgname_edit g_t_hide">${createInputText("$$_music_name"+item.id,item.name,50)}</div>\
 <div class="sger_edit g_t_hide">${createInputText("$$_music_author"+item.id,item.author,200)}</div>\
 <div class="album_edit" id="$$_music_album_select${item.id}">&nbsp;</div>\
 <div class="btzone"><input type="button" class="g_c_button bd01 butn c05" id="$$_music_submit${item.id}" value="确 定" onclick="${objName}.saveEditMusic(\'${item.id}\')"/>　<input type="button" class="g_c_button bd01 butn c05" id="$$_music_cancel${item.id}" value="取 消" onclick="${objName}.cancelEditMusic(\'${item.id}\')"/></div>\
 <div class="url_edit">地址: ${createInputText("$$_music_url"+item.id,item.url,200,80)}</div>\
 {/if}\
{else}\
 <div class="check">&nbsp;</div>\
 <div class="sgname_edit g_t_hide">${createInputText("$$_music_name"+item.id,item.name,50)}</div>\
 <div class="sger_edit g_t_hide">${item.artist}</div>\
 <div class="album_edit">&nbsp;</div>\
 <div class="btzone"><input type="button" class="g_c_button bd01 butn c05" id="$$_music_submit${item.id}" value="确 定" onclick="${objName}.saveEditDiyMusic(\'${item.id}\')"/>　<input type="button" class="g_c_button bd01 butn c05" id="$$_music_cancel${item.id}" value="取 消" onclick="${objName}.cancelEditDiyMusic(\'${item.id}\')"/></div>\
{/if}\
');
var jst_music_album_list=new String('\
 {for album in albumList}\
  <div class="item g_t_hide" onclick="${objName}.selectAlbum(\'${album.id}\')"><div class="g_htc_item{if selectedId == album.id} g_htc_item_selected{/if}"><span>&#183;</span>${album.name|default:" "|erase:5|escape}(${album.musicCount|default:0})</div></div>\
 {forelse}\
  <div></div>\
 {/for}\
');
var jst_music_album_detail=new String('\
 <div class="g_p_left">\
  <div class="left">\
   <div class="p_ p17"><div class="clip"><table><tr><td align="center" valign="middle"><img src="${album.coverPhBigUrl|default:""|to_img:"http&#58//b.bst.126.net/style/common/musicbox/musicAlbum200.gif"}"/></td></tr></table></div></div>\
   {if !isPrev}\
   <div class="tools">\
    <div class="g_t_12 g_c_hand g_htc_toggle c05" id="$$_album_photo_toggle" onclick="${objName}.bindDownPhotoUpload()"><span>上传专辑封面&nbsp;&nbsp;</span><span class="ck0 n_ n3">&nbsp;</span><span class="ck1 n_ n2">&nbsp;</span></div>\
    <div id="$$_album_photo_frame" class="g_c_enable g_p_left" style="display:none;">\
     <div class="d">请求处理中。。。</div><div class="e">\
     <form target="$$_musicPhotoUploadFrame" id="musicPhotoUpdateForm" method="post" action="'+UD.hostPath+'/editMusicPhotoUpdate.do?mode=comit" enctype="multipart/form-data">\
     <div><input name="imageUrl" type="file" class="bd01" size="18"/><input name="AlbumId" type="hidden" value="${album.id}"/></div>\
     <div><input class="wz_button butn b_ok" type="button" value="确 定" onclick="${objName}.submitMusicAlbumPhoto()"/>&nbsp;&nbsp;&nbsp;\
     <input class="wz_button butn b_cancel" type="button" value="取 消" onclick="${objName}.cancelMusicAlbumPhoto()"/></div>\
     </form>\
     </div>\
    </div>\
   </div>\
   {/if}\
  </div>\
  <div class="right" id="$$_album_detail_zone">\
    <div class="g_t_24 c07 t_b tile" id="$$_album_name"{if !isPrev} title="点击即可编辑"{/if}>{if (album.name==null || album.name=="") && !isPrev}<i style="color:#999">点击这里添加专辑名称</i>{else}${album.name|default:" "|escape}{/if}</div>\
    <div class="pub">{if !isPrev && !isPublishedAlbum(album)}<input type="button" value="发布专辑" class="wz_button butn" onclick="${objName}.publishMusicAlbum();"/>{/if}{if isPublishedAlbum(album)}<a class="rec g_c_hand" href="http://mp3.163.com/iting/album/?fromBlog&tab=48hour" target="_blank">&nbsp;</a>{/if}&nbsp;</div>\
    <div><div class="time c09">${album.musicCount|default:0}首歌曲 ${NetEase.DateTime.formatDate(album.createTime,"yyyy-MM-dd")}</div><div class="renqi c07"><div>人气：<span class="num">${album.popularity|default:0}</span></div><div id="r_album${album.id}">${showMusicRank(objName,album.id,\'r_album\',album.rank,album.voteRank,album.voteUserCount,isPrev)}</div></div><br class="g_p_clear"/></div>\
    <div class="tools c05"><span onclick="simpleScrollTo(\'_$_comments_zone\')">评论(<label id="$$_comment_count_0">${album.commentCount|default:0}</label>)</span><span class="sep bd1c"> | </span>{if !isPrev}<span onclick="${objName}.deleteMusicAlbum(\'${album.id}\');" >删除专辑</span><span class="sep bd1c"> | </span>{/if}\
    <span onclick="commonShareObj.shareResource(\'musicAlbum\',\'${album.name|default:" "|escape}\',\'http://${DomainMap.getParentDomain(UD.hostName)}/music/entry/${album.id}/\');">推荐给博友</span><span class="sep bd1c"> | </span><span onclick="${objName}.openMusicBox(\'${album.id}\');" class="n_ k0m" title="歌曲试听">播放专辑</span>\
    {if isPrev}<span class="sep bd1c"> | </span><span onclick="${objName}.collectMusicAlbum(\'${album.id}\',${album.userId})">收藏专辑</span>{/if}\
    </div>\
    <div class="catgry">分类：<span id="$$_album_tag"></span></div>\
    <p class="intro c07" id="$$_album_description"{if !isPrev} title="点击即可编辑"{/if}>\
     {if (album.description==null || album.description=="") && !isPrev}<i style="color:#999">点击这里添加专辑描述</i>{else}${album.description|default:" "|escape|showBr}{/if}</p>\
    <div class="r_all g_c_hand g_htc_toggle c06 g_t_12" id="$$_album_desc_full" onclick="${objName}.bindDownDesc()"><span>阅读全文&nbsp;&nbsp;</span><span class="ck0 n_ n3">&nbsp;</span><span class="ck1 n_ n2">&nbsp;</span></div>\
  </div>\
 </div>\
');
var jst_music_sort=new String('\
 <div id="$$_music_sort_list" class="g_mus_s">\
 {for item in itemList}\
  {if item.id !=0}\
  <div id="$$_music_sort_${item.id}" class="item g_htc_selitm setDragOnlyClass"><div class="p_ p18m">&nbsp;</div>\
   <div class="i g_t_hide g_t_center">${item.name|default:""|escape}</div></div>\
  {/if}\
 {/for}\
 <br class="g_p_clear" style="float:none;clear:both;"/>\
 <div class="g_t_center g_c_vlmgin"><input type="button" class="wz_button butn b_ok" value="保存顺序" onclick="${objName}.saveSortMusic(this,true);"/><input type="button" class="wz_button butn b_cancel" value="取 消" onclick="${objName}.saveSortMusic(this,false);"/></div>\
 </div>\
');
var jst_add_music_custom=new String('\
  <div><label>歌曲地址：</label><input type="text" maxlength="200" id="custom_url" size="30" value="${url|default:""}"/><label>&nbsp;(必填)</label></div>\
  <div><label>歌曲名　：</label><input type="text" maxlength="50" id="custom_name" size="30" /><label>&nbsp;(必填)</label></div>\
  <div><label>歌手名　：</label><input type="text" maxlength="200" id="custom_author" size="30"/></div>\
  <div><label>专辑　　：</label><span id="album_custom_select_zone"></span>&nbsp;&nbsp;<a href="#" onclick="${objName}.showAddMusicAlbumLayer(\'custom\');return false;">创建新专辑</a></div>\
  <div class="op"><input class="btncm btnok" type="button" value="确定" onclick="${objName}.addMusicCustom()"/></div>\
 ');
var jst_collect_music_visitor=new String('\
 <div style="margin:10px;"><label>选择专辑：</label><span id="album_collect_select_zone"></span></div>\
 <div style="text-align:center;margin:10px;"><input class="btncm btnok" type="button" value="确定" onclick="${objName}.addMusicCollect(\'${id}\',${isMulti|default:false});"/></div>\
');
var jst_musicalbum_collect_list=new String('\
 {macro createTagList(tagIds)}\
  {for id in tagIds}\
  <a href="http://mp3.163.com/iting/album/?tab=search&tag=${id}" class="c06" target="_blank">${musicAlbumTagMap[id]}</a>{if id_index < tagIds.length - 1}&nbsp;&nbsp;{/if}\
  {/for}\
 {/macro}\
<div class="zj-list">\
 {for item in itemList}\
 <div class="item">\
  <div class="item-l"><a href="http&#58//${DomainMap.getParentDomain(item.userName)}/music/entry/${item.id}/" target="_blank"><img src="${item.coverPhSmallUrl|default:""|to_img:"http&#58//b.bst.126.net/style/common/musicbox/musicAlbum75.gif"}" title="查看专辑资料"/></a></div>\
  <div class="item-r">\
   <div class="top"><div class="col0"><a href="http&#58//${DomainMap.getParentDomain(item.userName)}/music/entry/${item.id}/" class="c05" target="_blank" title="查看专辑资料">${item.name|default:""|escape}</a></div><div class="col1"><div id="r_albumcollection${item.id}">${showMusicRank(objName,item.id,\'r_albumcollection\',item.rank,item.voteRank,item.voteUserCount,true)}</div></div>\
   <div class="col2 c08">${NetEase.DateTime.formatDate(item.createTime,"yyyy-MM-dd")}</div></div>\
   <div class="mid c08"><div class="col0">出品人：<a href="http&#58//${DomainMap.getParentDomain(item.userName)}/" class="c06" target="_blank">{if item.nickName == null || item.nickName==""}${item.userName|default:""|escape}{else}${item.nickName|default:""|escape}{/if}</a></div>\
   <div class="col1">分类：{if !isStrBlank(item.tagIds)}${createTagList(item.tagIds.split(","))}{/if}</div>\
   <div class="col2">${item.collectCount|default:0}人收藏</div></div>\
   <div class="btm">\
    <div class="lrc c07">${item.description|default:""|escape|showBr}</div>\
    <div class="tools"><a href="#" class="c06" onclick="${objName}.openMusicBoxCollection(\'${item.id}\',\'${item.userName}\');return false;">播放</a>{if !isPrev}<a href="#" class="c06" onclick="${objName}.deleteMusicAlbumCollection(\'${item.id}\');return false;">删除</a>{/if}</div>\
   </div>\
  </div>\
 </div>\
 {forelse}\
 <div class="g_t_14 c07" style="margin:40px auto;text-align:center;">你没有收藏任何专辑!</div>\
 {/for}\
</div>\
');
var jst_musicalbum_tag=new String('\
 {for id in tagIds}<a class="c05" href="http://mp3.163.com/iting/album/?tab=search&tag=${id}" target="_blank">${musicAlbumTagMap[id]}</a></if>\
 {if id_index < tagIds.length - 1}&nbsp;&nbsp;{else}{if !isPrev}<span class="sep bd1c">|</span> <a href="#" class="c05" onclick="${objName}.editMusicAlbumTag();return false;">修改</a>{/if}{/if}\
 {forelse}\
  {if !isPrev}<a href="#" class="c05 g_c_ul" onclick="${objName}.editMusicAlbumTag();return false;">点击这里添加分类</a>{/if}\
 {/for}\
');
var jst_musicalbum_tag_select=new String('\
 <div class="t">请为您的专辑选择分类，最多可选择3个。</div>\
 <div class="m" id="$$_album_tag_select_zone">\
  <div class="items">\
   {for key in keys}\
    {if parseInt(key) < 100}\
     <div class="item"><input type="checkbox" id="tag_${key}"/><label for="tag_${key}">${values[key_index]}</label></div>\
    {/if}\
   {/for}\
  </div>\
  <div class="items">\
   {for key in keys}\
    {if parseInt(key) >= 100}\
     <div class="item"><input type="checkbox" id="tag_${key}"/><label for="tag_${key}">${values[key_index]}</label></div>\
    {/if}\
   {/for}\
  </div>\
  <br class="g_p_clear"/>\
 </div>\
 <div class="btns">\
  <input class="ok" type="button" value="确  定" onclick="${objName}.submitMusicAlbumTag()"/>\
 </div>\
');
var jst_musicalbum_publish=new String('\
 <div class="t">还差一点点就能发布成功了！</div>\
 {if album.coverPhSmallId <= 0}\
 <div><span class="dot">&#183;</span>给专辑加一张封面，<a href="#" onclick="${objName}.tryPublishMusicAlbum(1);return false;">点击这里</a></div>\
 {/if}\
 {if isStrBlank(album.description)}\
 <div><span class="dot">&#183;</span>给专辑填写一些描述，<a href="#" onclick="${objName}.tryPublishMusicAlbum(2);return false;">点击这里</a></div>\
 {/if}\
 {if isStrBlank(album.tagIds)}\
 <div><span class="dot">&#183;</span>给专辑选择分类，<a href="#" onclick="${objName}.tryPublishMusicAlbum(3);return false;">点击这里</a></div>\
 {/if}\
 <div class="btns">\
  <input class="ok" type="button" value="我知道了" onclick="${objName}.tryPublishMusicAlbum(-1);"/>\
 </div>\
');
var jst_board_music_song=new String('\
 {macro createBoardSong(objName,no,items)}\
 <td width="33%">\
 <div class="fifth">\
  {if items!=null && items.length > 0 }\
  <div class="no selitm c07 g_t_14">NO.${no*15+1}-${(no+1)*15}</div>\
  <table cellpadding="0" cellspacing="0" border="0">\
   <colgroup><col class="col1"/><col class="col2"/><col class="col3"/></colgroup>\
   {for item in items}\
    <tr><td class="g_t_hide"><input type="checkbox" id="bc_${no|escape}_${item.id|escape}"/><span class="c05 g_c_hand" onclick="${objName}.listenMusic(\'${item.id|escape}\',\'bc_${no|escape}_\');">${item.name|default:""|escape}</span></td>\
    <td class="c06 g_t_hide"><a href="${hostPath}/music/search/?key=${item.author|default:""|escape}" target="_blank" class="c06">${item.author|default:""|escape}</a></td>\
    <td><span class="n_ k0m g_c_hand" onclick="${objName}.listenMusic(\'${item.id|escape}\',\'bc_${no|escape}_\');">&nbsp;</span></td></tr>\
   {/for}\
  </table>\
  <div class="tools g_t_12"><span class="c08">选择&nbsp;:&nbsp;</span><a class="c06" href="#" onclick="${objName}.selectAllMusic(1,\'bc_${no|escape}_\');return false;">全选</a>&nbsp;<span class="bd1c">-</span>&nbsp;<a class="c06" href="#" onclick="${objName}.selectAllMusic(-1,\'bc_${no|escape}_\');return false;">反选</a>&nbsp;<span class="bd1c">-</span>&nbsp;<a class="c06" href="#" onclick="${objName}.selectAllMusic(0,\'bc_${no|escape}_\');return false;">取消</a></div>\
  <div><input type="button" class="wz_button butn" value="播放所选" onclick="${objName}.openMusicBox(null,true,\'bc_${no|escape}_\');"/>\
  {if isPrev == false}<input type="button" class="wz_button butn" value="收藏所选" onclick="${objName}.collectMusic(\'bc_${no|escape}_\',true);" />{/if}\
  </div>\
  {/if}\
 </div>\
 </td>\
 {/macro}\
 <div class="single g_t_table">\
 <table>\
 {for i in pages}\
  {if i%3==0}<tr>{/if}\
  ${createBoardSong(objName,i,itemList.slice(i*15,(i+1)*15-1))}\
  {if i%3==2}</tr>\
  <tr><td colspan="3">\
   <div class="foot"><a class="c06 udl" href="#" onclick="${objName}.resetToTop();return false;">返回顶部</a></div>\
  </td></tr>\
  {/if}\
 {/for}\
 </table>\
 </div>\
 ');
var jst_board_music_singer=new String('\
 {if type.charAt(2) == \'m\'}{var t_label=\'男歌手\'}{/if}\
 {if type.charAt(2) == \'f\'}{var t_label=\'女歌手\'}{/if}\
 {if type.charAt(2) == \'o\'}{var t_label=\'乐队组合\'}{/if}\
 <div class="m_singer">\
  <div class="nav g_t_center"><span class="g_t_14{if type.charAt(3)==\'c\'} c07 g_t_bold{else} c06{/if}" onclick="${objName}.loadMusicBoard(\'s_${type.charAt(2)}c.js\',true)">华语${t_label}</span><span class="bd1c">|</span><span class="g_t_14{if type.charAt(3)==\'j\'} c07 g_t_bold{else} c06{/if}" onclick="${objName}.loadMusicBoard(\'s_${type.charAt(2)}j.js\',true)">日韩${t_label}</span><span class="bd1c">|</span><span class="g_t_14{if type.charAt(3)==\'e\'} c07 g_t_bold{else} c06{/if}" onclick="${objName}.loadMusicBoard(\'s_${type.charAt(2)}e.js\',true)">欧美${t_label}</span></div>\
  <div class="idx">\
   <table class="g_t_bold" border="0" cellspacing="0" cellpadding="0"><tr>\
   {for c in cs}\
    <td class="g_t_hide g_t_bold c06 g_t_14"><a href="#" onclick="${objName}.selectAuthorByIndex(\'${c}\');return false;">${c}</a></td>\
   {/for}\
   </tr></table>\
  </div>\
  <div class="g_table">\
   {for item in itemList}\
   <table>\
    <th id="ba_${item.key}" class="selitm c07 g_t_14" colspan="5">${item.key}</th>\
    {var i = 0}\
    {for name in item.nameList}\
     {if name_index%5 == 0}<tr>{var i = 0}{/if}\
     {var i = i+1}\
     <td class="g_t_hide"><a href="${hostPath}/music/search/?key=${name}" title="${name}" target="_blank" class="c05 g_t_14 g_t_hide">${name}</a></td>\
     {if name_index%5==4}</tr>{/if}\
    {/for}\
    {if i < 5}\
     <td colspan="${5-i}"></td></tr>\
    {/if}\
   </table>\
   {/for}\
  </div>\
 </div>\
 ');
var jst_board_hot_singer=new String('\
 <div class="g_table h_singer">\
  <table cellpadding="0" cellspacing="0" border="0">\
  {var i = 0}\
  {for name in itemList}\
   {if name_index%5 == 0}<tr>{var i = 0}{/if}\
    {var i = i+1}\
    <td class="serial g_t_14 c08 g_t_hide">${1+parseInt(name_index)}.&nbsp;<a href="${hostPath}/music/search/?key=${name}" title="${name}" target="_blank" class="c05 g_t_14 g_t_hide">${name}</a></td>\
   {if name_index%5==4}</tr>{/if}\
  {/for}\
  {if i < 5}\
   <td colspan="${5-i}"></td></tr>\
  {/if}\
  </table>\
 </div>\
');
var jst_search_result=new String('\
 <table cellspacing="0" cellpadding="0" border="0" width="98%">\
  <tr valign="middle" height="30" class="c09 g_t_left">\
   <td width="30px">&nbsp;</td>\
   <td><span class="g_t_12">歌曲</span></td>\
   <td width="100px"><span class="g_t_12">歌手</span></td>\
   <td width="140px"><span class="g_t_12">专辑</span></td>\
   <td width="60px"><span class="g_t_12">试听</span></td>\
   <td width="60px"><span class="g_t_12">收藏</span></td>\
   <td width="60px"><span class="g_t_12">铃声</span></td>\
  </tr>\
  {for item in itemList}\
  <tr valign="middle" height="30" class="g_htc_selitm">\
   <td width="30px"><input type="checkbox" id="$$_r_check_${item.id}" value="checkbox"/></td>\
    <td>{if item.lrc!=null && item.lrc.trim()!=""}<span class="n_ k3m g_c_hand" title="歌词" onclick="window.open(\'http://s.blog.163.com/s/slrc.s?p=${item.lrc}&n=${item.name|default:""|js_string}&a=${item.author|default:""|js_string}\',\'歌词\',\'resizable=no,scrollbars=yes,status=yes,width=440px,height=400px\')">&nbsp;</span>{/if}\
    <a href="#" onclick="${objName}.listenMusic(\'${item.id}\');return false;" class="g_t_14 g_t_wrap c05" title="${item.name|default:" "|escape}">${item.name|default:" "|escape}</a></td>\
    <td width="100px" class="g_t_hide"><a href="${hostPath}/music/search/?key=${item.author|default:""|escape}" target="_blank" class="g_t_14 g_t_hide c06" title="${item.author|default:" "|escape}">${item.author|default:" "|escape}</div></td>\
    <td width="140px" class="g_t_hide"><div class="g_t_14 g_t_hide c07" title="${item.albumName|default:" "|escape}">${item.albumName|default:" "|escape}</div></td>\
    <td width="60px"><span class="n_ k0m g_c_hand" onclick="${objName}.listenMusic(\'${item.id}\')" title="歌曲试听">&nbsp;</span></td>\
   <td width="60px"><span class="n_ k16m g_c_hand" onclick="${objName}.collectMusic(null,false,\'${item.id}\');" title="歌曲收藏">&nbsp;</span></td>\
   <td width="60px">{if item.wapId && item.wapId > \'1000\'}<a class="n_ k2m" href="http://my.12530.com/newchannel/orderTone/${item.wapId}/1/5300/blog/-/-/order.htm" target="_blank" title="铃声下载">&nbsp;</a>{else}&nbsp;{/if}</td>\
  </tr>\
  {/for}\
 </table>\
');
var jst_collect_music=new String('\
 <div style="margin:10px;"><label>选择专辑：</label><span id="album_collect_select_zone"></span>&nbsp;&nbsp;<a href="#" onclick="${objName}.showAddMusicAlbumLayer(\'collect\');return false;">创建新专辑</a></div>\
 <div style="text-align:center;margin:10px;"><input class="btncm btnok" type="button" value="确定" onclick="${objName}.addMusicCollect(\'${key|default:""}\',${isMulti|default:false},\'${id|default:""}\');"/></div>\
');
var jst_music_album_add=new String('\
 <div class="g_t_center g_c_mvdn"><label>专辑名称:&nbsp;</label><input type="text" class="g_w_70 g_c_input g_h_ipt g_htc_focus" maxlength="50" id="add_album_name"/></div>\
 <div class="g_t_center g_c_mvdn" id="album_add_zone">\
  <input type="button" class="btncm btnok" value="确　定" onclick="${objName}.submitAddAlbum();" />\
  <span>&nbsp;&nbsp;&nbsp;&nbsp;</span>\
  <input type="button" class="btncm btncc" value="取　消" onclick="${objName}.cancelAddAlbum();" />\
 </div>\
');
if(typeof MusicTrackBean=='undefined')
var MusicTrackBean={}
MusicTrackBean._path='/s-d';
MusicTrackBean.voteMusicRank=function(name,author,rank,callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','voteMusicRank',name,author,rank,{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.addCollectUser=function(names,authors,callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','addCollectUser',names,authors,{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.voteMusicFavour=function(name,author,favour,callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','voteMusicFavour',name,author,favour,{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.postMusicCircleComment=function(name,author,title,content,callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','postMusicCircleComment',name,author,title,content,{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.setMusicAuthorFavour=function(likes,dislikes,callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','setMusicAuthorFavour',likes,dislikes,{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.getMusicAuthorFavourAll=function(callback){
if(UD.visitorName==null||UD.visitorRank<MusicConst.RANK_GUEST)return;
dwr.engine._execute(MusicTrackBean._path,'MusicTrackBean','getMusicAuthorFavourAll',{
callback:callback,
errorHandler:function(){if(callback)callback(false);},
headers:{'request-username':UD.visitorName}
});
}
MusicTrackBean.getMusicNavigatorList=function(offset,callBack){
musicLoading._preHook();
new Ajax.Request("/s/navigator.s",{
method:'post',
requestHeaders:MusicSearch._generateRequestHeaders(),
parameters:'op=n&p='+offset,
onComplete:function(request){
musicLoading._postHook();
var musicList=null;
try{
musicList=eval(request.responseText);
}catch(e){}
callBack(musicList);
}
})
}
MusicTrackBean.getMusicChartList=function(type,callBack){
musicLoading._preHook();
new Ajax.Request("/s/navigator.s",{
method:'get',
parameters:'op=c'+'&t='+type,
onComplete:function(request){
musicLoading._postHook();
var musicList=null;
try{
musicList=eval(request.responseText);
}catch(e){}
callBack(musicList);
}
})
}
var MusicConst={
DEFAULT_ALBUM:0,
ALBUM_PAGE:4,
SYS_MUSIC:1,
DIY_MUSIC:2,
SEARCH_MUSIC:-1,
CUSTOM_MUSIC:-2,
RANK_GUEST:0
}
if(NetEase==undefined){
var NetEase={};
}
NetEase.MusicAbstract=Class.create();
NetEase.MusicAbstract.prototype={
initialize:function(objName,diyMusicStyle,albumList,selectedAlbumId){
this.objName=objName;
this.diyMusicStyle=diyMusicStyle;
this.albumList=albumList;
this.albumList.each(function(e){if(e.musicList&&e.musicList.length==0)e.musicList=null;});
var album;
var index;
if(selectedAlbumId=="diy"){
this.loadDiyMusic();
this.showAlbumList();
return;
}
for(var i=0;i<this.albumList.length;i++){
if(this.albumList[i].id==selectedAlbumId){
album=this.albumList[i];
index=i;
break;
}
}
if(album){
this.selectAlbum(album.id);
this.showAlbumList(album.id);
}else{
this.selectAlbum(this.albumList[0].id);
this.showAlbumList(this.albumList[0].id);
}
},
openMusicBoxByAlbum:function(){
if(this.curSelectedAlbum)
this.openMusicBox(this.curSelectedAlbum.id,false);
else{
this.openMusicBox((this.setup=="diy_music")?"diy":null,false);
}
},
openMusicBox:function(aId,s,userName){
if(s){
var musicList=this._preparePlayMusic();
if(musicList==null||musicList.length==0)return;
if(this.musicBox==null||this.musicBox.closed){
this._setToPlayMusic(musicList);
this.musicBox=window.open(UD.hostPath+"/m/?t=1","_blank","resizable=no,scrollbars=no,status=yes,width=772px,height=595px");
}else{
try{
this.musicBox.appendMusicList(musicList);
}catch(e){
this._setToPlayMusic(musicList);
this.musicBox=window.open(UD.hostPath+"/m/?t=1","_blank","resizable=no,scrollbars=no,status=yes,width=772px,height=595px");
}
}
}else{
var path="http://"+DomainMap.getParentDomain(userName?userName:UD.hostName);
window.open(path+"/m/?t=0&aid="+encodeURIComponent(aId),"_blank","resizable=no,scrollbars=no,status=yes,width=772px,height=595px");
}
},
openMusicBoxCollection:function(id,userName){
this.openMusicBox(id,false,userName);
},
listenMusic:function(id){
var music=this._getMusicBySetup(id);
if(music){
listenMusic(music.name,music.author,music.url,music.lrc,music.wapId,music);
}
},
collectMusicAlbum:function(aId,albumUserId){
if(UD.visitorId<=0){
showLoginDlg('blog.163.com');
return;
}
MusicBean.collectMusicAlbum(aId,albumUserId,function(s){
if(s==1){
dwrlog("收藏专辑成功!","ok");
}else if(s==-1){
dwrlog("收藏专辑个数超过最大限制!","info");
}else if(s==-2){
dwrlog("你已经收藏过该专辑!","info");
}else{
dwrlog("收藏专辑失败!","error");
}
}.bind(this));
},
loadAllMusic:function(orderBy,reuse){
this.curSelectedAlbum=null;
this.setup="all_music";
this._renderMusicZone();
if(reuse&&this.musicListCachePage){
this.musicListCachePage.show();
return;
}
if(!this.lastOrderStat){
this.lastOrderStat={};
this.lastOrderStat.orderBy=orderBy;
this.lastOrderStat.isAsc=true;
}else{
if(this.lastOrderStat.orderBy==orderBy){
this.lastOrderStat.isAsc=!this.lastOrderStat.isAsc;
}else{
this.lastOrderStat.orderBy=orderBy;
this.lastOrderStat.isAsc=true;
}
}
if(this.musicListCachePage)delete this.musicListCachePage;
var musicCount=0;
this.albumList.each(function(e){
musicCount+=e.musicCount;
}.bind(this));
this.musicListCachePage=new NetEase.PageNumber(this.objName+".musicListCachePage",{
loadFunc:this._getMusicListAll.bind(this),
loadParam:{orderBy:this.lastOrderStat.orderBy,isAsc:this.lastOrderStat.isAsc},
presentFunc:this._presentMusicListAll.bind(this),
userPresentFuncParam:{orderBy:this.lastOrderStat.orderBy,isAsc:this.lastOrderStat.isAsc},
pageSize:10,
totalSize:musicCount,
prefetch:true,
prefetchMulti:2,
markID:'$$_music_page:$$_music_page_down',
updateIterator:function(item,e){if(item.id==e.id){return true;}return false;}.bind(this),
delIterator:function(id,e){if(id==e.id){return true;}return false;}.bind(this)
});
this.musicListCachePage.show();
},
showAlbumList:function(selectedId){
$('$$_album_list').innerHTML=this._renderTemplate(jst_music_album_list,{selectedId:selectedId,albumList:this.albumList});
},
selectAlbum:function(id){
this.setup="select_album";
this._renderMusicZone(id);
var album=this._detectMusicAlbum(id);
this.curSelectedAlbum=album;
if(album.id!=MusicConst.DEFAULT_ALBUM){
this._presentAlbumDetail(album);
if(!this._isPrev()){
this._setAlbumDetailEditable(album);
}
}
this._showMusicListByAlbum(album);
},
loadDiyMusic:function(){
this.curSelectedAlbum=null;
this.setup="diy_music";
this._renderMusicZone();
if(this.diyMusicList){
this._presentDiyMusic(this.diyMusicList);
this._loadDiyMusicOthers();
}else{
DiyMusicBean.getMusicListViewAll(0,0,function(dataList){
if(this.setup=="diy_music"){
this.diyMusicList=dataList;
this._presentDiyMusic(this.diyMusicList);
this._loadDiyMusicOthers();
}
}.bind(this));
}
},
loadMusicAlbumCollection:function(){
this.setup="album_collection";
this._renderMusicZone();
if(!this.musicAlbumCollectionPage){
MusicBean.getMusicAlbumCollectionCount(this._afterLoadMusicAlbumCollectionCount.bind(this));
}else{
this.musicAlbumCollectionPage.show();
}
},
bindDownDesc:function(){
if(/\boverf\b/g.test($('$$_album_detail_zone').className))
Element.removeClassName($('$$_album_detail_zone'),'overf');
else
Element.addClassName($('$$_album_detail_zone'),'overf');
},
inputAddMusic:function(obj,focus){
if(focus&&obj.value=='-填入自定义音乐网址 或 歌曲名、歌手名-'){
Element.removeClassName(obj,'prmpt');
obj.value='';
return;
}
if(!focus&&obj.value.trim()==''){
Element.addClassName(obj,'prmpt');
obj.value='-填入自定义音乐网址 或 歌曲名、歌手名-';
}
},
selectAllMusic:function(iStat,key){
if(!key)
key="$$_music_check_";
var _objs=document.getElementsByTagName("input")
var _id;
for(var i=0;i<_objs.length;i++){
_id=_objs[i].id;
if(_objs[i].type.toLowerCase()=="checkbox"&&_id.indexOf(key)==0){
if(iStat==0){
_objs[i].checked=false;
}else
if(iStat==1){
_objs[i].checked=true;
}else{
if(_objs[i].checked)
_objs[i].checked=false;
else
_objs[i].checked=true;
}
}
}
},
getToPlayMusic:function(){
return this._toPlayMusicList;
},
voteMusicRank:function(id,type,rank){
if(UD.visitorRank<0){
showLoginDlg(UD.serverName);
return;
}
if(type=='r_diy'){
var music=this._getDataById(this.diyMusicList,id);
if(music){
DiyMusicBean.voteMusicRank(id,rank,function(s){
if(s){
dwrlog('投票成功!','ok');
music.voteUserCount++;
music.voteRank+=rank;
$(type+id).innerHTML=showMusicRank(this.objName,id,type,rank,music.voteRank,music.voteUserCount,false);
}else{
dwrlog('投票失败!','error');
}
});
}
}else
if(type=='r_album'){
var album=this.curSelectedAlbum;
MusicBean.voteMusicAlbumRank(id,album.userId,rank,function(s){
if(s){
dwrlog('投票成功!','ok');
album.voteUserCount++;
album.voteRank+=rank;
$(type+id).innerHTML=showMusicRank(this.objName,id,type,rank,album.voteRank,album.voteUserCount,false);
}else{
dwrlog('投票失败!','error');
}
}.bind(this));
}else
if(type=='r_albumcollection'){
var album=this._getDataById(this.musicAlbumCollectionPage.cacheData,id);
if(album){
MusicBean.voteMusicAlbumRank(id,album.userId,rank,function(s){
if(s){
dwrlog('投票成功!','ok');
album.voteUserCount++;
album.voteRank+=rank;
$(type+id).innerHTML=showMusicRank(this.objName,id,type,rank,album.voteRank,album.voteUserCount,false);
}else{
dwrlog('投票失败!','error');
}
}.bind(this));
}
}else if(type=='r_music'){
var music=this._getMusicBySetup(id);
if(music){
MusicTrackBean.voteMusicRank(music.name,music.author,rank,function(s){
if(s){
dwrlog('投票成功!','ok');
music.circleMusic.voteUserCount++;
music.circleMusic.voteRank+=rank;
$(type+id).innerHTML=showMusicRank(this.objName,id,type,rank,music.circleMusic.voteRank,music.circleMusic.voteUserCount,false);
}else{
dwrlog('投票失败!','error');
}
}.bind(this));
}
}
},
voteMusicStyleRank:function(type){
if(UD.visitorId<=0){
showLoginDlg('blog.163.com');
return;
}
DiyMusicBean.voteMusicStyleRank(type,function(s){
if(s){
if(type==0)this.diyMusicStyle.goodRank++;
else this.diyMusicStyle.badRank++;
dwrlog('投票成功!','ok');
}else{
dwrlog('投票失败!','ok');
}
$('$_music_style_rank').innerHTML='有才：<span class="num">'+this.diyMusicStyle.goodRank+'</span>无才：<span class="num">'+this.diyMusicStyle.badRank+'</span>';
}.bind(this));
},
collectMusic:function(id,isMulti){
if(UD.visitorId<=0){
showLoginDlg('blog.163.com');
return;
}
if(this.visitorAlbumList!=null){
this._showAlbumList(id,isMulti,this.visitorAlbumList);
}else{
MusicBean.getMusicAlbumListByVisit(-1,this._showAlbumList.bind(this,id,isMulti));
}
},
addMusicCollect:function(id,isMulti){
var albumId=$('album_collect_select').value;
if(!isMulti){
if(this.setup=="diy_music"){
DiyMusicBean.collectDiyMusic(id,albumId,function(s){
if(s){
dwrlog("收藏音乐成功!","ok");
if(this.musicCollectLayer)this.musicCollectLayer.hiddenWindow();
}else{
dwrlog("收藏音乐失败!","error");
}
}.bind(this));
}else{
MusicBean.collectMusic([id],albumId,function(s){
if(s){
dwrlog("收藏音乐成功!","ok");
if(this.musicCollectLayer)this.musicCollectLayer.hiddenWindow();
var music=this._getMusicBySetup(id);
if(music&&music.name!=''&&music.author!='')
MusicTrackBean.addCollectUser([music.name],[music.author]);
}else{
dwrlog("收藏音乐失败!","error");
}
}.bind(this));
}
}
},
_showAlbumList:function(id,isMulti,albumList){
this.visitorAlbumList=albumList;
if(!this.musicCollectLayer){
this.musicCollectLayer=jsWindowManager.createWindow('music_collect',{
className:"layer-search-music",title:'收藏音乐',needCover:true,width:300,height:100,notKeepPos:true
});
}
this.musicCollectLayer.panel.innerHTML=this._renderTemplate(jst_collect_music_visitor,{id:id,isMulti:isMulti});
$('album_collect_select_zone').innerHTML=this._createCommonSelect(albumList,'album_collect_select',-1,'95%');
this.musicCollectLayer.showWindow();
},
_renderAlbumInfoContent:function(album,showList){
this._presentAlbumDetail(album);
this._setAlbumDetailEditable(album);
if(showList)
this._showMusicListPageByAlbum(album);
},
_getMusicListAll:function(params,callback){
MusicBean.getMusicList(params.orderBy,params.isAsc,params.offset,params.limit,
function(dataList){
if(this.setup=="all_music")
callback(dataList);
}.bind(this)
);
},
_afterLoadMusicAlbumCollectionCount:function(ds){
if(ds==null||ds.length!=2){
return;
}
this.musicAlbumCollectionCount=ds;
if(!this.musicAlbumCollectionPage){
$('_$_collect_tip').innerHTML='已收藏专辑 '+this.musicAlbumCollectionCount[0]+' 个，还可以收藏 '+this.musicAlbumCollectionCount[1]+' 个';
this.musicAlbumCollectionPage=new NetEase.PageNumber(this.objName+".musicAlbumCollectionPage",{
loadFunc:this._getMusicAlbumCollectionList.bind(this),
presentFunc:this._presentMusicAlbumCollection.bind(this),
pageSize:5,
totalSize:ds[0],
markID:'$$_collect_page',
updateIterator:function(item,e){if(item.id==e.id){return true;}return false;}.bind(this),
delIterator:function(id,e){if(id==e.id){return true;}return false;}.bind(this)
});
}
this.musicAlbumCollectionPage.show();
},
_getMusicAlbumCollectionList:function(params,callback){
MusicBean.getMusicAlbumCollectionList(params.offset,params.limit,
function(dataList){
if(this.setup=="album_collection")
callback(dataList);
}.bind(this));
},
_presentMusicListAll:function(musicList,params){
this.curShowMusicList=musicList;
this._prepareSort(false);
$('$$_music_list_zone').innerHTML=this._renderTemplate(jst_music_list,{isDiy:false,allowSort:true,allowDrag:false,orderBy:params.orderBy,isAsc:params.isAsc,items:musicList||[]});
},
_presentAlbumDetail:function(album){
$('$$_album_desc').innerHTML=this._renderTemplate(jst_music_album_detail,{album:album});
this._presentAlbumTag(album.tagIds);
this._presentAlbumDescFull();
},
_presentAlbumDescFull:function(){
if($('$$_album_description').scrollHeight>=140){
Element.show('$$_album_desc_full');
}else{
Element.hide('$$_album_desc_full');
}
},
_presentAlbumTag:function(ids){
$('$$_album_tag').innerHTML=this._renderTemplate(jst_musicalbum_tag,{tagIds:isStrBlank(ids)?null:ids.split(',')});
},
_showMusicListByAlbum:function(album){
if(album.musicList){
this._showMusicListPageByAlbum(album);
this._loadMusicAlbumOthers(album);
}else{
MusicBean.getMusicListByAlbumId(album.id,function(dataList){
if(this.setup=="select_album"&&this.curSelectedAlbum&&this.curSelectedAlbum.id==album.id){
album.musicList=dataList;
this._showMusicListPageByAlbum(album);
this._loadMusicAlbumOthers(album);
}
}.bind(this));
}
},
_showMusicListPageByAlbum:function(album){
if(album==null)return;
this.musicListPageByAlbum=
new NetEase.PageNumber(this.objName+".musicListPageByAlbum",{
presentFunc:this._presentMusicListByAlbum.bind(this),
pageSize:10,
totalSize:album.musicList?album.musicList.length:0,
markID:'$$_music_page:$$_music_page_down',
updateIterator:function(item,e){if(item.id==e.id){return true;}return false;}.bind(this),
delIterator:function(id,e){if(id==e.id){return true;}return false;}.bind(this)
});
this.musicListPageByAlbum.initCacheData(album.musicList||[]);
this.musicListPageByAlbum.show();
},
_presentMusicListByAlbum:function(musicList){
this.curShowMusicList=musicList;
this._prepareSort(false);
$('$$_music_list_zone').innerHTML=this._renderTemplate(jst_music_list,{isDiy:false,allowort:false,allowDrag:true,orderBy:0,isAsc:true,items:musicList||[]});
},
_loadMusicAlbumOthers:function(album){
if(album&&album.id!=MusicConst.DEFAULT_ALBUM){
loadRecentVisitorByAlbum(album);
loadCommentByAlbum(album);
}
},
_presentDiyMusic:function(musicList){
$('$$_music_list_zone').innerHTML=this._renderTemplate(jst_music_list,{isDiy:true,allowSort:false,allowDrag:false,orderBy:0,isAsc:true,items:musicList||[]});
},
_presentMusicAlbumCollection:function(collectionList){
$('_$_collect_list_zone').innerHTML=this._renderTemplate(jst_musicalbum_collect_list,{itemList:collectionList||[]});
},
_loadDiyMusicOthers:function(){
loadRecentVisitorByDiy(this.diyMusicStyle);
loadCommentByDiy(this.diyMusicStyle);
},
_prepareSort:function(sort){
if(sort){
if($('$$_album_selctrl'))
Element.hide('$$_album_selctrl');
if($('$$_album_ctrls'))
Element.hide($('$$_album_ctrls'));
}else{
if($('$$_album_selctrl'))
Element.show('$$_album_selctrl');
if($('$$_album_ctrls'))
Element.show($('$$_album_ctrls'));
}
},
_resetMusicListZone:function(){
$('$$_music_list_zone').innerHTML=g_loadingBar("margin:10px;");
},
_renderMusicZone:function(id){
if(this.setup=="album_collection"){
Element.hide('_$_music_zone');
Element.show('_$_collect_zone');
$('_$_collect_list_zone').innerHTML=g_loadingBar("margin:10px;");
return;
}
Element.hide('_$_collect_zone');
Element.show('_$_music_zone');
if(this.setup=="all_music"){
$('_$_music_zone').className="g_all";
}else
if(this.setup=="select_album"){
if(id==MusicConst.DEFAULT_ALBUM){
$('_$_music_zone').className="g_unclass";
}else{
$('_$_music_zone').className="g_album";
}
}else
if(this.setup=="diy_music"){
$('_$_music_zone').className="g_diy";
}
this._resetMusicListZone();
},
_detectMusicAlbum:function(id){
return this._getDataById(this.albumList,id);
},
_getMusicBySetup:function(id){
return this._getDataById(this.curShowMusicList,id);
},
_getDataById:function(dataList,id){
if(dataList==null)
return null;
var _music=dataList.detect(
function(e){
if(e.id==id)
return true;
return false;
}
);
return _music;
},
_renderTemplate:function(template,data){
if(template==null)return'';
data=data||{};
data.objName=this.objName;
data.isPrev=this._isPrev();
return template.processUseCache(data);
},
_getSelectedMusic:function(source,key,useIndex){
var _selectedMusic=[];
if(!source)source=this.curShowMusicList;
if(!source)return null;
if(!key)key='$$_music_check_';
source.each(function(e,index){
if(useIndex){
if($(key+index)&&$(key+index).checked==true){
_selectedMusic.push(e);
}
}else{
if($(key+e.id)&&$(key+e.id).checked==true){
_selectedMusic.push(e);
}
}
});
return _selectedMusic;
},
_setToPlayMusic:function(musicList){
this._toPlayMusicList=musicList;
},
_preparePlayMusic:function(){
if(this.setup=="diy_music"){
var musicList=this._getSelectedMusic(this.diyMusicList);
var returnList=[];
var music;
for(var i=0;i<musicList.length;i++){
music=musicList[i];
if(UD.visitorId!=UD.hostId&&music.allowView!=1)
continue;
returnList.push(Object.extend(Object.extend({},music),{author:music.artist,url:music.listenUrl,musicType:MusicConst.DIY_MUSIC,diyMusicId:music.id,diyMusicUserId:music.userId,isDiy:true}));
}
return returnList;
}else
return this._getSelectedMusic();
},
_createCommonSelect:function(albumList,sId,sSelectId,sWidth){
var _sel='<select nohide="true" class="bd01 g_c_mpdin" id="'+sId+'" style="width:'+sWidth+'">';
var _albumList=albumList;
for(var i=0;i<_albumList.length;i++){
if(_albumList[i].id==sSelectId)
_sel+='<option value="'+_albumList[i].id+'" selected="true">'+_albumList[i].name+'</option>';
else
_sel+='<option value="'+_albumList[i].id+'">'+_albumList[i].name+'</option>';
}
_sel+='</select>';
return _sel;
},
_isVaildMusic:function(url){
if(url!=null&&/^(.+)\.mp3|mp4|mp3pro|mp2|mp1|mpa|m4a|wma|wav|au|mid|midi|rmi$/i.test(url)){
if(url.indexOf("mp3.blog.163.com")>=0||url.indexOf("mp3.bimg.126.net")>=0)return true;
if(url.indexOf("blog.163.com")>=0)return false;
return true;
}
return false;
},
_isPrev:function(){
return true;
}
}
function loadRecentVisitorByAlbum(album){
if(album==null)return;
if(UD.visitorId!=UD.hostId)album.popularity++;
$('_$_recent_visitor_count').innerHTML=album.popularity+'';
Element.show('_$_recent_visitor');
$('_$_recent_collector_count').innerHTML=album.collectCount+'';
Element.show('_$_recent_collector');
$('_$_recent_visitor_items').innerHTML='';
$('_$_recent_collector_items').innerHTML='';
MusicBean.getMusicAlbumVisitor(album.id,function(visitorList){
if(visitorList==null)return;
if(visitorList[0]){
$('_$_recent_visitor_items').innerHTML=showRecentVisiotr(visitorList[0]);
}
if(visitorList[1]){
$('_$_recent_collector_items').innerHTML=showRecentVisiotr(visitorList[1]);
}
});
}
function loadRecentVisitorByDiy(diyMusicStyle){
if(UD.visitorId!=UD.hostId)diyMusicStyle.viewCount++;
$('_$_recent_visitor_count').innerHTML=diyMusicStyle.viewCount+'';
Element.show('_$_recent_visitor');
Element.hide('_$_recent_collector');
$('_$_recent_visitor_items').innerHTML='';
DiyMusicBean.getDiyMusicVisitor(function(visitor){
if(visitor){
$('_$_recent_visitor_items').innerHTML=showRecentVisiotr(visitor);
}
});
}
function showRecentVisiotr(visitor){
var ss=[];
if(visitor.visitorNames!=null){
var visitNames=visitor.visitorNames.split("_,!&,_");
var visitNickNames=visitor.visitorNicknames.split("_,!&,_");
var visitorImageUrls=visitor.visitorImageUrls.split("_,!&,_");
if(UD.visitorRank<=-100){
ss.push('<div class="ritem ritem_unlogin">');
ss.push('<a href="#" onclick="showLoginDlg(DomainMap.serverHostName);return false;"><img class="brd01" src="http://b.bst.126.net/style/common/anonymous60.jpg" /></a>');
ss.push('<p><a href="#" onclick="showLoginDlg(DomainMap.serverHostName);return false;"><em>登录</em>后，您可以在此留下足迹。</a></p></div>');
}
for(var i=0;i<visitNames.length;i++){
ss.push('<div class="ritem"><a style="display:block; width:40px; height:40px; background-color:#999;" target="_blank" href="http://'+DomainMap.getParentDomain(visitNames[i])+'/">');
ss.push('<img border="0" src="');
if(visitorImageUrls[i]!=null&&visitorImageUrls[i]!='-1000')
ss.push(visitorImageUrls[i]);
else
ss.push(Const.STDomain+'/style/common/user_default.gif');
ss.push('" class="brd01"/></a>');
ss.push('<p class="g_t_hide"><a target="_blank" href="http://'+DomainMap.getParentDomain(visitNames[i])+'/">');
ss.push((visitNickNames[i]==null)?visitNames[i]:visitNickNames[i]);
ss.push('</a></p></div>');
}
}
return ss.join('');
}
function loadCommentByAlbum(album){
if(!album){
Element.hide('_$_comment_div');
return;
}
MusicBean.getMusicCommentList(album.id,2,0,10,{
callback:function(data){
loadComment(album.id,2,album.commentCount,album.mainCommentCount,data,UD.commentRank,MusicBean,function(diff){album.commentCount+=diff;});
}
});
}
function loadCommentByDiy(diyMusicStyle){
DiyMusicBean.getMusicCommentList(0,1,0,10,{
callback:function(data){
loadComment(0,1,diyMusicStyle.commentCount,diyMusicStyle.mainCommentCount,data,UD.commentRank,DiyMusicBean,function(diff){diyMusicStyle.commentCount+=diff;});
}
});
}
function showMusicRank(objName,id,type,rank,voteRank,voteUserCount,isPrev){
rank=(rank==null)?3:rank;
if(rank>5)rank=5;
voteRank=(voteRank==null)?0:voteRank;
voteUserCount=(voteUserCount==null)?0:voteUserCount;
var ss;
if(isPrev){
ss=['<div class="vote_star star_d'+rank+'" title="总计 '+voteUserCount+' 人投票，共 '+voteRank+' 分"><div class="default">&nbsp;</div>']
}else{
ss=['<div class="vote_star vote_star_d star_d'+rank+'" title="总计 '+voteUserCount+' 人投票，共 '+voteRank+' 分"><div class="default">&nbsp;</div>']
}
if(isPrev){
for(var i=1;i<=5;i++){
ss.push('<a class="star_'+i+'" href="#" onclick="'+objName+'.voteMusicRank(\''+id+'\',\''+type+'\','+i+');return false;">&nbsp;</a>');
}
}else{
for(var i=1;i<=5;i++){
ss.push('<a class="star_'+i+'" href="#">&nbsp;</a>');
}
}
ss.push('</div>');
return ss.join('');
}
var musicComment;
var musicCommentType;
var MusicCommentBean;
var musicCommentCallBack;
function loadComment(musicId,type,commentCount,mainCommentCount,commentList,commentRank,bean,callBack){
commentList=commentList||[];
for(var i=0;i<commentList.length;i++){
convertComment(commentList[i]);
}
musicCommentType=type;
Element.show('_$_comment_div');
$('$$_comment_count').innerHTML=commentCount+'';
var option={
bCanClose:true,bHasCancelBtn:true,bSupportDeleteComment:true,
bNeedCheckLogin:false,bNeedCheckRight:true,iAllowComment:commentRank,iPageSize:10,
iHostId:UD.hostId,sHostName:UD.hostName,iVisitorId:UD.visitorId,sVisitorName:UD.visitorName,
sVisitorNickname:UD.visitorNickname,sVisitorAvatar:UD.visitorAvatar,iVisitorRank:UD.visitorRank,sVisitorIP:UD.visitorIP,bShowSpaceUrl:true,
iInputWidth:460,iEditorHeight:90,fnOpenCommentEffect:null,iMainCommentCount:mainCommentCount,
fnAddComment:addNewComment,oAddCommentParams:{parentId:musicId,type:type},
fnDelComment:delComment,oDelCommentParams:{parentId:musicId,type:type},
fnMoreData:getCommentsByPage,
fnAfterAddComment:afterAddComment,oAfterAddCommentParams:{parentId:musicId,type:type},
fnAfterDelComment:afterDelComment,oAfterDelCommentParams:{parentId:musicId,type:type},fnReportBad:reportBad,
fnCloseComments:closeComments,sObjName:'musicComment',bDefaultPubClose:false,iEditorMaxLen:1000
};
musicComment=new NetEase.CommentPublish(commentList,musicId,mainCommentCount,'_$_comments','_$_comment_editor',option);
MusicCommentBean=bean;
musicCommentCallBack=callBack||Prototype.emptyFunction();
}
function convertComment(com){
com.publisherId=com.publishUserId;
com.publisherName=com.publishName;
com.publisherNickname=com.publishNickName;
com.publisherAvatar=com.publishAvatar;
com.publisherAvatarUrl=com.publishAvatar;
if(com.subComments!=null&&com.subComments.length>0){
for(var i=0;i<com.subComments.length;i++){
var scom=com.subComments[i];
scom.publisherId=scom.publishUserId;
scom.publisherName=scom.publishName;
scom.publisherNickname=scom.publishNickName;
scom.publisherAvatar=scom.publishAvatar;
scom.publisherAvatarUrl=scom.publishAvatar;
}
}
}
function addNewComment(newComment,params,postAddCommentFunc){
var com={};
com.musicId=params.parentId;
com.type=params.type
com.content=newComment.content;
com.publishUserId=newComment.publisherId;
com.publishName=newComment.publisherName;
com.publishNickName=newComment.publisherNickname;
com.publishAvatar=newComment.publisherAvatarUrl;
com.ip=newComment.ip;
com.replyToUserId=newComment.replyToUserId;
com.mainComId=newComment.mainComId;
com.replyComId=newComment.replyComId;
com.replyToUserName=newComment.replyToUserName;
com.replyToUserNick=newComment.replyToUserNick;
var filterType=0;
var valcodeelem=$("valcode"+params.valcodeid);
var valcode;
if(valcodeelem!=null)
valcode=valcodeelem.value;
else
valcode=-1;
if(UD.visitorRank<Const.Rank.Friend){
var match=checkOtherSiteUrl(newComment.content);
if(match){
alert(Local.Message.Blog[0]);
postAddCommentFunc(null);
return false;
}
}
MusicCommentBean.addMusicComment(com,com.type,params.valcodeid,valcode,{
callback:function(dataFromServer){
if(dataFromServer!=null)convertComment(dataFromServer);
postAddCommentFunc(dataFromServer);
},
errorHandler:function(errorString,ex){
if(captchaWarning(ex,"$$_comsubmithint"+params.valcodeid)){
postAddCommentFunc(null);
return false;
}
var filterType=filterWarning(ex);
if(filterType==-1){
postAddCommentFunc(null);
return false;
}
postAddCommentFunc(null);
}
});
}
function delComment(commentId,params,isMainComment,postDelCommentFunc){
MusicCommentBean.deleteComment(commentId,params.parentId,params.type,isMainComment,{
callback:function(dataFromServer){
postDelCommentFunc(dataFromServer,commentId,isMainComment);
}
});
}
function getCommentsByPage(musicId,limit,offset,postPageCommentFunc){
MusicCommentBean.getMusicCommentList(musicId,musicCommentType,offset,limit,{
callback:function(dataFromServer){
if(dataFromServer!=null){
for(var i=0;i<dataFromServer.length;i++){
convertComment(dataFromServer[i]);
}
}
postPageCommentFunc(dataFromServer);
}
});
}
function afterAddComment(){
updateTargetCount('$$_comment_count',1);
updateTargetCount('$$_comment_count_0',1);
musicCommentCallBack(1);
}
function afterDelComment(oParams){
var _count=0-oParams.iSuccCount;
updateTargetCount('$$_comment_count',_count);
updateTargetCount('$$_comment_count_0',_count);
musicCommentCallBack(_count);
}
function updateTargetCount(target,diff){
if($(target)){
$(target).innerHTML=parseInt($(target).innerHTML)+(diff)+'';
}
}
function reportBad(report,postReportFunc){
PreUserReportBean.addUserReport(report,postReportFunc);
}
function closeComments(){
$('_$_comments_zone').style.display=($('_$_comments_zone').style.display=='none')?'':'none';
}
function fillConstellation(target,value){
$(target).innerHTML=value>0?constellationArray[value][1]:'';
}
function fillfavoriteMusic(target,value,notBr){
var html=''
if(value!=null){
var ts=value.split('|')[0].split(',');
for(var i=0;i<ts.length;i++){
if(!musicArray[ts[i]])continue;
html+=musicArray[ts[i]][1]
if(i%2==0){
html+='&nbsp;&nbsp;';
}else{
html+=notBr?'&nbsp;&nbsp;':'<br/>';
}
}
html=html.replace(/,$/,"");
}
$(target).innerHTML=html;
}
function isPublishedAlbum(album){
return album!=null&&album.coverPhSmallId>0&&!isStrBlank(album.description)&&!isStrBlank(album.tagIds);
}
function isStrBlank(str){
return str==null||str.trim()=='';
}
var constellationArray=[
["0","星座"],
["1","水瓶座"],
["2","双鱼座"],
["3","白羊座"],
["4","金牛座"],
["5","双子座"],
["6","巨蟹座"],
["7","狮子座"],
["8","处女座"],
["9","天秤座"],
["10","天蝎座"],
["11","射手座"],
["12","摩羯座"]
];
var musicArray=[
["0","流行音乐"],
["1","摇滚/重金属"],
["2","爵士/蓝调"],
["3","Hip Hop"],
["4","古典音乐"],
["5","乡村/民谣"],
["6","民族音乐"],
["7","交响乐"],
["8","其他"]
];
var musicAlbumTagMap={
'0':'流行金曲',
'1':'经典怀旧',
'2':'动漫游戏',
'3':'影视音乐',
'4':'校园民谣',
'5':'戏剧类',
'6':'纯音乐',
'7':'原创作品',
'100':'伤感',
'101':'安静',
'102':'寂寞',
'103':'浪漫',
'104':'幸福',
'105':'失恋',
'106':'思念',
'107':'励志',
'108':'甜蜜',
'109':'深情',
'110':'激情',
'111':'其它'
}
if(NetEase==undefined){
var NetEase={};
}
NetEase.CommonShare=Class.create();
NetEase.CommonShare.prototype={
initialize:function(objName){
this.options=Object.extend(
{
},arguments[1]||{});
this.objName=objName;
this.resource={};
},
shareResource:function(type,resourceName,url){
if(UD.visitorRank<0){
showLoginDlg(UD.serverName);
return;
}
this.resource.type=type;
this.resource.name=resourceName;
this.resource.url=url;
var options=Object.extend({
title:'推荐给我的博友',
left:false,
top:false,
needCover:true
},arguments[3]||[]);
var validcodeUrl=this.genValidCodeImg();
if(!this.shareResourceLayer){
this.shareResourceLayer=jsWindowManager.createWindow('resource_share',{className:'layer-common-share',
left:options.left,top:options.top,width:410,height:310,title:options.title,needCover:options.needCover,notKeepPos:true});
RemindBean.getChummies(function(dataList){
this.chummyList=dataList;
this.shareResourceLayer.panel.innerHTML=this.jst_resource_share.processUseCache({itemList:this.chummyList,objName:this.objName,validcodeUrl:validcodeUrl});
}.bind(this));
}else{
this.shareResourceLayer.panel.innerHTML=this.jst_resource_share.processUseCache({itemList:this.chummyList,objName:this.objName,validcodeUrl:validcodeUrl});
}
this.shareResourceLayer.showWindow();
},
showNotice:function(n){
if($("commonShareObj_notice")){
$("commonShareObj_notice").innerHTML=n;
setTimeout(' $("commonShareObj_notice").innerHTML = "&nbsp;";',3000);
}
},
sendShareResource:function(){
var content=$F('common_share_msg').trim();
if(content.length>250){
dwrlog('附言不能超过250个字!',"error");
return;
}
var msgValcode=$F('commonShareObj_Valcode').trim();
if(msgValcode==undefined||msgValcode==null||msgValcode==""){
this.showNotice("请输入验证码!");
this.genValidCodeImg();
return;
}
else if(msgValcode!=undefined&&msgValcode!=null&&msgValcode!=""&&msgValcode.length<4){
this.showNotice("验证码为4位!");
this.genValidCodeImg();
return;
}
var receives=[];
if(this.chummyList&&this.chummyList.length>0){
var cbId;
for(var i=0;i<this.chummyList.length;i++){
cbId='common_share_cb_'+this.chummyList[i].userId;
if($(cbId)&&$(cbId).checked){
receives.push(this.chummyList[i].userId);
}
}
}
if(receives.length>0){
$("commonShareObj_submit_button").enable=false;
RemindBean.sendShareResource(receives,content,this.resource.name,this.resource.url,this.resource.type,msgValcode,{
callback:function(s){
$("commonShareObj_submit_button").enable=true;
if(s){
dwrlog('推荐给博友成功!','ok');
this.shareResourceLayer.hiddenWindow();
}else{
dwrlog('推荐给博友失败!','error');
}
}.bind(this),
errorHandler:function(errorString,ex){
if(ex==undefined||ex==null||ex.type=="CaptchaException"){
this.showNotice("验证码不正确!");
this.genValidCodeImg();
$("commonShareObj_submit_button").enable=true;
}
}.bind(this)
});
}else{
dwrlog("你没有选择关注的博友，不能分享!","error");
}
},
selectAll:function(){
var checked=$('common_share_selall').checked;
if(this.chummyList&&this.chummyList.length>0){
var cbId;
for(var i=0;i<this.chummyList.length;i++){
cbId='common_share_cb_'+this.chummyList[i].userId;
if($(cbId)){
$(cbId).checked=checked;
}
}
}
},
genValidCodeImg:function(){
var _iRandom=Math.floor(Math.random()*10001);
var _sId=(_iRandom+"_"+new Date().getTime()).toString();
var ss="/cap/captcha.jpgx?parentId="+encodeURIComponent(UD.hostId)+"&"+_sId;
if($("commonShareObj_valimg")){
$("commonShareObj_valimg").src=ss;
}
return ss;
},
jst_resource_share:new String('\
  <div class="left" style="margin-bottom:0;">\
   <div class="list">\
   {for item in itemList}\
    <div class="g_t_hide"><input type="checkbox" id="common_share_cb_${item.userId}"/><a href="http://${DomainMap.getParentDomain(item.userName)}/" target="_blank">${item.nickname|default:""|escape}</a></div> \
   {/for}\
   </div>\
   <div class="ctrl">\
    <input type="checkbox" id="common_share_selall" onclick="${objName}.selectAll();"><label for="common_share_selall" onclick="${objName}.selectAll();">全选</label>\
   </div>\
  </div>\
  <div class="right">\
   <div>附言：</div>\
   <div><textarea id="common_share_msg"></textarea></div>\
   <div class="op" style="text-align:left">\
      <div class="g_t_14" ><span style="line-height:24px;">验证码：</span><input  style="width:50px;vertical-align:middle;padding:3px 2px 4px" value="" maxlength="4" id="commonShareObj_Valcode" /><img id="commonShareObj_valimg" class ="valcodeimg" style="vertical-align:middle;margin-left:5px;"  alt="验证码" src="${validcodeUrl}" />\
      <input id="commonShareObj_submit_button" class="btncm btnok" type="button" value="确定" onclick="${objName}.sendShareResource()" style="vertical-align:middle;width:60px;"/>\
      </div>\
      <p style="margin-top:5px"><span id="commonShareObj_notice" style="color:red">&nbsp;</span></p>\
   </div>\
  </div><br class="g_p_clear" />\
 ')
}
var commonShareObj=new NetEase.CommonShare('commonShareObj');
