
var cal_f_public_page   = 0;
var cal_f_group_page    = 0;
var cal_f_private_page  = 0;
var calmode = "month";
var chkedFldNum = new Array();
var target = "";

function allToggleMenu(target){
    targetClass = "."+target;
    targetImgClass = "."+target+"-img";
    var img = Ext.get(target+"-img").dom
    if (img.src.match('btn_opn02')){
        img.src = "/img/btn_cls02.gif";
        $$(targetClass).each(function(obj){
            obj.hide();
        });
        $$(targetImgClass).each(function(obj){
            obj.src = "/img/btn_cls02.gif";
        });
        
    }else{
        img.src = "/img/btn_opn02.gif";
        $$(targetClass).each(function(obj){
            obj.show();
        });
        $$(targetImgClass).each(function(obj){
            obj.src = "/img/btn_opn02.gif";
        });
    }
}

function calrefresh(){
    if(calmode == "list"){
        calendarDraw( calframe + "?viewtype=list&targetYMD="+tymd +target);
    }else if (calmode == "day") {
        calendarDraw( calframe + "?viewtype=day&targetYMD="+tymd +target);
    }else if (calmode == "week") {
        calendarDraw( calframe + "?viewtype=week&targetYMD="+tymd +target);
    }else{
        calendarDraw( calframe + "?viewtype=month&targetYMD="+tymd +target);
    }
    winStatus = "";
}

function chgListView(targetYMD,cate,pageid){
    if(typeof(cate) == "undefined"){
        cate = "";
    }
    if(typeof(pageid) == "undefined"){
        pageid = 0;
    }
    calmode = "list";
    tymd = targetYMD
    calendarDraw( calframe + "?viewtype=list&targetYMD="+targetYMD+"&cate="+cate+"&pageid="+pageid +target );
    winStatus = "";
}

function chgTopView(targetYMD,cate,pageid){
    if(typeof(cate) == "undefined"){
        cate = "";
    }
    if(typeof(pageid) == "undefined"){
        pageid = 0;
    }
    calmode = "list";
    tymd = targetYMD
    calendarDraw( calframe + "?viewtype=top&targetYMD="+targetYMD+"&cate="+cate+"&pageid="+pageid +target );
    winStatus = "";
}
function chgDayView(targetYMD){
    calmode = "day";
    tymd = targetYMD
    calendarDraw( calframe + "?viewtype=day&targetYMD="+targetYMD +target );
    winStatus = "";
}
function chgWeekView(targetYMD){
    calmode = "week";
    tymd = targetYMD
    calendarDraw( calframe + "?viewtype=month&targetYMD="+targetYMD +target );
    winStatus = "";
}
function chgMonthView(targetYMD){
    calmode = "month";
    tymd = targetYMD
    calendarDraw( calframe + "?viewtype=month&targetYMD="+targetYMD +target );
    winStatus = "";
}

function winreload(val){
    calendarDraw( calframe + "?viewtype=list&targetYMD="+tymd+"&cate="+val +target );
    winStatus = "";
}

var sideMenuStatus;
function toggleSideMenu(){
    var maincntnt = Ext.get("main").dom;
    var img =$("sidemenubtn-img");
    if(sideMenuStatus == "hide"){
        sideMenuStatus = "show";
        img.src = "/img/btn_navi_opn.gif";
        $("leftmenu").show();
    }else{
        img.src = "/img/btn_navi_cls.gif";
        $("leftmenu").hide();
        sideMenuStatus = "hide";
    }
}

var calsubmenuwin = false;

