// ボタンスクロール有効フラグ
ScrollPet = true;
ScrollItem = true;
clsSlideViewPets = null;
clsSlideViewItems = null;

function init( strPath ) {

    // 店舗表示エリアを整形
    shapeTitle();

    // ペット一覧生成
    viewPets( strPath );
    // アイテム一覧生成
    viewItems( strPath );
    // 営業カレンダー生成
    viewCalendar( strPath );
    // 表示生体
    selectView();

    // 各見出し幅制御
    topics();
}

// Ajaxオブジェクト取得メソッド
function getActiveXObject() {

    if( window.XMLHttpRequest ) {

        var ajax = new XMLHttpRequest();

    } else if( window.ActiveXObject ) {

        try {

            var ajax = new ActiveXObject( "Msxml2.XMLHTTP" );
        } catch(e) {

            var ajax = new ActiveXObject( "Microsoft.XMLHTTP" );
        }
    }
    return ajax;
}

function viewPets( strRelativePath, strCode ) {

    if(strCode == undefined) {
        strCode = '';
    }
    var objAjax = getActiveXObject();
    if( objAjax ) {

        objAjax.open( "POST", "./get_pets.html?type=" + strCode, true );
        objAjax.send("");
    }
    objAjax.onreadystatechange = function() {

        if( objAjax.readyState == 4 && objAjax.status == 200 ) {
            var objData = eval('('+objAjax.responseText+')');
            createPetView(objData, strRelativePath, strCode);
        }
    }
}

function createPetView(objData, strRelativePath, strCode) {

    var nMarginLeft = 5;
    var nMarginRight = 5;
    var nWidth = 160;

    var scrollWidth = nMarginLeft+nMarginRight+nWidth;

    var elPetList = document.getElementById( 'pet-list' );
    removeNodes(elPetList);
    if(clsSlideViewPets != null) {
        clsSlideViewPets.init();
    }

    if(!objData.pet) {
        var elPetArea = document.getElementById( 'pet_area' );
        if( elPetArea && !strCode) {
            elPetArea.style.display = 'none';
        }
        return;
    }
    var arrData = objData.pet;

    if(arrData.length == undefined) {
        arrData = [objData.pet];
    }

    // pet_id
    for(var i=0; i<arrData.length; ++i) {
        var elDiv = document.createElement('div');
        elDiv.id = 'pets'+i;
        if(i == (arrData.length - 1)) {
            elDiv.className = 'inner-view clear_fix';
        } else {
            elDiv.className = 'inner-view';
        }
        elDiv.style.width = nWidth+'px';
        elDiv.style.marginLeft = nMarginLeft+'px';
        elDiv.style.marginRight = nMarginRight+'px';

        var elImg = document.createElement( 'img' );
        elImg.src = strRelativePath + arrData[i].image;
        elImg.setAttribute( 'width', '160');
        elImg.setAttribute( 'height', '120');

        var elA = document.createElement( 'a' );
        elA.href='./pet/detail.html?pet='+arrData[i].pet_id;
        elA.appendChild( elImg );

        elDiv.appendChild( elA );

        var name = document.createElement('p');
        elName = document.createTextNode( arrData[i].name );
        var elSex = document.createElement('p');
        if( arrData[i].sex == 1 ) {
            var sex = '男の子';
            elSex.className = 'male';
        } else if( arrData[i].sex == 2 ) {
            var sex = '女の子';
            elSex.className = 'female';
//        } else if( arrData[i].sex == 3 ) {
        } else {
            var sex = '';
        }

        var elDl = document.createElement( 'dl' );
        elDl.className = 'select clear_fix';
        var elA = document.createElement( 'a' );
        elA.href='./pet/detail.html?pet='+arrData[i].pet_id;
        elA.appendChild( elName );
        var elDt = document.createElement( 'dt' );
        elDt.appendChild( elA );
        var elDd = document.createElement( 'dd' );

        var sex = document.createTextNode( sex );
        elSex.appendChild( sex );
        var elA = document.createElement( 'a' );
        elA.href='./pet/detail.html?pet='+arrData[i].pet_id;
        elA.appendChild( elSex );

        var elP = document.createElement( 'p' );
        elP.className = 'sex';
        elP.appendChild( elA );

        var elP2 = document.createElement( 'p' );
        elP2.className = 'cursor';
        var elA = document.createElement( 'a' );
        elA.href='./pet/detail.html?pet='+arrData[i].pet_id;
        var elImg2 = document.createElement( 'img' );
        elImg2.src = strRelativePath+'common/images/cursor_r.gif';
        elImg2.style.width = '17px';
        elImg2.style.height = '17px';
        elImg2.alt = '次へ';
        elA.appendChild( elImg2  );

        elP2.appendChild( elA );

        elDd.appendChild( elP );
        elDd.appendChild( elP2 );

        elDl.appendChild( elDt );
        elDl.appendChild( elDd );
        elDiv.appendChild( elDl );

        elPetList.appendChild( elDiv );
    }
    var elFirst = document.getElementById( 'pets0' );

    clsSlideViewPets = new slideView({
        view_type: 'pets',
        move: scrollWidth,
        now: 0,
        max: (i-1),
        left_id: 'cursor_left_pet',
        right_id: 'cursor_right_pet'
    });
}
function viewItems( strRelativePath, strCode ) {

    if(strCode == undefined) {
        strCode = '';
    }
    var objAjax = getActiveXObject();
    if( objAjax ) {

        objAjax.open( "POST", "./get_items.html?type=" + strCode, true );
        objAjax.send("");
    }
    objAjax.onreadystatechange = function() {

        if( objAjax.readyState == 4 && objAjax.status == 200 ) {

            var objData = eval('('+objAjax.responseText+')');
            createItemView(objData, strRelativePath);
        }
    }
}

