﻿SP.Element = {
     elm:null,
     //获取元素信息
     //示例： SP.Element.Info("ElementId").left
     Info:function(obj){
         var o;
         if(typeof(obj)=="string")
           o = document.getElementById(obj);
         else
           o = obj;
         var left = o.offsetLeft;
         var top = o.offsetTop;
         var width = o.offsetWidth;
         var height = o.offsetHeight;
         var opacity = 1;
         var border = "none";
         while (o = o.offsetParent) {
            left += o.offsetLeft;
            top += o.offsetTop;
         }
         return{
          left:left,top:top,width:width,height:height,opacity:opacity,border:border
         }
     },
     //创建元素
     //示例： SP.Element.Create("DIV","xx",0,0,100,100,"#ccc",1,"test");
     Create:function(tagName,_id, _top, _left, _width, _height ,_background, _opacity, _html){
        _opacity = _opacity == null ? 1 : _opacity;
        elm = document.createElement(tagName);
        document.body.appendChild(elm);
        var s = elm.style;
        s.display = "block";
        s.width = _width == null ? "" : _width;
        s.top = _top == null ? "0px" : _top;
        s.left = _left == null ? "0px" : _left;
        s.height = _height == null ? "" : _height;
        s.background = _background == null ? "#fff" : _background;
        s.filter = "alpha(opacity=" + _opacity * 100 + ")";
        s.opacity = _opacity;
        s.position = "absolute";
        s.zIndex = "999";
        elm.id = _id == null ? "" : _id;
        elm.innerHTML = _html == null ? "" : _html;
        return elm;
     },
     Show:function(obj){
        obj.style.display ="block";
     },
     Close:function(obj){
        obj.style.display ="none";
     },
     Remove:function(obj) {
        document.body.removeChild(obj);
     },
     //创建全屏蒙版
     createMarsk:function() {
       var _root=document.compatMode=="CSS1Compat"?document.documentElement:document.body;
       var o= this.Create("DIV","SPMarsk",0,0,_root.scrollWidth+"px",_root.scrollHeight+"px","#000",0.7,"test");
       return o;
     },
     //限制位置内拖动
     Drag:function(obj,minX,maxX,minY,maxY){
         DragElement(obj,0,minX,maxX,minY,maxY);
     },
     //X轴拖动元素 minX,maxX为绝对位置,限制在此位置拖动
     dragX:function(obj,minX,maxX){
         DragElement(obj,1,minX,maxX,0,0);
     },
     //Y轴拖动元素 minY,maxY为绝对位置,限制在此位置拖动
     dragY:function(obj,minY,maxY){
         DragElement(obj,2,0,0,minY,maxY);
     },
     //缩放元素
     Scale:function(obj,step){
         var i = this.Info("img");
         var width;
         if(step>=0)
           width = i.width *(1+ step)
         else
           width = i.width * 1/( (step-2*step +1));
         if(width>10){
            obj.style.width = width + "px";
            obj.style.height = (i.height/i.width)*width +"px";
            obj.style.top = parseInt(obj.style.top)-((parseInt(obj.style.height)-i.height)/2) +"px";
            obj.style.left = parseInt(obj.style.left)-((parseInt(obj.style.width)-i.width)/2) +"px";
         }
         else
         return false;
     },
     //重设图片大小，容器的className为 imgDIV
     //示例：<div class="imgDIV"><img src="" onload="SP.Element.resizeImage(this);" style="visibility:hidden" /></div>
     //obj:图片对象,width:重设后宽度,click:是否能点击打开图片原始地址
     resizeImage:function(obj,width,click){
         var frm;
         if(obj.parentNode.className == "imgDIV")
             frm = obj.parentNode;
         else if(obj.parentNode.parentNode.className == "imgDIV")
             frm = obj.parentNode.parentNode;
         else
             return ;
             frm.style.textAlign="center";
        if(width == undefined)
            width = frm.offsetWidth-2;
        if(click == undefined)
            click =false;
        
        if(obj.width > width) obj.width=width; 
        var top = (parseInt(frm.style.width) - obj.height)/2;
        obj.style.marginTop = top +"px";
        obj.style.visibility ="visible";
        if(click==true){
           obj.style.cursor = "hand";
           obj.onclick = function(){window.open(obj.src);}
        }   
    },
    Tip:function(obj,string){
       var o = this.Info(obj);
       var tip = this.Create("DIV","sp_tip" , o.top-30 +"px" , o.left + "px", "100px","30px" ,"#333", 1, string);
       obj.onmouseout=function(){
      if(tip)
      try{
           document.body.removeChild(tip); }catch(e){}
       }
    }
} 
SP.domReady= (function() {
        var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function() {
            done = true;
            clearInterval(load_timer);
            while (exec = load_events.shift())
                exec();
            if (script) script.onreadystatechange = '';
        };
        return function(func) {
            if (done) return func();
            if (!load_events[0]) {
                // for Mozilla/Opera9
                if (document.addEventListener)
                    document.addEventListener("DOMContentLoaded", init, false);

                // for Internet Explorer
                /*@cc_on@*/
                /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr" + "ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init();
                };
                /*@end@*/
                // for Safari
                if (/WebKit/i.test(navigator.userAgent)) { // sniff
                    load_timer = setInterval(function() {
                        if (/loaded|complete/.test(document.readyState))
                            init();
                    }, 10);
                }
                // for other browsers set the window.onload, but also execute the old window.onload
                old_onload = window.onload;
                window.onload = function() {
                    init();
                    if (old_onload) old_onload();
                };
            }
            load_events.push(func);
        }
    })();
//拖动元素基础函数 type:0 XY轴拖动 ;  type:1 X轴拖动  ; type:2  Y轴拖动
function DragElement(obj,type,minX,maxX,minY,maxY){
    obj.style.cursor="move";
    var objParent;
    if(obj.className.indexOf("Title") >-1 )
       objParent = obj.parentNode;
    else
       objParent = obj;
    obj.onmousedown=function(a){
        var d=document;
        if(!a)a=window.event;
            var x=a.layerX?a.layerX:a.offsetX,y=a.layerY?a.layerY:a.offsetY;
        if(objParent.style.position=="relative")
        {
            var o =  SP.Element.Info(objParent);
            var scroll_top=0;
            var scroll_left=0;
            if(navigator.userAgent.toLowerCase().indexOf("msie") != -1)
            {
               scroll_top=window.document.documentElement.scrollTop;
               scroll_left=window.document.documentElement.scrollLeft;
            }


            x = x + o.left - parseInt(objParent.style.left) - scroll_left;
            y = y + o.top - parseInt(objParent.style.top) - scroll_top;
        }
        if(objParent.setCapture)
            objParent.setCapture();
        else if(window.captureEvents)
            window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
        d.onmousemove=function(a){
            if(!a)  a=window.event;
            if(!a.pageX)  a.pageX=a.clientX;
            if(!a.pageY)  a.pageY=a.clientY;
            var tx=a.pageX-x,ty=a.pageY-y;
            tx = (tx>maxX)?maxX:((tx<minX)?minX:tx);
            ty = (ty>maxY)?maxY:((ty<minY)?minY:ty);
            switch(type)
            {
               case 0:
               objParent.style.left=tx + "px";
               objParent.style.top=ty + "px";
               break;
               case 1:
               objParent.style.left=tx + "px";
               break;
               case 2:
               objParent.style.top=ty + "px";
               break;
            }
        };
        d.onmouseup=function(){
            if(objParent.releaseCapture)
                objParent.releaseCapture();
            else if(window.captureEvents)
                window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
            d.onmousemove=null;
            d.onmouseup=null;
        };
    };
}  