function inputCalMenu(calendar_type,calendar_id,owner_flg,permission)
{
    id = "cal_f_m_"+calendar_type+"_"+calendar_id;
    
    if(calsubmenuwin != false){
        obj = Ext.get(calsubmenuwin).dom;
        obj.innerHTML = "";
        if(calsubmenuwin == id){
            calsubmenuwin = false;
	    return true;
        }
    }
    
    calsubmenuwin = id;
    obj = Ext.get(id).dom;
    obj.style.position = "absolute";
    
    
    obj.style.zIndex = "15";
    obj.style.left = "+150px";
    obj.innerHTML = "<!-- mycal-pdnmenu -->";
    
    pdnmenu = document.createElement('div');
    pdnmenu.className = "mycal-pdnmenu";
    pdnmenu.style.width = "200px";
    
    closebox = document.createElement("img");
    closebox.src = "/img/disp01_btn_001.gif";
    closebox.style.margin = "4px";
    
    closeboxblock = document.createElement('p');
    closeboxblock.style.textAlign = "right";
    closeboxblock.appendChild(closebox); 

    imgblock = document.createElement('p');
    imgblock.style.height = "27px";
    imgblock.style.backgroundImage = "url('/img/pdnmenu_top.gif')";
    imgblock.style.backgroundRepeat = 'no-repeat';
    imgblock.appendChild(closeboxblock); 
    pdnmenu.appendChild(imgblock); 
    bodyAreaBg = document.createElement('div');
    bodyAreaBg.className = "bodyAreaBg";
    
    
    Event.observe(closebox , 
		  'click',
		  function(event) { closeCalMenu(event,calendar_type,calendar_id) }.bind(this), false);
    
    lnk = document.createElement('ul');
    lnk.className = "lnk";

    if(owner_flg==1){
        li1 = document.createElement('li');
//        li1.innerHTML = "<a href='/calendar/edit/?cal_type="+calendar_type+"&cal_id="+calendar_id+"' >このカレンダーの基本情報を表示</a>";
        link = '/calendar/edit/?cal_type='+calendar_type+'&cal_id='+calendar_id;
        title = "このカレンダーを編集";
        target = "_self";
        var linkObj = new callinkmenu(link, title,target,calendar_type,calendar_id).a;
        li1.appendChild(linkObj);
        lnk.appendChild(li1);
    }
    
    li2 = document.createElement('li');
    link = '/cal/'+calendar_type+'/'+calendar_id+'/';
    title = "このカレンダーを画像付きで表示";
    target = "cal";
    var linkObj = new callinkmenu(link, title,target,calendar_type,calendar_id).a;
    li2.appendChild(linkObj);
    lnk.appendChild(li2);
    
    if ( disableFolder != true ){
        if( (permission&2) == 2){
            li3 = document.createElement('li');
            title = "このカレンダーにイベントを登録";
            target = "";
            var linkObj = new evRegistMenu(title,target,calendar_type,calendar_id).a;
            li3.appendChild(linkObj);
            lnk.appendChild(li3);
        }
    }
    
    bodyAreaBg.appendChild(lnk);
    
    pdnmenu.appendChild(bodyAreaBg);
    img2 = document.createElement('img');
    img2.src = "/img/pdnmenu_btm.gif";
    img2.width = "200";
    img2.height = "11";
    
    pdnmenu.appendChild(img2);
    
    obj.appendChild(pdnmenu); 
    
}

callinkmenu = new Class.create();
callinkmenu.prototype = {
    initialize:function(link, title,target,calendar_type,calendar_id){
        this.a = document.createElement('a');
        this.a.className = "actionlink";
        this.a.href = link;
        this.a.target = target;
        this.a.innerHTML = title;
        Event.observe( 
            this.a , 
            'click',
            function(event) { 
                closeCalMenu(event,calendar_type,calendar_id);
            }.bind(this), false);
    }
};


evRegistMenu = new Class.create();
evRegistMenu.prototype = {
    initialize:function(title,target,calendar_type,calendar_id){
        this.a = document.createElement('a');
        this.a.className = "actionlink";
        this.a.href = "javascript:void(0);";
        this.a.target = target;
        this.a.innerHTML = title;
        Event.observe( 
            this.a , 
            'click',
            function(event) { 
                EventContoroller.ShowNewRegInputForm(false,calendar_type,calendar_id);                
                closeCalMenu(event,calendar_type,calendar_id);
            }.bind(this), false);
    }
};

function closeCalMenu(e,calendar_type,calendar_id){
    id = "cal_f_m_"+calendar_type+"_"+calendar_id;
    obj = Ext.get(id).dom;
    obj.innerHTML = "";
    calsubmenuwin = false;
}
    
    
    
