/**
 *  ログログシール 登録画面
 *
 *  Copyright (c) 2005 RedCruise Corporation. All rights reserved.
 */

var BASE_URL    = "http://deck.redcruise.com/loglog/";
var ASHIATO_URL = "http://deck.redcruise.com/loglog/loglog.php"; // 上書き可
var SEALS = new Array();
var SERIES_ID;
var isIE = (navigator.appName.toUpperCase().indexOf("MICROSOFT") >= 0) ? true : false;

var MSG_EMPTY_URL       = 'URLが未入力です';
var MSG_EMPTY_TITLE     = 'ブログのタイトルが未入力です';
var MSG_INVALID_URL     = 'httpから始まるURLを入力してください';
var MSG_CHECKING        = '確認中...';
var MSG_IMAGE_LOADING   = 'シールを読み込んでいます...';
var MSG_ACCESSDENIED    = '入力されたURLにアクセスできませんでした。URLを確認してください。';

var series_rule = {
    /**
     *  Step.1/4 シリーズの選択
     */
    '#seal_series li' : function(el) {
        el.onmouseover = function() {
            this.style.borderBottom = "2px solid gray";
            this.style.cursor = "pointer";
        }
        el.onmouseout = function() {
            this.style.borderBottom = "2px solid white";
            this.style.cursor = "default";
        }
        el.onclick = function() {
            $("preview").style.display = "none";
            SERIES_ID = this.getAttribute("series_id");
            selectSeries(SERIES_ID);
            setSession('{"series_id" : ' + SERIES_ID + '}');
            //location.hash = "#1";
        }
    },
    /**
     *  Step.3/4 ブログのURL確認ボタン（タイトル取得）
     */
    '#checkBlogUrl' : function(el) {
        el.onclick = function() {
            resetErrorMsg("msg");
            var blogurl = $("blogurl").value;
            if (blogurl == '') {
                setErrorMsg(MSG_EMPTY_URL, "msg");
            } else if (!blogurl.match(/^http(s)?:\/\/(.+)$/)) {
                setErrorMsg(MSG_INVALID_URL, "msg");
            } else {
                $("checking_blogurl").innerHTML = MSG_CHECKING;
                var url  = BASE_URL + "_checkBlogUrl.php";
                var pars = "blogurl=" + blogurl;
                var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: showBlogTitle});
            }
            return false;
        }
    },
    /**
     *  Step.3/4 決定ボタン（登録完了）
     */
    '#finish_ok' : function(el) {
        el.onclick = function() {
            resetErrorMsg("msg");
            $("tmp-code").style.display = "none";
            var blogurl = $("blogurl").value;
            var blogtitle = $("blogtitle").value;
            if (!blogurl.match(/^http(s)?:\/\/(.+)$/)) {
                setErrorMsg(MSG_INVALID_URL, "msg");
                return false;
            } else if (blogtitle == '') {
                setErrorMsg(MSG_EMPTY_TITLE, "msg");
                return false;
            }
            
            $("code").value = "<a href='" + ASHIATO_URL + "?url=" + blogurl + "'><img src='" + BASE_URL + "imglog2.php?url=" + blogurl + "' alt='ログログシール' border='0' /></a>";
            var url  = BASE_URL + "_setAccount.php";
            var myAjax = new Ajax.Request(url, {method: 'post', postBody: "blogurl=" + blogurl + "&blogtitle=" + blogtitle + "&blogrssurl=" + $("blogrssurl").value});
            $("tmp-code").style.display = "block";
            return false;
        }
    }
};

function setSession(data)
{
    var url  = BASE_URL + "_setSession.php";
    var myAjax = new Ajax.Request(url, {method: 'post', postBody: "data=" + data});
}

/**
 *  Step.1/4 シールのシリーズの選択
 */