function createItemView(objData, strRelativePath) {

    if(!objData.item) {
        var elItemArea = document.getElementById( 'item_area' );
        if( elItemArea ) {
            elItemArea.style.display = 'none';
        }
        return;
    }
    var arrData = objData.item;
    if(arrData.length == undefined) {
        arrData = [objData.item];
    }

    var nMarginLeft = 5;
    var nMarginRight = 5;
    var nWidth = 160;
    var scrollWidth = nMarginLeft+nMarginRight+nWidth;

    var nMarginLeft = 5;
    var nMarginRight = 5;
    var nWidth = 160;

    var scrollWidth = nMarginLeft+nMarginRight+nWidth;

    var elItemList = document.getElementById( 'item-list' );
    if(!elItemList) {
        return;
    }

    removeNodes(elItemList);


    for(var i=0; i<arrData.length; ++i) {
        var elDiv = document.createElement('div');
        elDiv.id = 'items'+i;
        if(i == (arrData.length - 1)) {
            elDiv.className = 'inner-view clear_fix';
        } else {
            elDiv.className = 'inner-view';
        }
        elDiv.style.width = nWidth+'px';
        elDiv.style.marginLeft = nMarginLeft+'px';
        elDiv.style.marginRight = nMarginRight+'px';

        var elImg = document.createElement( 'img' );
        elImg.src = strRelativePath + arrData[i].image;
        elImg.setAttribute( 'width', '160');
        elImg.setAttribute( 'height', '120');

        var elA = document.createElement( 'a' );
        elA.href='./item/detail.html?id='+arrData[i].item_id;
        elA.appendChild( elImg );

        var elName = document.createTextNode( arrData[i].name );

        elDiv.appendChild( elA );

        var elDl = document.createElement( 'dl' );
        elDl.className = 'select clear_fix';
        var elA = document.createElement( 'a' );
        elA.href='./item/detail.html?id='+arrData[i].item_id;
        elA.appendChild( elName );
        var elDt = document.createElement( 'dt' );
        elDt.appendChild( elA );
        var elDd = document.createElement( 'dd' );

        var elP = document.createElement( 'p' );
        var elText = document.createTextNode( '' );
        elP.className = 'sex';
        elP.appendChild( elText );

        var elP2 = document.createElement( 'p' );
        elP2.className = 'cursor';
        var elA = document.createElement( 'a' );
        elA.href='./item/detail.html?id='+arrData[i].item_id;
        var elImg2 = document.createElement( 'img' );
        elImg2.src = strRelativePath+'common/images/cursor_r.gif';
        elImg2.style.width = '17px';
        elImg2.style.height = '17px';
        elImg2.alt = '次へ';

        elA.appendChild( elImg2  );
        elP2.appendChild( elA );

        elDd.appendChild( elP );
        elDd.appendChild( elP2 );

        elDl.appendChild( elDt );
        elDl.appendChild( elDd );
        elDiv.appendChild( elDl );

        elItemList.appendChild( elDiv );
    }
    var elFirst = document.getElementById( 'items0' );

    clsSlideViewItems = new slideView({
        view_type: 'items',
        move: scrollWidth,
        now: 0,
        max: (i-1),
        left_id: 'cursor_left_item',
        right_id: 'cursor_right_item'
    });
}