function chgCalTypeForInputFormer(calendar_type){

    obj = Ext.get("calendar_name").dom;
//    obj.removeChild(obj.firstChild);
    obj.innerHTML = "";
    
    for (var evid in objCalListJson[calendar_type]) {
        evt = objCalListJson[calendar_type][evid];
        
        caltype = document.createElement('option');
        caltype.appendChild(document.createTextNode(evt["calendar_name"])); 
        caltype.value = evt["calendar_id"];
        obj.appendChild(caltype);
    }
}

function regEv(data){
    if(data == 1){
        alert("登録しました");
        inputFormerHide();
    }else{
        alert("NG");
    }
}

function dummy(){
    var objForm = $('inputForm');



    var tabContent = document.createElement('div');
    tabContent.id = "tabContent";
    tabContent.style.display  = 'none';
    tabContent.style.width    = '300px';

    var tabTitle = document.createElement('div');
    tabTitle.innerHTML = "予定の登録";

    tabContent.appendChild(tabTitle);

    objForm.appendChild(tabContent);



    document.regEvent.start_date.value = ymd;
};


function evToggle ( inputid,calendar_type,id ) {
    if(calendar_type != 0 && calendar_type != 1 && calendar_type != 2 ){
        return false;
    }

    var viewFlg = 0;
    if($(inputid).checked){
        chkedFldNumSum = chkedFldNum[0]*1 + chkedFldNum[1]*1 + chkedFldNum[2]*1;
        if(chkedFldNumSum >= 10){
            Ext.MessageBox.alert('エラー', '重ねて表示できるカレンダーは、最大10件までです。');
            $(inputid).checked = false;
            return;
        }
        viewFlg = 1;
        objCalListJson[calendar_type][id]["view_flg"] = "1";
        chkedFldNum[calendar_type] += 1;
        $(inputid).defaultChecked = true;
    } else {
        objCalListJson[calendar_type][id]["view_flg"] = "0";
        viewFlg = 0;
        chkedFldNum[calendar_type] -= 1;
        $(inputid).defaultChecked = false;
    }
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", "https://my.calendar.rakuten.co.jp/ajax/updateEventFlg/?st_date="+st_date+"&ed_date="+ed_date+"&viewFlg="+viewFlg+"&calendar_id="+id+"&calendar_type="+calendar_type);
    document.getElementsByTagName("head").item(0).appendChild(scriptTag);
}

function evToggleRefresh( inputid,calendar_type,id ) {
    if(calendar_type != 0 && calendar_type != 1 && calendar_type != 2 ){
        return false;
    }
    var viewFlg = 0;
    if($(inputid).checked){
        chkedFldNumSum = chkedFldNum[0]*1 + chkedFldNum[1]*1 + chkedFldNum[2]*1;
        if(chkedFldNumSum >= 10){
            Ext.MessageBox.alert('エラー', '重ねて表示できるカレンダーは、最大10件までです。');
            $(inputid).checked = false;
            return;
        }
        viewFlg = 1;
        objCalListJson[calendar_type][id]["view_flg"] = "1";
        chkedFldNum[calendar_type] += 1;
    } else {
        objCalListJson[calendar_type][id]["view_flg"] = "0";
        viewFlg = 0;
        chkedFldNum[calendar_type] -= 1;
    }
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", "https://my.calendar.rakuten.co.jp/ajax/updateCalendarFlg/?viewFlg="+viewFlg+"&calendar_id="+id+"&calendar_type="+calendar_type);
    document.getElementsByTagName("head").item(0).appendChild(scriptTag);
}

function toggleMenu(id) {
    var dom = Ext.get(id).dom;
    var img = Ext.get(id+"-img").dom;
    if (dom.style.display == "none"){
        img.src = "/img/btn_opn02.gif";
        $(id).show();
    }else{
        img.src = "/img/btn_cls02.gif";
        $(id).hide();
    }
}
function toggleMenuT(id) {
    var dom = Ext.get(id).dom
    var img = Ext.get(id+"-img").dom
    if (dom.style.display == "none"){
        img.src = "/img/btn_opn02.gif";
        $(id).show();
    }else{
        img.src = "/img/btn_cls02.gif";
        $(id).hide();
    }
}
function toggleMenuH(id) {
    var dom = Ext.get(id).dom
    var img = Ext.get(id+"-img").dom
    if (dom.style.display == "none"){
        img.src = "/img/btn_opn02.gif";
        $(id).show();
    }else{
        img.src = "/img/btn_cls02.gif";
        $(id).hide();
    }
}

