
//获取图片地址前缀
var imgBaseUrlElem = document.getElementById('imgBaseUrl');
var imgBaseUrl = '';
if (imgBaseUrlElem != null) {
	imgBaseUrl = document.getElementById('imgBaseUrl').value;
} else {
	imgBaseUrl = 'http://image.kuwo.cn';
}

//通用工具函数集

/**
 * 全局变量，设值为true表示打开调试，否则没有调试信息
 */
var DEBUG_ENABLE = false;

/**
 * 给String对象添加trim方法
 */
String.prototype.trim = function(){
    return this.replace(/(^\s*)|(\s*$)/g, '');
}

/**
 * 给obj对象的evt事件添加事件响应函数fn
 * @param {Object} obj
 * @param {Object} evt
 * @param {Object} fn
 */
function addEventListener_(obj, evt, fn){
    if (DEBUG_ENABLE) {
        alert(obj);
        alert(evt);
        alert(fn);
    }
    //某项为空，返回
    if (obj == null || evt == null || fn == null) {
        return;
    }
    if (obj.addEventListener) 
        obj.addEventListener(evt, fn, false);
    else 
        if (obj.attachEvent) 
            obj.attachEvent('on' + evt, fn);
}

/**
 * 删除obj对象的evt事件响应函数fn
 * @param {Object} obj
 * @param {Object} evt
 * @param {Object} fn
 */
function removeEventListener_(obj, evt, fn){
    if (obj.removeEventListener) 
        obj.removeEventListener(evt, fn, false);
    else 
        if (obj.detachEvent) 
            obj.detachEvent('on' + evt, fn);
}

/**
 * 当dom加载完成后立即执行f
 * @param {Object} f
 */
function domReady(f) {
	//如果dom已经加载，马上执行函数
	if(domReady.done) {
		return f();
	}
	
	//如果已经加了一个函数
	if(domReady.timer) {
		//把f加入待执行函数清单中
		domReady.ready.push(f);
	} else {
		//为页面加载完毕绑定一个事件，以防它最先完成
		addEventListener_(window, 'load', isDOMReady);
		
		//初始化待执行函数的数组
		domReady.ready = [f];
		//尽快检查dom是否已可用
		domReady.timer = setInterval(isDOMReady, 13);
	}
}

/**
 * 检查dom是否已可操作
 */
function isDOMReady() {
	//如果dom已可用，忽略
	if(domReady.done) {
		return false;
	}
	
	//检查若干函数和元素是否可用
	if(document && document.getElementsByTagName && document.getElementById && document.body) {
		//上述函数和元素均可用，停止检查
		clearInterval(domReady.timer);
		domReady.timer = null;
	}
	
	//执行所有正等待的函数
	for(var i=0; i<domReady.ready.length; i++) {
		domReady.ready[i]();
	}
	
	//标记已经完成
	domReady.ready = null;
	domReady.done = true;
}

/**
 * 得到事件的目标对象
 * @param {Object} e
 */
function getEvtTarget(e){
    var evt = e || window.event;
    var evtTarget = evt.target || evt.srcElement;
    if (evtTarget.nodeType == 3) {//解决旧版本Safari把Text文本本身作为事件目标对象的bug
        evtTarget = evtTarget.parentNode;
    }
    return evtTarget;
}

/**
 * 禁止使用右键
 */
function disableRight(){
    document.oncontextmenu = function(){
        return false;
    };
}

/**
 * 取消冒泡
 * @param {Object} e
 */
function cancelBubble_(e){
    e = e || window.event;
    if(document.all){
        e.cancelBubble = true;
    }else{
        e.stopPropagation();
    }
}

/**
 * 提示信息
 * 目前先用alert，日后重写
 * @param {Object} str
 */
function inf(str, useHtml, dontAutoHide){
//    alert(str);//原来用alert实现，现在用一个popup层
	removeClass($('infDiv'), 'disp_none');
	addClass($('infDiv'), 'disp_block');
	if(useHtml) {
	$('inf_content').innerHTML = str;
		
	} else {
		$('inf_content').childNodes[0].nodeValue = str;		
	}
	checkActivate('infDiv', 'shadeBoxInf');
	if(!dontAutoHide) {
		shadeListener = setTimeout(hideInf, 2000);		
	}
}

