﻿/*******************************************************************************
 *        程序 ID     ：    ScriptManagerPlusTool
 *        程序名称    ：    ScriptManager辅助JS
 *
 *        处 理       ：    ScriptManager辅助JS
 *
 *        功 能       ：    ScriptManager辅助JS
 *                          1、检查是否在框架中
 *                          2、处理请求提交事件
 *                          3、处理请求返回事件
 *                          4、处理错误
 *                          5、模式框、提示框、确认框
 *
 *
 *        修改履历
 *        年  月  日 区分 所 属/担 当        内 容                       对应编号
 *        ---------- ---- ------------------ --------------------------- --------
 *        2007/10/01 编写 Intasect/陈冬    新規作成
 *        2007/10/30 变更 Intasect/陈冬    计算相对路径时检查localhost
 *        2007/11/05 变更 Intasect/陈冬    将异常信息和提示信息区别显示  W0710070.206
 *        2007/11/08 变更 Intasect/陈冬    区分WPBIZException的类型      W0710070.206.2
 *                                         Info型异常仍显示为提示
 *        2007/11/19 变更 Intasect/陈冬    细分WPBIZException异常类型
 *        2008/01/08 变更 Intasect/陈冬    disableElements时加_imadeDisabled标识(因个别页面同一事件提交两次造成hidden之后不能还原)
 * 
 *        Copyright ( C ) 2007 by Intasect communications(Chengdu), Co, Ltd.
 *        All rights reserved.
 *
********************************************************************************/

// 页片内[提示]框调用位置
var CallAlertPos   = -1;
// 页片内[确认]框调用位置
var CallConfirmPos = -1;
// 是否允许按回车键提交
var EnableEnterSubmit = false;
// 提交时是否显示遮挡层
var MaskOnPost     = true;

//注册Ajax状态事件处理函数
try{
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitRequestHandler);
}catch(e){}

// 请求初始化处理函数
function InitRequestHandler(sender,args)
{
    if(   !EnableEnterSubmit
       && (  args.get_postBackElement().type == "text"
          || args.get_postBackElement().type == "password"
          )
      )
    {
        //若焦点在textbox或password框中,按回车时不允许提交form
        args.set_cancel(true);
    }
}

// 请求开始处理函数
function BeginRequestHandler(sender, args)
{
    try
    {
        if(AjaxControlToolkit && AjaxControlToolkit.ModalPopupBehavior)
        {
            AjaxControlToolkit.ModalPopupBehavior.HasModal = false;
        }
    }catch(e){}
    PageMaster.Requesting = true;
    if(   args.get_postBackElement().WaitOnPost != "false" 
       && args.get_postBackElement().parentNode.WaitOnPost != "false")
    {
        if(MaskOnPost)
        {
            ToggleMaskDiv('',true);
        }
        if(PageMaster.TopWin != null && PageMaster.TopWin.Flakes != undefined)
        {
            PageMaster.TopWin.Flakes.LoadingBegin(PageMaster.GetWinId());
        }
        PageMaster.WaitingFlag = true;
    }
}

// 停止请求状态
function HideWaiting()
{   
    if(PageMaster.WaitingFlag)
    {   
        if(PageMaster.Requesting){
            if(MaskOnPost){
                ToggleMaskDiv('none');
            }
            PageMaster.Requesting = false;
            PageMaster.AutoHeightResize();
        }
        if(PageMaster.TopWin != null && PageMaster.TopWin.Flakes != undefined){
            PageMaster.TopWin.Flakes.LoadingEnd(PageMaster.GetWinId());
        }
        PageMaster.WaitingFlag = false;
    }
}

// 请求结束处理函数
function EndRequestHandler(sender, args)
{
    if(!args.get_response()._responseAvailable && !args.get_response()._timedOut){
        return;
    }
    if (args.get_error() != undefined)
    {
        HideWaiting();
        
        var errorMessage;
        if (args.get_response()._timedOut){
            errorMessage = "Info::请求超时,操作未成功！";
        }else if(args.get_response().get_statusCode() == 200){
            errorMessage = args.get_error().message;
        }else if(args.get_response().get_statusCode() == 500){
            var errStr = args.get_response().get_responseData();
            errStr = errStr.substring(errStr.indexOf("<title>") + "<title>".length,errStr.indexOf("</title>"));
            errorMessage = errStr;
        }
        args.set_errorHandled(true);

        var errMess = errorMessage.split("::");
        if(errMess.length > 1)
        {
            ShowException(errMess[1],errMess[0]);
        }else{
            ShowFatal(errorMessage);
        }
    }
    else
    {
        setTimeout("HideWaiting()", PageMaster.MiniItvTime);
    }
}

// 显示/隐藏遮挡层
// visString : 'none' -> 隐藏
//             ''     -> 显示
/* 显示/隐藏遮挡层
 * @visString : 'none'为隐藏 ''为显示
 * @isLoading : 是否显示loading
 */
