/*************************** 全局常量 ***************************/
var UA = navigator.userAgent;
if(/MSIE 6/.test(UA)){
  UA = 'ie';
}else if(/Gecko/.test(UA)){
  UA = 'gecko';
}else if(/MSIE 7/.test(UA)){
  UA = 'ie7';
}else if(/Opera/.test(UA)){
  UA = 'opera';
}


/*************************** 通用函数 ***************************/
/* 查找当前DOM节点后面指定类型的节点 */
function findNextNode(curNode, nodeType) {
  if (!curNode) return null;
  while(curNode.nextSibling) {
    if (curNode.nextSibling.nodeType == nodeType) {
      return curNode.nextSibling;
    }
    curNode = curNode.nextSibling;
  }
  return null;
}

/* 查找当前DOM节点之前指定类型的节点 */
function findPreviousNode(curNode, nodeType) {
  if (!curNode) return null;
  while(curNode.previousSibling) {
    if (curNode.previousSibling.nodeType == nodeType) {
      return curNode.previousSibling;
    }
    curNode = curNode.previousSibling;
  }
  return null;
}

/* 设置DOM元素属性 */
function setAttr(el, attr, value) {
  var obj = $(el);
  if (!obj) return false;
  try {
    obj.setAttribute(attr, value);
    return true;
  } catch(e) {
    return false;
  }
}

/* 获取DOM元素属性 */
function getAttr(el, attr) {
  if (typeof(el) == 'string') {
      var obj = $(el);
  } else {
      var obj = el;
  }
  if (!obj) return null;
  try{
    return obj.getAttribute(attr);
  }catch (e){
    return null;
  }
}

/* 获取DOM元素坐标 - sProp: 'Width', 'Height' */
function getPos(el, sProp) {
  el = $(el);
  var iPos = 0;
  while (el != null) {
   iPos += el["offset" + sProp];
   el = el.offsetParent;
  }
  return iPos;
}

/* 剪贴板操作 */
function copyToClipboard(txt){
  if(window.clipboardData){
    window.clipboardData.clearData();
    window.clipboardData.setData('Text', txt);
  }else if(navigator.userAgent.indexOf('Opera') != -1){
    window.location = txt;
  }else if(window.netscape){
    try{
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    }catch(e){
      return false;
    }
    var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
    if(!clip) return;
    var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
    if(!trans) return;
    trans.addDataFlavor('text/unicode');
    var str = new Object();
    var len = new Object();
    var str = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsString);
    var copytext = txt;
    str.data = copytext;
    trans.setTransferData('text/unicode',str,copytext.length*2);
    var clipid = Components.interfaces.nsIClipboard;
    if (!clipid) return;
    clip.setData(trans,null,clipid.kGlobalClipboard);
  }
}

/* 生成带框DOM元素 */
function addShadowBorder(html, width, closefunc) {
  var rt = "<div class=\"block_borders\" style=\"width:" + (width + 28) + "px;\">\n<div class=\"bdheader\">\n<div class=\"bdright\">\n";
  rt += "<div class=\"bdcenter\">&nbsp;</div>\n</div>\n</div>\n<div class=\"bdbody\">\n<div class=\"bdright\">\n";
  rt += "<div class=\"bdcenter\" style=\"width:" + width + "px;\">\n";
  rt += "<div class=\"closebtn\"><a href=\"#\" onclick=\"" + closefunc + " return false;\"><img src=\"/images/close.gif\" /></a></div>\n";
  rt += html + "\n";
  rt += "</div>\n</div>\n</div>\n<div class=\"bdfooter\">\n<div class=\"bdright\">\n<div class=\"bdcenter\">&nbsp;</div>\n</div>\n</div>\n</div>\n";
  return rt;
}

/* 搜索提交时检查输入框内容 */
function finalCheckInput(r){
  for (var i = 0; i < SEARCH_INPUT_DEFAULT.length; i ++) {
    if (r.value == SEARCH_INPUT_DEFAULT[i]) {
      r.value = "";
    }
  }
}

/* 页面flash object的id */
var FLASH_OBJECT_ID_ARRAY = ['indexBanner_flashimage', 'indexBanner_miniyobointro', 'finalPlayer', 'YoboSWFContainer', 'YoboFinalPlayer'];

