﻿// 清除页面数据时的提示字符串
var CLEAR_PAGE_CONTENT_MESSAGE = "Are you sure you want to clear all fields?";

// 清空页面所有Input、Textarea文本框中的内容
// return: 如果用户确认了删除，则返回true，否则返回false
function ResetPageContentInner()
{
    if (window.confirm(CLEAR_PAGE_CONTENT_MESSAGE))
    {
        $("input[type=text],input[type=file],textarea").val("");
        $("input[type=checkbox]").attr("checked", false);
        $("input[type=radio]").attr("checked", false);
        $("input, textarea").attr("disabled", false);

        // 清除页面提示，注意，这里只能清除常规的（就是Class Name为tooltip的页面提示）页面提示信息串
        $("span.tooltip").hide();
        
        // 因为在Reset页面时，会把所有页面上Textarea清空，但是在清空Textarea的同时，
        // 还需要把与Textarea相关联的字数统计归零，因此，这里再为每个Textarea发出一个
        // Keyup消息，让Textarea自己更新与之对应的字数统计信息。
        $("textarea").keyup();
        return true;
    }
    return false;
}

// 对ResetPageContentInner函数的封装，主要是为了易用，
// 客户端可直接使用 return ResetPageContent();的方式清除页面内容，而不需要使用
// ResetPageContentInner(); return false;的方式来清除页面内容
function ResetPageContent()
{
    // 清除页面内容
    ResetPageContentInner();
    
    // 在客户端开启JavaScript的情况下，该语句将阻止浏览器对于Reset类型按钮的执行
    return false;
}

// 获取URL的参数值
// name: 参数名称
// returns: 参数值
function GetUrlParam(name)
{
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)", "i");
    var results = regex.exec(window.location.href);
    return (results != null) ? results[1] : "";
}

// 检查文本框内容是否为空，为空则显示tooltip，否则隐藏tooltip
function CheckTextboxEmpty(textbox, tooltip)
{
    if ($.trim(textbox.val()).length == 0)
    {
        tooltip.show();
        return false;
    }
    else
    {
        tooltip.hide();
        return true;
    }
}

// 扩展Number类的方法，添加FormatMoney函数
Number.prototype.FormatMoney = function(c, d, t)
{
    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};

// 将字符串转换为Dollar数据格式
function FormatMoney(text, round)
{
    var number = parseFloat(text);
    return number.FormatMoney(round, '.', ',');
}

function TrackScroll()
{
    var top = (document.documentElement.scrollTop + (document.documentElement.clientHeight-document.getElementById("waitingWindow").offsetHeight)/2) + "px";
    var left = (document.documentElement.scrollLeft + (document.documentElement.clientWidth-document.getElementById("waitingWindow").offsetWidth)/2) + "px";
    
    var waitingWindow = document.getElementById("waitingWindow");
    waitingWindow.style.top = top;
    waitingWindow.style.left = left;
}

// 显示正在处理提示窗口
function ShowProcessWindow()
{
    $("#processWindow").width("100%").height($(document).height()).css({backgroundColor:'white', opacity:0.7}).show();
    $("#waitingWindow").show();
    $(document).keydown(function(event)
    {
        if(((event.witch) ? event.witch : event.keyCode) == 27)
        {
            event.preventDefault();
            return false;
        }
    });

    TrackScroll();
    window.onscroll = TrackScroll;
    window.onresize=TrackScroll;
    window.onload=TrackScroll;
    return true;
}

function HideProcessWindow()
{
    $("#processWindow").hide();
    $("#waitingWindow").hide();
}

//
function ExpandTextboxNew(target, rows,minRows)
{
    //var expandStep = 7;
    //var initRows = 1;
    //var textbox = document.getElementById(target.id);
    if(rows > 0)
        target.rows += rows;
    else
        target.rows = minRows;
}

function ExpandTextArea(sender)
{
    var parent = $(sender.parentNode.parentNode);
    var target=parent.find("textarea")[0];
    ExpandTextboxNew(target,3,0);
    return false;
}

function CollapseTextArea(sender,minRows)
{
    var parent = $(sender.parentNode.parentNode);
    var target=parent.find("textarea")[0];
    ExpandTextboxNew(target,-3,minRows);
    
    return false;
}

function ExpandInput(target)
{
    ExpandTextboxNew(target,1,0);
    return false;
}

function CollapseInput(target,minRows)
{
    ExpandTextboxNew(target,-1,minRows);
    return false;
} 
 
//JQuery扩展，在文本框内定位光标
$.fn.extend({   
    cursorPos:function(pos, text ){   
        var elem = this[0];   
        if (elem&&(elem.tagName=="TEXTAREA"||elem.type.toLowerCase()=="text")) {   
            if($.browser.msie){   
                var rng;   
                if(elem.tagName == "TEXTAREA"){    
                    rng = event.srcElement.createTextRange();   
                    rng.moveToPoint(event.x,event.y);   
                }else{    
                    rng = document.selection.createRange();   
                }   
                if( pos === undefined ){   
                    rng.moveStart("character",-event.srcElement.value.length);   
                    return  rng.text.length;   
                }else if(typeof pos === "number" ){   
                    var index=this.cursorPos();   
                    index>pos?( rng.moveEnd("character",pos-index)):(rng.moveStart("character",pos-index))   
                    rng.select();   
                    if( text === undefined ) {   
                        return pos;   
                    }   
                }   
            }else{   
                if( pos === undefined ){   
                    return elem.selectionStart;   
                }else if(typeof pos === "number" ){   
                    elem.selectionEnd = pos;   
                    elem.selectionStart = pos;   
                    if( text === undefined ) {   
                        return pos;   
                    }   
                }   
            }   
            if( text !== undefined ) {   
                var len = elem.value.length;   
                if(len<1 || pos<0) {   
                    pos = 0;   
                } else if( pos>len ) {   
                    pos = len;   
                }   
                var text1 = elem.value.substr(0,pos);   
                var text2 = elem.value.substr(pos);   
                pos += text.length;   
                elem.value = text1+text+text2;   
                return this.cursorPos(pos);   
            }   
        }else{   
            var index = 0;   
            if( typeof pos === "number") {   
                index += pos;   
            }   
            return index;   
        }   
    }   
})   

/// 设置可循环的HTML标签的样式，此方法基于jQuery。
///     itemTag     : 循环的HTML标签的标志
///     evenStyle   : 交替项的样式(class)
///     hoverStyle  : 当前鼠标移至该项时的样式(class)
jQuery.fn.__setRepeaterStyle = function(itemTag, evenStyle, hoverStyle) {

    var cssOriginal = "";
    $("#" + this.attr("id") + " " + itemTag + ":odd").addClass(evenStyle);
    
    if(hoverStyle.length > 0){    
        $("#" + this.attr("id") + " " + itemTag + "").mouseover(function() {
            cssOriginal = $(this).attr("class");
            $(this).addClass(hoverStyle);
        });
        $("#" + this.attr("id") + " " + itemTag + "").mouseout(function() {
            $(this).removeClass();
            if (cssOriginal.length > 0) {
                $(this).addClass(cssOriginal);
            }
        });
    }
}


