var cmanImgPopCns = {};

cmanImgPopCns["imgMaxSize"] = 100;
cmanImgPopCns["brwMaxSize"] = 0;
cmanImgPopCns["borderSize"] = 10;
cmanImgPopCns["borderColor"] = "#dddddd";
cmanImgPopCns["shadowSize"] = 7;
cmanImgPopCns["shadowColor"] = "#999999";
cmanImgPopCns["moveWidth"] = 1;
cmanImgPopCns["moveTime"] = 20;

// ━━━ 初期設定 ━━━━━━━━━━━━━━━━━━━━━━━━━━
cmanImgPopCns["popDiv"]    = 'cmanPopDiv';
cmanImgPopCns["msg"]       = 'cmanPopMsg';
cmanImgPopCns["movePar1"]  = '0.009,0.027,0.055,0.091,0.136,0.191,0.255,0.327,0.409,0.5,0.591,0.673,0.745,0.809,0.864,0.909,0.945,0.973,0.991,1';
cmanImgPopCns["movePar2"]  = '0.011,0.033,0.067,0.111,0.167,0.233,0.311,0.4,0.5,0.6,0.689,0.767,0.833,0.889,0.933,0.967,0.989,1';
cmanImgPopCns["movePar3"]  = '0.014,0.042,0.083,0.139,0.208,0.292,0.389,0.5,0.611,0.708,0.792,0.861,0.917,0.958,0.986,1';
cmanImgPopCns["movePar4"]  = '0.018,0.054,0.107,0.179,0.268,0.375,0.5,0.625,0.732,0.821,0.893,0.946,0.982,1';
cmanImgPopCns["movePar5"]  = '0.024,0.071,0.143,0.238,0.357,0.5,0.643,0.762,0.857,0.929,0.976,1';
cmanImgPopCns["movePar6"]  = '0.033,0.1,0.2,0.333,0.5,0.667,0.8,0.9,0.967,1';
cmanImgPopCns["movePar7"]  = '0.05,0.15,0.3,0.5,0.7,0.85,0.95,1';
cmanImgPopCns["movePar8"]  = '0.083,0.25,0.5,0.75,0.917,1';
cmanImgPopCns["movePar9"]  = '0.167,0.5,0.833,1';
cmanImgPopCns["movePar10"] = '1';
var cmanImgPopWk  = {};
var isSmartPhone;