function toggleMenu2(id) {
    var dom = Ext.get(id).dom
    var img = Ext.get(id+"-img").dom
    if (dom.style.display == "none"){
        img.src = "/img/btn_opn.gif";
        $(id).show();
    }else{
        img.src = "/img/btn_cls02.gif";
        $(id).hide();
    }
}

function result(data){
    alert(data);
}

function insertEventComp(){
    Ext.msgDialog.msg('イベント', '登録しました');
    calrefresh();
}

function deleteEventComp(){
    Ext.msgDialog.msg('イベント', '削除しました');    
    calrefresh();
}

function updateEventComp(){
    Ext.msgDialog.msg('イベント', '更新しました');
    calrefresh();
}

winStatus = false;

function _drawCalFolder(calendar_type,page){
    var rm = 6;

    var i = 1;
    var id;
    var obj;
    chkedFldNum[calendar_type] = 0;
    
    if(calendar_type == 2){
        if(Ext.get("calendar-public-content") == null){
            return false;
        }
        obj = Ext.get("calendar-public-content").dom;
        page = cal_f_public_page + page;
        cal_f_public_page = page;
    }else if(calendar_type == 1) {
        if(Ext.get("calendar-group-content") == null){
            return false;
        }
        obj = Ext.get("calendar-group-content").dom;
        page = cal_f_group_page + page;
        cal_f_group_page = page;
    }else{
        if(Ext.get("calendar-private-content") == null){
            return false;
        }
        obj = Ext.get("calendar-private-content").dom;
        page = cal_f_private_page + page;
        cal_f_private_page = page;
    }
    obj.innerHTML = "";
    
    objCalList = objCalListJson[calendar_type];
    
    for (var calendar_id in objCalList) {
        evt = objCalList[calendar_id];
        if(typeof(evt) == "object"){
            evt["calendar_id"] = calendar_id;
            evt["calendar_type"] = calendar_type;
            calcolor = objCColorJson[evt["calendar_color"]]["code2"];
            
            line = document.createElement('div');
            line.className = "calmenulist";
            id = "cal_f_"+calendar_type+"_"+calendar_id;
            line.id = id;
            
            imptObj = document.createElement('dt');
            imptObj2 = document.createElement('img');
            imptObj2.src = "/img/icn_list.gif";
            imptObj.appendChild(imptObj2);
            
            calviewbox = "calviewbox_" + calendar_type +"_"+ calendar_id;
            
            var imptObj2 = new calBox(
                                calviewbox, 
                                calendar_type, 
                                calendar_id, 
                                folderAjax, 
                                evt["view_flg"], 
                                disableFolder).input;
            
            imptObj.appendChild(imptObj2);
            line.appendChild(imptObj);

            
            if(evt["owner_flg"] == true){
                calIcon = "<img src='/img/icn_006.gif'>";
            }else{
                calIcon = "";
            }
            calmenubtn = "calmenu_"+calendar_type+"_"+calendar_id;
            callinkbtn = "callink_"+calendar_type+"_"+calendar_id;
            
            imptObj = document.createElement('dd');
            
            
            innerhtml  = "<span class='rtop'><span class='r3' style='background:"+calcolor+"'></span><span class='r4' style='background:"+calcolor+"'></span></span>";
            innerhtml += "<span style='width:115px;height:13px;background:"+calcolor+";display:block;overflow:hidden'><nobr>"+evt["calendar_name"]+calIcon+"</nobr></span>";
            innerhtml += "<span class='rbottom'><span class='r4' style='background:"+calcolor+"'></span><span class='r3' style='background:"+calcolor+"'></span></span>";
            
            var imptObj2 = new caltitle(callinkbtn,calendar_id,calendar_type,innerhtml).span;
            
            imptObj.appendChild(imptObj2);
            
            
            var imptObj2 = new calmenuimg(calmenubtn,evt).img;
            imptObj.appendChild(imptObj2);
            
            line.appendChild(imptObj);
            imptObj3 = document.createElement('span');
            imptObj3.id = "cal_f_m_"+calendar_type+"_"+calendar_id;
            line.appendChild(imptObj3);
            obj.appendChild(line);
    //        if(i+page > rm || i < page){
            if( i<=page || i > page+rm){
                $(id).hide();
            }
            i++;
        }
    }
    line = document.createElement('p');
    line.className = "lnkTxt";
    
    if(page > 0){
        imptObj2 = document.createElement('span');
        imptObj = document.createElement('a');
        imptObj.className = "actionlink";
        imptObj.setAttribute('href',"javascript:_drawCalFolder("+calendar_type+",-6);");
        imptObj.appendChild(document.createTextNode("<<前の6件"));
        imptObj2.appendChild(imptObj);
        line.appendChild(imptObj2);
    }
    
    if(page > 0 || i > page+rm+1){
        line.appendChild(document.createTextNode("　" + "全" + (i -1 ) + "件"));
    }
    
    if(i > page+rm+1){
        line.appendChild(document.createTextNode("　"));
        imptObj2 = document.createElement('span');
        imptObj = document.createElement('a');
        imptObj.className = "actionlink";
        imptObj.setAttribute('href',"javascript:_drawCalFolder("+calendar_type+",6);");
        imptObj.appendChild(document.createTextNode("次の6件>>"));
        imptObj2.appendChild(imptObj);
        line.appendChild(imptObj2);
        allnumF = true;
    }
    obj.appendChild(line);
}