/* 隐藏页面flash元素 */
function hideFlashDom() {
/*  FLASH_OBJECT_ID_ARRAY.each(function(el, index){
    if ($(el)) {
      if(UA=='gecko'){
        $(el).style.visibility = 'hidden';
      }else{
        Element.hide($(el));
      }
    }
  });*/
}

/* 显示页面flash元素 */
function showFlashDom() {
/*  FLASH_OBJECT_ID_ARRAY.each(function(el, index){
    if ($(el)) {
      if(UA=='gecko'){
        $(el).style.visibility = 'visible';
      }else{
        Element.show($(el));
      }
    }
  });*/
}

/* 隐藏浮动窗口 */
function hideFloatDiv(flag){
  var floatsA = ['float_login', 'float_avatar', 'mui_box', 'admin_app', 'g_float_avatar',
                'add_union', 't_float_image', 'regform', 'tool_loadingbar', 'tool_popup_dialog'];
  var floatsB = ['single_player_widget_dialog', 't_lmf_dialog', 'tool_messagehistory_dialog',
                'tool_music_box_dialog', 'tool_recommend_dialog',
                'tool_recommend_friend_dialog', 'user_createbox_dialog'];
  for (var i = 0; i < floatsA.length; i ++) {
    var item = floatsA[i];
    if ($(item)) {
      Element.hide(item);
    }
  }
  if (flag) {
    for (i = 0; i < floatsB.length; i ++) {
      var item = floatsB[i];
      if ($(item)) {
        Element.hide(item);
      }
    }
  }
}

/* 显示页面遮罩 */
function openPageCover(params){
  if(!params){
    var except = false;
  }else{
    var except = params.except ? params.except : false;
  }
  if (except == false) {
    hideFlashDom();
  }
}

/* 隐藏页面遮罩 */
function closePageCover(flag){
  showFlashDom();
  hideFloatDiv(flag);
  clearTimeout(pageCoverTimer);
}

/* 隐藏浮动元素 */
function closeFloatCover() {
  hideFloatDiv(false);
  clearTimeout(pageCoverTimer);
}

/* 显示浮动窗口前处理 */
function openFloatDialog() {
  hideFlashDom();
  hideFloatDiv(true);
}

/* 全选表单中的所有复选框 */
function g_selectAllCheckbox(tar, form, ckid) {
  var fm = $(form);
  if (ckid) {
    var cl = fm[ckid];
  } else {
    var cl = fm['checkbox[]'];
  }
  if (cl && fm && tar) {
    var ck = tar.checked;
    var ll = $A(cl);
    if (ll.length > 0) {  // 多个checkbox
      ll.each(function(el,index){
        el.checked = ck;
      })
    } else {  // 一个checkbox
      cl.checked = ck;
    }
  }
  return true;
}

/* tip提示显示 */
var tipsInScreen = false;
function show_tips(evt) {
  var tip = $('yobo_tips');
  if (tip) {
    w = document.body.offsetWidth;
    var el = Event.element(evt);
    var ct = TIPS_CONTENT[getAttr(el, 'tipstype')];
    tip.innerHTML = ct ? "<span class=\"n_black\">" + ct + "</span>" : "";
    tip.style.top = getPos(el, 'Top') + el.offsetHeight + 'px';
    if ((Event.pointerX(evt) + 20 + tip.offsetWidth) > w) {
      tip.style.left = w - tip.offsetWidth + 'px';
    } else {
      tip.style.left = Event.pointerX(evt) + 20 + 'px';
    }
    Element.show(tip);
    tipsInScreen = true;
  }
}
function hide_tips() {
  var tip = $('yobo_tips');
  if (tip) {
    tip.innerHTML = "";
    Element.hide(tip);
    tipsInScreen = false;
  }
}
function move_tips(evt) {
  if (tipsInScreen) {
    var tip = $('yobo_tips');
    if (tip) {
      w = document.body.offsetWidth;
      var el = Event.element(evt);
      tip.style.top = getPos(el, 'Top') + el.offsetHeight + 'px';
      if ((Event.pointerX(evt) + 20 + tip.offsetWidth) > w) {
        tip.style.left = w - tip.offsetWidth + 'px';
      } else {
        tip.style.left = Event.pointerX(evt) + 20 + 'px';
      }
    }
  }
}

