﻿//  ==搜索==  //
function dwrShowSmallLoading(id){
    $(id).innerHTML="<img src='/assets/common/images/dwr_small_loading.gif'> data loading...";
}




function dwrShowLoading(hideLoadingPanel){
    //背景
    var backObj = document.getElementById("dlg_layer_back");
    backObj.style.display = "";
    backObj.style.height =  document.body.scrollHeight+"px";

    //显示loading面板

    if (hideLoadingPanel==undefined || hideLoadingPanel==false){
        var loadingObj = document.getElementById("dlg_layer_loading");
        playDlgLoading(loadingObj,true);
    }
}


function dwrHideLoading(){
    //背景
    var backObj = document.getElementById("dlg_layer_back");
    backObj.style.display = "none";
    //显示loading
    var loadingObj = document.getElementById("dlg_layer_loading");
    playDlgLoading(loadingObj,false);
}

















// 获得对象的状态 //
function getPosition(e){
	var a=new Array()
	var t=e.offsetTop;
	var l=e.offsetLeft;
	var w=e.offsetWidth;
	var h=e.offsetHeight;
	while(e=e.offsetParent){
		t+=e.offsetTop;
		l+=e.offsetLeft;
	}
  return {left:l,top:t,width:w,height:h};
}



//获取鼠标相对文档的绝对位置
function mouseCoords(ev){
    if(ev.pageX || ev.pageY){
        return {x:ev.pageX, y:ev.pageY};
    }
    return {
        x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y:ev.clientY + document.body.scrollTop  - document.body.clientTop
    };
}



//  增加事件 兼容ie firefox  //
function attachEvt(e,f){
    e = e.toLowerCase();
    if (document.all) {
        window.attachEvent(e,f);
    } else {
        e = e.replace("on","");
        window.addEventListener(e,f,false);
    }
}

function attachEvtForObj(obj,e,f){
    e = e.toLowerCase();
    if (document.all) {
    	obj.attachEvent(e,f);
    } else {
        e = e.replace("on","");
        obj.addEventListener(e,f,false);
    }
}


//获得字符串的字节数
function getBytesCount(str){
  var bytesCount = 0;
  if (str != null)
  {
    for (var i = 0; i < str.length; i++)
    {
      var c = str.charAt(i);
      if (/^[\u0000-\u00ff]$/.test(c))
      {
        bytesCount += 1;
      }
      else
      {
        bytesCount += 2;
      }
    }
  }
  return bytesCount;
}


////////////////////////////////////////////////////////////////////////////////
//
//                           缓动公式
//
////////////////////////////////////////////////////////////////////////////////

function random(value){
	return Math.floor(Math.random()*value);
}
Math.distance=function(x1,y1,x2,y2){
	var dx=x2-x1,dy=y2-y1;
	return Math.sqrt(dx*dx,dy*dy);
}
Math.degreeToRadians=function(angle){
	return angle*(Math.PI/180);
}
Math.randiansToDegree=function(angle){
	return angle*(180/Math.PI);
}
Math.sinD=function(angle){
	return Math.sin(angle*(Math.PI/180));
}
Math.cosD=function(angle){
	return Math.cos(angle*(Math.PI/180));
}
Math.tanD=function(angle){
	return Math.tan(angle*(Math.PI/180));
}
Math.atan2D=function(y,x){
	return Math.atan2(y,x)*(180/Math.PI);
}
Math.asinD=function(ratio){
	return Math.asin(ratio)*(180/Math.PI);
}
Math.acosD=function(ratio){
	return Math.acos(ratio)*(180/Math.PI);
}
Math.angleOfLine=function(x1,y1,x2,y2){
	return Math.atan2D(y2-y1,x2-x1);
}
Math.fixAngle=function(angle){
	return ((angle%=360)<0)?(angle+360):angle;
}
Math.cartesianToPolar=function(p){
	var radius=Math.sqrt(p.x*p.x,p.y*p.y);
	var theta=Math.atan2D(p.y,p.x);
	return {r:radius,t:theta};
}
Math.polarToCartesian=function(p){
	var x=p.r*Math.cosD(p.t);
	var y=p.r*Math.sinD(p.t);
	return {x:x,y:y};
}

