function show_error_msg(div_id, msg){
    $(div_id).update(msg);
    $(div_id).className = 'wrong_message';
    $(div_id).show();
}

function  show_success_msg(div_id, msg){
    $(div_id).update(msg);    
    $(div_id).className = 'ok_message';
    $(div_id).show();
}

function show_send_msg(div_id, msg) {
    $(div_id).update(msg);
    $(div_id).className = 'sent_message';
    $(div_id).show();
}
           
function checkEmail(email) {
    var rejectedDomain=new Array()
    var index=0;
    rejectedDomain[index++]="spambox"
    
    var rejected=false
    var testresults=true
    var str=email
    var filter=/^.+@.+\..{2,4}$/
    if (filter.test(str)){
        var tempstring = str.split("@")
        tempstring = tempstring[1].split(".")
        for (i=0; i<rejectedDomain.length; i++) {
            if (tempstring[0]==rejectedDomain[i])
                testresults=false
        }
    } else {
        testresults=false
    }
    return (testresults)
}
    
 
/**
 *
 *  Base64 encode / decode
 *  http://www.webtoolkit.info/
 *
 **/

var Base64 = {
    
    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    
    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        
        input = Base64._utf8_encode(input);
        
        while (i < input.length) {
            
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
            
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
        
            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
        
        }
    
        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
        
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
        
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
        
            output = output + String.fromCharCode(chr1);
        
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        
        }
    
        output = Base64._utf8_decode(output);
    
        return output;
    
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
    
        for (var n = 0; n < string.length; n++) {
        
            var c = string.charCodeAt(n);
        
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        
        }
    
        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
    
        while ( i < utftext.length ) {
        
            c = utftext.charCodeAt(i);
        
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        
        }
    
        return string;
    }

}

/**
 *
 *  MD5 (Message-Digest Algorithm)
 *  http://www.webtoolkit.info/
 *
 **/