/* 显示送歌菜单 */
function show_rfmenu(div, uid, img) {
    var mn = $('tool_recommend_friend_menu');
    var hv = $('tool_recommend_friendid');
    if (mn && hv) {
        hv.value = uid;
        Element.show(mn);
        if (img) {
            mn.style.left = getPos(div, 'Left') + div.offsetWidth - mn.offsetWidth + 'px';
		    if (UA == 'ie') {
            	mn.style.top = getPos(div, 'Top') + div.offsetHeight - mn.offsetHeight + 'px';
            } else {
                mn.style.top = getPos(div, 'Top') - 4 + 'px';
            }
        } else {
            mn.style.left = getPos(div, 'Left') + div.offsetWidth + 'px';
    		mn.style.top = getPos(div, 'Top') + 'px';
        }
    }
}

/* 隐藏送歌菜单 */
function hide_rfmenu() {
    var mn = $('tool_recommend_friend_menu');
    if (mn) {
        Element.hide(mn);
    }
}

/* YOBO小精灵在单曲播放中按钮 - 07.07.06 */
function single_song_player(sid, div) {
    var sph = $('t_sp_songid_hidden');
    var spc = $('t_sp_container');
    if (sph && spc) {
        var top = 0;
        if (!sid) {
            sid = sph.value;
        }
        if (!div) { // from播放器
            top = getPos('user_flashplayer_block', 'Top') + $('user_flashplayer_block').offsetHeight;
            div = $('user_flashplayer_block');
        } else {
            top = getPos(div, 'Top');
        }
        if (top < 450) {
            top = 450;
        }
        openFloatDialog();
        show_loading(div);
        new Ajax.Request('/song/singleplayerxml2/'+sid, {method: 'get', asynchronous:true, evalScripts:true});
        new Ajax.Request('/song/single_song_player/'+sid + '?top=' + top, {method: 'get', asynchronous:true, evalScripts:true});
	}
}

/* 关闭YOBO小精灵界面 */
function onclose_single_player_dialog() {
    closePageCover(true);
    setTimeout(function(){
        if ($('single_player_widget_dialog')) {
            $('single_player_widget_dialog').innerHTML = "";
        }
    }, 10);
}

/* 单曲精灵tablink选择 */
function sp_widget_showcode(idx) {
    var tb1 = $('sp_widget_tablink1');
    var tb2 = $('sp_widget_tablink2');
    var ctb = $('sp_widget_tablink' + idx);
    var ta1 = $('single_player_code1');
    var ta2 = $('single_player_code2');
    var cta = $('single_player_code' + idx);
    if (tb1 && tb2 && ctb && ta1 && ta2 && cta) {
        tb1.className = 'sp_widget_tablink';
        tb2.className = 'sp_widget_tablink';
        ctb.className = 'sp_widget_tablink_cur';
        Element.hide(ta1);
        Element.hide(ta2);
        Element.show(cta);
    }
}

/* YOBO小精灵flash代码生成 - 07.07.06 */
function single_player_update_code() {
    var ap = $('single_player_autoplay');
    var vl = $('single_player_volume');
    var cd1 = $('single_player_code1');
    var cd2 = $('single_player_code2');
    var h1 = $('single_player_hidden1');
    var h2 = $('single_player_hidden2');
    var h3 = $('single_player_hidden3');
    if (ap && vl && cd1 && cd2 && h1 && h2 && h3) {
        var volume = parseInt(vl.value);
        if (isNaN(volume)) volume = 80;
        volume = Math.min(volume, 100);
        volume = Math.max(volume, 0);
        var auto = ap.checked ? '1' : '0';
        var str = "&autoPlay=" + auto + "&volume=" + volume;
        cd1.value = h1.value + str + h2.value;
        cd2.value = h3.value + str;
    }
}