function randomArrangeArray(getArray){
	var len=getArray.length;
	for(var i=0;i<len;i++){
	rand=random(len);
	temp=getArray[rand];
	getArray[rand]=getArray[i];
	getArray[i]=temp;
    }
}
function randomArrangeArray2(getArray){
	var len=getArray.length;
	for(var i=0;i<len*2;i++){
	rand1=random(len);
	rand2=random(len);
	temp=getArray[rand1];
	getArray[rand1]=getArray[rand2];
	getArray[rand2]=temp;
    }
}

Math.linearTween=function(t,b,c,d){
	return c*t/d+b;
}
Math.easeInQuad=function(t,b,c,d){
	return c*(t/=d)*t+b;
}
Math.easeOutQuad=function(t,b,c,d){
	return -c*(t/=d)*(t-2)+b;
}
Math.easeInOutQuad=function(t,b,c,d){
	if((t/=d/2)<1) return c/2*t*t+b;
	return -c/2*((--t)*(t-2)-1)+b;
}
Math.easeInCubic=function(t,b,c,d){
	return c*Math.pow(t/d,3)+b;
}
Math.easeOutCubic=function(t,b,c,d){
	return c*(Math.pow(t/d-1,3)+1)+b;
}
Math.easeInOutCubic=function(t,b,c,d){
	if((t/=d/2)<1) return c/2*Math.pow(t,3)+b;
	return c/2*(Math.pow(t-2,3)+2)+b;
}






////////////////////////////////////////////////////////////////////////////////
//
//                           消息窗口
//
////////////////////////////////////////////////////////////////////////////////

//MessageBox对象
function MessageBox(left,top){
    this.created = false;//是否已经创建了对话框
    this.left = -1;//左
    this.top = -1;//高

    this.tag=1;//信息提示区分标志
    this.control_id = null;
    this.handle = null; //接受按钮的函数
    this.cancel_handle = null;//取消按钮的函数

    this.btn_click_tag = 1;//按得是哪个按钮  1 关闭 2确认 3 取消

    if (left!=undefined){
        this.left =left;
    }
    if (top!=undefined){
        this.top =top;
    }
}

//信息 方法     info 弹出信息    infoFocus 弹出信息 关闭后设置焦点    infoCallBack 弹出信息 关闭后回调函数
MessageBox.prototype.info = function(msg){
    this.tag=1;
    this.showMessage(msg);
}
MessageBox.prototype.infoFocus = function(msg,control_id){
    this.tag=2;
    this.control_id = control_id;
    this.showMessage(msg);

}
MessageBox.prototype.infoCallBack = function(msg,handle){
    this.tag=3;
    this.handle = handle;
    this.showMessage(msg);
}
//警告 方法
MessageBox.prototype.alert = function(msg){
    this.tag=4;
    this.showMessage(msg);
}
MessageBox.prototype.alertFocus = function(msg,control_id){
    this.tag=5;
    this.control_id = control_id;
    this.showMessage(msg);
}
MessageBox.prototype.alertCallBack = function(msg,handle){
    this.tag=6;
    this.handle = handle;
    this.showMessage(msg);
}
//错误 方法
MessageBox.prototype.error = function(msg){
    this.tag=7;
    this.showMessage(msg);
}
MessageBox.prototype.errorFocus = function(msg,control_id){
    this.tag=8;
    this.control_id = control_id;
    this.showMessage(msg);
}
MessageBox.prototype.errorCallBack = function(msg,handle){
    this.tag=9;
    this.handle = handle;
    this.showMessage(msg);
}

MessageBox.prototype.confirmCallBack = function(msg,accept_handle,cancel_handle){
    this.tag=10;
    this.handle = accept_handle;
    this.cancel_handle = cancel_handle;
    this.showMessage(msg);
}