function hideInf() {
	$('infDiv').style.display = '';
	removeClass($('infDiv'), 'disp_block');
	addClass($('infDiv'), 'disp_none');
	$('inf_content').childNodes[0].nodeValue = '提示信息';
	$('shadeBoxInf').style.display="none";
}

/**
 * 确认提示框
 * 目前先用confirm，日后重写
 * @param {Object} str
 */
function con(str){
    if (confirm(str)) {
        return ture;
    }
    return false;
}

/**
 * 拷贝srcInfo到剪切板，并提示showInfo
 * @param {Object} srcInfo
 * @param {Object} showInfo
 */
function copyToClipboard(srcInfo, showInfo) {
	if(window.clipboardData) {
	   	//window.clipboardData.clearData();
	  	window.clipboardData.setData("Text", srcInfo);
		inf(showInfo);
	} else if(navigator.userAgent.indexOf('Opera') != -1) {
		window.location = srcInfo;
		return true;
	} else if (window.netscape) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		} catch (e) {
			inf("您的firefox安全限制限制您进行剪贴板操作，请打开’about:config’将signed.applets.codebase_principal_support’设置为true’之后重试");
			return false;
		}
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip)return false;
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if (!trans)return false;
		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 = srcInfo;
		str.data = copytext;
		trans.setTransferData('text/unicode',str,copytext.length*2);
		var clipid = Components.interfaces.nsIClipboard;
		if (!clip)return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);
		return true;
	}
}

/**
 * 得到elem元素距离document顶部的像素值
 * @param {Object} elem
 */
function getTop(elem){
    var offset = elem.offsetTop;
    if (elem.offsetParent != null && elem.offsetParent != '') {
        offset += getTop(elem.offsetParent);
    }
    return offset;
}

/**
 * 得到elem元素距离document左部的像素值
 * @param {Object} elem
 */
function getLeft(elem){
    var offset = elem.offsetLeft;
    if (elem.offsetParent != null && elem.offsetParent != '') {
        offset += getLeft(elem.offsetParent);
    }
    return offset;
}

/**
 * 得到e事件发生时鼠标相对于document的x坐标
 * @param {Object} e
 */
function mousePosX(e){
    var posx = 0;
    var evt = e || window.event;
    if (evt.pageX) {
        posx = evt.pageX;
    }
    else 
        if (evt.clientX) {
            posx = evt.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        }
    return posx;
}

/**
 * 得到事件发生时鼠标相对于document的y坐标
 * @param {Object} e
 */
function mousePosY(e){
    var posy = 0;
    var evt = e || window.event;
    if (evt.pageY) {
        posy = evt.pageY;
    }
    else 
        if (evt.clientY) {
            posy = evt.clientY + document.documentElement.scrollTop + document.body.scrollTop;
        }
    return posy;
}

/**
 * 删除elem的cName类样式
 * @param {Object} elem
 * @param {Object} cName
 */
function removeClass(elem, cName){
    var cStr = elem.className;
	var reg = new RegExp('('+cName+')', 'g');
	cStr = cStr.replace(reg, '');	
	reg = /\s{2,}/g;
	cStr = cStr.replace(reg, ' ');
	elem.className = cStr;
}

/**
 * 为elem添加cName类样式
 * 如果存在cName类样式，则会将原来的cName删除，并在className尾部将其重新添加
 * 如果不同class的样式间有冲突，则后添加的样式会覆盖前面的样式
 * @param {Object} elem
 * @param {Object} cName
 */
function addClass(elem, cName){
	removeClass(elem, cName);
	elem.className += ' ' + cName;
}

/**
 * 检查a中输入字符串长度，如果超过maxLength，则提示并截断
 * @param {Object} a
 * @param {Object} maxLength
 */
function checkLength(a, maxLength){
    if (a.value.length > maxLength) {
        inf('您最多只能输入' + maxLength + '个字符，超过部分将自动截断');
        a.value = a.value.substring(0, maxLength);
    }
}