/* 显示添加到音乐盒对话框 */
function addto_musicbox_dialog(sid, div) {
    var dg = $('tool_music_box_dialog');
    var sph = $('t_sp_songid_hidden');
    var spc = $('t_sp_container');
    if (dg && sph && spc) {
        var top = 400;
        if (!div) { // from播放器
            return;
            div = $('user_flashplayer_block');
            top = getPos(div, 'Top') + div.offsetHeight;
        } else {
            top = getPos(div, 'Top');
        }
        if (!sid) {
            sid = sph.value;
        }
        if (top < 450) {
            top = 450;
        }
        openFloatDialog();
        dg.innerHTML = "";
        var left = getPos(div, 'Left');
        show_loading(div);
    	//new Ajax.Request('/song/addto_box/' + sid + '?top=' + top + '&left=' + left, {method: 'get', asynchronous:true, evalScripts:true});
    	new Ajax.Request('/music_box/fond/' + sid, {method: 'get', asynchronous:true, evalScripts:true});
    }
}

/* 关闭添加到音乐盒对话框 */
function onclose_musicbox_dialog() {
    closePageCover(true);
    setTimeout(function(){
        if ($('tool_music_box_dialog')) {
            $('tool_music_box_dialog').innerHTML = "";
        }
    }, 10);
}

/* 添加到音乐盒对话框相关 */
function onover_music_box_item(div, idx) {
    div.className = 'block_addbox_item_current';
    var del = $('music_box_add_item_' + idx);
    if (del) {
        Element.show(del);
    }
}
function onout_music_box_item(div, idx) {
    div.className = 'block_addbox_item_normal';
    var del = $('music_box_add_item_' + idx);
    if (del) {
        Element.hide(del);
    }
}
function onshow_music_box_create() {
    var cur = $('music_box_add_create');
    var tar = $('music_box_add_create_form');
    if (cur && tar) {
        Element.show(tar);
        Element.hide(cur);  
    }
}
function onhide_music_box_create() {
    var cur = $('music_box_add_create');
    var tar = $('music_box_add_create_form');
    if (cur && tar) {
        Element.hide(tar);
        Element.show(cur);  
    }
}

/* 打开添音乐推荐对话框 */
function recommend_song(id, div){
    var dg = $('tool_recommend_dialog');
    var sph = $('t_sp_songid_hidden');
    var spc = $('t_sp_container');
    if (dg && sph && spc) {
        var top = 0;
        if (!id) {
            id = sph.value;
        }
        if (!div) { // from播放器
            top = getPos('user_flashplayer_block', 'Top') + $('user_flashplayer_block').offsetHeight;
            div = $('user_flashplayer_block');
        } else {
            top = getPos(div, 'Top');
        }
        if (top < 450) {
            top = 450;
        }
        openFloatDialog();
        Element.hide(dg);
        dg.innerHTML = "";
        show_loading(div);
        new Ajax.Request('/recommend/recommend?song_id='+id + '&top=' + top, {method: 'get', asynchronous:true, evalScripts:true});
    }
}

/* 关闭音乐推荐对话框 */
function onclose_recommend_dialog() {
    closePageCover(true);
    setTimeout(function(){
        if ($('tool_recommend_dialog')) {
            $('tool_recommend_dialog').innerHTML = "";
        }
    }, 10);
}

/* 打开回送好友音乐对话框 */
function giveback_song(div) {
    var dg = $('tool_recommend_friend_dialog');
    var sgh = $('t_sp_givebackid_hidden');
    var spc = $('t_sp_container');
    if (dg && sgh && spc) {
        openFloatDialog();
        Element.hide(dg);
        dg.innerHTML = "";
        var fid = sgh.value;
        var top = getPos(spc.value, 'Top');
        if (top < 450) {
            top = 450;
        }
        show_loading(div);
        new Ajax.Request('/recommend/friend_recommend?friend_id='+fid+'&top='+top, {method: 'get', asynchronous:true, evalScripts:true});
    }
}

/* 打开给好友推荐音乐对话框 */
function recommend_song_tofriend(id, div) {
    var dg = $('tool_recommend_friend_dialog');
    var mn = $('tool_recommend_friend_menu');
    var hv = $('tool_recommend_friendid');
    if (dg && mn && hv) {
        openFloatDialog();
        Element.hide(dg);
        dg.innerHTML = "";
        if (id) {
            var fid = id;
        } else {
            var fid = hv.value;
        }
        if (div) {
            var top = getPos(div, 'Top');
            show_loading(div);
        } else {
            var top = parseInt(mn.style.top);
            show_loading(mn);
        }
        if (top < 450) {
            top = 450;
        }
        new Ajax.Request('/recommend/friend_recommend?friend_id='+fid+'&top='+top, {method: 'get', asynchronous:true, evalScripts:true});
    }
}