MessageBox.prototype.showMessage = function(msg){
    var me  = this;

    var t_msg = "";
    if (msg!=null){
        t_msg = msg;
    }
    var t_title = ""
    var t_css = "";
    if (me.tag==1 || me.tag==2 || me.tag==3){
        t_title = "提示"
        t_css = "messagebox_content_pic messagebox_content_pic_info";
    } else if (me.tag==4 || me.tag==5 || me.tag==6){
        t_title = "警告"
        t_css = "messagebox_content_pic messagebox_content_pic_alert";
    } else if (me.tag==7 || me.tag==8 || me.tag==9){
        t_title = "错误"
        t_css = "messagebox_content_pic messagebox_content_pic_error";
    } else if (me.tag==10){
        t_title = "确认"
        t_css = "messagebox_content_pic messagebox_content_pic_confirm";

    }



    //网页代码
    var getBoxHtml = function(){
        var str  = "<div class='messagebox_background_panel' id='messagebox_background_panel' style='display:none;'><iframe  frameborder='0' style='filter:alpha(opacity=0);opacity:0;width:100%;height:100%'></iframe></div>";
            str += "<div class='messagebox_box_panel' id='messagebox_box_panel' style='display:none;'>";
            str += "  <ul>";
            str += "    <li class='messagebox_title' id='messagebox_title'>";
            str += "      <div class='messagebox_title_left'></div>";
            str += "      <div class='messagebox_title_center' id='messagebox_title_center'></div>";
            str += "      <div class='messagebox_title_right'>";
            str += "          <div id='messagebox_btn_close' ></div>";
            str += "      </div>";
            str += "    </li>";
            str += "    <li class='messagebox_content'>";
            str += "      <div id='messagebox_content_pic' class='messagebox_content_pic'>";
            str += "      </div>";
            str += "      <div class='messagebox_content_detail' id='messagebox_content_detail'>";
            str += "          ";
            str += "      </div>";
            str += "    </li>";
            str += "    <li class='messagebox_bottom'>";
            str += "        <input id='messagebox_btn_accept'  class='messagebox_btn'  type='button' value='确 定' name='messagebox_btn_accept' >";
            str += "        <input id='messagebox_btn_cancel'  class='messagebox_btn'  type='button' value='取 消' name='messagebox_btn_cancel' style='display:none'>";
            str += "    </li>";
            str += "  </ul>";
            str += "</div>";
        return str;
    }




    var delayShowMessageBox = function(){
            //背景伸展
            var messagebox_background_panel = document.getElementById("messagebox_background_panel");
            messagebox_background_panel.filters.blendTrans.apply();

            messagebox_background_panel.style.display = "";
            messagebox_background_panel.style.height =  document.body.scrollHeight+"px";
            messagebox_background_panel.filters.blendTrans.play();

            //标题 图片 和内容
            var messagebox_title_center = document.getElementById("messagebox_title_center");
            messagebox_title_center.innerHTML=t_title;
            var messagebox_content_pic = document.getElementById("messagebox_content_pic");
            messagebox_content_pic.className=t_css;
            var messagebox_content_detail = document.getElementById("messagebox_content_detail");
            messagebox_content_detail.innerHTML=t_msg;

            //定位对话框
            var messagebox_box_panel = document.getElementById("messagebox_box_panel");
            messagebox_box_panel.style.display = "";

            if (me.left!=-1) {
                messagebox_box_panel.style.left = me.left;
            } else {
                messagebox_box_panel.style.left = (document.body.offsetWidth-messagebox_box_panel.offsetWidth)/2+document.body.scrollLeft;
            }
            if (me.top!=-1) {
                messagebox_box_panel.style.top = me.top;
            } else {
                messagebox_box_panel.style.top = (document.body.offsetHeight-messagebox_box_panel.offsetHeight)/2+document.body.scrollTop;
            }

            //确定按钮获得焦点
            var messagebox_btn_accept = document.getElementById("messagebox_btn_accept");
            messagebox_btn_accept.focus();
    }


    var messageBoxShowIni = function(){
        if (me.created == false) {
            //在文档中插入代码
            document.body.insertAdjacentHTML("beforeEnd",getBoxHtml());
            me.created = true;
        }

        //移动对话框
        var messagebox_title = document.getElementById("messagebox_title");
        messagebox_title.onmousedown = function(){
            me.oncommand_move_dlg(messagebox_title);
        }
        //关闭按钮
        var messagebox_btn_close = document.getElementById("messagebox_btn_close");
        messagebox_btn_close.onmouseover = function(){
            me.oncommand_btn_close(1);
        }
        messagebox_btn_close.onmouseout = function(){
            me.oncommand_btn_close(2);
        }

        messagebox_btn_close.onmousedown = function(){
            me.oncommand_btn_close(3);
        }
        messagebox_btn_close.onmouseup = function(){
            me.oncommand_btn_close(4);
        }
        //确定按钮
        var messagebox_btn_accept = document.getElementById("messagebox_btn_accept");
        messagebox_btn_accept.onclick = function(){
            me.oncommand_btn_accept();
        }


        //取消按钮
        var messagebox_btn_cancel = document.getElementById("messagebox_btn_cancel");
        if (me.tag==10) {
            messagebox_btn_cancel.style.display="";
            messagebox_btn_cancel.onclick = function(){
                me.oncommand_btn_cancel();
            }
        } else {
            messagebox_btn_cancel.style.display="none";
        }


        //延迟显示对话框
        window.setTimeout(delayShowMessageBox,50);
    }



    if (document.readyState=="complete"){
            messageBoxShowIni();
    }  else {
        var watchReadyState = function() {
            if (document.readyState == "complete"){

                messageBoxShowIni();
                document.detachEvent('onreadystatechange', watchReadyState);
                return;
            }
        }
        document.attachEvent('onreadystatechange',messageBoxShowIni);
    }
}

