﻿var Andy_base={
	Trim:function(s){var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);return (m == null)?"":m[1];},
	getInfo:function(o){//取得坐标	
	 var to=new Object();
	 to.left=to.right=to.top=to.bottom=0;
	 var twidth=o.offsetWidth;
	 var theight=o.offsetHeight;
	 while(o!=document.body&&o.tagName!="HTML"){
	  to.left+=o.offsetLeft;
	  to.top+=o.offsetTop;  
	  o=o.offsetParent;
	 }
	  to.right=to.left+twidth;
	  to.bottom=to.top+theight;
	 return to;
	},
	isChildElement:function(pObj,cObj)
	{
		var isValid=false;
		var p=$(pObj);
		var c=$(cObj);
		while(c.tagName!="BODY"&&c.tagName!="HTML")
		{
			if(c==p)
			{
				isValid=true;
				break;
			}
			c=c.parentNode;
		}
		return isValid;
	},
	hiddenIframe:function(obj)
	{
		var iframes=obj.getElementsByTagName("iframe");
		if(iframes.length>0)
		{
			for(var i=0;i<iframes.length;i++)
				if(iframes[i].className=="frm__hidden")
					return ;
		}
		var frm=document.createElement("<iframe frameborder='0' scrolling='no' class='frm__hidden' style='filter: Alpha(Opacity=0);position: absolute;left: 0px;top: 0px;z-index: 20000;'></iframe>");
		frm.style.width=obj.offsetWidth;
		frm.style.height=obj.offsetHeight;
		obj.style.zIndex=20001;
		obj.appendChild(frm);	
	}
}

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}
function Browser(){
		var ua, s, i;
		this.isIE = false;
		this.isNS = false;
		this.isOP = false;
		this.isMZ = false;
		this.isSF = false;
		ua = navigator.userAgent.toLowerCase();
		s = "opera";
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isOP = true;
			return;
		}
		s = "msie";
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isIE = true;
			return;
		}
		s = "firefox"; //火狐;
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isMZ = true;
			return;
		}
		s = "netscape6/";
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isNS = true;
			return;
		}
		s = "gecko";
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isNS = true;
			return;
		}
		s = "safari";
		if ((i = ua.indexOf(s)) >= 0)
		{
			this.isSF = true;
			return;
		}
}
function RegisterNamespaces()
{
	for (var i=0;i<arguments.length;i++)
	{
		var astrParts = arguments[i].split(".")
		var root = window;
		for (var j=0; j < astrParts.length; j++)
		{
			if (!root[astrParts[j]]) 
			{
				root[astrParts[j]] = new Object(); 
			}
			root = root[astrParts[j]];
		}
	}
}
function $N(name){return document.getElementsByTagName?document.getElementsByTagName(name):new Array()};
function $() {
  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;
}
var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0; i < iterable.length; i++)
      results.push(iterable[i]);
    return results;
  }
}

Object.extend = function(destination, source) {
  for (property in source) {
    destination[property] = source[property];
  }
  return destination;
}
/*Object.extend(Enumerable, {
  map:     Enumerable.collect,
  find:    Enumerable.detect,
  select:  Enumerable.findAll,
  member:  Enumerable.include,
  entries: Enumerable.toArray
});
*/
/*Object.extend(Array.prototype, Enumerable);

Array.prototype._reverse = Array.prototype.reverse;*/

Object.extend(Array.prototype, {
 /* _each: function(iterator) {
    for (var i = 0; i < this.length; i++)
      iterator(this[i]);
  },

  clear: function() {
    this.length = 0;
    return this;
  },

  first: function() {
    return this[0];
  },

  last: function() {
    return this[this.length - 1];
  },

  compact: function() {
    return this.select(function(value) {
      return value != undefined || value != null;
    });
  },

  flatten: function() {
    return this.inject([], function(array, value) {
      return array.concat(value.constructor == Array ?
        value.flatten() : [value]);
    });
  },

  without: function() {
    var values = $A(arguments);
    return this.select(function(value) {
      return !values.include(value);
    });
  },

  indexOf: function(object) {
    for (var i = 0; i < this.length; i++)
      if (this[i] == object) return i;
    return -1;
  },

  reverse: function(inline) {
    return (inline !== false ? this : this.toArray())._reverse();
  },
*/
  shift: function() {
    var result = this[0];
    for (var i = 0; i < this.length - 1; i++)
      this[i] = this[i + 1];
    this.length--;
    return result;
  }/*,

  inspect: function() {
    return '[' + this.map(Object.inspect).join(', ') + ']';
  }*/
});