function viewCalendar( strRelativePath, nYear, nMonth ) {

    var d = new Date();

    if(
        nYear == undefined ||
        nMonth == undefined
    ) {
        nYear = d.getFullYear();
        nMonth = d.getMonth()+1;
    }

    var objAjax = getActiveXObject();
    if( objAjax ) {

        objAjax.open( "POST", "./get_calendar.html?year="+nYear+"&month="+nMonth, true );
        objAjax.send("");
    }
    objAjax.onreadystatechange = function() {

        if( objAjax.readyState == 4 && objAjax.status == 200 ) {

            var objData = eval('('+objAjax.responseText+')');
            createCalendarView(objData, nYear, nMonth, strRelativePath );
        }
    }
}

function createCalendarView(objData, nYear, nMonth, strRelativePath ) {

    var elDiv = document.getElementById('calendar');
    removeNodes(elDiv);

    // ヘッダ
    var elTable = document.createElement( 'table' );
    elTable.className = 'table_calendar controller';
    var elTbody = document.createElement( 'tbody' );
    var elTr = document.createElement( 'tr' );
    var elTdLeft = document.createElement( 'td' );
    var elTdCenter = document.createElement( 'td' );
    var elTdRight = document.createElement( 'td' );
    var elLeftImg = document.createElement('img');
    var elRightImg = document.createElement('img');

    var d = new Date();
    elTdCenter.className = 'date';

    var strTitle = nYear + '年 '
    strTitle = strTitle + nMonth + '月';
    var elTextNode = document.createTextNode(strTitle);
    elTdCenter.appendChild( elTextNode );

    var nPrevMonth = '';
    var nPrevYear = '';
    var nNextMonth = '';
    var nNextYear = '';
    if(nMonth == 1) {
        nPrevMonth = 12;
        nPrevYear = nYear - 1;
        nNextMonth = nMonth + 1;
        nNextYear = nYear;
    } else {
        if( nMonth == 12 ) {
            nNextMonth = 1;
            nNextYear = nYear + 1;
        } else {
            nNextMonth = nMonth + 1;
            nNextYear = nYear;
        }
        nPrevMonth = nMonth - 1;
        nPrevYear = nYear;
    }

    if( nYear == d.getFullYear() && nMonth == (d.getMonth()+1) ) {
        // 前月はグレーアウト画像
        elLeftImg.src = strRelativePath + './common/images/prev_month_gray.gif';
    } else {
        elLeftImg.src = strRelativePath + './common/images/prev_month.gif';
        elLeftImg.className = 'cursor_pointer';
        elLeftImg.onclick = function() {
            viewCalendar(
                strRelativePath,
                nPrevYear,
                nPrevMonth
            );
        }
    }
    var nNextCMonth = ( (nMonth+1) > 12 )? 1 : nMonth+1;
    var nNextCYear = ( (nMonth+1) > 12 )? nYear+1 : nYear;

    var nNowYear = d.getFullYear();
    var nNowMonth = d.getMonth() + 1;

    var nDisableM = 4;
    var n4MMonth = ( (nNowMonth+nDisableM) > 12 )? (nNowMonth+nDisableM)-12 : nNowMonth+nDisableM;
    var n4MYear = ( (nNowMonth+nDisableM) > 12 )? nNowYear+1 : nNowYear;

    if( n4MMonth <= nNextCMonth && nNextCYear == n4MYear ) {
        // 翌月はグレーアウト画像
        elRightImg.src = strRelativePath + './common/images/next_month_gray.gif';
    } else {
        elRightImg.src = strRelativePath + './common/images/next_month.gif';
        elRightImg.className = 'cursor_pointer';
        elRightImg.onclick = function() {
            viewCalendar(
                strRelativePath,
                nNextYear,
                nNextMonth
            );
        }
    }

    elTdLeft.appendChild(elLeftImg);
    elTdRight.appendChild(elRightImg);

    elTr.appendChild(elTdLeft);
    elTr.appendChild(elTdCenter);
    elTr.appendChild(elTdRight);
    elTbody.appendChild(elTr);
    elTable.appendChild(elTbody);

    elDiv.appendChild(elTable);

    var arrWeekday = ['日','月','火','水','木','金','土'];

    var elTable = document.createElement( 'table' );
    elTable.className = 'table_calendar2';
    var elTbody = document.createElement( 'tbody' );
    var elTr = document.createElement( 'tr' );

    for( var i=0; i<arrWeekday.length; ++i ) {
        var elTd = document.createElement( 'td' );
        var elText = document.createTextNode(arrWeekday[i]);
        if(i==0) {
            elTd.className = 'first_day';

            var elSpan = document.createElement( 'span' );
            elSpan.className = 'holiday';
            elSpan.appendChild(elText);
            elTd.appendChild(elSpan);
        } else if(i==6) {
            elTd.className = 'week_end';

            var elSpan = document.createElement( 'span' );
            elSpan.className = 'saturday';
            elSpan.appendChild(elText);
            elTd.appendChild(elSpan);
        } else {
            elTd.className = 'normal';

            elTd.appendChild(elText);
        }
        elTr.appendChild(elTd);
    }
    elTbody.appendChild(elTr);
    elTable.appendChild(elTbody);

    for( var j=0; j<objData.length; ++j ) {
        var elTd = document.createElement( 'td' );
        if(objData[j].status == 'sun') {
            var elTbody = document.createElement( 'tbody' );
            var elTr = document.createElement( 'tr' );

            elTd.className = 'first_day';
        } else {
            if(objData[j].status == 'sat') {
                elTd.className = 'week_end';
            } else {
                elTd.className = 'normal';
            }
        }
        if(objData[j].day) {
            var elText = document.createTextNode(objData[j].day);
        } else {
            var elText = document.createTextNode(' ');
        }
        if(objData[j].shop_holiday) {
            var elSpan = document.createElement( 'span' );
            elSpan.className = 'holiday';
            elSpan.appendChild(elText);
            elTd.appendChild(elSpan);
        } else {
            elTd.appendChild(elText);
        }
//        var elBr = document.createElement( 'br' );
/*
        elTd.appendChild(elBr);
        elTd.appendChild(
            document.createTextNode(objData[j].hotel)
        );
*/
        elTr.appendChild(elTd);
        if(objData[j].status == 'sat') {
            elTbody.appendChild(elTr);
            elTable.appendChild(elTbody);
        }
    }
    elDiv.appendChild(elTable);
}