//按钮-----------------------------------------------------------------------
//确定
MessageBox.prototype.oncommand_btn_accept = function(){
    btn_click_tag = 2;
    this.close();
}

//取消
MessageBox.prototype.oncommand_btn_cancel = function(){
    btn_click_tag = 3;
    this.close();
}

//关闭按钮
MessageBox.prototype.oncommand_btn_close = function(tag){
    var obj = document.getElementById("messagebox_btn_close");
    if (tag==1){//onmouseover
        obj.style.backgroundPositionY="-14px";
    } else if  (tag==2){//onmouseout
        obj.style.backgroundPositionY="0px";
    } else if  (tag==3){//onmousedown
        event.cancelBubble=true;
        obj.style.backgroundPositionY="-28px";
    }  else if  (tag==4){//onmouseup
        obj.style.backgroundPositionY="0px";
        btn_click_tag = 1;
        this.close();
    }
}
//关闭-------------------------------------------------------------------------
MessageBox.prototype.close = function(){
    var obj = document.getElementById("messagebox_background_panel");
    obj.style.display = "none";

    obj = document.getElementById("messagebox_box_panel");
    obj.style.display = "none";

    //设置控件焦点
    if (this.tag==2 || this.tag==5 || this.tag==8) {
        //焦点
        try {
            document.focus();
            document.getElementById(this.control_id).focus();
            document.getElementById(this.control_id).select();
        }catch(e){}
    } else if (this.tag==3 || this.tag==6 || this.tag==9) {//回调函数
        this.handle();
    } else if (this.tag=10){ //confirm
        if (btn_click_tag==2){ //确认
            if (this.handle!=null){
                this.handle();
            }
        } else if (btn_click_tag==3){      //取消
            if (this.cancel_handle!=null){
                this.cancel_handle();
            }
        }
    }
}

