﻿// JavaScript Document
// Jfp 08-11-12
// Common

function $(id){return (typeof(id)=="object")?id:document.getElementById(id);}
var is_IE = ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1));
function getX(e){var x=e.offsetLeft;while(e = e.offsetParent)x+=e.offsetLeft;return x;}
function getY(e){var y=e.offsetTop;while(e = e.offsetParent)y+=e.offsetTop;return y;}
/**
 * 在指定的节点中查找指定 tagName 与 className 的对象

 * 
 * @parent 查找的父节点
 * @tagName 标签名称
 * @className 样式类名称

 */
var $css = function(parent, tagName, className) {
	var ele = this.$(parent).getElementsByTagName(tagName);
	if (!ele) {
		return null;
	}
	var ret = [];
	for (var i=0; i<ele.length; i++) {
		if (ele[i].className == className) {
			ret[ret.length] = ele[i];
		}
	}
	if (ret.length == 1) {
		return ret[0];
	} else {
		return ret;
	}
}

/**
 * 取得激发事件的对象
 * @e event对象
 * @bubble 是否保留事件冒泡
 */
$event = function(e,bubble) {
	e = e || window.event;
	if(!e)return null;
	if (typeof bubble != "undefined" && !bubble) {
		if (is_IE)
			e.cancelBubble = true;
		else
			e.hasOwnProperty();
	}
	return e.target || e.srcElement;
}

//取消事件冒泡
function cancelBubble(event, cancel) {
    event = event || window.event;
    if(cancel) {
        if(event.stopPropagation)
            event.stopPropagation();
        else
            event.cancelBubble = true;
    }else {
        if(event.startPropagation)
            event.startPropagation();
        else
            event.cancelBubble = false;
    }
}

//获取日期字符串
function getDateStr (){
	var d = new Date();
	return d.toLocaleDateString() + ' 星期' + '日一二三四五六'.charAt(d.getDay());
}
function refBj2008Djs(){
	var d = new Date();
	var d1 = new Date(2008,7,8,20);
	var t = parseInt((d1 - d) / 1000);
	if(t<0)$("Bj2008Djs").innerText = "日期已过!"
	else{
		var s;
		days = parseInt(t / 86400);
		hours = parseInt(t % 86400 / 3600);
		minutes = parseInt(t % 3600 / 60);
		seconds = parseInt(t % 60);
		s = "<strong>" + days +"</strong>天";
		s += "<strong>" + hours +"</strong>小时";
		s += "<strong>" + minutes +"</strong>分";
		s += "<strong>" + seconds +"</strong>秒";
		$("Bj2008Djs").innerHTML = s;
	}
}

//设为首页
function setHomePage (url){
	if(document.all){
		document.body.style.behavior='url(#default#homepage)';
		document.body.setHomePage(url);
	}else if(window.sidebar){ //兼容Firefox
		if(window.netscape){
			try{  
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
			}catch (e){  
				alert( "该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true" );  
      }
    } 
    var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
    prefs.setCharPref('browser.startup.homepage',url);
	}
}

//加入收藏夹
function bookMarkSite (title, url){
	if (document.all)
		window.external.AddFavorite(url, title);
	else if (window.sidebar)
		window.sidebar.addPanel(title, url, "");
}

//设置搜索框内容
function setSearchInput (obj,defValue){
	if(obj.value==defValue){
		obj.value = "";
	}else if(obj.value == "") {
		obj.value = defValue;
	}
}
//检查搜索框内容
function chkSearchInput (defValue){
	if($("searchInput").value==defValue||$("searchInput").value==""){
		alert("请输入查询关键字!");	
		$("searchInput").focus();
		return false;
	}else return true;
}

//切换样式表
function chgStyle(title){
	var links = document.getElementsByTagName("link");  
	for(var i=0;links[i];i++) {  
    	if(links[i].getAttribute("rel").indexOf("style") != -1 && links[i].getAttribute("title")) {
			links[i].disabled = true;
			if(links[i].getAttribute("title").indexOf(title) != -1)  
        		links[i].disabled = false;
    	}
	}
}

//取对象绝对 left,top
var getLeft = function (e){var x=e.offsetLeft;while(e = e.offsetParent)x+=e.offsetLeft;return x;}
var getTop = function (e){var y=e.offsetTop;while(e = e.offsetParent)y+=e.offsetTop;return y;}

Array.prototype.indexOf = function(v){
	for(var i=this.length;i-- && this[i] != v;);
	return i;
}
Array.prototype.remove = function(v){
	var index = this.indexOf(v);   

	if (index !== -1) {   
			this.splice(index, 1);   
	}
}

String.prototype.endsWith = function(str) {
    var reg = new RegExp(str + "$");
    return reg.test(this);
} 

