﻿
    /// <summary>
    /// 弹出模式窗口的风格
    /// </summary>
    /// <param name="url">模式窗口内要打开的文档</param>
    /// <param name="height">模式窗口高度</param>
    /// <param name="width">模式窗口宽度</param>
    /// <param name="redirectUrl">调用者指定的要返回的页面</param>
    function Popup(url, height, width, redirectUrl)
    {

        // 弹出模式窗口的风格; 这里只提供了设定模式窗口高度和宽度的功能;
        var style = 'dialogHeight: ' + (height + 10) + 'px; dialogWidth:' + width + 'px; center: Yes; help: No; resizable: No; status: no; scroll: On';
    	
	    // 弹出模式窗口, 同时记录返回值;
	    // 返回值是一个数组 [URL, 按钮]
	    // URL  表示模式窗口关闭后, 调用的窗口需要重定向到 URL
	    // 按钮 表示按下的按钮 1 - 确定， 0 - 取消
	    var retValue = window.showModalDialog(url, window, style);
        
        if(retValue != undefined)
        {
            // 如果弹出的模式窗口返回了一个 URL 表示模式窗口关闭后, 调用的窗口需要重定向到 URL
	        if (retValue[0].length > 0)
	        {
	            window.top.location.replace(retValue[0])
	        }
	        return retValue[1];
	    }
    }

    // IFrame 窗口自动调整窗口高度
    function IFrameAutoHeight()
    {
        if(self.location != top.location)
        {
	        parent.document.all(self.name).height = document.body.scrollHeight;
	    }
    }

    // 当前窗口跳转浏览 URL 指定的页面
    function Navigate(url)
    {
        window.navigate(url);
    }

    // 关闭当前窗口
    function CloseWindow()
    {
        window.close();
    }

    // 刷新当前窗口
    function RefreshWindow(win)
    {
        win.location.replace(win.location);
    }

    // 刷新调用窗口，然后关闭本窗口
    function RefreshOpenerThenClose()
    {
	    try
	    {
		    opener.location.replace(opener.location);
	    }
	    catch(e)
	    {
    		
	    }
	    window.close();
    }


    /// <summary>
    /// 弹出一般窗口
    /// </summary>
    /// <param name="url">模式窗口内要打开的文档</param>
    /// <param name="height">模式窗口高度</param>
    /// <param name="width">模式窗口宽度</param>
    /// <param name="redirectUrl">调用者指定的要返回的页面</param>
    function OpenWindow(url, name, width, height)
    {
	    var windowX = (window.screen.availWidth - width) / 2 ;
	    var windowY = (window.screen.availHeight - height) / 2 - 25;

        // 弹出窗口的风格;
        // 这里只提供了设定模式窗口高度和宽度的功能;
        var style = 'status=1,resizable=0,toolbar=no,menubar=no,location=no,scrollbars=1' + ',top=' + windowY + ',height=' + height + ', left=' + windowX + ',width=' + width + '';
    	
	    //alert(style);
    	
	    // 弹出非模式窗口, 同时记录返回值;
	    var retwin = window.open(url, name, style, false);
    }

    /// 限制 InputBox 输入整形数值
    function IsValidateInteger(obj, behavior)
    {
	    var docSel = document.selection.createRange()
	    var inputStr;
	    if (docSel.parentElement().tagName != "INPUT")	return false
	    oSel = docSel.duplicate()
	    oSel.text = ""
	    var srcRange = obj.createTextRange()
    	
	    oSel.setEndPoint("StartToStart", srcRange)

	    switch(behavior)
	    {
   		    case "key":
			    inputStr = String.fromCharCode(event.keyCode);
			    break; 
		    case "paste":
			    inputStr = window.clipboardData.getData('Text');
			    break;
		    case "drop":
			    inputStr = event.dataTransfer.getData('Text');
			    break;
	    }
	    var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
	    var reg = /^[0-9,-]*$/;
	    return reg.test(str)
    }

    function IsValidateFloat(obj, behavior)
    {
	    var docSel = document.selection.createRange()
	    var inputStr;
	    if (docSel.parentElement().tagName != "INPUT")	return false
	    oSel = docSel.duplicate()
	    oSel.text = ""
	    var srcRange = obj.createTextRange()
    	
	    oSel.setEndPoint("StartToStart", srcRange)

	    switch(behavior)
	    {
   		    case "key":
			    inputStr = String.fromCharCode(event.keyCode);
			    break; 
		    case "paste":
			    inputStr = window.clipboardData.getData('Text');
			    break;
		    case "drop":
			    inputStr = event.dataTransfer.getData('Text');
			    break;
	    }
	    var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
	    var reg = /^[0-9,-.]*$/;
	    return reg.test(str)
    }

    function IsValidatePercent(obj, behavior)
    {
	    var docSel = document.selection.createRange()
	    var inputStr;
	    if (docSel.parentElement().tagName != "INPUT")	return false
	    oSel = docSel.duplicate()
	    oSel.text = ""
	    var srcRange = obj.createTextRange()
    	
	    oSel.setEndPoint("StartToStart", srcRange)

	    switch(behavior)
	    {
   		    case "key":
			    inputStr = String.fromCharCode(event.keyCode);
			    break; 
		    case "paste":
			    inputStr = window.clipboardData.getData('Text');
			    break;
		    case "drop":
			    inputStr = event.dataTransfer.getData('Text');
			    break;
	    }
	    var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
	    var reg = /^[0-9,-\.\%]*$/;
	    return reg.test(str)
    }

    function reportMouseOver(trObj)
    {
        trObj.style.backgroundColor='#FFF0C2';
    }

    function reportMouseOut(trObj)
    {
        trObj.style.backgroundColor='#ffffff'; // eeeeee
    }


    /// <summary>
    /// 随机创建一个介于 0 ~ number 之间的整数，不包括 number 在内，也就是 [0, number)
    /// </summary>
    /// <param name="number">随机数的范围</param>
    function Rand(number)
    {
        return Math.ceil(Math.random() * number);
    }


    function RandPicture(imgUrl, number)
    {
        imgUrl = imgUrl.replace("%1", Rand(number));
        document.write();
    }

    function __mydoPostBack(eventTarget, eventArgument)
    {
        var theform;
        if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1)
        {
	        theform = document.forms["Form1"];
        }
        else
        {
	        theform = document.Form1;
        }
        theform.__myEVENTTARGET.value = eventTarget.split("$").join(":");
        theform.__myEVENTARGUMENT.value = eventArgument;
        theform.submit();
    }

    function showTips(obj)
    {
	    document.all("printtip").style.visibility = "visible";

    //   var printtext = document.all("printtext");
    //   var printtip = document.all("printtip");
    //   var top = printtext.clientTop + printtext.clientHeight + 10;
    //   var left = printtext.clientLeft - (printtip.clientWidth - printtext.clientWidth)/2;
        var left = document.body.scrollLeft + window.event.x - 40 ;
        var top = document.body.scrollTop +  window.event.y + 10;
	    document.all("printtip").style.left = left;
	    document.all("printtip").style.top = top;
	    document.all("printtip").focus();
    }

    function hideTips()
    {
	    document.all("printtip").style.visibility = "hidden";
    }


    /// <summary>
    /// 限制 TextArea 可以输入的最长字符串长度
    /// </summary>
    /// <param name="TextAreaName">要限制长度的 TextArea 的名称</param>
    /// <param name="maxLength">允许的最大长度</param>
    /// <param name="enableTruncate">是否允许截断字符串</param>
    /// <remarks>
    /// 在 HTML 文件中增加下列调用
    /// SetTextAreaMaxLength(TextAreaName, maxLength, enableTruncate); 
    /// </remarks>
    function SetTextAreaMaxLength(objName, maxLen, enableTruncate)
    { 
        var obj = document.all(objName);
        obj.maxLength = maxLen;
        obj.enableTruncate = enableTruncate;
        obj.onkeypress = TextAreaOnKeyPress;
        obj.onpaste = TextAreaOnPaste;
    }

    function TextAreaOnKeyPress()
    {
        var obj = window.event.srcElement;
        if(obj.value.length >= obj.maxLength)
        {
            event.returnValue = false;
        }
    }

    function TextAreaOnPaste()
    {
        var obj = window.event.srcElement;
        var maxLen = obj.maxLength;
        var curLen = obj.value.length;
        if (curLen >= maxLen)
        { 
            event.returnValue = false;
            return;
        }
        var newText = window.clipboardData.getData("text");
        if (newText.length + curLen <=maxLen )
        {
            event.returnValue = true;
            return;
        }
        event.returnValue = false;
        if (obj.enableTruncate)
        { 
            obj.value = obj.value + newText.substring(0, maxLen-curLen);
        } 
    }


    var _btnNames;
    var _btnMouseOverImages;
    var _btnMouseOutImages;
    var _imgPath;
    
    function RegisterButtons(btnNames, btnMouseOutImages, btnMouseOverImages, imgPath)
    {
        _btnNames = btnNames;
        _btnMouseOverImages = btnMouseOverImages;
        _btnMouseOutImages = btnMouseOutImages;
        _imgPath = imgPath;
        
        for (i = 0; i< _btnNames.length; i++)
        {
            var btn = document.getElementById(btnNames[i]);
            if(btn != undefined)
            {
                btn.onmouseout = myonmouseout;
                btn.onmouseover = myonmouseover;
            }
        }
    }

    function GetBtnImgIndex(btnName)
    {
        for (i = 0; i< _btnNames.length; i++)
        {
            if (btnName == _btnNames[i])
            {
                return i;
            }
        }
    }

    function myonmouseout()
    {
        var srcBtnName = event.srcElement.name;
        document.getElementById(srcBtnName).src = _imgPath + _btnMouseOutImages[GetBtnImgIndex(srcBtnName)];
    }

    function myonmouseover()
    {
        var srcBtnName = event.srcElement.name;
        document.getElementById(srcBtnName).src = _imgPath + _btnMouseOverImages[GetBtnImgIndex(srcBtnName)];
    }