function ToggleMaskDiv(visString,isLoading)
{
    var adivMask;
    adivMask = document.getElementById('AlertDivMask');
    if(visString == ""){
        if(adivMask){
            adivMask.style.display = visString;
        }else{
            adivMask = document.createElement("DIV");
            adivMask.id = "AlertDivMask";
            if(isLoading && window.frameElement.id && window.frameElement.id.indexOf("frameFlake") > -1)
            {
                var loadingImg = document.createElement("IMG");
                loadingImg.width="32";
                loadingImg.height="32";
                loadingImg.src = PageMaster.getRootPath() + "img/v2/loading.gif";
                var loadingDiv = document.createElement("DIV");
                loadingDiv.style.textAlign = "right";
                loadingDiv.appendChild(loadingImg);
                adivMask.appendChild(loadingDiv);
            }
            document.body.appendChild(adivMask);
        }
    }else{
        if(adivMask){
            adivMask.style.display = visString;
            adivMask.removeNode(true);
        }
    }
    
    if(window.frameElement != null){
        //框架中
        if(visString != 'none'){
            //显示
            //var w = window.frameElement.style.width;
            var w = window.frameElement.offsetWidth;
            //var h = window.frameElement.style.height;
            var h = window.frameElement.offsetHeight;
            var t = window.document.documentElement.scrollTop;
            var l = window.document.documentElement.scrollLeft;
            adivMask.style.width     = w;
            adivMask.style.height    = h;
            adivMask.style.pixelTop  = t;
            adivMask.style.pixelLeft = l;
            document.body.scroll  = 'no';
            PageMaster.disableSpecialObject();
        }else{
            //隐藏
            if(PageMaster.TopWin.Flakes && PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId())){
                document.body.scroll  = PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()).aspx.options.scroll.toLowerCase();
                PageMaster.enableSpecialObject();
            }
            PageMaster.enableSpecialObject();
        }
    }else{
        //非框架中
        if(visString != 'none'){
            //显示
            var w = window.document.body.offsetWidth;
            var h = window.document.body.offsetHeight;
            var t = window.document.documentElement.scrollTop;
            var l = window.document.documentElement.scrollLeft;
            adivMask.style.width     = w + 'px';
            adivMask.style.height    = h + 'px';
            adivMask.style.pixelTop  = t;
            adivMask.style.pixelLeft = l;
            window.document.documentElement.style.overflow = "hidden";
            PageMaster.disableSpecialObject();
        }else{
            //隐藏
            window.document.documentElement.style.overflow = "";
            PageMaster.enableSpecialObject();
        }
    }
}

// 显示页片内[模式]框
// url           : 模式框内嵌IFrame页面URL
// type          : 编辑框(EDIT)或信息框(INFO),default为信息框
// title         : 标题文字
// width         : 模式框宽度
// height        : 模式框高度
// disableScroll : 是否禁用滚动条
function ShowInnerModel(url,type,title,width,height,disableScroll){
    if(PageMaster.Requesting)
    {
        PageMaster.AutoHeightResize();
    }
    if(document.readyState != "complete"){
        if(!PageMaster.delayObj){
            PageMaster.delayObj = {};
            PageMaster.delayObj.url    = url;
            PageMaster.delayObj.type   = type;
            PageMaster.delayObj.title  = title;
            PageMaster.delayObj.width  = width;
            PageMaster.delayObj.height = height;
        }
        PageMaster.delayShow("ShowInnerModel");
        return;
    }else{
        if(PageMaster.delayObj != null){
          clearTimeout(PageMaster.delayTimeout);
          PageMaster.delayTimeout = null;
          url      = PageMaster.delayObj.url;
          type     = PageMaster.delayObj.type;
          title    = PageMaster.delayObj.title;
          width    = PageMaster.delayObj.width;
          height   = PageMaster.delayObj.height;
          PageMaster.delayObj = null;
        }
    }
    PageMaster.Requesting = false;
    
    var DefaultModelWidth  = 250;
    var DefaultModelHeight = 250;
    
    var w = window.document.documentElement.offsetWidth;
    var h = window.document.documentElement.offsetHeight;
    
    if(document.getElementById("imDiv")){
        document.getElementById("imDiv").removeNode(true);
    }
    var imDiv = PageMaster.CreateImDiv();
    imDiv.style.pixelTop  = (h - (height ? height : DefaultModelHeight)) / 2;
    imDiv.style.pixelLeft = (w - (width  ? width  : DefaultModelWidth))  / 2;
    imDiv.style.width     = (width  ? width  : DefaultModelWidth)  + "px";
    imDiv.style.height    = (height ? height : DefaultModelHeight) + "px";
    imDiv.attrHeight = height ? height : DefaultModelHeight;
    
    var imTitle = document.createElement("TABLE");
    imTitle.id = "imTitle";
    var imTitleTable = document.createElement("TBODY");
    imTitle.appendChild(imTitleTable);
    
    imTitleTable.style.width = "100%";
    var imTitleTr    = document.createElement("TR");
    imTitleTable.appendChild(imTitleTr);
    var imTitleTdL = PageMaster.CreateImTitleTdL();
    imTitleTr.appendChild(imTitleTdL);
    var imTitleIco = document.createElement("IMG");
    imTitleIco.src = PageMaster.getRootPath() + "img/modelwin/model_titleIco" + (type == "EDIT" ? "Edit" : "Info") + ".gif";
    imTitleIco.className = "imTitleIco";
    imTitleTdL.appendChild(imTitleIco);
    var imTitleTdC   = document.createElement("TD");
    imTitleTdC.style.width = "100%";
    var imTitleSpan = PageMaster.CreateImTitleSpan(title);
    imTitleTdC.appendChild(imTitleSpan);
    imTitleTr.appendChild(imTitleTdC);
    var imTitleTdR = PageMaster.CreateImTitleTdR();
    imTitleTr.appendChild(imTitleTdR);
    var imTitleClose = PageMaster.CreateImTitleClose();
    imTitleClose.attachEvent("onclick",HideInnerModel);
    imTitleTdR.appendChild(imTitleClose);
    
    imDiv.appendChild(imTitle);
    
    var imIFrame = PageMaster.CreateImIFrame();
    imIFrame.src = url;
    if(disableScroll)
    {
        imIFrame.scrolling = "no";
    }
    imDiv.appendChild(imIFrame);
    
    document.body.appendChild(imDiv);
    ToggleMaskDiv('none');
    ToggleMaskDiv('');
    if(PageMaster.TopWin.Flakes){
        PageMaster.TopWin.Flakes.notify('onShowInnerModel',PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()));
    }
    
    imIFrame.contentWindow.attachEvent("onresize",PageMaster.doImDivResize);
    
    imDiv.focus();
    
    PageMaster.AdjustInnerPos(imDiv);
}