function selectSeries(sid)
{
    SERIES_ID = sid;
    $("seal_view").style.display = "block";
    $("seal").innerHTML = MSG_IMAGE_LOADING;
    if (!SEALS[SERIES_ID]) {
        var url    = BASE_URL + "_getSeals.php";
        var pars   = 'series_id=' + SERIES_ID;
        var myAjax = new Ajax.Request(url, {method: 'get', parameters: pars, onComplete: getSeals}); 
    } else {
        showSeriesSeal(SERIES_ID);
    }
}

function showBlogTitle(originalRequest)
{
    $("checking_blogurl").innerHTML = "";
    tit = originalRequest.responseText.match(/<title(.*?)>(.*?)<\/title>/i);
    if (tit) {
        ret = originalRequest.responseText.match(/<link ((.*?)type=\"application\/rss\+xml\"(.*?))>/i);
        if (ret) {
            r = ret[1].match(/href=\"(.*?)\"/i);
            if (r) {
                $("blogrssurl").setAttribute("value", r[1]);
            }
        }
        $("regist").style.display = "block";
        $("blogtitle").setAttribute("value", tit[2]);
    } else {
        setErrorMsg(MSG_ACCESSDENIED, "msg");
    }
}

function resetErrorMsg(elements)
{
    var arr = elements.split(',');
    for (i = 0; i < arr.length; i++) {
        $(arr[i]).innerHTML = "";
    }
}

function setErrorMsg(str, id)
{
    $(id).innerHTML = "<span class='error-msg'>" + str + "</span>";
}

function getSeals(originalRequest)
{
    SEALS[SERIES_ID] = new Array();
    eval("SEALS[SERIES_ID] = " + originalRequest.responseText + ";");
    showSeriesSeal(SERIES_ID);
}

/**
 *  シールのシリーズを表示
 */
function showSeriesSeal(series_id)
{
    //$("seal_view").style.display = "block";
    $("seal").innerHTML = "";
    for (i = 0; i < SEALS[series_id].length; i++) {
        var l = document.createElement("li");
        var a = document.createElement("a");
        var img = document.createElement("img");
        img.setAttribute("src",     SEALS[series_id][i]["image_path"]);
        img.setAttribute("alt",     "");
        img.setAttribute("border",  0);
        a.setAttribute("href",      "javascript:void(0)");
        var s = "setSession('{\"series_id\" : " + series_id + ", \"seal_no\" : " + SEALS[series_id][i]["seal_no"] + ", \"image_path\" : \"" + SEALS[series_id][i]["image_path"] + "\"}'); ";
        if (isIE) {
            eval("a.onclick = function() { " + s + "showSeal(SEALS[" + series_id + "][" + i + "]);};");
        } else {
            a.setAttribute("onclick", " " + s + "showSeal(SEALS[" + series_id + "][" + i + "]);");
        }
        l.appendChild(a);
        a.appendChild(img);
        $("seal").appendChild(l);
        //alert(SEALS[series_id][i]["image_path"]);
    }
}

/**
 *  シールの表示
 *  getSessionから呼び出される
 *
 *  @param  object
 *  @return void
 */
function showSeal(arg)
{
    var seal_no = arg["seal_no"];
    var image_path = arg["image_path"];
    $("preview").style.display = "block";
    $("tmp-code").style.display = "none";
    $("selectedSeal").setAttribute("src", image_path);
    $("selectedSealNo").setAttribute("value", seal_no);
    location.hash = 'seal_series';
}

/**
 *  <input>に入力されたブログのURLをセットする
 *  getSessionから呼び出される
 *
 *  @param  string
 *  @return void
 */
function inputBlogUrl(blogurl)
{
    $("blogurl").value = blogurl;
}

/**
 *  @param  func        function
 *  @param  arg         array
 *  @return void
 */
function getSession(func, arg)
{
    var oldonload = window.onload;

    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func(arg);
        }
    }
}

/**
 *  Cookieのオンオフのチェック
 *
 *  @param  void
 *  @return bool
 */
function checkCookie()
{
    if (navigator.cookieEnabled == false) {
        document.write('<p class="caution">注：ログログシールの登録はCookieをオンにして行ってください。</p>');
        return false;
    } else {
        return true;
    }
}