/**
 * 获取当前时间的前几位值
 */
function getNowTime(length){
    var d = '' + new Date().getTime();
    if (length == null || length <= 0 || length >= 13) {
        return d;
    }
    return d.substring(0, length);
}

/**
 * Ajax取数据，get方法
 * @param {Object} id
 * @param {Object} url
 */
function getDataFromUrl(id, url){
    //alert(url);
    new Ajax.Updater({
        success: id
    }, url, {
        method: "get",
        evalScripts: true,
        onFailure: reportError
    });
    //alert(url + " done");
}

/**
 * Ajax取数据，post方法
 * @param {Object} id
 * @param {Object} url
 * @param {Object} postbd
 */
function postDataToUrl(id, url, postbd){
    //alert(url);
    new Ajax.Updater({
        success: id
    }, url, {
        method: "post",
        postBody: postbd,
        evalScripts: true,
        onFailure: reportError
    });
    //alert(url + " done");
}

function reportError(request){
    //alert("抱歉，访问服务器页面出现错误...\r\n" + request.status+":" + request.statusText);
}

function isContentFull(elem, h){
	var lHeight = elem.scrollHeight;
	if(lHeight<parseInt(h)){
		return false;
	}
	return true;
}

/**
 * 在指定节点后面添加一个兄弟节点
 */
function insertAfter(newElement,targetElement){
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement){
		parent.appendChild(newElement);
	}else{
		parent.insertBefore(newElement,targetElement.nextSibling);
	}
}

/**
 * 按照比例调整图片大小，限定了最大的高度
 * @param {Object} img
 * @param {Object} mh
 */
function adjustSize(img, mh){
    if (img.height > mh) {
        img.width = img.width * (mh / img.height);
        img.height = mh;
    }
}

/**
 * 按照比例调整图片大小，限定了最大的宽高，并且设置了marginLeft和marginTop
 * （使用时请注意：1、原有margin样式；2、ie6的水平空白边加倍bug）
 * @param {Object} ImgD
 * @param {Object} iwidth	图片最大宽度
 * @param {Object} iheight	图片最大高度
 * @param {Object} mleft	图片以正方形算的左边空白边
 * @param {Object} mtop		图片以正方形算的顶部空白边
 */
function resizeimg(ImgD, iwidth, iheight, mleft, mtop){
    var image = new Image();
    image.src = ImgD.src;
    if (image.width > 0 && image.height > 0) {
        if (image.width / image.height >= iwidth / iheight) {//宽度比较大
            if (image.width > iwidth) {
                ImgD.width = iwidth;
                ImgD.height = (image.height * iwidth) / image.width;
            }
            else {
                ImgD.width = image.width;
                ImgD.height = image.height;
            }
        }
        else {//高度比较大
            if (image.height > iheight) {
                ImgD.height = iheight;
                ImgD.width = (image.width * iheight) / image.height;
            }
            else {
                ImgD.width = image.width;
                ImgD.height = image.height;
            }
        }
        //ImgD.alt = ImgD.width + '×' + ImgD.height;
		if(ImgD.width>0 && ImgD.height>0) {//过滤掉不能读出ImgD的情况
		    ImgD.style.marginLeft = (iwidth - ImgD.width) / 2 + mleft + 'px';
		    ImgD.style.marginTop = (iheight - ImgD.height) / 2 + mtop + 'px';
		    ImgD.style.float = 'left';
		    ImgD.style.display = 'inline';
		    
		    ImgD.parentNode.style.textAlign="left";
		    
		}
	    //alert(ImgD.style.marginTop);
//		ImgD.style.position = 'relative';
//		ImgD.style.left = (iwidth - ImgD.width) / 2 + mleft + 'px';
//		ImgD.style.top = (iheight - ImgD.height) / 2 + mtop + 'px';
    }
}

/**
 * 试用小图来显示大图
 * @param {Object} ImgD
 * @param {Object} iwidth
 * @param {Object} iheight
 * @param {Object} mleft
 * @param {Object} mtop
 */