/* 关闭给好友推荐音乐对话框 */
function onclose_recommend_friend_dialog() {
    closePageCover(true);
    setTimeout(function(){
        if ($('tool_recommend_friend_dialog')) {
            $('tool_recommend_friend_dialog').innerHTML = "";
        }
    }, 10);
}

/* 搜索推荐歌曲 */
function t_rf_onSearchSong(div) {
    var q = $('t_rf_searchinput');
    if (q) {
        if (q.value == '') {
            alert(ERROR_EMPTY_SONG_NAME);
        } else {
            show_loading(div);
            new Ajax.Request('/recommend/search_song/?q=' + q.value, {method: 'get', asynchronous:true, evalScripts:true});
        }
    }
}

/* 打开发信息给好友对话框 */
function send_leave_message(div){
    var fm = $('t_lmf_dialog');
    if (fm) {
        openFloatDialog();
        Element.show(fm);
        fm.style.left = getPos(div, 'Left') + 'px';
        fm.style.top = getPos(div, 'Top') + 'px';
    }
}

/* 关闭发信息给好友对话框 */
function onclose_leavemsg_dialog(){
    closePageCover(true);
    setTimeout(function(){
        if ($('t_lmf_content')) {
            $('t_lmf_content').value = '';
        }
    }, 10);
}

/* 显示消息历史 */
function show_messagehistory(id, div){
    openFloatDialog();
	var top = getPos(div, 'Top');
	new Ajax.Request('/message/history/'+id+'?top='+top, {method: 'get', asynchronous:true, evalScripts:true});
}

/* 隐藏消息历史框 */
function onclose_messagehistory_dialog() {
    closePageCover(true);
    setTimeout(function(){
        if ($('tool_messagehistory_dialog')) {
            $('tool_messagehistory_dialog').innerHTML = "";
        }
    }, 10);
}

/* 显示单曲条菜单 */
function show_singleplayer_dialog(div, sid, gbid, showlike, showdlike) {
    var spd = $('tool_singleplayer_dialog');
    var sph = $('t_sp_songid_hidden');
    var spg = $('t_sp_givebackid_hidden');
    var sgb = $('t_sp_giveback');
    var slk = $('t_sp_like');
    var sdl = $('t_sp_dislike');
    var spf = $('t_sp_actionfrom');
    var spc = $('t_sp_container');
    if (typeof(div) == 'string') {
        div = $(div);
    }
    if (div && spd && sph && spg && sgb && slk && sdl && spf && spc) {
        Element.show(spd);
        Element.setOpacity(spd, 0.8);
        sph.value = sid;
        spg.value = gbid;
        spd.style.top = getPos(div, 'Top') + 'px';
        spd.style.left = (getPos(div, 'Left') + div.offsetWidth) + 'px';
        spc.value = div.id;
        if (gbid != '0') {
            Element.show(sgb);
        } else {
            Element.hide(sgb);
        }
        if (showlike != '0') {
            Element.show(slk);
        } else {
            Element.hide(slk);
        }
        if (showdlike != '0') {
            Element.show(sdl);
        } else {
            Element.hide(sdl);
        }
    }
}

var LOADING_BAR_TIMER = null;

/* 显示loadingbar */
function show_loading(div) {
    if (LOADING_BAR_TIMER) {
        clearTimeout(LOADING_BAR_TIMER);
    }
    div = $(div);
    var lb = $('tool_loadingbar');
    if (div && lb) {
        var top = getPos(div, 'Top');
        var left = getPos(div, 'Left');
        var w = div.offsetWidth;
        var h = div.offsetHeight;
        w = Math.max(w, 21);
        h = Math.max(h, 16);
        h = Math.min(h, 30);
        Element.show('tool_loadingbar');
        lb.style.top = (top - 1) + 'px';
        lb.style.left = (left - 1) + 'px';
        lb.style.width = (w - 21) + 'px';
        lb.style.height = (h - 1) + 'px';
        Element.show('tool_loadingbar');
        LOADING_BAR_TIMER = setTimeout(function(){
            Element.hide('tool_loadingbar');
        }, 30 * 1000);
    }
}