// 关闭页片内[模式]框
function HideInnerModel(){
    var imDiv = document.getElementById("imDiv");
    if(imDiv)
    {
        ToggleMaskDiv('none');
        if(PageMaster.TopWin.Flakes){
            PageMaster.TopWin.Flakes.notify('onHideInnerModel',PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()));
        }
        imDiv.style.display = "none";
    }
    if(PageMaster.IsTempHeight && PageMaster.OldHeight != 0)
    {   
        PageMaster.HeightResize(PageMaster.OldHeight);
        PageMaster.IsTempHeight = false;
        PageMaster.OldHeight = 0;
    }
}

// 显示页片内[提示]框
// content   : 文本内容
// [title]   : 标题文字,default为页片标题
// [callPos] : 调用位置
// [alertType] : 是否错误
function ShowInnerAlert(content,title,callPos,alertType,width){
    if(PageMaster.Requesting)
    {
        PageMaster.AutoHeightResize();
    }
    var DefaultModelWidth  = 250;
    var trueWidth = DefaultModelWidth;
    if(width)
    {
        trueWidth = width;
    }
    if(document.readyState != "complete"){
        if(!PageMaster.delayObj)
        {
            PageMaster.delayObj = {};
            PageMaster.delayObj.content = content;
            PageMaster.delayObj.title = title;
            PageMaster.delayObj.callPos = callPos;
            PageMaster.delayObj.alertType = alertType;
        }
        PageMaster.delayShow("ShowInnerAlert");
        return;
    }else{
        if(PageMaster.delayObj != null)
        {
          clearTimeout(PageMaster.delayTimeout);
          PageMaster.delayTimeout = null;
          content  = PageMaster.delayObj.content;
          title    = PageMaster.delayObj.title;
          callPos  = PageMaster.delayObj.callPos;
          alertType  = PageMaster.delayObj.alertType;
          PageMaster.delayObj = null;
        }
    }
    PageMaster.Requesting = false;
    
    if(callPos != null && callPos != undefined && callPos+"" != "")
    {
        CallAlertPos = callPos;
    }else{
        CallAlertPos = -1;
    }
    
    var w = window.document.documentElement.offsetWidth;
    var h = window.document.documentElement.offsetHeight;
    
    if(document.getElementById("imDiv"))
    {
        document.getElementById("imDiv").removeNode(true);
    }
    var imDiv = PageMaster.CreateImDiv();
    imDiv.style.width     = trueWidth  + "px";
    
    var imTitle = document.createElement("TABLE");
    var imTitleTable = document.createElement("TBODY");
    imTitle.appendChild(imTitleTable);
    
    imTitleTable.style.width = "100%";
    var imTitleTr    = document.createElement("TR");
    imTitleTable.appendChild(imTitleTr);
    var imTitleTdL = PageMaster.CreateImTitleTdL();
    imTitleTr.appendChild(imTitleTdL);
    var imTitleIco = document.createElement("IMG");
    var type = "INFO";
    imTitleIco.src = PageMaster.getTitleIcon();
    imTitleIco.className = "imTitleIco";
    imTitleTdL.appendChild(imTitleIco);
    var imTitleTdC   = document.createElement("TD");
    imTitleTdC.style.width = "100%";
    var imTitleSpan = PageMaster.CreateImTitleSpan(title);
    imTitleTdC.appendChild(imTitleSpan);
    imTitleTr.appendChild(imTitleTdC);
    var imTitleTdR = PageMaster.CreateImTitleTdR();
    imTitleTr.appendChild(imTitleTdR);
  
    imDiv.appendChild(imTitle);
    
    var imContent = PageMaster.CreateImContent();
    imDiv.appendChild(imContent);
    
    var imContentImg = PageMaster.CreateImContentImg();
    switch(alertType)
    {
      case 0:
        imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_alert.gif";
        break;  
      case 1:
        imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_error.gif";
        break;
      case 2:
        imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_warning.gif";
        break;
      case 3:
        imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_fatal.gif";
        break;
      default:
        imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_alert.gif";
        break;  
    }
    imContent.appendChild(imContentImg);
    
    var imContentText = PageMaster.CreateImContentText();
    imContentText.innerHTML = content;
    imContent.appendChild(imContentText);
    
    var imBottom = PageMaster.CreateImBottom();
    imDiv.appendChild(imBottom);
    
    var imBtnOK = PageMaster.CreateOKButton();
    imBtnOK.attachEvent("onclick",HideInnerAlert);
    imBottom.appendChild(imBtnOK);
    
    document.body.appendChild(imDiv);
    
    PageMaster.SetImDivPos(imDiv,w,h);
    
    ToggleMaskDiv('none');
    ToggleMaskDiv('');
    
    if(PageMaster.TopWin.Flakes){
        PageMaster.TopWin.Flakes.notify('onShowInnerModel',PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()));
    }
    
    imDiv.focus();
    
    //用PageMaster.SetImDivPos则不用此方法
    //PageMaster.AdjustInnerPos(imDiv);
}