var MD5 = function (string) {

    function RotateLeft(lValue, iShiftBits) {
        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
    }

    function AddUnsigned(lX,lY) {
        var lX4,lY4,lX8,lY8,lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    }

    function F(x,y,z) { 
        return (x & y) | ((~x) & z);
    }
    function G(x,y,z) { 
        return (x & z) | (y & (~z));
    }
    function H(x,y,z) { 
        return (x ^ y ^ z);
    }
    function I(x,y,z) { 
        return (y ^ (x | (~z)));
    }

    function FF(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function GG(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function HH(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function II(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1=lMessageLength + 8;
        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
        var lWordArray=Array(lNumberOfWords-1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while ( lByteCount < lMessageLength ) {
            lWordCount = (lByteCount-(lByteCount % 4))/4;
            lBytePosition = (lByteCount % 4)*8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount-(lByteCount % 4))/4;
        lBytePosition = (lByteCount % 4)*8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
        lWordArray[lNumberOfWords-2] = lMessageLength<<3;
        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
        return lWordArray;
    };

    function WordToHex(lValue) {
        var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
        for (lCount = 0;lCount<=3;lCount++) {
            lByte = (lValue>>>(lCount*8)) & 255;
            WordToHexValue_temp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
        }
        return WordToHexValue;
    };

    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    };

    var x=Array();
    var k,AA,BB,CC,DD,a,b,c,d;
    var S11=7, S12=12, S13=17, S14=22;
    var S21=5, S22=9 , S23=14, S24=20;
    var S31=4, S32=11, S33=16, S34=23;
    var S41=6, S42=10, S43=15, S44=21;

    string = Utf8Encode(string);

    x = ConvertToWordArray(string);

    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

    for (k=0;k<x.length;k+=16) {
        AA=a; BB=b; CC=c; DD=d;
        a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
        d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
        c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
        b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
        a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
        d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
        c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
        b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
        a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
        d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
        c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
        b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
        a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
        d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
        c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
        b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
        a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
        d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
        c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
        b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
        a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
        d=GG(d,a,b,c,x[k+10],S22,0x2441453);
        c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
        b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
        a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
        d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
        c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
        b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
        a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
        d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
        c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
        b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
        a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
        d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
        c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
        b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
        a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
        d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
        c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
        b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
        a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
        d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
        c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
        b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
        a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
        d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
        c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
        b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
        a=II(a,b,c,d,x[k+0], S41,0xF4292244);
        d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
        c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
        b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
        a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
        d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
        c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
        b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
        a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
        d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
        c=II(c,d,a,b,x[k+6], S43,0xA3014314);
        b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
        a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
        d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
        c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
        b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
        a=AddUnsigned(a,AA);
        b=AddUnsigned(b,BB);
        c=AddUnsigned(c,CC);
        d=AddUnsigned(d,DD);
    }

    var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);

    return temp.toLowerCase();
}

function TextReplace(text){
    return text.replace(/\n/g,"<br/>");
}

function HtmlReplace( html ) {
    return html.replace(/<br\/>/g, '\n');
}

function TextareaReplace(text){
    return text.replace(/\n/g,"\n >");
}

function URLReplace(text){
    //    text = text.replace(/</g, "&lt;");
    //    text = text.replace(/>/g, "&gt;");
    //    var arr = text.match(/((www.)|(http|https|ftp)?:\/\/)[^\s,，。'"<>\u4e00-\u9fa5]*/g);
    var arr = text.match(/((www.)|(http|https|ftp)?:\/\/)[^\s,，。'"<>]*/g);
    
    var replaceStr = "";
    var rtnText = "";
    var tmpText = text;
    var start = 0;
    if(arr != null){
        for(var i=0; i<arr.length; i++){
            var str = arr[i];
            //            var k = str.length - 1;
            //            for(var j=str.length - 1; j>0; j--){
            //                var string1 = str[j];
            //                if((string1>='a' && string1<='z') || (string1>='A' && string1<='Z')){
            //                    k = j;
            //                    break;
            //                }
            //            }
            //            str = str.substr(0,k + 1);
            var str_link = str;
            if(str_link.substr(0,3) == "www"){
                str_link = "http://" + str_link;
            }
            var pos = tmpText.indexOf(str);
            replaceStr = tmpText.substr(0, pos + str.length);
            replaceStr = replaceStr.replace(str, '<a href="' + str_link + '" target="_blank" style="color:#679EF1;"><u>' + str + '</u></a>');
            rtnText = rtnText + replaceStr;
            start = pos + str.length;
            tmpText = tmpText.substr(start);
        }
    }
    
    rtnText = rtnText + tmpText;
    return rtnText;
}
function copyToClipboard(txt) {   
    if(window.clipboardData) {
        window.clipboardData.clearData();
        window.clipboardData.setData("Text", txt);
    } else if(navigator.userAgent.indexOf("Opera") != -1) {
        window.location = txt;
    } else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        } catch (e) {
            alert("被浏览器拒绝！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
        }
        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
        if (!clip)
            return;
        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        if (!trans)
            return;
        trans.addDataFlavor('text/unicode');
        var str = new Object();
        var len = new Object();
        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        var copytext = txt;
        str.data = copytext;
        trans.setTransferData("text/unicode",str,copytext.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clip)
            return false;
        clip.setData(trans,null,clipid.kGlobalClipboard);
        alert("复制成功！")
    }
}

function copyLinkCode(obj, screenName) {
    var code = '<img src="http://www.hengzhi.cc/images/link.gif" width="16" height="16" border="0"/>&nbsp; &nbsp;  <a href="http://www.hengzhi.cc/' + screenName + '">http://www.hengzhi.cc/' + screenName + '</a>';
    obj.setValue( code );
}

function sendQuickInvite() {
    var quickInviteEmails = $F("quickInviteEmails").strip();
    var quickInviteName = $F("quickInviteName").strip();
    new Ajax.Request("/Mail.do?action=SEND_QUICK_EXTINVITE", {
        parameters : {
            "quickInviteName" : quickInviteName,
            "quickInviteEmails" : quickInviteEmails
        },
        requestHeaders : {
            Accept: 'application/json'
        },
        onCreate : function(){
            $("inviteLoading").className = "";
            $("inviteLoading").update('<img src="/images/loading.gif">');
        },
        onSuccess : function(transport){
            var json = transport.responseText.evalJSON(true);
            if(json.RETURN){
                $("inviteMsg").update("邀请已发送");
                $("inviteMsg").className = "ok_message";
                $("quickInviteName").value = "";
                $("quickInviteEmails").value = "";
                //$("quickInviteEmails").innerHTML = "请输入email地址，以逗号或回车分隔";
                //$("quickInviteEmails").value = "请输入email地址，以逗号或回车分隔";
                //$("quickInviteEmails").style.color = "#CCC";
            }else{
                $("inviteMsg").update(json.MESSAGE);
                $("inviteMsg").className = "wrong_message";
            }

            this._timer = setTimeout(function(){
               $("inviteMsg").update("");
               $("inviteMsg").className = "clear";
               $("inviteLoading").className = "clear";
            },3000);
        }.bind(this),
        onComplete : function(){
            $("inviteLoading").update("");
        }
    })
}

 function initEditor(id,w,h){
        var myEditor = null;
        w = w==null ? '530px' : w;
        h = h==null ? '240px' : h;
         (function() {
             var Dom = YAHOO.util.Dom,
            Event = YAHOO.util.Event;

            var myConfig = {
                height: h,
                width: w,
                dompath: true,
                focusAtStart: true,
                 toolbar: {
                        grouplabels: false,
                        buttons: [
                            { group: 'textstyle', label: 'Font Style',
                                buttons: [
                                    { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
                                        menu: [
                                            { text: 'Arial', checked: true },
                                            { text: 'Arial Black' },
                                            { text: 'Comic Sans MS' },
                                            { text: 'Courier New' },
                                            { text: 'Lucida Console' },
                                            { text: 'Tahoma' },
                                            { text: 'Times New Roman' },
                                            { text: 'Trebuchet MS' },
                                            { text: 'Verdana' }
                                        ]
                                    },
                                    { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true },
                                    { type: 'separator' },
                                    { type: 'push', label: 'Bold', value: 'bold' },
                                    { type: 'push', label: 'Italic', value: 'italic' },
                                    { type: 'push', label: 'Underline', value: 'underline' },
                                    { type: 'separator' },
                                    { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
                                    { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true }
                                ]
                            },
                            {type:"separator"},
                            {group:"indentlist",label:"Lists",buttons:[{type:"push",label:"Create an Unordered List",value:"insertunorderedlist"},{type:"push",label:"Create an Ordered List",value:"insertorderedlist"}]},
                            {type:"separator"},
                            {group:"insertitem",label:"Insert Item",buttons:[{type:"push",label:"HTML Link CTRL + SHIFT + L",value:"createlink",disabled:true}]}
                        ]
                    }
            };

            YAHOO.log('Create the Editor..', 'info', 'example');
            myEditor = new YAHOO.widget.SimpleEditor(id, myConfig);
            myEditor.render();
        })();
       return myEditor;
    }


function focusHideMsg(e,v){
    if(e.value == v){
        e.value = "";
        e.style.color="#000";
    }
}

function BlueShowMsg(e,v){
    if(e.value == ""){
        e.style.color="#999";
        e.value = v;
    }
}


function get_calendar_str(id){

    YAHOO.util.Event.onDOMReady(function(){
        var Event = YAHOO.util.Event,
        Dom = YAHOO.util.Dom,
        dialog,
        calendar;
        var select_date="";
        var showBtn = Dom.get(id);

        Event.on(showBtn, "focus", function() {
            var bStr = $F(id);
            var date = new Date($F(id));
            // Lazy Dialog Creation - Wait to create the Dialog, and setup document click listeners, until the first time the button is clicked.
            if (!dialog) {
                // Hide Calendar if we click anywhere in the document other than the calendar
                Event.on(document, "focus", function(e) {
                    var el = Event.getTarget(e);
                    var dialogEl = dialog.element;
                    if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) {
                        dialog.hide();
                    }
                });

                function resetHandler() {
                    // Reset the current calendar page to the select date, or
                    // to today if nothing is selected.
                    var selDates = calendar.getSelectedDates();
                    var resetDate;

                    if (selDates.length > 0) {
                        resetDate = selDates[0];
                    } else {
                        resetDate = calendar.today;
                    }
                    calendar.cfg.setProperty("pagedate", resetDate);
                    calendar.render();
                }

                function closeHandler() {
                    dialog.hide();
                }

                dialog = new YAHOO.widget.Dialog("container"+id, {
                    visible:false,
                    context:[id, "tl", "bl"],
                    draggable:false,
                    close:true
                });

                dialog.setHeader('请选择一个日期');

                dialog.setBody('<div id='+"cal"+id+'></div>');
                dialog.render(document.body);
                dialog.showEvent.subscribe(function() {
                    if(($F(id)).length>=10){
                        var selD = ($F(id)).split("/");
                        if(selD.size()==3){
                            seldate = YAHOO.widget.DateMath.getDate(selD[0],selD[1]-1,selD[2]);
                            calendar.cfg.setProperty("pagedate", seldate);
                            calendar.render();
                        }
                    }

                    if (YAHOO.env.ua.ie) {
                        // Since we're hiding the table using yui-overlay-hidden, we
                        // want to let the dialog know that the content size has changed, when
                        // shown
                        dialog.fireEvent("changeContent");
                    }
                });
            }

            // Lazy Calendar Creation - Wait to create the Calendar until the first time the button is clicked.
            if (!calendar) {
                calendar = new YAHOO.widget.Calendar("cal"+id, {
                    iframe:false,          // Turn iframe off, since container has iframe support.
                    hide_blank_weeks:true  // Enable, to demonstrate how we handle changing height, using changeContent
                });

                //标题中年份在第一位
                calendar.cfg.setProperty("MY_LABEL_YEAR_POSITION", 1);
                //标题中月份在第二位
                calendar.cfg.setProperty("MY_LABEL_MONTH_POSITION", 2);
                //标题中年份的后缀为"年"
                calendar.cfg.setProperty("MY_LABEL_YEAR_SUFFIX", "年");
                //标题中月份的后缀为"月"
                calendar.cfg.setProperty("MY_LABEL_MONTH_SUFFIX", "月");
                calendar.cfg.setProperty("MONTHS_LONG", ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]);
                //星期的短名为"日", "一", "二", "三"(注意“日”在第一个)
                calendar.cfg.setProperty("WEEKDAYS_SHORT", ["日", "一", "二", "三", "四", "五", "六"]);

                calendar.render();
                calendar.selectEvent.subscribe(function() {
                    if (calendar.getSelectedDates().length > 0) {
                        var selDate = calendar.getSelectedDates()[0];
                        var wStr = calendar.cfg.getProperty("WEEKDAYS_SHORT")[selDate.getDay()];
                        var dStr = selDate.getDate();
                        var mStr = selDate.getMonth()+1;
                        var yStr = selDate.getFullYear();
                        var week = selDate.getDay();
                        dStr = dStr<10?"0"+dStr:dStr;
                        mStr = mStr<10?"0"+mStr:mStr;
                        //var weekOfMonth = getMonthWeek(yStr,mStr,dStr);
                        select_date = yStr+"/"+mStr+"/"+dStr;
                        Dom.get(id).style.color="#000";
                        Dom.get(id).value = select_date;


                    //alert("weekday="+weekday+"   monthday="+monthday+"  monthweekday="+monthweekday+" yearmonthday="+yearmonthday);
                    } else {
                        Dom.get(id).value = "";
                    }
                    dialog.hide();
                });

                calendar.renderEvent.subscribe(function() {
                    // Tell Dialog it's contents have changed, which allows
                    // container to redraw the underlay (for IE6/Safari2)
                    if(id=="startDate"){
                        var eStr = $F(id);
                        var cell = calendar.cells[calendar.getCellIndex(date)];
                        if(!compareTwoDateEqual(bStr,eStr)){
                            if(Dom.hasClass(cell, calendar.Style.CSS_CELL_SELECTED))
                                Dom.removeClass(cell, calendar.Style.CSS_CELL_SELECTED);
                        }else{
                            if(!Dom.hasClass(cell, calendar.Style.CSS_CELL_SELECTED))
                                Dom.addClass(cell, calendar.Style.CSS_CELL_SELECTED);
                        }
                    }else{
                        var eStr1 = $F(id);
                        var date2 = new Date(eStr1);
                        var cell1 = calendar.cells[calendar.getCellIndex(date2)];
                        if(!Dom.hasClass(cell1, calendar.Style.CSS_CELL_SELECTED))
                            Dom.addClass(cell1, calendar.Style.CSS_CELL_SELECTED);
                    }
                    dialog.fireEvent("changeContent");
                });
            }

            //seldate = YAHOO.widget.DateMath.getDate("2009","3","25"); //seldate = calendar.getSelectedDates();
            if(($F(id)).length>=10){
                var selD = ($F(id)).split("/");
                if(selD.size()==3){
                    seldate = YAHOO.widget.DateMath.getDate(selD[0],selD[1]-1,selD[2]);
                    calendar.cfg.setProperty("pagedate", seldate[0]);
                    calendar.render();
                }
            }

            dialog.show();
        });
    });
}

function set_calendar(id){

    YAHOO.util.Event.onDOMReady(function(){
        var Event = YAHOO.util.Event,
        Dom = YAHOO.util.Dom,
        dialog,
        calendar;
        var select_date="";
        var showBtn = Dom.get(id);


            var bStr = $F(id);
            var date = new Date($F(id));
            // Lazy Dialog Creation - Wait to create the Dialog, and setup document click listeners, until the first time the button is clicked.
            if (!dialog) {
                // Hide Calendar if we click anywhere in the document other than the calendar
                Event.on(document, "focus", function(e) {
                    var el = Event.getTarget(e);
                    var dialogEl = dialog.element;
                    if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) {
                        dialog.hide();
                    }
                });

                function resetHandler() {
                    // Reset the current calendar page to the select date, or
                    // to today if nothing is selected.
                    var selDates = calendar.getSelectedDates();
                    var resetDate;

                    if (selDates.length > 0) {
                        resetDate = selDates[0];
                    } else {
                        resetDate = calendar.today;
                    }
                    calendar.cfg.setProperty("pagedate", resetDate);
                    calendar.render();
                }

                function closeHandler() {
                    dialog.hide();
                }

                dialog = new YAHOO.widget.Dialog("container"+id, {
                    visible:false,
                    context:[id, "tl", "bl"],
                    draggable:false,
                    close:true
                });

                dialog.setHeader('请选择一个日期');

                dialog.setBody('<div id='+"cal"+id+'></div>');
                dialog.render(document.body);
                dialog.showEvent.subscribe(function() {
                    if(($F(id)).length>=10){
                        var selD = ($F(id)).split("/");
                        if(selD.size()==3){
                            seldate = YAHOO.widget.DateMath.getDate(selD[0],selD[1]-1,selD[2]);
                            calendar.cfg.setProperty("pagedate", seldate);
                            calendar.render();
                        }
                    }

                    if (YAHOO.env.ua.ie) {
                        // Since we're hiding the table using yui-overlay-hidden, we
                        // want to let the dialog know that the content size has changed, when
                        // shown
                        dialog.fireEvent("changeContent");
                    }
                });
            }

            // Lazy Calendar Creation - Wait to create the Calendar until the first time the button is clicked.
            if (!calendar) {
                calendar = new YAHOO.widget.Calendar("cal"+id, {
                    iframe:false,          // Turn iframe off, since container has iframe support.
                    hide_blank_weeks:true  // Enable, to demonstrate how we handle changing height, using changeContent
                });

                //标题中年份在第一位
                calendar.cfg.setProperty("MY_LABEL_YEAR_POSITION", 1);
                //标题中月份在第二位
                calendar.cfg.setProperty("MY_LABEL_MONTH_POSITION", 2);
                //标题中年份的后缀为"年"
                calendar.cfg.setProperty("MY_LABEL_YEAR_SUFFIX", "年");
                //标题中月份的后缀为"月"
                calendar.cfg.setProperty("MY_LABEL_MONTH_SUFFIX", "月");
                calendar.cfg.setProperty("MONTHS_LONG", ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]);
                //星期的短名为"日", "一", "二", "三"(注意“日”在第一个)
                calendar.cfg.setProperty("WEEKDAYS_SHORT", ["日", "一", "二", "三", "四", "五", "六"]);

                calendar.render();
                calendar.selectEvent.subscribe(function() {
                    if (calendar.getSelectedDates().length > 0) {
                        var selDate = calendar.getSelectedDates()[0];
                        var wStr = calendar.cfg.getProperty("WEEKDAYS_SHORT")[selDate.getDay()];
                        var dStr = selDate.getDate();
                        var mStr = selDate.getMonth()+1;
                        var yStr = selDate.getFullYear();
                        var week = selDate.getDay();
                        dStr = dStr<10?"0"+dStr:dStr;
                        mStr = mStr<10?"0"+mStr:mStr;
                        //var weekOfMonth = getMonthWeek(yStr,mStr,dStr);
                        select_date = yStr+"/"+mStr+"/"+dStr;
                        Dom.get(id).style.color="#000";
                        Dom.get(id).value = select_date;


                    //alert("weekday="+weekday+"   monthday="+monthday+"  monthweekday="+monthweekday+" yearmonthday="+yearmonthday);
                    } else {
                        Dom.get(id).value = "";
                    }
                    dialog.hide();
                });

                calendar.renderEvent.subscribe(function() {
                    // Tell Dialog it's contents have changed, which allows
                    // container to redraw the underlay (for IE6/Safari2)
                    if(id=="startDate"){
                        var eStr = $F(id);
                        var cell = calendar.cells[calendar.getCellIndex(date)];
                        if(!compareTwoDateEqual(bStr,eStr)){
                            if(Dom.hasClass(cell, calendar.Style.CSS_CELL_SELECTED))
                                Dom.removeClass(cell, calendar.Style.CSS_CELL_SELECTED);
                        }else{
                            if(!Dom.hasClass(cell, calendar.Style.CSS_CELL_SELECTED))
                                Dom.addClass(cell, calendar.Style.CSS_CELL_SELECTED);
                        }
                    }else{
                        var eStr1 = $F(id);
                        var date2 = new Date(eStr1);
                        var cell1 = calendar.cells[calendar.getCellIndex(date2)];
                        if(!Dom.hasClass(cell1, calendar.Style.CSS_CELL_SELECTED))
                            Dom.addClass(cell1, calendar.Style.CSS_CELL_SELECTED);
                    }
                    dialog.fireEvent("changeContent");
                });
            }

            //seldate = YAHOO.widget.DateMath.getDate("2009","3","25"); //seldate = calendar.getSelectedDates();
            if(($F(id)).length>=10){
                var selD = ($F(id)).split("/");
                if(selD.size()==3){
                    seldate = YAHOO.widget.DateMath.getDate(selD[0],selD[1]-1,selD[2]);
                    calendar.cfg.setProperty("pagedate", seldate[0]);
                    calendar.render();
                }
            }


  
    });
}