////////////////////////////////////////////////////////////////////////////////
//
//  THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER PRODUCT COMPONENT.
//  AJAX CLASS FOR HITBLOG.CN
//  Created at 06-4-26 23:46
//  Programming by Gaya.
//  Updated at 06-4-28 11:41
//  Version 0.1
//  Copyright (c) 2006 HitBlog.cn  All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
var Browser = {
	isIE7		: false,
	isIE6		: false,
	isIE		: false,
	isNN5		: false,
	isNN		: false,
	isOP9		: false,
	isOP		: false,
	Name		: "",
	Version		: "",
	App			: "",
	Init	: function () {
		var san = navigator.appName;
		var sav = navigator.appVersion;
		var sua = navigator.userAgent;

		if (san=="Microsoft Internet Explorer") {
			this.Name = "IE";
			this.isIE = true;

			if (sav.indexOf("MSIE 7")>-1){
				this.App = "IE7";
				this.Version = "7";
				this.isIE7 = true;
			}else if (sav.indexOf("MSIE 6")>-1){
				this.App = "IE6";
				this.Version = "6";
				this.isIE6 = true;
			}
		} else if (san=="Opera") {
			this.Name = "OPERA";
			this.isOP = true;

			if (sav.indexOf("9.")==0) {
				this.App = "OP9";
				this.Version = "9";
				this.isOP9 = true;
			}
		} else if (san=="Netscape") {
			this.Name = "NN";
			this.isNN = true;

			if (sav.indexOf("5.0")>-1){
				this.Name = "NN5";
				this.Version = "5";
				this.isNN5 = true;

				if (sua.indexOf("Firefox/2")>-1)
					this.App = "FX2";
				else if (sua.indexOf("Firefox")>-1)
					this.App = "FX";
			}
		}

	}
}
Browser.Init();



//定义类  XmlHttp 的构造函数
function XmlHttp()
{
	this.busy=false;
	this.status=0;
	this.timeout=10000;
	
	var xhrRequest = false;
	if(window.XMLHttpRequest) { //Mozilla
		xhrRequest = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		try {
			xhrRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xhrRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				xhrRequest = false;
			}
		}
	}
	this.getXhr=xhrRequest;
	
}

//定义类原型 XmlHttp 的方法 send
XmlHttp.prototype.send = function(url,data,callback)
	{	
		var xhrObj = this.getXhr;
		var status = this.status;
		
		if(typeof(xhrObj) != "object"){
			return;
		}

		if(data == ""){
			xhrObj.open("GET",url,true);
			xhrObj.send(null);
		}else{ 
			xhrObj.open("POST",url,true);
			xhrObj.setRequestHeader("Content-Length",data.length); 
			xhrObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			xhrObj.send(data);
		}
		if(typeof(callback) == "function" ){
			xhrObj.onreadystatechange = function ()
				{
					if (status==0) {
						callback(xhrObj);
					} else {
						if (xhrObj.readyState == 4 && xhrObj.status==status){
							callback(xhrObj);
						}
					}
				};
		}
	};

//定义类原型 XmlHttp 的方法 sendx
XmlHttp.prototype.sendx = function(url,data,callback,callbackOther,callbackTimeout)
	{	
		var xhrObj = this.getXhr;
		
		if(typeof(xhrObj) != "object"){
			return;
		}

		if(data == ""){
			xhrObj.open("GET",url,true);
			xhrObj.send(null);
		}else{ 
			xhrObj.open("POST",url,true);
			xhrObj.setRequestHeader("Content-Length",data.length); 
			xhrObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			xhrObj.send(data);
		}
		
		var fto = function ()
			{
				if (xhrObj.readyState == 4 && xhrObj.status == 200){
					callback(xhrObj);
				} else {
					callbackTimeout(xhrObj);
				}
			};
			
		var sto = setTimeout(fto,this.timeout);
		
		if(typeof(callback) == "function" ){
			xhrObj.onreadystatechange = function ()
				{
					clearTimeout(sto);
					if (xhrObj.readyState == 4){
						if(xhrObj.status == 200){
							callback(xhrObj);
						} else {
							callbackOther(xhrObj);
						}
					}
				};
		}
	};

//定义类原型 XmlHttp 的方法 abort
XmlHttp.prototype.abort = function()
	{
		this.getXhr.abort();
	};