calBox = new Class.create();
calBox.prototype = {
    initialize:function(id, calendar_type, calendar_id, folderAjax, view_flg, disableFolder){
        this.input = document.createElement('input');
        this.input.id = id;
        this.input.className = "calmenulistchkbox";
        this.input.type = "checkbox";

        if(view_flg=="1")
        {
            this.input.defaultChecked = true;
            chkedFldNum[calendar_type] += 1;
        }
        if(disableFolder == true){
            this.input.disabled = true;
        }
        
        if(folderAjax == true){
            Event.observe( 
                this.input , 
                'click',
                function() { evToggle(id,calendar_type,calendar_id) }.bind(this), false);
        }else{
            Event.observe( 
                this.input , 
                'click', 
                function() { evToggle(id,calendar_type,calendar_id) }.bind(this), false);
        }
    }
};

caltitle = new Class.create();
caltitle.prototype = {
    initialize:function(id,calendar_id,calendar_type,innerhtml){
        this.span = document.createElement('div');
        this.span.className = "caltitleaction";
        this.span.id = id;
        this.span.style.position = "absolute";
    	this.span.style.display = "block";
        this.span.style.width = "115px";
        this.span.innerHTML = innerhtml;
        Event.observe(
            this.span,
            "click",
            function () { opwncal(calendar_id,calendar_type); }.bind(this), 
            false
        );
    }
}

calmenuimg = new Class.create();
calmenuimg.prototype = {
    initialize:function(id,evt){
        this.img = document.createElement('img');
        this.img.id = id;
        this.img.className = "calmenulistbox handcsr";
        this.img.style.position = "relative";
        this.img.style.top = "1px";
        this.img.src = "/img/btn_pdn.gif";
        Event.observe( 
            this.img , 
            'click', 
            function() {
                inputCalMenu(
                    evt["calendar_type"],
                    evt["calendar_id"],
                    evt["owner_flg"],
                    evt["permission"]) 
            }.bind(this), 
            false);
    }
}


function drawCalFolder(){
    _drawCalFolder(2,0);
    _drawCalFolder(1,0);
    _drawCalFolder(0,0);
}


function drawCalData()
{
    drawCalFolder();
}



function evrefresh(msg){
    url = location.href;
    if(url.match(/\?/)){
        if(url.match(/msgcd=[a-z]{3}[0-9]{2}/)){
            location.href = url.replace(/msgcd=[a-z]{3}[0-9]{2}/,'msgcd='+msg);
        }else{
            location.href = url+"&msgcd="+msg;
        }
    }else{
        location.href = url+"?msgcd="+msg;
    }
}



