﻿// 名前空間の作成
if (window.nl === undefined) window.nl = {};

$(function() {
    // ---エラー時の共通処理を記述---------------------------------------------------------
    nl.connectionError = function(arg) {
        ///	<summary>ajaxエラー時の共通処理</summary>
        //サーバーエラー内容を通知。
        try {
            booknest.jp.BookshelfService.RaisedClientError(arg.get_message());
        }
        catch (e) { }

        //リロード
        //alert("サーバーとの通信中にエラーが発生しました。" + "\r\n恐れ入りますが、一度ログアウトしてから再度お試しください。");
    };

    if (nl.Config === undefined) nl.Config = {};

    nl.Config.LoadingImage = {
        message: "<img src='/images/loading.gif' />",
        css: { border: '0px', width: '32px', height: '32px', opacity: '0.6', "background-color": "",
            filter: 'progid:DXImageTransform.Microsoft.Alpha(Enabled=1,Style=0,Opacity=60)'
        }
    };
});

//文字列操作
function trim(str, size, isNotRest) {
    var rest = '...';
    if(isNotRest)
        rest = '';
        
    var str = str.replace("\r\n","").replace("\n","").replace("\r","");
    
    if (str.length > size) {
        var cutstring = str.substring(0, size);
        var byte = countByte(cutstring);
        var tmp = "";
        if (byte < size * 2) {
            for (k = 0; k < (size * 2 - byte) * 2; k++) {
                tmp = str.substring(0, size + k);
                if (countByte(tmp) >= size * 2) {
                    break;
                }
            }
        }
        if (tmp) {
            return tmp + rest;
        } else {
            return str.substring(0, size) + rest;
        }
    } else {
        return str;
    }
};
function countByte(str) {
    var byte = 0;
    for (j = 0; j < str.length; j++) {
        str.charCodeAt(j) < 0x100 ? byte++ : byte += 2;
    }
    return byte;
};
function toHtml(str) {
//    var splitStr = str.replace("\r\n","<br />");
//    return splitStr.replace("\n","<br />").replace("\r","<br />");
    re = new RegExp("\r\n|\n|\r", "g");
    return str.replace(re, "<br />");
};
function convertLineFeed(str) {
    re = new RegExp("<br />", "g");
    return str.replace(re, "　");
};
String.prototype.valid = function(maxlength, maxLineCount, isUrl) {
    var before = this;
    var after = "";
    var isChange = false;

    //XSS
    after = before.escapeXSS();
    if (before.toString() !== after.toString()) {
        before = after;
        isChange = true;
    }

    //最大文字数(改行をカウントしない)
    var tmp = before.replace("\r\n", "$return$").replace("\n", "\r\n").replace("\r", "\r\n").replace("$return$", "\r\n");
    if (maxlength) {
        if (tmp.replace("\r\n", "").length > maxlength) {
            after = before.substring(0, maxlength + (tmp.split("\r\n", "").length - 1));
        }
        if (before.toString() !== after.toString()) {
            before = after;
            isChange = true;
        }
    }
    if (maxLineCount) {
        var lineFeeds = ["\r\n", "\n", "\r"]
        for (var f in lineFeeds) {
            var arr = before.split(lineFeeds[f]);
            if (arr.length > maxLineCount) {
                after = arr.slice(0, maxLineCount).join(lineFeeds[f]);
            }
        }
        if (before.toString() !== after.toString()) {
            before = after;
            isChange = true;
        }
    }

    //URLチェック
    if (isUrl) {
        after = before.convertUrlString();
        if (before.toString() !== after.toString()) {
            before = after;
            isChange = true;
        }
    }
    
    if (isChange)
        return after;
    else
        return null;
};
String.prototype.trim = function() {
    return this.replace(/^[ ]+|[ ]+$|^[　]+|[　]+$/g, '');
};
String.prototype.escapeXSS = function() {
    return this.replace(/[<>&\"\'\\\/]*/g, '');
};
String.prototype.convertUrlString = function() {
    return this.replace(/[!\\"#%&\',-\/:;<=>@\_`{}~｡｢｣､･゛゜\.\^\$\[\]\*\+\?\|\(\)]*/g, '');
};
String.prototype.escapeLineFeed = function() {
    return this.replace("\r\n","").replace("\n","").replace("\r","");
};
String.prototype.cellValue = function() {
    return this ? this : "　";
};
function loadJavascript(scriptFile) { 
        var scriptsPath; 
        scriptsPath = $('script').attr('src'); 
        scriptsPath = scriptsPath.replace(/\w+\.js$/, ''); 

        $(document.createElement('script')) 
                .attr('src',  scriptsPath + scriptFile + ".js") 
          .attr('type', 'text/javascript') 
          .appendTo('head'); 
} 
function keyCode(e){ 
    if(document.all) 
        return  e.keyCode; 
    else if(document.getElementById)  
        return (e.keyCode)? e.keyCode: e.charCode; 
    else if(document.layers) 
        return  e.which; 
}