/*中文UTF*/

var userAgent = navigator.userAgent.toLowerCase();
var is_webtv = userAgent.indexOf('webtv') != -1;
var is_kon = userAgent.indexOf('konqueror') != -1;
var is_mac = userAgent.indexOf('mac') != -1;
var is_saf = userAgent.indexOf('applewebkit') != -1 || navigator.vendor == 'Apple Computer, Inc.';
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko' && !is_saf) && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ns = userAgent.indexOf('compatible') == -1 && userAgent.indexOf('mozilla') != -1 && !is_opera && !is_webtv && !is_saf;
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera && !is_saf && !is_webtv) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);

var body = document.compatMode == "CSS1Compat" ? document.documentElement : document.body;

function windowOnload() {
	/*
	if (document.getElementsByTagName) {
		var anchors = document.getElementsByTagName("a"); 
		for (i=0;i<anchors.length; i++) {
			var anchor = anchors[i];
			if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
				anchor.target = "_blank";
			}
		}
	}
	*/

	var imgs = document.getElementsByTagName("img");
	var imgMaxWidth = 700;
	for (i=0;i<imgs.length; i++) {
		var img = imgs[i];
		//alert(img.src + "\r" + img.width + " * " + img.height);
		if (img.width > imgMaxWidth && (!document.all || $("itemList").contains(img))) {
			img.width = imgMaxWidth;
			var ce = document.createElement('a');
			ce.href = img.src;
			ce.target = "_blank";
			img.alt = "点击查看全图 " + img.src;
			img.applyElement(ce, 'outside');
		}
	}
}

function $(id) {
	try{
		switch(typeof(id)){
			case"undefined":
				return null;
			case"object":
				return id;
			default:
				return document.getElementById(id);
		};
	}catch(e){
		return null;
	};
}

function include(sFileName) {
	var objHead = document.getElementsByTagName('head');
	var objScript = document.createElement('script');
	objScript.type = 'text/javascript';
	objScript.src = sFileName;
	objHead[0].appendChild(objScript);
}

function in_array(needle, haystack) {
	if(typeof needle == 'string') {
		for(var i in haystack) {
			if(haystack[i] == needle) {
					return true;
			}
		}
	}
	return false;
}

function isUndefined(variable) {
	return typeof variable == 'undefined' ? true : false;
}

function findtags(parentobj, tag) {
	if(!isUndefined(parentobj.getElementsByTagName)) {
		return parentobj.getElementsByTagName(tag);
	} else if(parentobj.all && parentobj.all.tags) {
		return parentobj.all.tags(tag);
	} else {
		return null;
	}
}

function doane(event) {
	e = event ? event : window.event ;
	if(is_ie) {
		e.returnValue = false;
		e.cancelBubble = true;
	} else {
		e.stopPropagation();
		e.preventDefault();
	}
}

if(!Array.prototype.push) {
	Array.prototype.push = function () {
		var startLength = this.length;
		for(var i=0;i<arguments.length;i++) {
			this[startLength+i] = arguments[i];
		}
		return this.length;
      }
}


String.prototype.ulength = function () {
	var c, b = 0, l = this.length;
	while(l) {
		c = this.charCodeAt(--l);
		b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4));
	};
	return b;
	
}

String.prototype.usubstring = function (start, end) {
	var s = '', p = 0;
	
	for (i=0;i<this.length;i++) {
		if (start <= p && p < end) {
			s += this.charAt(i);
		}
		c = this.charCodeAt(i);
		p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
	}
	return s;
}

String.prototype.usubstr = function (start, l) {
	var s = '', p = 0;
	for (i=0;i<this.length;i++) {
		if (start <= p && p < start + l) {
			s += this.charAt(i);
		}
		c = this.charCodeAt(i);
		p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
	}
	return s;
}

String.prototype.uindexOf = function (str, starIndex) {
	var p = 0, l = str.length;
	for (i=0;i<this.length;i++) {
		if (this.substring(i, i + l) == str && (starIndex && p >= starIndex)) {
			return p;
		}
		c = this.charCodeAt(i);
		p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
	}
	return false;
}

Function.prototype.bind = function (object){
	var __method = this;
	return function (){
		__method.apply(object,arguments);
	};
};

Function.prototype.bindAsEventListener = function (object){
	var __method = this;
	return function (event){
		__method.call(object,event||window.event);
	};
};

Object.extend=function (destination,source){
	for(property in source){
		destination[property]=source[property];
	};
	return destination;
};

if(!window.Event){
	var Event=new Object();
};