var tagExpand={
	showIcon:"",
	hiddenIcon:"",
	showHidden:function(srcID,ctrID,sIcon,hIcon)
	{
		//var el=document.getElementById(ctrID);
		var srcEl=$(srcID);
		
		if(ctrID==null||ctrID=="") return ;
		
		var Els=ctrID.split(",");
		
		for(var i=0;i<Els.length;i++)
		{
			var el=$(Els[i]);
			if(!el)	continue;
			if(el.style.display=="none")
			{
				el.style.display="";
				if(i==0&&srcEl!=null){	var icon=sIcon||this.showIcon;	if(icon!="") srcEl.src=icon;};
			}
			else
			{
				el.style.display="none";
				if(i==0&&srcEl!=null){	var icon=hIcon||this.hiddenIcon;if(icon!="")	srcEl.src=icon;};				
				
			}
		}

	},
	setShowHidden:function(obj)
	{
		if(obj.showIcon&&obj.hiddenIcon)
		{
			this.showIcon=obj.showIcon;
			this.hiddenIcon=obj.hiddenIcon;
			var sImg=new Image();
			var hImgs=new Image();
			sImg.src=obj.showIcon;
			hImgs=obj.hiddenIcon;
		}
	}
	
	/*,
	setExpand:function(ev,cmmd)
	{
		if(arguments.length<3) return ;

		switch(cmmd)
		{
			case "showHidden":
				
				break;
		}
	},
	setShowHidden:function(ev,id,cClass,oClass)
	{
		//$(id).ev="showHidden
	}*/
}


String.prototype.Trim=function(){var s=this.toString(); var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);return (m == null)?"":m[1];}
String.prototype.toFormat=function()
{
	var str=this.toString();
	if(arguments.length<=0) return str;	
	for(var i = 0; i < arguments.length; ++i)
	{
		str = str.replace('{' + i + '}',arguments[i]);
	}
	return str;	
}

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}


Function.prototype.bindAsEventListener = function(object) {
  var __method = this;
  return function(event) {
    return __method.call(object, event || window.event);
  }
}
Array.prototype.append=function(obj,nodup){
  if (!(nodup && this.contains(obj))){
    this[this.length]=obj;
  }
}
Array.prototype.indexOf=function(obj){
  var result=-1;
  for (var i=0;i<this.length;i++){
    if (this[i]==obj){
      result=i;
      break;
    }
  }
  return result;
}
Array.prototype.contains=function(obj){
  return (this.indexOf(obj)>=0);
}
Array.prototype.clear=function(){
  this.length=0;
}
Array.prototype.insertAt=function(index,obj){
  this.splice(index,0,obj);
}
Array.prototype.removeAt=function(index){
  this.splice(index,1);
}
Array.prototype.remove=function(obj){
  var index=this.indexOf(obj);
  if (index>=0){
    this.removeAt(index);
  }
}

var jsEvent=new Array();

jsEvent.EventRouter=function(el,eventType){
  this.lsnrs=new Array();
  this.el=el;
  el.eventRouter=this;
  el[eventType]=jsEvent.EventRouter.callback;
}
jsEvent.EventRouter.prototype.addListener=function(lsnr){
  this.lsnrs.append(lsnr,true);
}
jsEvent.EventRouter.prototype.removeListener=function(lsnr){
  this.lsnrs.remove(lsnr);
}
jsEvent.EventRouter.prototype.notify=function(e){
  var lsnrs=this.lsnrs;
  for(var i=0;i<lsnrs.length;i++){
    var lsnr=lsnrs[i];
    lsnr.call(this,e);
  }
}
jsEvent.EventRouter.callback=function(event){
  var e=event || window.event;
  var router=this.eventRouter;
  router.notify(e)
}