//定义类原型 XmlHttp 的方法 release
XmlHttp.prototype.release = function()
	{
		this.getXhr.abort();
		this.getXhr=null;
		delete this.getXhr;
	};
	
	
// -----------------------------------------------------Other Function---------------------
function GETN(xDOM,sTN,iN)
{
	try{return xDOM.getElementsByTagName(sTN)[iN].firstChild.data}catch(e){return false};
}
function GETNs(xDOM,sTN)
{
	try{return xDOM.getElementsByTagName(sTN)}catch(e){};
}

//--------------------------------------------------------------------------


function $() // this code from Prototype.js
{
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);

		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}


function $id(sID)
{
	try{return document.getElementById(sID)}catch(e){return false};
}
function $N(sNAME)
{
	try{return document.getElementsByName(sNAME)}catch(e){return false};
}
function GEId(sID)
{
	try{return document.getElementById(sID)}catch(e){return false};
}
//--------------------------------------------------------------------------


function $show(sID)
{
	try{GEId(sID).style.display="block";return true;}catch(e){return false};
}
function $hide(sID)
{
	try{GEId(sID).style.display="none";return true;}catch(e){return false};
}

function $disabled(sID)
{
	try{GEId(sID).disabled="disabled";return true;}catch(e){return false};
}
function $enable(sID)
{
	try{GEId(sID).disabled="";return true;}catch(e){return false};
}


/*/////////////////////////////////////////////////////////////////////////////
/////////////////////////////  Event Functions  ///////////////////////////////
/////////////////////////////////////////////////////////////////////////////*/

function addEventHandler(r,e,f,b)
{
	try
	{
		if (document.addEventListener)
		{
			r.addEventListener(e,f,b);
		}else{
			r.attachEvent("on"+e,f);
		}
		return true;
	} catch(e){return false}
}
function removeEventHandler(r,e,f,b)
{
	try	{
		if (document.removeEventListener)
		{
			r.removeEventListener(e,f,b);
		}else{
			r.detachEvent("on"+e,f);
		}
		return true;
	} catch(e){return false}
}
function stopEvent(e)
{
		if (e.stopPropagation)
			e.stopPropagation();
		else
			e.cancelBubble = true;
		if (e.PreventDefault)
			e.PreventDefault();
		else
			e.returnValue = false;
}
function addEvent(r,e,f,b)
{
	try{
		if (typeof r == 'string') r = GEId(r);
		if (r) return addEventHandler(r,e,f,b);
		return false;
	}catch(e){return false}
}
function removeEvent(r,e,f,b)
{
	try{
		if (typeof r == 'string') r = GEId(r);
		if (r) return removeEventHandler(r,e,f,b);
		return false;
	} catch(e){return false}
}


function _addEvent(e,f)
{
	try{
		if (typeof e=="string") {

			return addEventHandler(document,e,f,true);

		} else if (typeof e=="object" && e.pop) {

			for (i=0;i<e.length;i++ ) {
				if (e[i]) {
					
					var sb=addEventHandler(document,e[i],f,true);
					if (!sb) return false;
				}
			}
			return true;
		}

	} catch(e) {}
	return false;
}
function _removeEvent(e,f)
{
	return removeEventHandler(document,e,f,true);
}


/* 定义 String 原型 的方法 addEvent */
String.prototype.addEvent= function (e,f)
{
	try{
		if (this.length<=0) return false;
		if (typeof e=="string") {

			return addEventHandler(GEId(this),e,f,true);

		} else if (typeof e=="object" && e.pop) {

			for (i=0;i<e.length;i++ ) {
				if (GEId(this)&&e[i]) {
					var sb=addEventHandler(GEId(this),e[i],f,true);
					if (!sb) return false;
				}
			}
			return true;
		}

	} catch(e) {}
	return false;
	
}
String.prototype.removeEvent = function (e,f)
{
	try	{
		if (GEId(this)) return removeEventHandler(GEId(this),e,f,true);
	}catch(e){}
	return false;
}
Object.prototype.addEvent = function (e,f)
{	try{
		if (this.length<=0) return false;
		if (typeof e=="string") {

			return addEventHandler(this,e,f,true);

		} else if (typeof e=="object" && e.pop) {

			for (i=0;i<e.length;i++ ) {
				if (this&&e[i]) {
					var sb=addEventHandler(this,e[i],f,true);
					if (!sb) return false;
				}
			}
			return true;
		}

	} catch(e) {}
	return false;
}