// 关闭页片内[提示]框
function HideInnerAlert(){
    HideInnerModel();
    try{
        _callBackForInnerAlert();
    }catch(e){
    }
}

// 显示页片内[确认]框
// content   : 文本内容
// [title]   : 标题文字,default为页片标题
// [callPos] : 调用位置
// [width]   : 宽度，默认250
function ShowInnerConfirm(content,title,callPos,width){
    if(PageMaster.Requesting)
    {
        PageMaster.AutoHeightResize();
    }
	  var DefaultModelWidth  = 250;
	  var trueWidth = DefaultModelWidth;
	  if(width)
	  {
	  	trueWidth = width;
	  }
    if(document.readyState != "complete"){
        if(!PageMaster.delayObj){
            PageMaster.delayObj = {};
            PageMaster.delayObj.content = content;
            PageMaster.delayObj.title = title;
            PageMaster.delayObj.callPos = callPos;
        }
        PageMaster.delayShow("ShowInnerConfirm");
        return;
    }else{
        if(PageMaster.delayObj != null){
          clearTimeout(PageMaster.delayTimeout);
          PageMaster.delayTimeout = null;
          content  = PageMaster.delayObj.content;
          title    = PageMaster.delayObj.title;
          callPos  = PageMaster.delayObj.callPos;
          PageMaster.delayObj = null;
        }
    }
    PageMaster.Requesting = false;
    
    if(callPos != null && callPos != undefined && callPos+"" != ""){
        CallConfirmPos = callPos;
    }else{
        CallConfirmPos = -1;
    }
    
    var w = window.document.documentElement.offsetWidth;
    var h = window.document.documentElement.offsetHeight;
    
    if(document.getElementById("imDiv")){
        document.getElementById("imDiv").removeNode(true);
    }
    var imDiv = PageMaster.CreateImDiv();
    imDiv.style.width     = trueWidth  + "px";
    
    var imTitle = document.createElement("TABLE");
    var imTitleTable = document.createElement("TBODY");
    imTitle.appendChild(imTitleTable);
    
    imTitleTable.style.width = "100%";
    var imTitleTr    = document.createElement("TR");
    imTitleTable.appendChild(imTitleTr);
    var imTitleTdL = PageMaster.CreateImTitleTdL();
    imTitleTr.appendChild(imTitleTdL);
    var imTitleIco = document.createElement("IMG");
    var type = "INFO";
    imTitleIco.src = PageMaster.getTitleIcon();
    imTitleIco.className = "imTitleIco";
    imTitleTdL.appendChild(imTitleIco);
    var imTitleTdC   = document.createElement("TD");
    imTitleTdC.style.width = "100%";
    var imTitleSpan = PageMaster.CreateImTitleSpan(title);
    imTitleTdC.appendChild(imTitleSpan);
    imTitleTr.appendChild(imTitleTdC);
    var imTitleTdR = PageMaster.CreateImTitleTdR();
    imTitleTr.appendChild(imTitleTdR);
  
    imDiv.appendChild(imTitle);
    
    var imContent = PageMaster.CreateImContent();
    imDiv.appendChild(imContent);
    
    var imContentImg = PageMaster.CreateImContentImg();
    imContentImg.src = PageMaster.getRootPath() + "img/modelwin/model_confirm.gif";
    imContent.appendChild(imContentImg);
    
    var imContentText = PageMaster.CreateImContentText();
    imContentText.innerHTML = content;
    imContent.appendChild(imContentText);
    
    var imBottom = PageMaster.CreateImBottom();
    imDiv.appendChild(imBottom);
    
    var imBtnOK = PageMaster.CreateOKButton();
    imBtnOK.onclick = function(){
        HideInnerConfirm(true);
    }
    imBottom.appendChild(imBtnOK);
    
    var imBtnCancel = PageMaster.CreateCancelButton();
    imBtnCancel.onclick = function(){
        HideInnerConfirm(false);
    }
    imBottom.appendChild(imBtnCancel);
    
    document.body.appendChild(imDiv);
    
    PageMaster.SetImDivPos(imDiv,w,h);

    ToggleMaskDiv('none');
    ToggleMaskDiv('');
    if(PageMaster.TopWin.Flakes)
    {
        PageMaster.TopWin.Flakes.notify('onShowInnerModel',PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()));
    }
    
    imDiv.focus();
    
    //用PageMaster.SetImDivPos则不用此方法
    //PageMaster.AdjustInnerPos(imDiv);
}