function removeNodes( el ) {

    if( el ) {
        while( el.hasChildNodes() ) {
            el.removeChild( el.firstChild );
        }
    }
}

function selectView( objMine ) {

    var arrViewType = [
        'new',
        'dog',
        'cat',
        'birds',
        'rabbit',
        'fish',
        'reptiles',
        'amphibians',
        'insect',
        'others'
    ];

    // クラス名初期化
    var arrEl = [];
    var num = 0;

    for(var i=0; i<arrViewType.length; ++i) {

        arrEl[i] = document.getElementById(arrViewType[i]);
        if( arrEl[i] ) {
            arrEl[i].className = null;
            arrEl[i].className = arrViewType[i];
            if(objMine != undefined && objMine.className == arrViewType[i]) {
                num = i;
            }
        }
    }
    arrEl[num].className = arrViewType[num]+'_c';

}

function topics() {

    var arrDiv = [];

    arrDiv[0] = document.getElementById( 't_pet' );
    arrDiv[1] = document.getElementById( 't_item' );
    arrDiv[2] = document.getElementById( 't_chirashi' );
    arrDiv[3] = document.getElementById( 't_data' );
    arrDiv[4] = document.getElementById( 't_hotel' );

    var nMinWidth = 364;
    var nTopicWidth = nMinWidth;

    for( var key in arrDiv ) {
        if( arrDiv[key] ) {
            if( nTopicWidth < arrDiv[key].offsetWidth ) {
                nTopicWidth = arrDiv[key].offsetWidth;
            }
        }
    }
    for( var key in arrDiv ) {
        if( arrDiv[key] ) {
            arrDiv[key].style.width = nTopicWidth+'px';
        }
    }
}

function shapeTitle() {

    // 標準高さ
    var nMinHeight = 55;
    // 標準フォントサイズ
    var nDefaultSize = 25;
    // 店舗表示エリア
    var elAllArea = document.getElementById('title_all');
    // 店舗名Span
    var elSpan = document.getElementById('title_area');
    // 取扱生体画像エリア
    var elPet = document.getElementById('title_pet_area');
    if( !elPet ) {
        return;
    }
    elPet = $('#title_pet_area').clone();
    // フォントサイズを初期化
    elSpan.style.fontSize = nDefaultSize+'px';
    // 店舗表示エリアの高さを取得
    var nHeight = elAllArea.offsetHeight;
    // 高さが標準を越えた場合は、フォントサイズを下げる
    while( nHeight > nMinHeight ) {
        $('#title_pet_area').remove();
        shapeFont( elSpan );
        $('#title_all').append(elPet);
        nHeight = elAllArea.offsetHeight;
    }
}

function shapeFont( el ) {

    var nFontSize = el.style.fontSize.substr( 0, (el.style.fontSize.length-2) );
    --nFontSize;
    el.style.fontSize = nFontSize+'px';
}

function computeDate(year, month, day, addDays) {
    var dt = new Date(year, month - 1, day);
    var baseSec = dt.getTime();
    var addSec = addDays * 86400000;
    var targetSec = baseSec + addSec;
    dt.setTime(targetSec);
    return dt;
}

