jQuery.extend({
    get: function(url, data, callback, failback, type) {
        if (jQuery.isFunction(data)) {
            callback = data;
            data = null;
        }
        return jQuery.ajax({
            type: "GET",
            url: url,
            data: data,
            cache:false,
            success: callback,
            error:failback,
            dataType: type
        });
    }
});
function errorhandler(XMLHttpRequest, textStatus, errorThrown) {
    try {
        if (textStatus == 'timeout') {
            alert('timeout');
        }
    } catch (e) {
    }
}
jQuery.fn.enter2tab = function() {
    this.keypress(function(e) {
        // get key pressed (charCode from Mozilla/Firefox and Opera / keyCode in IE)
        var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
        // get tabindex from which element keypressed
        var nTabIndex = this.tabIndex + 1;
        // get element type (text or select)
        var myNode = this.nodeName.toLowerCase();
        // allow enter/return key (only when in an input box or select)
        if (key == 13 && ((myNode == "input") || (myNode == "select"))) {
            setTimeout('delayTab(' + nTabIndex + ')', 10);
            return false;
        } else if (key == 13) {
            return false;
        }
    });
    return this;
};
//可直接對多筆資料作操作,通常是用在刪除,封存,解封
function operateAll(act, url) {
    $('#method').attr('value', act);
    var queryString = $('#actform').formSerialize();
    showload();
    $.post(url, queryString, function(data) {
        location.reload();
    });
}
//可直接對單一網址作操作,然後本頁重整,通常是用在刪除
function sendurl(url, para) {
    showload();
    $.getJSON(url, para, function(data) {
        if (data.results != undefined && data.results != "nothing")
            alert(data.results);
        location.reload();
    });
}

function showload() {
    $.blockUI({ message:$('<img src="http://download.chineseteachers.com/Web/jsp/style/images/loadingAnimation2.gif" alt="loading"/>'),
        css: {
            border: 'none',
            opacity: 0.2
        },overlayCSS:{
            backgroundColor: '#fff'
        }
    });
}
function finishload(func) {
    if (func != undefined && jQuery.isFunction(func)) {
        $.unblockUI({
            onUnblock:func
        });
    } else {
        $.unblockUI();
    }

}

function delayTab(nTabIndex) {
    var oj = $("select[tabIndex='" + nTabIndex + "'],input[tabIndex='" + nTabIndex + "'],a[tabIndex='" + nTabIndex + "'],textarea[tabIndex='" + nTabIndex + "']").get(0);
    if (oj) {
        oj.focus();
    }
}
//指定Image及寬度,超過寬度的圖片就可以自動調整
jQuery.fn.resizeImage = function(w) {
    this.removeAttr("height");
    this.removeAttr("width");
    if (this.get(0) && this.get(0).width > w)
        this.attr("width", w);
    return this;
};
jQuery.fn.Pulsate = function(time, num) {
//    this.effect('pulsate',time);
    for (var i = 0; i < num; i++) {
        this.fadeOut(time).fadeIn(time);
    }
    return this;
};
//將所有Input的Enter轉換成Tab
$(function() {
    $('input[type="text"],input[type="checkbox"],input[type="radio"],input[type="password"],select').enter2tab();
});

/*以下都是Multi FileUpload的上傳處理函式*/
function makeBackUploadString(uuid, filename, url, elementName) {
    var str = "<div>";
    str = str + "[<a href='#' onclick=\"javascript:$.post('" + url + "','del=" + uuid + "');$(this).parent().remove();\">移除</a>]";
    str = str + "<input type='hidden' name='" + elementName + "' value='" + uuid + "' />";
    str = str + "<a href='/download?id=" + uuid + "'>" + filename + "</a>";
    str = str + "</div>";
    return str;
}
function advupload(o) {
    var target = $("#" + o.innerTargetID);
    var filetype = o.filetype;
    var fileinputstr = o.fileElementID;
    var filetrigger = $('#' + o.triggerID);
    var name = o.formName;
    var maxnumber = o.maxNumber;
    var fileurl = o.handleUrl;
    if ($('#' + fileinputstr).val() == '') {
        alert('請先選擇上傳檔案!!');
        return false;
    }
    var type = o.uploadType;
    if (checkFileType($('#' + fileinputstr).val(), filetype)) {
        var count = $("input[name='" + name + "']").length;
        if (count >= maxnumber) {
            alert("只限" + maxnumber + "個檔案上傳！");
            $('#' + fileinputstr).val("");
            return false;
        } else {
            if (count = 0)
                target.empty();
            filetrigger.ajaxStart(function() {
                showload();
            }).ajaxComplete(function() {
                finishload();
            });
            return ajaxFileUpload(fileurl + "?uploadType=" + type, fileinputstr, function(data) {
                target.append(makeBackUploadString(data.uuid, data.filename, fileurl, name));
                //                        target.append("<div>[<a href='#' onclick=\"javascript:$.post('upload.jsp','del=" + data.uuid + "');$(this).parent().remove();\">移除</a>]<input type='hidden' name='"+name+"' value='" + data.uuid + "' /><a href='/download?id=" + data.uuid + "'>" + data.filename + "</a></div>");
                $('#' + fileinputstr).val("");
            });
        }
    } else {
        alert("只限副檔名[" + filetype + "]的檔案上傳！");
        return false;
    }
}
function checkFileType(obj, filetype) {
    if (filetype == null)
        return true;
    var type = getFilePostfix(obj).toLowerCase();
    var ar = filetype.split(",");
    var isCorrect = false;
    for (x = 0; x < ar.length; x++) {
        if (ar[x].toLowerCase() == type) {
            isCorrect = true;
            break;
        }
    }
    return isCorrect;
}
function ajaxFileUpload(urlsite, filebox, func) {
    $.ajaxFileUpload({
        url:urlsite,
        secureuri:false,
        fileElementId:filebox,
        dataType: 'json',
        success: function (data, status) {
            if (typeof(data.error) != 'undefined') {
                if (data.error != '') {
                    alert(data.error);
                } else {
                    func(data);
                }
            }
        },
        error: function (data, status, e) {
            alert(e);
        }
    });
    return false;
}
/*以上都是FileUpload的上傳處理函式*/
/*處理當FormItem審核不通過時處理方式*/
function formwarn(message, id) {
    alert(unescape(message));
    $('#' + id).focus();
}
function modify(url, id) {
    $("<form id='modifyform' method='post' action='" + url + "'><input type='hidden' name='method' value='updateOne' /><input type='hidden' name='id' value='" + id + "' /></form>").appendTo("body");
    $('#modifyform').submit();
}

function formwarn_login(message, id) {
    alert(unescape(message));
    $('#' + id).focus();
}

jQuery.fn.enter2function = function(func) {
    this.keypress(function(e) {
        var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
        if (key == 13) {
            func();
            return false;
        }
    });
    return this;
};