/*
 * 关闭页片内[确认]框
 * @param flag : 确定/取消 标记
 */
function HideInnerConfirm(flag){
    HideInnerModel();
    try{
        _callBackForInnerConfirm(flag);
    }catch(e){
    }
}

/* 显示异常信息
 * 画面既要求刷新，又要显示异常信息时，不能直接用throw exception的方式
 * 又需要区分异常类型，可使用该方法
 * @param strMsg : 异常信息
 * @param errGrade : 异常类型
 */
function ShowException(strMsg,errGrade)
{
    switch(errGrade)
    {
      case "Info":
        ShowInfo(strMsg);
        break;
      case "Error":
        ShowError(strMsg);
        break;
      case "Warning":
        ShowWarning(strMsg);
        break;
      case "Fatal":
        ShowFatal(strMsg);
        break;
      default:
        ShowFatal(strMsg);
        break;
    }
}

// 显示提示信息(Info异常)
function ShowInfo(strMsg)
{
    ShowInnerAlert(strMsg,null,null,0);
}

// 显示错误信息(Error异常)
function ShowError(strMsg)
{
    ShowInnerAlert(strMsg,null,null,1);
}

// 显示警告信息(Warning异常)
function ShowWarning(strMsg)
{
    ShowInnerAlert(strMsg,null,null,2);
}

// 显示致命信息(Fatal异常、Exception)
function ShowFatal(strMsg)
{
    ShowInnerAlert(strMsg,null,null,3);
}

//Session过期
function SessionExpired()
{
    var win = window;
    while(!win.Flakes && win.parent)
    {
       win = win.parent;
    }
    if(win.Storage)
    {
       win.Storage.SessionExpired();
    }
}