function locationprev(){
    winStatus = "location";
}



function baloontiphelpwinHide()
{
    Element.hide("cal_help");
}

var g_posy = 0;
function baloontiphelpwin(e,helpid){
    
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", "https://my.calendar.rakuten.co.jp/ajax/getTooltipHelp/?helpid="+helpid);
    document.getElementsByTagName("head").item(0).appendChild(scriptTag);
    //　ツールチップウィンドウを開く。
    var obj = $('cal_help');
    obj.toggle();
    
    var posx=0,posy=0;
    
    if(e==null) e=window.event;
    
    if(e.pageX || e.pageY){
        posx=e.pageX; posy=e.pageY;
    }
    else if(e.clientX || e.clientY) {
        
        if(document.documentElement.scrollTop) {
            
            posx=e.clientX+document.documentElement.scrollLeft;
            posy=e.clientY+document.documentElement.scrollTop;
            
        } else {
            
            posx=e.clientX+document.body.scrollLeft;
            posy=e.clientY+document.body.scrollTop;
        }
    }

    g_posy = posy;
    
    obj.style.top=(posy-210)+"px";
    obj.style.left=(posx-100)+"px";
}

function baloontiphelpmenu(data){
    
    var body  = data["body"];

    var objHelpbody = $('helpbodyDiv');
    //ツールチップウィンドウに代入
    $("helptitle").innerHTML = "ヘルプ";
    $("helpbody").innerHTML  = data["body"];

    var obj = $('cal_help');
    wh = obj.offsetHeight;
    obj.style.top=( g_posy - wh - 20 )+"px";
}
function chgThumbImgSize(target, maxWidth, maxHeight) {
    if (typeof target.readyState != "undefined" && target.readyState != 'complete') {
        return false;
    }
    
    if (typeof target.naturalWidth != "undefined") {
        var wi = target.naturalWidth;
        var he = target.naturalHeight;
    } else {
        var wi = target.width;
        var he = target.height;
    }
    
    if( maxWidth < wi ){
        rate = maxWidth / wi;
        wi = wi * rate;
        he = he * rate;
    }

    if(maxHeight < he){
        rate = maxHeight / he;
        wi = wi * rate;
        he = he * rate;
    }
    
    target.width = wi;
    target.height = he;
    return;
}

function stringChopper(st,num){
//    if(CHK_STRLength(st,num) === false){
    if(st.length > num){
        st= st.substr(0,num-1) + "..";
    }
    return st;
}

function CHK_STRLength(strLine,strLenCnt){
    if(typeof(strLine) == "undefined"){
        return true;
    }
    var ix_str,strcnt=0;
    for(ix_str=0;ix_str<strLine.length;ix_str++){
        if(escape(strLine.charAt(ix_str)).length >= 4 ) strcnt+=2;
        else strcnt++;
    }
    
    if(strcnt>strLenCnt){
        return false;
    }else{
        return true;
    }
}

function opwncal(calendar_id,calendar_type){
    url = "https://my.calendar.rakuten.co.jp/cal/"+calendar_type+"/"+calendar_id+"/";
    window.open( url, 'cal' );
}

function opwncal2(calendar_id,calendar_type){
    url = "http://calendar.rakuten.co.jp/cal/"+calendar_id+"/"+calendar_type+"/";
    window.open( url, 'cal' );
}

Ext.BLANK_IMAGE_URL = 'http://calendar.rakuten.co.jp/img/default/s.gif';

Ext.msgDialog = function(){
    var msgCt;
    
    function createBox(t, s){
        return ['<div class="msg">',
        '<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>',
        '<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>', t, '</h3>', s, '</div></div></div>',
        '<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>',
        '</div>'].join('');
    }
    return {
        msg : function(title, format){
            if(!msgCt){
                msgCt = Ext.DomHelper.insertFirst(document.body, {id:'msg-div'}, true);
            }
            msgCt.alignTo(document, 't-t');
            var s = String.format.apply(String, Array.prototype.slice.call(arguments, 1));
            var m = Ext.DomHelper.append(msgCt, {html:createBox(title, s)}, true);
            m.slideIn('t').pause(1).ghost("t", {remove:true});
        }
    };
}();