function cmanImgPop(argObj,argUrl){

    var ua = navigator.userAgent;
    var iphone = ua.indexOf('iPhone') > 0;
    var androidSp = ua.indexOf('Android') > 0 && ua.indexOf('Mobile') > 0;
    var ipad = ua.indexOf('iPad') > 0;
    var androidT = ua.indexOf('Android') > 0;
    if ( iphone || androidSp || ipad || androidT ) { isSmartPhone = true; } else { isSmartPhone = false; }

    cmanImgPopWk["objStartImg"] = argObj;


    // ----- 画像オリジナルサイズの取得 -------------------------------
    if(delete cmanImgPopWk["objOrgImg"]){
            delete cmanImgPopWk["objOrgImg"];
    }
    cmanImgPopWk["objOrgImg"] = new Image();

    if((typeof argUrl === 'undefined')||(argUrl == '')){
        cmanImgPopWk["objOrgImg"].src = argObj.src;
    }else{
        cmanImgPopWk["objOrgImg"].src = argUrl;
    }

    cmanImgPopWk["waitStop"]  = 0;
    cmanImgPopWk["wiatCnt"]   = 0;

    cmanImgPopWk["objOrgImg"].onload = function() {
        cmanImgPopWk["waitStop"] = 1;
    }

    cmanImgPopWk["objOrgImg"].onerror = function() {
        cmanImgPopWk["waitStop"] = 2;
    }

    cmanImgPopWk["waitTimer"] = setTimeout("cmanImgWait()",100);

}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     画像の取得を待つ
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgWait(){

    var wLoopEnd = 0;

    if (cmanImgPopWk["waitTimer"]) {
        clearTimeout(cmanImgPopWk["waitTimer"]);
    }


    if(cmanImgPopWk["waitStop"] == 1){
        wLoopEnd = 1;
        cmanImgOpen();
        return true;
    }

    if(cmanImgPopWk["waitStop"] == 2){
        wLoopEnd = 1;
        return true;
    }

    cmanImgPopWk["wiatCnt"]++;
    if(cmanImgPopWk["wiatCnt"] > 30){
        wLoopEnd = 1;
    }

    if(wLoopEnd == 0){
        cmanImgPopWk["waitTimer"] = setTimeout("cmanImgWait()",100);
    }

}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     ポップアップ画像を開く
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgOpen(){

    // ----- ブラウザサイズの取得 -------------------------------------
    var wBrwW = document.documentElement.clientWidth;
//    var wBrwH = document.documentElement.clientHeight;
    var wBrwH = window.innerHeight;

    // ----- 画像の倍率指定よりMAXサイズの計算 ------------------------
    var wImgMaxW = Math.round( cmanImgPopWk["objOrgImg"].width  * ( cmanImgPopCns["imgMaxSize"] / 100 ));
    var wImgMaxH = Math.round( cmanImgPopWk["objOrgImg"].height * ( cmanImgPopCns["imgMaxSize"] / 100 ));


    // ----- ブラウザのの倍率指定よりMAXサイズの計算 ------------------
    var wBrwMaxW = 0;
    var wBrwMaxH = 0;
    if(cmanImgPopCns["brwMaxSize"] != 0){
        wBrwMaxW = Math.round( wBrwW * ( cmanImgPopCns["brwMaxSize"] / 100 )) - (cmanImgPopCns["borderSize"] * 2) - (cmanImgPopCns["shadowSize"] * 2);
        wBrwMaxH = Math.round( wBrwH * ( cmanImgPopCns["brwMaxSize"] / 100 )) - (cmanImgPopCns["borderSize"] * 2) - (cmanImgPopCns["shadowSize"] * 2);
    }


    // ----- 表示する画像サイズの計算 ---------------------------------
    if((wBrwMaxW != 0)&&(wBrwMaxW < wImgMaxW)){        // 横幅で小さい方を取得
        cmanImgPopWk["endW"] = wBrwMaxW;
        cmanImgPopWk["endH"] = Math.round( wBrwMaxW * (cmanImgPopWk["objOrgImg"].height / cmanImgPopWk["objOrgImg"].width) );
    }else{
        cmanImgPopWk["endW"] = wImgMaxW;
        cmanImgPopWk["endH"] = wImgMaxH;
    }

    if((wBrwMaxH != 0)&&(wBrwMaxH < cmanImgPopWk["endH"])){        // 横幅で計算したサイズをさらに高さで再計算
        cmanImgPopWk["endW"] = Math.round( wBrwMaxH * (cmanImgPopWk["objOrgImg"].width / cmanImgPopWk["objOrgImg"].height) );
        cmanImgPopWk["endH"] = wBrwMaxH;
    }


    // ----- 表示位置の計算 -------------------------------------------
    cmanImgPopWk["endY"] = Math.floor( ( wBrwH - ( cmanImgPopWk["endH"] + (cmanImgPopCns["borderSize"] * 2) + (cmanImgPopCns["shadowSize"] * 2) ) ) / 2);
//alert(wBrwH);
//alert(cmanImgPopWk["endY"]);
    cmanImgPopWk["endY"] += document.documentElement.scrollTop || document.body.scrollTop;
//alert(cmanImgPopWk["endY"]);
    cmanImgPopWk["endX"] = Math.floor( ( wBrwW - ( cmanImgPopWk["endW"] + (cmanImgPopCns["borderSize"] * 2) + (cmanImgPopCns["shadowSize"] * 2) ) ) / 2);
    cmanImgPopWk["endX"] += document.documentElement.scrollLeft || document.body.scrollLeft;

    if ( cmanImgPopWk["endX"] < 0 ) {  cmanImgPopWk["endX"] = 0; };
    if ( cmanImgPopWk["endY"] < 0 ) {  cmanImgPopWk["endY"] = 0; };



    // 元画像の情報取得
    cmanImgPopWk["startY"] = Math.floor(cmanImgPopWk["objStartImg"].getBoundingClientRect().top);
    cmanImgPopWk["startY"] += document.documentElement.scrollTop || document.body.scrollTop;
    cmanImgPopWk["startX"] = Math.floor(cmanImgPopWk["objStartImg"].getBoundingClientRect().left);
    cmanImgPopWk["startX"] += document.documentElement.scrollLeft || document.body.scrollLeft;
    cmanImgPopWk["startH"] = cmanImgPopWk["objStartImg"].height;
    cmanImgPopWk["startW"] = cmanImgPopWk["objStartImg"].width;


    // ----- 表示枠の作成＆割り当て -----------------------------------
    if(document.getElementById(cmanImgPopCns["popDiv"])){
        document.getElementById(cmanImgPopCns["popDiv"]).style.display = "none";
    }else{

        var wEle = document.createElement("div");   // 新規に要素（タグ）を生成
        wEle.style.display = "none";
        wEle.id = cmanImgPopCns["popDiv"];
        document.body.appendChild(wEle);            // このページ (document.body) の最後に生成した要素を追加
    }

    cmanImgPopWk["objPop"] = document.getElementById(cmanImgPopCns["popDiv"]);

    
    var strClickMode;
    var strCloseAction;
    if ( isSmartPhone ) { strClickMode = "click"; strCloseAction = "クリック"; }
    else { strClickMode = "dblclick"; strCloseAction = "ダブル･クリック"; }


    // ----- 画像の表示 -----------------------------------------------
    var wImgOut    = '<img src="' + cmanImgPopWk["objOrgImg"].src + '" style="width:100%;height:100%;" border="0">';
    wImgOut  += '<div style="color: blue;position: absolute;top: 0; opacity: 0.55;background-color: #ccffcc;font-weight:bold;padding: 3px;font-size:9pt;" id="' + cmanImgPopCns["msg"] + '">' + strCloseAction + 'でClose</div>';
    cmanImgPopWk["objPop"].innerHTML = wImgOut;


    // ----- 閉じるイベント追加 ---------------------------------------
    if(cmanImgPopWk["objPop"].addEventListener){
        cmanImgPopWk["objPop"].addEventListener(strClickMode, cmanImgClose, false);
//        cmanImgPopWk["objPop"].addEventListener("keydown", ivnt_keydown, false);
        cmanImgPopWk["objPop"].addEventListener("mouseover", cmanImgMsgOn, false);
        cmanImgPopWk["objPop"].addEventListener("mouseout", cmanImgMsgOff, false);
    }else{
        cmanImgPopWk["objPop"].eventTarget.attachEvent("onclick", cmanImgClose);
//        cmanImgPopWk["objPop"].eventTarget.attachEvent("keydown", ivnt_keydown(event));
        cmanImgPopWk["objPop"].addEventListener("onmouseover", cmanImgMsgOn, false);
        cmanImgPopWk["objPop"].addEventListener("onmouseout", cmanImgMsgOff, false);
    }
    window.document.addEventListener('keydown',ivnt_keydown);


    // ----- 表示枠のstyle初期編集 ------------------------------------
    cmanImgPopWk["objPop"].style.position  = "absolute";
    cmanImgPopWk["objPop"].style.top       = cmanImgPopWk["startY"] + "px";
    cmanImgPopWk["objPop"].style.left      = cmanImgPopWk["startX"] + "px";
    cmanImgPopWk["objPop"].style.height    = cmanImgPopWk["startH"] + "px";
    cmanImgPopWk["objPop"].style.width     = cmanImgPopWk["startW"] + "px";
    cmanImgPopWk["objPop"].style.cursor    = "pointer";
    cmanImgPopWk["objPop"].style.border    = 'none';
    cmanImgPopWk["objPop"].style.boxShadow = 'none';
    cmanImgPopWk["objPop"].style.display   = "";

    // ----- 表示開始位置の設定 ---------------------------------------
    cmanImgPopWk["nowX"] = cmanImgPopWk["startY"];
    cmanImgPopWk["nowY"] = cmanImgPopWk["startX"];
    cmanImgPopWk["nowW"] = cmanImgPopWk["startH"];
    cmanImgPopWk["nowH"] = cmanImgPopWk["startW"];


    // ----- 画像POP表示開始 ------------------------------------------
    cmanImgPopWk["msgOff"]  = 1;
    cmanImgPopWk["moveIdx"] = 0;
    cmanImgPopWk["moveTimer"] = setTimeout("cmanImgMove(1)",cmanImgPopCns["moveTime"]);

    //--------
    //--------
    //--------

    if ( !isSmartPhone ) { $( "#cmanPopDiv" ).draggable(); }

    return true;
}



// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     ポップアップ画像を閉じる
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgClose(){

    cmanImgPopWk["msgOff"]  = 1;
    cmanImgMsgOff();

//--------
//--------
//--------
    var off = $('#cmanPopDiv').offset();

    // ----- 表示開始位置の設定 ---------------------------------------
 //   cmanImgPopWk["nowX"] = cmanImgPopWk["endY"];
 //   cmanImgPopWk["nowY"] = cmanImgPopWk["endX"];
 //   cmanImgPopWk["nowW"] = cmanImgPopWk["endH"];
 //   cmanImgPopWk["nowH"] = cmanImgPopWk["endW"];
    cmanImgPopWk["endX"] = off.left;
    cmanImgPopWk["endY"] = off.top;


    // ----- 画像POP表示開始 ------------------------------------------
    cmanImgPopWk["moveIdx"] = cmanImgPopCns["movePar" + cmanImgPopCns["moveWidth"]].split(",").length;  // 最終IDXを設定
    cmanImgPopWk["moveTimer"] = setTimeout("cmanImgMove(-1)",cmanImgPopCns["moveTime"]);

    return true;
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     ポップアップの移動
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgMove(argIdxAdd){


    if (cmanImgPopWk["moveTimer"]) {
        clearTimeout(cmanImgPopWk["moveTimer"]);
    }

    // ----- 移動のパーセント取得 ------------------------------------
    var wParTbl = cmanImgPopCns["movePar" + cmanImgPopCns["moveWidth"]].split(",");
    var wPar = wParTbl[cmanImgPopWk["moveIdx"]];

    // ----- 次に開く画像サイズを計算 --------------------------------
    cmanImgPopWk["nowBorder"] = Math.floor(cmanImgPopCns["borderSize"] * wPar);
    cmanImgPopWk["nowShadow"] = Math.floor(cmanImgPopCns["shadowSize"] * wPar);

    // 次の移動位置（縦）計算
    cmanImgPopWk["objPop"].style.top       = Math.floor((cmanImgPopWk["endY"] - cmanImgPopWk["startY"]) * wPar + cmanImgPopWk["startY"]) + "px";
    cmanImgPopWk["objPop"].style.left      = Math.floor((cmanImgPopWk["endX"] - cmanImgPopWk["startX"]) * wPar + cmanImgPopWk["startX"]) + "px";
    cmanImgPopWk["objPop"].style.height    = Math.floor((cmanImgPopWk["endH"] - cmanImgPopWk["startH"]) * wPar + cmanImgPopWk["startH"]) + "px";
    cmanImgPopWk["objPop"].style.width     = Math.floor((cmanImgPopWk["endW"] - cmanImgPopWk["startW"]) * wPar + cmanImgPopWk["startW"]) + "px";
    cmanImgPopWk["objPop"].style.border    = ( (cmanImgPopWk["nowBorder"] == 0) ? 'none' : cmanImgPopWk["nowBorder"] + "px solid " + cmanImgPopCns["borderColor"] );
    cmanImgPopWk["objPop"].style.boxShadow = ( (cmanImgPopWk["nowShadow"] == 0) ? 'none' : cmanImgPopWk["nowShadow"] + "px " + cmanImgPopWk["nowShadow"] + "px " + cmanImgPopCns["shadowColor"] );

    cmanImgPopWk["moveIdx"] += argIdxAdd;


    // 終了 or 次ループ
    if((cmanImgPopWk["moveIdx"] > wParTbl.length)||(cmanImgPopWk["moveIdx"] < 0)){
        // タイマクリア
        clearTimeout(cmanImgPopWk["moveTimer"]);
        cmanImgPopWk["msgOff"] = 0;

        if(argIdxAdd < 0){
            cmanImgPopWk["objPop"].parentNode.removeChild(cmanImgPopWk["objPop"]);
            for(var wKey in cmanImgPopWk){
                delete cmanImgPopWk[wKey];
            }
        }
    }else{
        // 次のループ
        cmanImgPopWk["moveTimer"] = setTimeout("cmanImgMove(" + argIdxAdd + ")",cmanImgPopCns["moveTime"]);
    }

    return true;
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     メッセージ表示
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgMsgOn(){
    if(cmanImgPopWk["msgOff"] == 0){
        document.getElementById(cmanImgPopCns["msg"]).style.display="";
    }
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//     メッセージ非表示
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cmanImgMsgOff(){
    document.getElementById(cmanImgPopCns["msg"]).style.display="";
}

function ivnt_keydown(event) {
    // ESCAPE key pressed
   if (event.keyCode == 27) {
        cmanImgClose();
    }
}

