//--------------------------------------
//  日付から差分日数を算出する
//--------------------------------------
function Calc_DateDiff(_StDt,_EdDt){
    
    var _YY = 0;
    var _MM = 0;
    var _DD = 0;
    var _HH = 0;
    var _mm = 0;
    
    //受け取った文字列を日付型に変換
    
    _YY = eval(_StDt.substring(0,4));
    _MM = eval(_StDt.substring(4,6));
    _DD = eval(_StDt.substring(6,8));
    _HH = eval(_StDt.substring(8,10));
    _mm = eval(_StDt.substring(10,12));
    _SS = eval(_StDt.substring(12,14));
    
    var _S_StDt = _YY;
    _S_StDt += "/";
    _S_StDt += _MM;
    _S_StDt += "/";
    _S_StDt += _DD;
    _S_StDt += " ";
    _S_StDt += _HH;
    _S_StDt += ":";
    _S_StDt += _mm;
    _S_StDt += ":";
    _S_StDt += _SS;
    
    var _D_StDt = new Date(_S_StDt);
    
    _YY = eval(_EdDt.substring(0,4));
    _MM = eval(_EdDt.substring(4,6));
    _DD = eval(_EdDt.substring(6,8));
    _HH = eval(_EdDt.substring(8,10));
    _mm = eval(_EdDt.substring(10,12));
    _SS = eval(_EdDt.substring(12,14));
    
    var _S_EdDt = _YY;
    _S_EdDt += "/";
    _S_EdDt += _MM;
    _S_EdDt += "/";
    _S_EdDt += _DD;
    _S_EdDt += " ";
    _S_EdDt += _HH;
    _S_EdDt += ":";
    _S_EdDt += _mm;
    _S_EdDt += ":";
    _S_EdDt += _SS;
    
    var _D_EdDt = new Date(_S_EdDt);
    
    //差を計算する
    var _Diff = _D_EdDt - _D_StDt;
    
    //1日は86400000ミリ秒（小数点以下は切り捨て）
    var _DiffDate = Math.floor(_Diff / 86400000);
    
    return _DiffDate;
}

function Calc_GetDateString(){
    var _Now = new Date();
    var _StrNow = '';
    
    var _nowyear = _Now.getYear();
    if ( _nowyear < 2000 ) {
        _nowyear = _nowyear + 1900;
    }
    _StrNow += _nowyear.toString();
    
    var _nowmonth = _Now.getMonth();
    _nowmonth += 1;
    if (_nowmonth < 10) {
        _StrNow += "0";
        _StrNow += _nowmonth.toString();
    }else{
        _StrNow += _nowmonth.toString();
    }
    
    var _nowdate = _Now.getDate();
    if (_nowdate < 10) {
        _StrNow += "0";
        _StrNow += _nowdate.toString();
    }else{
        _StrNow += _nowdate.toString();
    }
    
    var _hours = _Now.getHours();
    if (_hours < 10) {
        _StrNow += "0";
        _StrNow += _hours.toString();
    }else{
        _StrNow += _hours.toString();
    }
    
    var _minutes = _Now.getMinutes();
    if (_minutes < 10) {
        _StrNow += "0";
        _StrNow += _minutes.toString();
    }else{
        _StrNow += _minutes.toString();
    }
    
    var _seconds = _Now.getSeconds();
    if (_seconds < 10) {
        _StrNow += "0";
        _StrNow += _seconds.toString();
    }else{
        _StrNow += _seconds.toString();
    }
    
    return _StrNow;
}


//--------------------------------------
// 連想配列の検索
//--------------------------------------
function Calc_Asearch(_Sqs,_Key,_Data){
    var _p = -1;
    for(_i = 0, _ilen = _Sqs.length; _i < _ilen; _i++){
        if(_Sqs[_i][_Key] == _Data){
            _p = _i;
            break;
        }
    }
    return _p;
}

function Calc_Dsearch(_Sqs,_Data){
    var _p = -1;
    for(_i = 0, _ilen = _Sqs.length; _i < _ilen; _i++){
        if(_Sqs[_i] == _Data){
            _p = _i;
            break;
        }
    }
    return _p;
}


//--------------------------------------
// 二次元配列のソート
//--------------------------------------
function Calc_Xsort(_Sqs,_Col,_Order){
    //_Col:並べ替えの対象となる列
    //_Order:1=昇順、-1=降順
    _Sqs.sort(function(_a,_b){
        return ((_a[_Col] - _b[_Col]) * _Order);
    });
    return _Sqs;
}


//--------------------------------------
// 連想配列のソート
//--------------------------------------
function Calc_Asort(_Sqs,_Key,_Order){
    //_Key:並べ替えの対象となる列
    //_Order:1=昇順、-1=降順
    _Sqs.sort(function(_a,_b){
        return _a[_Key] > _b[_Key] ? _Order : (_Order * -1);
    });
    return _Sqs;
}

function Calc_AEsort(_Sqs,_Key,_Order){
    //_Key:並べ替えの対象となる列
    //_Order:1=昇順、-1=降順
    _Sqs.sort(function(_a,_b){
        return eval(_a[_Key]) > eval(_b[_Key]) ? _Order : (_Order * -1);
    });
    return _Sqs;
}


function Calc_Asort2(_Sqs,_Key,_Key2,_Order){
    //_Key:並べ替えの対象となる列
    //_Order:1=昇順、-1=降順
    _Sqs.sort(function(_a,_b){
        if(_a[_Key] > _b[_Key]){ return _Order }
        if(_a[_Key] < _b[_Key]){ return (_Order * -1) }
        if(_a[_Key2] > _b[_Key2]){ return _Order }
        if(_a[_Key2] < _b[_Key2]){ return  (_Order * -1) }
        return  0;
    });
    return _Sqs;
}

function Calc_AEsort2(_Sqs,_Key,_Key2,_Order){
    //_Key:並べ替えの対象となる列
    //_Order:1=昇順、-1=降順
    _Sqs.sort(function(_a,_b){
        if(eval(_a[_Key]) > eval(_b[_Key])){ return _Order }
        if(eval(_a[_Key]) < eval(_b[_Key])){ return (_Order * -1) }
        if(eval(_a[_Key2]) > eval(_b[_Key2])){ return _Order }
        if(eval(_a[_Key2]) < eval(_b[_Key2])){ return (_Order * -1) }
    });
    return _Sqs;
}


//--------------------------------------
// 連想配列の指定順ソート
//--------------------------------------
function Calc_ADsort(_Sqs,_Key,_Sqs2,_Key2){
    var _Work = new Array();
    var _Count = 0;
    for(_i = 0, _ilen = _Sqs2.length; _i < _ilen; _i++){
        for(_j = 0, _jlen = _Sqs.length; _j < _jlen; _j++){
            if(_Sqs[_j][_Key] == _Sqs2[_i][_Key2]){
                _Work[_Count] = _Sqs[_j];
                _Count += 1;
                //break;
            }
        }
    }
    return _Work;
}

//--------------------------------------
// 特殊文字列の置換
//--------------------------------------
function Calc_Str2HtmlKeyword(_Str){
    _Str = _Str.replace(/</g, '&lt;');
    _Str = _Str.replace(/>/g, '&gt;');
    _Str = _Str.replace(/\"/g, '&rdquo;'); //"
    _Str = _Str.replace(/\'/g, '&rsquo;'); //'
    
    return _Str;
}