Object.prototype.removeEvent = function (e,f)
{
	try	{
		if (this) return removeEventHandler(this,e,f,true);
	}catch(e){}
	return false;
}
/* 定义 String 原型 的方法 fsz */
String.prototype.fsz= function ()
{
	var sz=this.toString();
	sz=sz.replace(/\n/ig,"<br />");
	return sz;
}
/* 定义 String 原型 的方法 fprint */
String.prototype.fprint= function ()
{
	if(arguments.length<1)
		return false;
	
	var sz=arguments[0];
	if(arguments.length==1){
		GEId(this.toString()).innerHTML+=sz.fsz();
		return sz;
	}
	for (var i = 1; i < arguments.length; i++) {
		var arg = arguments[i];
		if (typeof arg == 'string') {
			var re = new RegExp("\%"+i,"ig");
			sz=sz.replace(re,arg);
		}
	}
	GEId(this.toString()).innerHTML+=sz.fsz();
}
/* 定义 String 原型 的方法 setHTML */
String.prototype.setHTML= function (sz)
{
	try{
		GEId(this.toString()).innerHTML=sz;
	} catch(e) {return false;}	
}
/* 定义 String 原型 的方法 setHTML */
String.prototype.appendHTML= function (sz)
{
	try{
		GEId(this.toString()).innerHTML+=sz;
	} catch(e) {return false;}	
}

String.prototype.clip=function(length){
    var sz=this.toString();
    if(sz.length>length)
    return sz.substring(0,length)+"...";
    return sz;
}
String.prototype.format= function ()
{
	var sz=this.toString();
	if(arguments.length<1)
		return sz;
	for (var i = 0; i < arguments.length; i++) {
		var arg=arguments[i];
		if (typeof arg == 'string' || typeof arg == 'number') {
			var re = new RegExp("[\{]"+i+"[\}]","ig");
			//sz=sz.replace(re,arg);
			sz=sz.replace(re,arg);
		}
	}
	
	return sz;
}
String.prototype.padLeft = function (length,text)
{
    var sz=this.toString();
    if(sz.length<length) {
        var a=length-sz.length;
        for(var i=0;i<a;i++){
            sz=text+sz;
        }
    }
    return sz;
}
String.prototype.trim = function ()
{
	return this.replace(/(^\s*)|(\s*$)/g,"");
}
String.prototype.ltrim = function ()
{
	return this.replace(/(^\s*)/g, "");
}
String.prototype.rtrim = function ()
{
	return this.replace(/(\s*$)/g, "");
}


Number.prototype.padLeft = function (length,text)
{
    var sz=this.toString();
    if(sz.length<length) {
        var a=length-sz.length;
        for(var i=0;i<a;i++){
            sz=text+sz;
        }
    }
    return sz;
}





/*/////////////////////////////////////////////////////////////////////////////
///////////////////////   External Link Functions   ///////////////////////////
/////////////////////////////////////////////////////////////////////////////*/
function externallinks() { 
	//try{
		if (!document.getElementsByTagName) return; 
		var anchors = document.getElementsByTagName("a"); 
		for (var i=0; i<anchors.length; i++) { 
			var anchor = anchors[i]; 
			if (anchor.getAttribute("href") && 	(anchor.getAttribute("rel") == "external" || anchor.getAttribute("rel") == "_blank")) 
				anchor.target = "_blank"; 
		} 
	//}catch(e){}
} 
window.onload = externallinks;

function divbutton() { 
	//try{
		if (!document.getElementsByTagName) return; 
		var anchors = document.getElementsByTagName("div"); 
		for (var i=0; i<anchors.length; i++) { 
			var anchor = anchors[i]; 
			if (anchor.getAttribute("rel") == "button" && anchor.getAttribute("title")){
				
				var url=anchor.getAttribute("title");
				anchor.title="";
				anchor.className="divButton";
				anchor.onclick = function(){jumpUrl(url)};
			}
		} 
	//}catch(e){}
} 
window.onload = divbutton;


function jumpUrl(url){
    location.href=url;
}