var PageMaster = {
    //允许自动调整高度
    EnableAutoHeight : true,
    //信息框与页片两端的边距
    ImMargin : 10,
    //是否临时高度
    IsTempHeight : false,
    //临时高度以前的实际高度
    OldHeight : 0,
    // 页面请求状态最小等待时间
    MiniItvTime : 500,
    // 当前是否为等待状态
    WaitingFlag : false,
    // 当前是否为请求状态
    Requesting : false,
    // 延迟调用函数句柄
    delayTimeout : null,
    // 延迟调用时的参数对象
    delayObj : null,
    // 延迟调用时间单位(每该时间单位检查结束延迟条件)
    DelayTime : 100,
    // 顶层框架窗口
    TopWin : null,
    
    //取得当前页片内window的ID
    GetWinId : function ()
    {
        var obj = window.frameElement;
        while(obj.tagName != "DIV"){
            obj = obj.parentNode;
        }
        return obj.id;
    },
    
    GetTopWin : function()
    {
        if(PageMaster.TopWin != null)
        {
            return PageMaster.TopWin;
        }
        var win = window.parent;
        var cnt = 0;
        while(!win.Flakes && win.parent)
        {
            win = win.parent;
        }
        PageMaster.TopWin = win;
        return win;
    },
    
    //检查是否通过框架打开网页
    CheckInFrameWorks : function ()
    {
        var result = true;
        var win = window;
        while(win.parent && win != win.parent)
        {
            win = win.parent;
        }
        if(!win.Flakes){
            result = false;
        }
        return result;
    },
    
    //取得标题图标
    getTitleIcon : function()
    {
        var result = "";
        if(PageMaster.TopWin.Flakes && PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()) != null)
        {
            result = PageMaster.getRootPath() + PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()).aspx.options.icon;
        }
        else if(PageMaster.TopWin.Flakes && window.frameElement.aspxId)
        {
            result = PageMaster.getRootPath() + PageMaster.TopWin.Aspxes.Get(window.frameElement.aspxId).options.icon;
        }
        else
        {
            result = PageMaster.getRootPath() + "img/modelwin/model_titleIcoInfo.gif";
        }
        return result;
    },

    //取得标题文本
    getTitleText : function()
    {
        var result = "";
        if(PageMaster.TopWin.Flakes && PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()) != null)
        {
            result = PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()).aspx.options.title;
        }
        else if(PageMaster.TopWin.Flakes && window.frameElement.aspxTitle)
        {
            result = window.frameElement.aspxTitle;
        }
        else
        {
            result = "提示";
        }
        return result;
    },
    
    // 计算相对根路径
    getRootPath : function()
    {
        var result = "";
        if(window.location.href.indexOf("localhost") != -1 ||
           (window.location.href.indexOf(".com") == -1 && window.location.href.indexOf(".cn") == -1 && window.location.href.indexOf(".biz") == -1)
           ){
            if(window.location.pathname.split("/").length==6){
                result = "../../../";
            }else{
                result = "../../";
            }
        }else{
            result = "/";
        }
        return result;
    },
    
    // 自动调整高度
    AutoHeightResize : function()
    {
        if(!PageMaster.EnableAutoHeight)
        {
            //不允许自动调整高度
            return;
        }
        //只对非模式页自动调整高度
        if(PageMaster.IsFrameFlake())
        {
            window.frameElement.height = window.document.body.offsetHeight < 200 ? 200 : window.document.body.offsetHeight;
        }
    },
    
    //手动调整高度
    HeightResize : function(h)
    {
        if(PageMaster.IsModalFlake()){
            //模式页片：调用Flake的HeightResize方法调整高度
            if(PageMaster.TopWin.Flakes && PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()))
            {
                PageMaster.TopWin.Flakes.FindFlakeByID(PageMaster.GetWinId()).HeightResize(window,h);
            }
            return;
        }else if(PageMaster.IsFrameFlake()){
            //非模式页片
            if(h!=undefined)
            {
                window.frameElement.height = h;
            }else{
                window.frameElement.height = window.document.body.offsetHeight < 200 ? 200 : window.document.body.offsetHeight;
            }
        }
    },
    
    //是否停靠页
    IsFrameFlake : function()
    {
        var result = false;
        if(window.frameElement && window.frameElement.id && window.frameElement.id.indexOf("frameFlake") > -1){
            result = true;
        }
        return result;
    },
    
    //是否模式片
    IsModalFlake : function()
    {
        var result = false;
        if(window.frameElement && window.frameElement.id && window.frameElement.id.indexOf("F") == 0){
            result = true;
        }
        return result;
    },
    
    CreateOKButton : function()
    {
        var imBtnOK = document.createElement("INPUT");
        imBtnOK.type  = "button";
        imBtnOK.id    = "imBtnOk";
        imBtnOK.value = "确定";
        imBtnOK.className = "AlertBtnOKStyle";
        imBtnOK.style.marginRight = "5px";
        imBtnOK.style.marginLeft  = "5px";
        return imBtnOK;
    },
    
    CreateCancelButton : function()
    {
        var imBtnCancel   = document.createElement("INPUT");
        imBtnCancel.type  = "button";
        imBtnCancel.id    = "imBtnCancel";
        imBtnCancel.value = "取消";
        imBtnCancel.className = "AlertBtnCancelStyle";
        imBtnCancel.style.marginRight = "5px";
        imBtnCancel.style.marginLeft  = "5px";
        return imBtnCancel;
    },
    
    CreateImBottom : function()
    {
        var imBottom = document.createElement("DIV");
        imBottom.id  = "imBottom";
        imBottom.className = "imBottom";
        return imBottom;
    },
    
    CreateImContentText : function()
    {
        var imContentText = document.createElement("DIV");
        imContentText.id  = "imContentText";
        imContentText.className = "NormalLabelStyle";
        return imContentText;
    },
    
    CreateImContentImg : function()
    {
        var imContentImg = document.createElement("IMG");
        imContentImg.id  = "imContentImg";
        imContentImg.className = "imContentImg";
        return imContentImg;
    },
    
    CreateImDiv : function()
    {
        var imDiv = document.createElement("DIV");
        imDiv.id = "imDiv";
        imDiv.style.position  = "absolute";
        imDiv.style.zIndex    = "30002";
        imDiv.style.backgroundColor = "#f3f4f4";
        //imDiv.style.filter = "progid:DXImageTransform.Microsoft.Shadow(color=#121212,direction=135)";
        return imDiv;
    },
    
    CreateImIFrame : function()
    {
        var imIFrame = document.createElement("IFRAME");
        imIFrame.id = "imIFrame";
        imIFrame.frameBorder = "0";
        imIFrame.style.width  = "100%";
        imIFrame.style.height = "100%";
        return imIFrame;
    },
    
    CreateImTitleClose : function()
    {
        var imTitleClose = document.createElement("IMG");
        imTitleClose.style.width  = "13px";
        imTitleClose.style.height = "13px";
        imTitleClose.style.borderTopWidth    = "0px";
        imTitleClose.style.borderLeftWidth   = "0px";
        imTitleClose.style.borderBottomWidth = "0px";
        imTitleClose.style.borderRightWidth  = "0px";
        imTitleClose.src = PageMaster.getRootPath() + "img/modelwin/model_close.gif";
        return imTitleClose;
    },
    
    CreateImTitleSpan : function(title)
    {
        var imTitleSpan = document.createElement("SPAN");
        imTitleSpan.className = "NormalLabelStyle";
        if(title)
        {
            imTitleSpan.innerText = title;
        }
        else
        {
            imTitleSpan.innerText = PageMaster.getTitleText();
        }
        return imTitleSpan;
    },
    
    CreateImContent : function()
    {
        var imContent = document.createElement("DIV");
        imContent.id = "imContent";
        imContent.className = "imContent";
        return imContent;
    },
    
    CreateImTitleTdR : function()
    {
        var imTitleTdR   = document.createElement("TD");
        imTitleTdR.style.width = "11px";
        return imTitleTdR;
    },
    
    CreateImTitleTdL : function()
    {
        var imTitleTdL   = document.createElement("TD");
        imTitleTdL.style.width = "16px";
        return imTitleTdL;
    },
    
    // 隐藏元素
    disableElements : function(elements)
    {
        if(PageMaster.Requesting && !MaskOnPost)
        {
            return;
        }
        for (var i = elements.length - 1; i >= 0; i--) {
            var elmt = elements[i];
            if (elmt.style.visibility != "hidden") {
                elmt.style.visibility  = "hidden";
                elmt._imadeDisabled = true;
            }
            else {
                if(!elmt._imadeDisabled)
                {
                    elmt._wasDisabled = true;
                }
            }
        }
    },

    // 显示元素
    enableElements : function (elements)
    {
        if(PageMaster.IsFrameFlake() && PageMaster.TopWin.Windows.modalWindows.length > 0)
        {
            PageMaster.disableElements(elements);
            return;
        }
        for (var i = elements.length - 1; i >= 0; i--) {
            var elmt = elements[i];
            if (!elmt._wasDisabled) {
                elmt.style.visibility = "visible";
                elmt._imadeDisabled = null;
            }
            else {
                elmt._wasDisabled = null;
            }
        }
    },
    
    disableSpecialObject : function()
    {
        try
        {
            PageMaster.disableElements(document.getElementsByTagName('SELECT'));
            PageMaster.disableElements(document.getElementsByTagName('OBJECT'));
            if(document.getElementsByTagName("IFRAME").length > 0)
            {
                for(var i=0;i<document.getElementsByTagName("IFRAME").length;i++)
                {
                    var win = document.getElementsByTagName("IFRAME")[i].contentWindow;
                    if(win.PageMaster)
                    {
                        win.PageMaster.disableSpecialObject();
                    }
                }
            }
        }catch(e){}
    },
    
    enableSpecialObject : function()
    {
        try
        {
            PageMaster.enableElements(document.getElementsByTagName('SELECT'));
            PageMaster.enableElements(document.getElementsByTagName('OBJECT'));
            if(document.getElementsByTagName("IFRAME").length > 0)
            {
                for(var i=0;i<document.getElementsByTagName("IFRAME").length;i++)
                {
                    var win = document.getElementsByTagName("IFRAME")[i].contentWindow;
                    if(win.PageMaster)
                    {
                        win.PageMaster.enableSpecialObject();
                    }
                }
            }
        }catch(e){}
    },
    
    // 页片内模式框自动调整高度
    doImDivResize : function ()
    {
        var imDiv = document.getElementById("imDiv");
        var imIFrame = document.getElementById("imIFrame");
        var imTitle  = document.getElementById("imTitle");
        var trueHeight = imIFrame.contentWindow.document.body.scrollHeight + 30;
        var currHeight = imIFrame.offsetHeight;
        var h = window.document.documentElement.offsetHeight;
        if(trueHeight > h){
            trueHeight = h - 50;
        }
        if(trueHeight > currHeight){
            imIFrame.style.height = trueHeight + "px";
            imDiv.style.pixelTop  = (h - trueHeight) / 2;
        }else if(trueHeight < currHeight){
            imIFrame.style.height = imDiv.attrHeight + "px";
            imDiv.style.pixelTop  = (h - imDiv.attrHeight) / 2;
        }
    },
    
    //设置imDiv位置
    SetImDivPos : function (imDiv,w,h)
    {
        imDiv.style.pixelLeft = (w - imDiv.offsetWidth)  / 2;
        if(PageMaster.IsFrameFlake() && h > PageMaster.TopWin.document.documentElement.offsetHeight)
        {
            //frameFlake顶边距主页顶边高度
            var a = window.screenTop-PageMaster.TopWin.screenTop;
            //主页IE滚动高度
            var b = PageMaster.TopWin.document.documentElement.scrollTop;
            //主页IE可见内容高度
            var c = PageMaster.TopWin.document.documentElement.offsetHeight;
            
            //20080104 frameFlake特殊处理
            if(a > b)
            {
                //frameFlake上部仍显示部份主页
                imDiv.style.pixelTop  = Math.max(
                                                  20,  //顶部留20px边距
                                                  (c - a - imDiv.offsetHeight + b) / 2
                                                );
            }
            else
            {
                //由于滚动，frameFlake上部主页已不可见
                imDiv.style.pixelTop  = Math.min(
                                                  h - imDiv.offsetHeight - 20,  //底部留20px边距
                                                  Math.max(
                                                            20,  //顶部留20px边距
                                                            (c  - imDiv.offsetHeight ) / 2 - a + b
                                                          )
                                                );
            }
        }
        else
        {
            imDiv.style.pixelTop  = (h - imDiv.offsetHeight) / 2 + window.document.documentElement.scrollTop;
        }
    },
    
    //调整模式框位置使其居于屏幕中
    AdjustInnerPos : function (imDiv)
    {
        if (window.frameElement && window.frameElement.id && window.frameElement.id.substring(0,1) == "F")
        {
            //弹出页片
            if(imDiv.offsetHeight - window.frameElement.offsetHeight > 0)
            {
                var trueHeight = imDiv.offsetHeight + 2 * PageMaster.ImMargin;
                //设置标识
                PageMaster.IsTempHeight = true;
                PageMaster.OldHeight = window.frameElement.offsetHeight;
                //重设页片高度
                PageMaster.HeightResize(trueHeight);
                if(window.frameElement.offsetHeight < trueHeight)
                {
                    //页片超长被强制缩短，限定在IE窗口内
                    trueHeight = window.frameElement.offsetHeight;
                    imDiv.style.height = trueHeight - 2 * PageMaster.ImMargin + "px";
                    var imContent = document.getElementById("imContent");
                    if(imContent)
                    {
                        imContent.style.height = trueHeight - 2 * PageMaster.ImMargin  - 90 + "px";
                        imContent.style.overflowY = "scroll";
                    }
                }
                //重设遮档层高度
                document.getElementById("AlertDivMask").style.pixelHeight = trueHeight;
                //重设信息框位置
                imDiv.style.posTop = PageMaster.ImMargin;
            }
            return;
        }
        try
        {
            PageMaster.TopWin.scrollTo(0,parseInt(imDiv.style.top));
        }
        catch(e)
        {
        }
    },
    
    // 延迟调用函数funname
    // funname : 函数名
    delayShow : function (funname)
    {
        if(PageMaster.delayTimeout){
            clearTimeout(PageMaster.delayTimeout);
        }
        PageMaster.delayTimeout = setTimeout(funname+"()",PageMaster.DelayTime);
    },
    
    DoOnKeyDown : function()
    {
        if(PageMaster.IsMaskedState())
        {
            //有模式框弹出
            if(!document.getElementById("imDiv").contains(event.srcElement))
            {
                document.getElementById("imDiv").focus();
                event.cancelBubble = true;
            }
        }
        else if(PageMaster.IsModalPopupState())
        {
            //有ModalPopup弹出
            if(!AjaxControlToolkit.ModalPopupBehavior.ImDiv.contains(event.srcElement))
            {
                AjaxControlToolkit.ModalPopupBehavior.ImDiv.focus();
                event.cancelBubble = true;
            }
        }
    },
    
    //是否有模式框或ModalPopup之一弹出
    HasModal : function()
    {
        return PageMaster.IsMaskedState() || PageMaster.IsModalPopupState();
    },
    
    //是否存在内部模式框
    IsMaskedState : function()
    {
        var result = false;
        if(document.getElementById("imDiv") && document.getElementById("imDiv").style.display == "")
        {
            result = true;
        }
        return result;
    },
    
    IsModalPopupState : function()
    {
        var result = false;
        try
        {
            if(AjaxControlToolkit && AjaxControlToolkit.ModalPopupBehavior && AjaxControlToolkit.ModalPopupBehavior.HasModal)
            {
                result = true;
            }
        }catch(e){}
        return result;
    }
}