//兼容 Firefox 的一些方法
var isFirefox = (navigator.userAgent.indexOf("Firefox") > 0);
if(window.HTMLElement){ 
    HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode){ 
        switch(where){ 
            case "beforeBegin": 
                this.parentNode.insertBefore(parsedNode,this); 
                break; 
            case "afterBegin": 
                this.insertBefore(parsedNode,this.firstChild); 
                break; 
            case "beforeEnd": 
                this.appendChild(parsedNode); 
                break; 
            case "afterEnd": 
                if(this.nextSibling) 
                    this.parentNode.insertBefore(parsedNode,this.nextSibling); 
                else 
                    this.parentNode.appendChild(parsedNode); 
                break; 
        } 
    }
    HTMLElement.prototype.attachEvent = function (sType,fHandler){ 
        var shortTypeName = sType.replace(/on/,""); 
        fHandler._ieEmuEventHandler = function (e){ 
            window.event = e; 
            return fHandler(); 
        } 
        this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false); 
    }
    HTMLElement.prototype.contains=function(Node){// 是否包含某节点 
        do
            if(Node==this)return true; 
        while(Node=Node.parentNode); 
        return false; 
    }
    HTMLElement.prototype.__defineGetter__("uniqueID",function(){
        if(!arguments.callee.count)
            arguments.callee.count=0;
        var u="moz_id"+arguments.callee.count++;
        window[u]=this;
        this.__defineGetter__("uniqueID",function(){return u});
        return u
    });
}

//如果页面中存在文章标题，将文章标题追加到页面标题中
function setTitle (title){
	if($("title") && $("title").innerText != "")
        document.title = title + " -- " + $("title").innerText;
}

//设置页面中所有 A 标签的 title 属性
function setATitle (){
	var allA = document.getElementsByTagName("A");
	for(var i=0;i<allA.length;i++){
		if(allA[i].title=="")allA[i].setAttribute("title", (allA[i].innerText||allA[i].textContent||"").replace(/\n|\r/g,""));
	}
}

//禁止选取页面内容
function disSelected (){
	if(document.body)
	    document.body.attachEvent("onselectstart", function (){
		      if(!event.srcElement||event.srcElement.tagName!='INPUT')
		  	    return false;
	    });
}

//从“_key:value_;_key1:value1_;”这样的字符串中提取出 key 对应的 value
function getValue(value,key) {
    var re;
    re = new RegExp("^" + key + ":([^\0]*?)$", "ig");
    if(value.match(re)) {
        return value.replace(re, "$1").replace(/_;/,"");
    }else {
        re = new RegExp("_" + key + ":([^\0]*?)_;", "ig");
        if(value.match(re)){
            re = new RegExp("^[^\0]*_" + key + ":([^\0]*?)_;[^\0]*$","ig");
            return value.replace(re, "$1");
        }
    }
    return "";
}

function appendLink(ifm, url) {
    var link;
    if(url.toLowerCase().endsWith("js")) {
        link = ifm.document.createElement('script');
        link.charset = 'utf-8';
        link.type = "text/javascript";
        link.src = url;
    }else {
        link = ifm.document.createElement('link');
        link.charset = 'utf-8';
        link.rel = "stylesheet";
        link.type = "text/css";
        link.href = url;
    }
    ifm.document.getElementsByTagName('head')[0].appendChild(link);
    link = null;
    delete link;
}

var arrIndexOf = function(arr, obj) { //扩展Array
    for(var i = 0; i < arr.length; i++) { 
        if (arr[i] === obj) { 
            return i; 
        } 
    } 
    return -1;
};

//Cookie
function CookieHelper() {}
CookieHelper.prototype.expires ='';
CookieHelper.prototype.path    ='';
CookieHelper.prototype.domain  ='';
CookieHelper.prototype.secure  ='';
//get Cookie value
CookieHelper.prototype.getCookie = function(sCookieName){
    var sName=sCookieName+"=", ichSt, ichEnd;
    var sCookie=document.cookie;
    if ( sCookie.length && ( -1 != (ichSt = sCookie.indexOf(sName)) ) ){
        if (-1 == ( ichEnd = sCookie.indexOf(";",ichSt+sName.length)))
            ichEnd = sCookie.length;
        return unescape(sCookie.substring(ichSt+sName.length,ichEnd));
    }
    return null;
}
//set Cookie value
CookieHelper.prototype.setCookie = function(sCookieName,sCookieValue,dCookieExpires){
    var argv = this.setCookie.arguments, argc = this.setCookie.arguments.length;
    var sExpDate = (argc > 2) ? "; expires="+argv[2].toGMTString() : "";
    var sPath = (argc > 3) ? "; path="+argv[3] : "";
    var sDomain = (argc > 4) ? "; domain="+argv[4] : "";
    var sSecure = (argc > 5) && argv[5] ? "; secure" : "";
    document.cookie = sCookieName + "=" + escape(sCookieValue,0) + sExpDate + sPath + sDomain + sSecure + ";";
}

//将对象移至屏幕中心
function moveToCenter(obj)
{
    var left = (_bodyWidth - obj.offsetWidth)/2;
    var top = (_bodyHeight - obj.offsetHeight)/2;
    obj.style.left = left;
    obj.style.top = top;
}