function trySmallImg(ImgD, iwidth, iheight, mleft, mtop){
    var smallImg = ImgD.src;
    ImgD.onerror = null;
    if (smallImg.indexOf('m.jpg') != -1) {
        ImgD.src = smallImg.replace('m.jpg', 's.jpg');
    }
}

/**
 * 添加统计功能的代码，在divid里添加，如果divid为""，则在body里添加
 * @param {Object} divId
 * @param {Object} imgSrc	统计图片的url
 */
function addStatisticImg(divId, imgSrc){
    var img = document.createElement('img');
    img.style.width = '1px';
    img.style.height = '1px';
    img.style.display = 'none';
    img.src = imgSrc;
    try {
        if (div != null && divId != '') {
            var elem = document.getElementById(divId);
            elem.appendChild(img);
        }
        else {
            document.body.appendChild(img);
        }
    } 
    catch (err) {
        if (DEBUG_ENABLE) 
            alert('error when get statistic img:' + err.message);
    }
}

//添加此页至收藏夹
function addFavorite(sURL, sTitle) {
	try {window.external.addFavorite(sURL, sTitle);}
	catch (e) {
		try {window.sidebar.addPanel(sTitle, sURL, "");}
		catch (e) {alert("\u52a0\u5165\u6536\u85cf\u5931\u8d25\uff0c\u8bf7\u4f7f\u7528Ctrl+D\u8fdb\u884c\u6dfb\u52a0");	}
	}
	return false;
}

function goPage() {
	var inputVal = $('cmt_pg_ipt').value;
	inputVal = inputVal.trim();
//	alert(inputVal);
	if(inputVal==null || inputVal=='' || isNaN(inputVal)) {//空或非数字，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	var pageCount = $('pl_cmt_total').value;
	inputVal = parseInt(inputVal);
	if(inputVal<1 || inputVal>pageCount) {//不是合法页码范围，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	if(inputVal==$('pl_cmt_current').value) {//是当前页，返回
		$('cmt_pg_ipt').value = '';
		return false;
	}
	var prefix = '';
	var suffix = '';
	if(arguments.length>0) {
		prefix = arguments[0];
	}
	if(arguments.length>1) {
		suffix = arguments[1];
	}
	window.location.href = prefix + $('cmt_pg_ipt').value + suffix;
}

/*
*	获取默认图片
*	obj: img对象
*	width:	默认图片宽度
*	height: 默认图片高度
*	type:	图片的类型（歌手头像，专辑图片，mv图片，用户头像）
*/
function getDefaultImg(obj,width,height,type){
	obj.onerror=null;
	var picUrl="";
	var prefix=imgBaseUrl+"/";
	var suffix=".gif";
	var name="";
	//55*55
	if(width==55&&height==55){ name="55-55-"; }	
	//70*70
	if(width==70&&height==70){ name="70-70-"; }	
	//120*120
	if(width==120&&height==120){ name="120-120-"; }	
	//240*240
	if(width==240&&height==240){ name="120-120-"; }	
	//120*70
	if(width==120&&height==90){ name="120-90-"; }	
	switch(type){
		case 'person':name=name+"person";break;
		case 'album':name=name+"album";break;
		case 'mv':name=name+"mv";break;	
		case 'user':name=name+"person";break;	
		case 'pl':name=name+"album";break;
	}	
	picUrl=prefix+name+suffix;
	//alert(picUrl);	
	//暂时取消，等图片准备好了再恢复
	obj.src=picUrl;
}

function updateClickValue(url, type, id) {
	var params = '';
	params += 'type=' + type;
	params += '&id=' + id;
	new Ajax.Request(
		url,
		{
			method:'get',
			parameters:params,
			evalScripts:true,
			requestHeaders: ['If-Modified-Since','0']
		}
	);
}


function showMore(){
	if(document.getElementById('showMoreInf').firstChild.nodeValue.indexOf('查看全部') >= 0){
		removeClass($('moreContent'), 'less_content');
		$('showMoreInf').firstChild.nodeValue='收起';
	} else {
		addClass($('moreContent'), 'less_content');
		$('showMoreInf').firstChild.nodeValue='查看全部';
	}
}