if(!PageMaster.CheckInFrameWorks())
{
    document.location = "http://www.517jyd.com";
}
else
{
    PageMaster.GetTopWin();
}

//检查键盘事件:弹出模式框时聚焦到imDiv
window.document.attachEvent("onkeydown",PageMaster.DoOnKeyDown);

try{
    //修改ModalPopupBehavior弹出模式框的show和hide事件,添加标识以控制键盘事件
    if(AjaxControlToolkit && AjaxControlToolkit.ModalPopupBehavior)
    {
        //chendong 20080117 add line to set the flag
        AjaxControlToolkit.ModalPopupBehavior.HasModal = false;
        
        AjaxControlToolkit.ModalPopupBehavior.prototype.show = function()
        {
            /// <summary>
            /// Display the element referenced by PopupControlID as a modal dialog
            /// </summary>
            AjaxControlToolkit.ModalPopupBehavior.callBaseMethod(this, 'populate');

            this.raiseShowing();

            this._attachPopup();

            this._backgroundElement.style.display = '';
            this._foregroundElement.style.display = '';
            this._popupElement.style.display = '';

            // Disable TAB
            this.disableTab();

            this._layout();
            // On pages that don't need scrollbars, Firefox and Safari act like
            // one or both are present the first time the layout code runs which
            // obviously leads to display issues - run the layout code a second
            // time to work around this problem
            this._layout();
            
            this.raiseShown();
            
            //chendong 20080117 add to set the flag
            AjaxControlToolkit.ModalPopupBehavior.HasModal = true;
            AjaxControlToolkit.ModalPopupBehavior.ImDiv = this._foregroundElement;
        };

        AjaxControlToolkit.ModalPopupBehavior.prototype.hide = function() 
        {
            /// <summary>
            /// Hide the modal dialog
            /// </summary>

            this.raiseHiding();
            
            this._backgroundElement.style.display = 'none';
            this._foregroundElement.style.display = 'none';

            this.restoreTab();

            this._detachPopup();
            
            this.raiseHidden();
            
            //chendong 20080117 add to set the flag
            AjaxControlToolkit.ModalPopupBehavior.HasModal = false;
            AjaxControlToolkit.ModalPopupBehavior.ImDiv = null;
        };
    }
}catch(e){}
