﻿var Frame={
   MARGINLEFT:1,
   MARGINTOP:28,
   MARGINRIGHT:1,
   MARGINBOTTOM:0,
   SELFPATH:"",
   init:function(id,w,h,title,type,drag,value,url,scrolling,isCover)
   {
       if(isCover)
	  {
	     var node=Frame.cover();
		 Frame.addEvent(node,"mousedown","Frame.noLostFocus('"+id+"')"); 
		 var nd=Frame.getEl(node,"iframe");
		 if(nd!=null)
		    nd=nd[0];
		 if(nd!=null)
		    Frame.addEvent(nd,"mousedown","Frame.noLostFocus('"+id+"')"); 
		 
	  }
      if(Frame.$(id)!=null)
	  {
	     var node=Frame.$(id);
	     //Frame.cssText(node,"display","");
		 //Frame.resize(node);
		 var u=Frame.getAttr(node,"url");
		 if(u!=url)
		 {
		    Frame.setAttr(Frame.getEl(node,"iframe")[0],"src",url);
			Frame.setAttr(node,"url",url);
		 }
		 Frame.$("title"+id).innerHTML=title;
		 Frame.setPreviou(node);
		 Frame.resize(node,w,h);
		 //node.style.display="";
		 if(document.readyState == "complete")
		 {
		    Frame.show(node,1);
		 }
		 return ;
	  }
      var divObj=Frame.createNode("div");  
	  Frame.addNode(document.body,divObj);
	  Frame.cssText(divObj,"class","divFrame");
	  Frame.setAttr(divObj,"id",id);
	  var trObj,tdObj,tbody,tmpObj,imgObj,txtNode,frmObj,bodyObj;
	  /*var tbObj=Frame.createNode("table");
	  Frame.cssText(tbObj,"class","frmTable");
	  var idx=0;
	  tbody=Frame.addNode(tbObj,"tbody");
	  for(var i=0;i<3;i++)
	  { 
	     trObj=Frame.addNode(tbody,"tr");
	     for(var j=0;j<3;j++)
	     {
			Frame.cssText(Frame.addNode(trObj,"td"),"class","w"+idx);
			idx++;
	     }
	  }
	  tmpObj=Frame.createNode("table");
	  tbody=Frame.addNode(tbObj,"tbody");
	  Frame.addNode(tmpObj,tbody);
	  Frame.setAttr(tmpObj,"width","100%");
	  trObj=Frame.createNode("tr");
	  tdObj=Frame.cssText(Frame.createNode("td"),"class","winTitle");
	  Frame.addNode(tdObj,Frame.createText(title));
	  Frame.addNode(trObj,tdObj);
	  tdObj=Frame.createNode("td");
	  Frame.cssText(tdObj,"width,class","37,frmImgBnt");
	  if(type!=null)
	  {
	     imgObj=Frame.setAttr(Frame.createNode("img"),"src",Frame.SELFPATH+"/img/big.gif");
		 Frame.addEvent(imgObj,"click","Frame.maxResize('"+id+"')");
	     Frame.addNode(tdObj,imgObj);
	  } 
	  Frame.addNode(trObj,tdObj);
	  tdObj=Frame.createNode("td");
	  Frame.cssText(tdObj,"width,class","37,frmImgBnt");
	  Frame.addNode(tdObj,Frame.addEvent(Frame.setAttr(Frame.createNode("img"),"src",Frame.SELFPATH+"/img/close.gif"),"click","Frame.close('"+id+"')"));
	  Frame.addNode(trObj,tdObj);
	  Frame.addNode(tbody,trObj);
	  Frame.addNode(Frame.cssText(tbObj.childNodes.item(0).childNodes.item(0).childNodes.item(1),"valign","top"),tmpObj);
	  Frame.addNode(document.body,divObj);
	  Frame.addNode(divObj,tbObj);
	  */
	  Frame.resize(divObj,w,h);
	  Frame.setAttr(divObj,"url",url);
	  var headDiv=Frame.createNode("div");
	  Frame.cssText(headDiv,"class,id","divHead,title"+id);
	  Frame.addNode(headDiv,Frame.createText(title));
	  Frame.addNode(divObj,headDiv);
	  var tmpObj=Frame.createNode("div");
	  Frame.cssText(tmpObj,"class","hand")
	  imgObj=Frame.addNode(tmpObj,Frame.addEvent(Frame.setAttr(Frame.createNode("img"),"src",Frame.SELFPATH+"/img/closeFocus.gif"),"click","Frame.close('"+id+"',1)"));
	  Frame.addEvent(imgObj,"mouseover",Frame.imgMouseOver);
	  Frame.addEvent(imgObj,"mouseout",Frame.imgMouseOver);
	  Frame.cssText(imgObj,"ov,ou,flg","closeo.gif,closeFocus.gif,0"); 
	  Frame.addNode(divObj,tmpObj);
	  with(tmpObj.style)
	  {
	     top=6;
		 left=w-24;
		 position="absolute";
	  }
	  
	  bodyObj=Frame.createNode("div");
	  Frame.addNode(divObj,bodyObj);
	  Frame.setAttr(bodyObj,"id",id+"Body");
	  with(bodyObj.style)
	  {
	     position="absolute";
		 top=height;
	     width=w-Frame.MARGINLEFT-Frame.MARGINRIGHT;
		 height=h-Frame.MARGINTOP-Frame.MARGINBOTTOM;
		 overflow="hidden";
	  }
	   var frmObj=Frame.createNode("iframe");
	   frmObj.frameBorder="0";
	   frmObj.setAttribute("scrolling",scrolling);
	   Frame.addNode(bodyObj,frmObj);
	   frmObj.id="frm"+id;
	   Frame.cssText(frmObj,"class","iframe");
	   frmObj.src=url;
	  if(drag)
	  {
	     var mx=document.body.clientWidth-w;
		 var my=document.body.clientHeight-h;
	     Drag.init(headDiv,divObj,0,mx,0,my);
	  }
	  Frame.addEvent(divObj,"mousedown",function(){Frame.setPreviou(divObj);});
	  Frame.setPreviou(divObj);
	  //Frame.show(divObj);
	  if(document.readyState == "complete")
	  {
		 Frame.show(divObj,1);
	  }
	  return this;
   },
   addEvent:function(o,key,fun)
   {
      
      if(typeof fun=="function")
	  {
	     if(document.addEventListener)
		 {
		    o.addEventListener(key,fun,false);
		 }
		 else if(document.attachEvent)
		 {
		    o.attachEvent("on"+key,fun);
		 }
	  }
	  else if(typeof fun=="string")
	  {
	     if(document.addEventListener)
		 {
		    o.addEventListener(key,new Function(fun),false);
			
		 }
		 else if(document.attachEvent)
		 {
		    o.attachEvent("on"+key,Function(fun));
		 }
	  }
	  return o;
   },
   getEl:function(node,tag)
   {
      if(node!=null)
	     return node.getElementsByTagName(tag);
   },
   getEventEl:function(evt)
   {
       var el;
	   evt =(evt) ? evt : ((window.event) ? window.event : "")
	   if (evt) 
	   {
		  el = (evt.target) ? evt.target : evt.srcElement;
	   }
	   return el;
   },
   getEvent:function(evt)
   {
       var el;
	   evt =(evt) ? evt : ((window.event) ? window.event : "")
	   return evt;
   },
   getEventX:function(evt)
   {
      var e=Frame.getEvent(evt);
	  if(Frame.isIE())
	  {
	     return e.x;
	  }
	  else
	     return e.layerX;
   },
   getEventY:function(evt)
   {
      var e=Frame.getEvent(evt);
	  if(Frame.isIE())
	  {
	     return e.y;
	  }
	  else
	     return e.layerY;
   },
    fGetXY:function(el)
	{
	  var oTmp = el;
	  var pt = new Frame.Point(0,0);
	  do 
	  {
		pt.x += oTmp.offsetLeft;
		pt.y += oTmp.offsetTop;
		oTmp = oTmp.offsetParent;
	  } while(oTmp.tagName!="BODY");
	  return pt;
	},
	Point:function(iX,iY)
	{
		this.x = iX;
		this.y = iY;
	},
   addNode:function(parent,child)
   {
      var obj;
      if(typeof child=="string")
	     obj=Frame.createNode(child);
      else
	     obj=child;
	  parent.appendChild(obj);
	  return obj;
   },
   createNode:function(el)
   {
      return document.createElement(el);
   },
   createText:function(v)
   {
      return document.createTextNode(v);
   },
   cssText:function(o,key,value)
   {
      var ks=key.split(",");
	  var vs=value.split(",");
	  var l=ks.length;
	  var attr;
	  if(l==vs.length)
	  {
	     for(var i=0;i<l;i++)
		 {
			if(ks[i]=="class" || ks[i]=="className")
	        {
			    attr=o.className;
				if(attr==null || attr=="undefined")
			      attr="";
				if(attr="")
				if(attr.indexOf(key[i]))
				   continue;
			   
	           if(Frame.isIE())
		          Frame.setAttr(o,"className",attr+" "+vs[i]);
		       else
		          Frame.setAttr(o,"class",attr+" "+vs[i]);
	        }
	        else
	          Frame.setAttr(o,ks[i],vs[i]);
		 }
	  }
      return o;
   },
   isIE:function()
   {
      if(navigator.appName=="Netscape")
	      return false;
	  return true;
   },
   setAttr:function(o,key,value)
   {
      var obj;
      if(typeof o=="string")
	  {
	     obj=Frame.$(o);
	  }
	  else
	     obj=o;
	  obj.setAttribute(key,value);
	  return obj;
   },
   getImgPath:function(img)
   {
       var path=img.split("/");
	   path=img.replace(path[path.length-1],"");
	   return path;
   },
   getAttr:function(o,key)
   {
      if(typeof o=="string")
	  {
	     if(key=="class" || key=="className")
		 {
		    if(Frame.isIE())
			{
			   return Frame.$(o).getAttribute("className");
			}
			else
			   return Frame.$(o).getAttribute("class");
		 }
	     return Frame.$(o).getAttribute(key);
	  }
	  else
	  {
	      if(key=="class" || key=="className")
		 {
		    if(Frame.isIE())
			{
			   return o.getAttribute("className");
			}
			else
			   return o.getAttribute("class");
		 }
		 return o.getAttribute(key);
	  }
	  return null;
   },
   /**type显示类型，1屏幕中间显示，2，原位置显示
   */
   show:function(o,type)
   {
      var rate=0;
      if(typeof o=="string")
	  {
	     o=Frame.$(o);
	  }
	  Frame.alpha(o,0);
	 o.style.display="";
	  var h=o.offsetHeight;
	  var w=o.offsetWidth;
	  var timer=setTimeout(
	  function flashDiv()
	  {
	    clearTimeout(timer);
		Frame.alpha(o,rate*100);
		if(rate>1)
		{
		   Frame.alpha(o,100);
		   return true ;
		}
		else
		{
		    if(type==1)
			{
				o.style.width=rate*w;
				o.style.height=rate*h;
				o.style.left=(document.body.clientWidth-o.offsetWidth)/2;
				o.style.top=(document.body.clientHeight-o.offsetHeight)/2;
				rate=rate+0.5;
			}
			 timer=setTimeout(function(){flashDiv();},10);
		}
	  },10);
	  /*var timer=setInterval(function(){ 
	     if(document.all)
		{
			o.style.filter = "alpha(opacity="+rate*100+")";
		}
		else
		{
		   o.style.opacity =rate*100;
		}
		if(rate>1)
		 {
		    clearInterval(timer);
			return;
		 } 
		 with(o.style)
		 {
			
			width=rate*w;
			height=rate*h;
			left=(document.body.clientWidth-o.offsetWidth)/2;
			top=(document.body.clientHeight-o.offsetHeight)/2;
		 } 
	    rate=rate+0.25;
	  },5)*/
   },
   alpha:function(o,value)
   {
       if(document.all)
		{
		   o.style.filter = "alpha(opacity="+value+")";
		}
		else
		{
		   o.style.opacity =value;
		}
   },
   close:function(o,type)
   {  
      if(typeof o=="object")
	  {
	      while(o.tagName!=null && o.tagName.toLowerCase()!="div" )
		  {
		     o=o.parentNode; 
		  }
	  }
	  if(typeof o =="string")
         o=Frame.$(o);
	  if(Frame.$("shadowDivObj")!=null)
	     Frame.$("shadowDivObj").style.display="none";
	  var h=o.offsetHeight;
	  var w=o.offsetWidth;
	  var rate=1;
	  var timer;
	  timer=setTimeout(function closeWin() {
	     clearTimeout(timer);
	     Frame.alpha(o,rate*100);
		 if(rate<=0)
		 {
		    o.style.display="none";
		    return;
		 }  
		//with(o.style)
		//{
		    if(type==1)
			{
			    o.style.left=(document.body.clientWidth-rate*w)/2;
				o.style.top=(document.body.clientHeight-rate*h)/2;
				o.style.width=rate*w;
				o.style.height=rate*h;
			}
			
		//}
		rate=rate-0.25;
		timer=setTimeout(function(){closeWin();},10);
	  },10);
   },
   $:function(id)
   {
      return document.getElementById(id);
   },
   maxResize:function(o)
   {
      return Frame.resize(o,document.body.clientWidth,document.body.clientHeight);
   },
   inputFocus:function(evt,clazz)
   {
      var node=Frame.getEventEl(evt);
	  Frame.cssText(node,"class",clazz);
   },
   imgMouseOver:function(evt)
   {
      var o=Frame.getEventEl(evt);
	  var flg=Frame.getAttr(o,"flg");
	  var root=o.src;
	  //var path=root.split("/");
	 // path=root.replace(path[path.length-1],"");
	 var path=Frame.getImgPath(root);
	  if(flg=="0")//mouseover
	  {
	     o.src=path+Frame.getAttr(o,"ov");
		 Frame.setAttr(o,"flg","1");
	  }
      else
	  {
	     o.src=path+Frame.getAttr(o,"ou");
		 Frame.setAttr(o,"flg","0");
	  }
   },
   tableMouseMove:function(evt)
   {
      var node=Frame.getEventEl(evt);
	  var ov,ou,flg,clazz;
	  if(node==null || node.tagName.toLowerCase()=="table")
	     return ;
	  while(node.tagName!=null && node.tagName.toLowerCase()!="tr")
	  {
	     node=node.parentNode;
	  }
	  if(node==null)
	     return ;
	  var tbNode=node.parentNode;
	  var r=Frame.getAttr(tbNode,"srow");
	  var er;
	  ov=Frame.getAttr(tbNode,"ov");
	  flg=Frame.getAttr(tbNode,"flg");
	  clazz=Frame.getAttr(node,"class");
	  if(r==null)
	    r=0;
	  if(ov==null)
	     ov="lsTrFocus";
	  if(node.rowIndex!=r)
	  {
	     if(flg=="1")//mouse out
		 { 
		    Frame.setAttr(tbNode,"ov",clazz);
		    Frame.cssText(node,"class,flg",ov+",0");   
		 }
		 else
		 {
		    Frame.setAttr(tbNode,"ov",clazz);
		    Frame.cssText(node,"class,flg",ov+",1");  
		 }
		    
	  }
   },
   sendTab:function(evt)
   {
      var ev=Frame.getEvent(evt);
	  var key=ev.keyCode || ev.which;
	  if(key==13)
	  {
	     try
		 {
		    ev.keyCode=9;
		 }
		 catch(e)
		 {
		    //ev.which=9;
		 }
	  }
	     
   },
   resize:function(o,w,h)
   {
      var docw=document.body.clientWidth;
	  var doch=document.body.clientHeight;
	  if(typeof o=="string")
	     o=Frame.$(o);
      with(o.style)
	  {
	     display="";
	     if(w>0 && h>0)
		 {
		    width=w;
			height=h;
		 }
	     left=(docw-o.offsetWidth)/2;
		 top=(doch-o.offsetHeight)/2;
		 //position="absolute";
	  }
	  return o;
   },
   setPreviou:function(o)
   {
     //var els=document.getElementsByTagName("div");
	// var l=els.length;
	 var maxIndex=0,maxIndexEl;
	 //if(l<=1)
	  //  return ;
	 /*for(var i=0;i<l;i++)
	 {
	    if(parseInt(els[i].style.zIndex)>maxIndex)
		{
		   maxIndexEl=els[i];
		   maxIndex=els[i].style.zIndex;
		   
		}
	 }*/
	 //alert(maxIndexEl.tagName+":index="+maxIndex+"len:"+l);
	 //maxIndexEl.style.zIndex=o.style.zIndex;
	 o.style.zIndex=Frame.getMaxZIndex()+1;
	 return o;
   },
   length:function()
   {
       var els=document.getElementsByTagName("div");
	   return els.length;
   },
   getMaxZIndex:function()
   {
      var els=document.getElementsByTagName("div");
	  var l=els.length;
	  var maxIndex=0;
	  if(l<=1)
	     return 100;
	  for(var i=0;i<l;i++)
	  {
	     if(els[i].style.zIndex>maxIndex)
		 {
		    maxIndex=els[i].style.zIndex;
		 }
	  }
	  return maxIndex;
   },
   msgBox:function(title,type,msg,fun)
   {
      Frame.addEvent(Frame.cover(),"mousedown","Frame.noLostFocus('frmMsgBox')"); 
      if(Frame.$("frmMsgBox"))
	  {
	     //Frame.$("frmMsgBox").removeNode(true);
		 document.body.removeChild(Frame.$("frmMsgBox"));
	  }
      Frame.init('frmMsgBox','300','150',title,null,true);
      var types=["OKOnly","Critical","Information","OKCancel","RetryCancel","Question"];
	  var cmdText=["确定","确定","确定","确定","重试","确定"];
	  var t=type.toLowerCase();
	  var idx=0;
	  var parentNode;
	  var node="frmMsgBoxBody"
	  for(var i=0;i<types.length;i++)
	  {
	     if(t==types[i].toLowerCase())
		 {
		    idx=i;
			break;
		 }
	  }
	  var imgObj=Frame.createNode("img");
	  var divObj=Frame.createNode("div");
	  Frame.setAttr(imgObj,"src",t+".gif");
	  Frame.addNode(divObj,imgObj);
	  with(divObj.style)
	  {
	     position="relative";
		 top=15;
		 left=10;
	  }
	  if(typeof node=="object")
	  {
	     parentNode=node;
	     Frame.addNode(parentNode,divObj);
	  }
	  else if(typeof node=="string")
	  {
	     parentNode=Frame.$(node);
	     Frame.addNode(parentNode,divObj);
	  }
	  divObj=Frame.createNode("div");
	  Frame.addNode(divObj,Frame.createText(msg));
	  Frame.addNode(parentNode,divObj);
	  with(divObj.style)
	  {
	     position="relative";
		 top=-5;
		 left=80;
	  }
	  Frame.cssText(divObj,"class","frmMsg");
	  var bntObj=Frame.createNode("input");
	  Frame.addEvent(bntObj,"click",fun);//
	  Frame.cssText(bntObj,"type,value,id","button,"+cmdText[idx]+",msgBoxBntId");
	  divObj=Frame.createNode("div");
	  with(divObj.style)
	  {
	     position="relative";
		 top=30;
		 left=80;
	  }
	  Frame.addNode(divObj,bntObj);
	  Frame.addNode(parentNode,divObj);
	  bntObj.focus();
	  if(idx>2)
	  {
	     bntObj=Frame.createNode("input");
	     Frame.addEvent(bntObj,"click","Frame.close('frmMsgBox')");
	     Frame.cssText(bntObj,"type,value","button,取消")
	     divObj=Frame.createNode("div");
	     with(divObj.style)
	     {
	        position="relative";
		    top=6;
		    left=150;
	     }
	     Frame.addNode(divObj,bntObj);
	     Frame.addNode(parentNode,divObj);
	  }
	  else
	  {
	     with(divObj.style)
	     {
	        position="relative";
		    top=30;
		    left=130;
	     }
	  }
   },
   cover:function()
   {
       var shadowDivObj=Frame.$("shadowDivObj");
       if(shadowDivObj==null)
       {
	      shadowDivObj =Frame.setAttr(Frame.createNode("div"),"id","shadowDivObj");
	      /*var frmObj=Frame.createNode("iframe");
		  with(frmObj.style)
		  {
			  frameBorder="0";
			  width="100%";
			  height="100%";
		  }
		 Frame.addNode(shadowDivObj,frmObj);*/
         Frame.addNode(document.body,shadowDivObj);
      }
	  with(shadowDivObj.style)
	  {
	     position="absolute";
		 left="0";
		 top="0";
		 width="100%";
		 height="100%";
		 //zIndex=Frame.getMaxZIndex()+1;
		 display="";
		 backgroundColor="#0D175D";
	  }
	if(document.all)
	{
	    shadowDivObj.style.filter = "alpha(opacity=0)";
	}
	else
	{
	   shadowDivObj.style.opacity =0;
	}
	return Frame.setPreviou(shadowDivObj);
   },
   noLostFocus:function(obj)
   {
       if(typeof obj=="string")
	      obj=Frame.$(obj);
       var a=['top','left'],b=0; 
	   var r;
	   var t=obj.style.top;
	   var l=obj.style.left;
	   var pt=parseInt(obj.style.top);
	   var pl=parseInt(obj.style.left);
       var u=setInterval(function(){ 
	   r=b%2;
	   if(r==0)
         obj.style[a[r]]=(b++)%4<2?pt:pt+4;
	   else
	      obj.style[a[r]]=(b++)%4<2?pl:pl+4;
       if(b>=10)
	   {
	      clearInterval(u);
		  b=0;
		  with(obj.style)
	      {
	         left=l;
		     top=t;
	      }
	    } 
       },32)
	   
   },
   test:function()
   {
      confirm("操作成功操作成功操作成功操作成功操作成功操作成功操作成功");
   }
};