Object.extend(Event, {
	observers:false,
	
	element:function (event){
		return event.target||event.srcElement;
	},
	
	isLeftClick:function (event){
		return (((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));
	},
	
	pointerX:function (event){
		return event.pageX||(event.clientX+(document.documentElement.scrollLeft||body.scrollLeft));
	},
	
	pointerY:function (event){
		return event.pageY||(event.clientY+(document.documentElement.scrollTop||body.scrollTop));
	},
	
	stop:function (event){
		if(event.preventDefault){
			event.preventDefault();
			event.stopPropagation();
		}else {
			event.returnValue=false;
			event.cancelBubble=true;
		};
	},
	findElement:function (event,tagName){
		var element=Event.element(event);
		while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
			element=element.parentNode;return element;
	},
	_observeAndCache:function (element,name,observer,useCapture){
		if(!this.observers)this.observers=[];
		if(element.addEventListener){
			this.observers.push([element,name,observer,useCapture]);
			element.addEventListener(name,observer,useCapture);
		}else if(element.attachEvent){
			this.observers.push([element,name,observer,useCapture]);
			element.attachEvent('on'+name,observer);
		};
	},
	unloadCache:function (){
		if(!Event.observers)return ;
		for(var i=0;i<Event.observers.length;i++){
			Event.stopObserving.apply(this,Event.observers[i]);
			Event.observers[i][0]=null;
		};
		Event.observers=false;
	},
	observe:function (element,name,observer,useCapture){
		var element = $(element);
		useCapture=useCapture||false;
		if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)) {
			name='keydown';
		}
		this._observeAndCache(element,name,observer,useCapture);
	},
	stopObserving:function (element,name,observer,useCapture){
		var element=$(element);
		useCapture=useCapture||false;
		if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))name='keydown';
		if(element.removeEventListener){
			element.removeEventListener(name,observer,useCapture);
		}else if(element.detachEvent){
			element.detachEvent('on'+name,observer);
		};
	}
});

Event.observe(window,'unload',Event.unloadCache,false);

var Class=function (){
	var _class=function (){
		this.initialize.apply(this,arguments);
	};
	
	for(i=0;i<arguments.length;i++){
		superClass=arguments[i];
		for(member in superClass.prototype){
			_class.prototype[member]=superClass.prototype[member];
		};
	};
	
	_class.child=function (){
		return new Class(this);
	};
	
	_class.extend=function (f){
		for(property in f){
			_class.prototype[property]=f[property];
		};
	};
	
	return _class;
};


var Dragdrop=new Class();
Dragdrop.prototype={
	initialize:function (width,height,shadowWidth,showShadow,contentType){
		this.dragData=null;
		this.dragDataIn=null;
		this.backData=null;
		this.width=width;
		this.height=height;
		this.shadowWidth=shadowWidth;
		this.showShadow=showShadow;
		this.contentType=contentType;
		this.IsDraging=false;
		this.oObj=$('dialogBox');
		
		Event.observe($('dialogBoxTitle'),"mousedown",this.moveStart.bindAsEventListener(this),false);
	},
	
	moveStart:function (event){
		this.IsDraging=true;
		if(this.contentType==1){
			$("iframeBG").style.display="";
			$("iframeBG").style.width=this.width;
			$("iframeBG").style.height=this.height;
		};
		
		Event.observe(document,"mousemove",this.mousemove.bindAsEventListener(this),false);
		Event.observe(document,"mouseup",this.mouseup.bindAsEventListener(this),false);
		Event.observe(document,"selectstart",this.returnFalse,false);
		this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};
		this.backData={x:parseInt(this.oObj.style.left),y:parseInt(this.oObj.style.top)};
	},
	
	mousemove:function (event){
		if(!this.IsDraging)return ;
		var iLeft=Event.pointerX(event)-this.dragData["x"]+parseInt(this.oObj.style.left);
		var iTop=Event.pointerY(event)-this.dragData["y"]+parseInt(this.oObj.style.top);
		
		if(this.dragData["y"]<parseInt(this.oObj.style.top))
			iTop=iTop-12;
		else if(this.dragData["y"]>parseInt(this.oObj.style.top)+25)
			iTop=iTop+12;

		this.oObj.style.left=iLeft;this.oObj.style.top=iTop;
		if(this.showShadow){
			$('dialogBoxShadow').style.left=iLeft+this.shadowWidth;
			$('dialogBoxShadow').style.top=iTop+this.shadowWidth;
		};
		
		this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};
		document.body.style.cursor="move";
	},
	
	mouseup:function (event){
		if(!this.IsDraging)
			return ;
		if(this.contentType==1)
			$("iframeBG").style.display="none";
		document.onmousemove=null;
		document.onmouseup=null;
		var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||body.scrollLeft);
		var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||body.scrollTop);
		if(mousX<1||mousY<1||mousX>body.clientWidth||mousY>body.clientHeight){
			this.oObj.style.left=this.backData["x"];
			this.oObj.style.top=this.backData["y"];
			if(this.showShadow){
				$('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;
				$('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth;
			};
		};
		
		this.IsDraging=false;
		document.body.style.cursor="";
		Event.stopObserving(document,"selectstart",this.returnFalse,false);
	},
	
	returnFalse:function (){
		return false;
	}
};

Event.observe(window, "load", windowOnload, false);