/* 显示提示对话框 */
function show_popup_dialog(params) {
    var ppd = $('tool_popup_dialog');
    var ptt = $('t_pd_titletext');
    var pct = $('t_pd_contentarea');
    var pic = $('t_pd_iconarea');
    var pb1 = $('t_pd_iknowbtn');
    var pb2 = $('t_pd_okbtn');
    var pb3 = $('t_pd_cancelbtn');
    if (ppd && ptt && pct && pic && pb1 && pb2 && pb3) {
        var title = params.title ? params.title : '错误信息';
        var type = params.type ? params.type : 'alert'; //alert,action,cache
        var clsname = params.className ? params.className : 'error'; //error,confirm,success
        var click = params.onclick ? params.onclick : 'onclose_popup_dialog()';
        var content = params.li ? params.li : '出现错误！';
        ptt.innerHTML = title;
        var ct = '';
        content.each(function(el,index){
            ct += '<li>' + el + '</li>'
        });
        pct.innerHTML = ct;
        if (clsname == 'confirm') {
            pic.className = 'block_popupdialog_alerticon';
        } else if (clsname == 'success') {
            pic.className = 'block_popupdialog_infoicon';
        } else {
            pic.className = 'block_popupdialog_erroricon';
        }
        if (type == 'alert') {
            Element.show(pb1);
            Element.hide(pb2);
            Element.hide(pb3);
        } else {
            Element.hide(pb1);
            Element.show(pb2);
            Element.show(pb3);
            pb2.onclick = function() {
                eval(click);
                onclose_popup_dialog();
                return false;
            }
        }
        if(UA == 'ie' || UA == 'ie7'){
            var page_y_offset = document.documentElement.scrollTop;
        }else if(UA == 'gecko'){
            var page_y_offset = pageYOffset;
        }
        ppd.style.top = page_y_offset + 450 + 'px';
        ppd.style.left = $('wrap').offsetLeft + 260 + 'px';
        closeFloatCover();
        Element.show(ppd);
    }
}

/* 隐藏提示对话框 */
function onclose_popup_dialog() {
    var ppd = $('tool_popup_dialog');
    var ptt = $('t_pd_titletext');
    var pct = $('t_pd_contentarea');
    if (ppd && ptt && pct) {
        Element.hide(ppd);
        ptt.innerHTML = '';
        pct.innerHTML = '';
    }
}

/* 不喜欢一首歌 */
function dislike_song(div) {
    var sph = $('t_sp_songid_hidden');
    var spf = $('t_sp_actionfrom');
    if (sph && spf) {
        show_loading(div);
        new Ajax.Request('/user/add_unfond_song?song_id=' + sph.value + '&from=' + spf.value, {method: 'get', asynchronous:true, evalScripts:true});
    }
}

/* 显示登录框 */
function show_login_dialog(div){
    openPageCover();
    Element.show('float_login');
    $('float_login').style.left = (getPos(div, 'Left') - $('float_login').offsetWidth - 3) + 'px';
    $('float_login').style.top = getPos(div, 'Top') + 'px';
}

/* 显示歌词 */
function showLyric(id, div){
    show_loading(div);
	new Ajax.Request('/song/show_lyric/'+id, {method: 'get', asynchronous:true, evalScripts:true});
}

/* 不喜欢歌曲 */
function idislikethisSong(id, from){
	new Ajax.Request('/user/add_unfond_song?song_id=' + id + '&from=' + from, {method: 'get', asynchronous:true, evalScripts:true});
}

/* 接受好友请求 */
function addFriendAccept(id, div){
	show_loading(div);
	new Ajax.Request('/friend/accept/'+id, {method: 'get', asynchronous:true, evalScripts:true});
}

/* 拒绝好友请求 */
function addFriendDecline(id, div){
	show_loading(div);
	new Ajax.Request('/friend/decline/'+id, {method: 'get', asynchronous:true, evalScripts:true});
}

/* 显示等待条 */
function wait(str){
	str = str ? str : MSG_LOADING;
	//printE({innerHTML: '<div class="error_inner" style="background:#fff; width:130px"><img src="/images/spinner.gif" align="absmiddle" />&nbsp;&nbsp;'+str+'</div>', className: 'loading'});
}