//移动对话框
MessageBox.prototype.oncommand_move_dlg = function(obj){
    var currentMoveObj = null;
    var relLeft;
    var relTop;

    currentMoveObj = document.getElementById("messagebox_box_panel");
    obj.setCapture();

	relLeft = event.x - currentMoveObj.style.pixelLeft;
	relTop = event.y - currentMoveObj.style.pixelTop;

    obj.onmouseup = function(){
        currentMoveObj = null;
        obj.releaseCapture();
    }

    obj.onmousemove=function(){
        if (currentMoveObj != null) {
            currentMoveObj.style.pixelLeft=event.x-relLeft;
            currentMoveObj.style.pixelTop=event.y-relTop;
        }
    }
}


////////////////////////////////////////////////////////////////////////////////
//
//                           页面平滑移动到指定的控件
//
////////////////////////////////////////////////////////////////////////////////
function PageSmoothScroll(speed,duration,topSpace){
    this.speed =1;//速度
    this.duration = 20;//持续时间
    this.topSpace = 20;//到顶的距离
    if (speed!=undefined){
        this.speed =speed;
    }
    if (duration!=undefined){
        this.duration =duration;
    }
    if (topSpace!=undefined){
        this.topSpace =topSpace;
    }
}
PageSmoothScroll.prototype.scrollToControl = function(control_id){
    var pos =  getPosition($(control_id));
    newTop = pos.top;
    this.scroll(newTop);
}
PageSmoothScroll.prototype.scrollToNewTop = function(newTop){
    this.scroll(newTop);
}
PageSmoothScroll.prototype.scroll = function(newTop){
    var me  = this;
    var oldTop = document.body.scrollTop;
    var bodyHeight = document.body.scrollHeight;
    var change = newTop-oldTop;
    var down_tag;//是否是向下滚动
    if (newTop>oldTop){
        down_tag = true;
    } else {
        down_tag = false;
    }

    var time=0;
    var doScroll = function(){

        var i = Math.easeInOutQuad(time++,oldTop,change,me.duration);
        if (down_tag){
            var nowTop = i+me.topSpace;
            if (nowTop>=newTop || nowTop>=bodyHeight){
                return;
            }
        } else {
            var nowTop = i;
            if (nowTop<=newTop || nowTop<=0){
                window.scrollTo(0,nowTop-me.topSpace);
                return;
            }
        }
        window.scrollTo(0,i);
        window.setTimeout(doScroll,me.speed);
    }
    doScroll();
}




//字符串连接  用此比 字符串相加快几十倍
function StringBuffer(str){
    this.tmp = new Array();
}
StringBuffer.prototype.append= function(value){
    this.tmp.push(value);
    return this;
}
StringBuffer.prototype.clear = function(){
    tmp.length=1;
}
StringBuffer.prototype.toString = function(){
    return this.tmp.join('');
}







//弹出对话框返回颜色
function dlgSelectColor(oldcolor){
    var newcolor = window.showModalDialog("/assets/common/js/select_color.html", oldcolor, "resizable: no; help: no; status: yes; scroll: no;");
    return newcolor;
}


function download(c,d){
    var url = "/"+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+"a"+""+"ss"+""+""+"et"+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+"s/"+""+""+""+"co"+""+""+"m"+""+""+""+"mo"+""+""+""+""+""+""+""+""+""+""+"n/h"+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+""+"tml/d"+""+""+""+""+""+""+""+""+"own."+""+""+""+""+""+"ht"+""+""+""+""+""+""+""+""+"m?c"+""+"="+""+""+""+""+""+""+""+""+""+c+""+"&"+""+"d"+""+"="+d+""+""+""+""+"";
    window.open(url,'','left=0px,top=0px,width=220px,height=50px;');
}


//格式化字符串到web
function formatStrToWeb(str){
    str = replaceStr(str,"\"","&quot;");
    str = replaceStr(str,"<","&lt;");
    str = replaceStr(str,">","&gt;");
    str = replaceStr(str," ","&nbsp;");
    str = replaceStr(str,"\n","<br>");
    return str;
}



//获得浏览器类别
function getOs() { 
   var OsObject = ""; 
   if(navigator.userAgent.indexOf("MSIE")>0) { 
        return "ie"; 
   } 
   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
        return "ff"; 
   }    
} 

