function getSel() {
    var d = document;
    if (d.selection) {
        return d.selection.createRange().text;
    } else if (d.getSelection) {
        return d.getSelection();
    } else if (window.getSelection) {
        return window.getSelection();
    } else {
        return false;
    }
}

function shout1Checkr() {
    if ($('shout1').value) {
        $('shout1-button').disabled = false;
    } else {
        $('shout1-button').disabled = true;
    }
}

function shoutStep1(sw) {
    if (sw == 'go') {
        shout = new Object;
        shout.txt = $('shout1').value;
        if (!shout.txt) {
            alert('もっと大きな声で言った方がいいんじゃないかな！');
            $('shout1').focus();
            return false;
        } else {
            shout.len = shout.txt.length;
            shout.mask = '';
            for (var i = 0; i < shout.len; i++) {
                shout.mask += '0';
            }
            $('shout2-1').innerHTML = shout.txt.escapeHTML();
            $('shout2-2').innerHTML = shout.txt.escapeHTML();
            Element.show('shout2-wrapper');
            Element.hide('shout1-wrapper');

            Element.hide('shout2-uncover');

            sw_rev = '1';
            ss2 = false;

            $('shout3-button').disabled = true;
        }
    } else {
        Element.show('shout1-wrapper');
        Element.hide('shout2-wrapper');
        $('shout1').focus();
    }
}

function shoutStep2(sw) {
    if (sw == '1') {
        sw_rev = '2';
    }
    else sw_rev = '1';
    var secret = getSel();
    if (secret == '') {
        return false;
    } else {
        var coverMark = '___omimiCoverMark01___';

        //何だかよくわからないけどsecretをそのまま使うとSafariが文字列として認識してくれない。何これ。
        secret = secret + '';

        var secretLen = secret.length;
        var secretMask = '';
        for (var i = 0; i < secretLen; i++) {
            secretMask += '1';
        }

        var from = 0;
        while (shout.txt.indexOf(secret, from) >= 0) {
            var from = shout.txt.indexOf(secret, from);
            shout.mask = shout.mask.substr(0, from) + secretMask + shout.mask.substr(from + secretLen);
            from++;
        }

        var showStr = '';
        for (var i = 0; i < shout.len; i++) {
            if (shout.mask.charAt(i) == '0') {
                showStr += shout.txt.charAt(i).escapeHTML();
            } else if (shout.txt.charAt(i) == " " || shout.txt.charAt(i) == "　") {
                showStr += shout.txt.charAt(i);
            } else {
                showStr += coverMark;
            }
        }

        $('finalshout').value = showStr;
        $('shout2-' + sw_rev).innerHTML = eval('showStr.replace(/' + coverMark + '/g, \'<img src="http://o-mimi.com/img/cross.gif" alt="×" />\');');
        Element.show('shout2-' + sw_rev);
        Element.hide('shout2-' + sw);

        ss2 = true;

        Element.show('shout2-uncover');

        $('shout3-button').disabled = false;

        return true;
    }
}


function shoutStep3(sw) {
    if (ss2 != true) {
        alert('少しくらいは隠した方がいいと思うよ！');
        return false;
    } else if (confirm('この叫びを送信します。\nマズい部分はちゃんと隠してますか？')) {
        $('shout3-button').disabled = true;
        $('form-shout').submit();
    } else {
        return false;
    }
}


function appearFade(id) {
    if ($(id).style.display == 'none') {
        Effect.Appear(id, {duration:0.3});
    } else {
        Effect.Fade(id, {duration:0.3});
    }
}

function aboutYourShout() {
    Effect.Fade('aboutYourShout1', {duration:0.3});
    Effect.Fade('aboutYourShout2', {duration:0.3});
    Effect.Appear('aboutYourShoutBody', {duration:0.3})
}


function showSbmtBox(id) {
    if(!id) {
        Effect.Fade('sbmtBox', {duration:0.3});
        setTimeout("Element.show('twAtSw');Element.hide('twAtWrapper');$('twAt').value='';", 300);
        return;
    } else {
        $('twitter-msg-body').innerHTML = $('shout-' + id).innerHTML;
        $('twStatus').value = $('plain-' + id).value;

        backToTop();

        if ($('sbmtBox').style.display == 'none') {
            Effect.Appear('sbmtBox', {duration:0.3});
        }

        return;
    }
}

function showTwAt() {
    Effect.Appear('twAtWrapper', {duration:0.3});
    Effect.Fade('twAtSw', {duration:0.3});
    setTimeout("$('twAt').focus();", 300);
}

function backToTop() {
    var x1 = x2 = x3 = 0;
    var y1 = y2 = y3 = 0;

    if (document.documentElement) {
        x1 = document.documentElement.scrollLeft || 0;
        y1 = document.documentElement.scrollTop || 0;
    }

    if (document.body) {
        x2 = document.body.scrollLeft || 0;
        y2 = document.body.scrollTop || 0;
    }

    x3 = window.scrollX || 0;
    y3 = window.scrollY || 0;

    var x = Math.max(x1, Math.max(x2, x3));
    var y = Math.max(y1, Math.max(y2, y3));

    window.scrollTo(Math.floor(x / 2), Math.floor(y / 2));

    if (x > 0 || y > 0) {
        window.setTimeout("backToTop()", 25);
    }
}

function twSbmt() {
    $('twSbmtBtn').disabled = true;
    $('twForm').submit();
}

window.onload = function() {
    if ($('msg-to-fade')) {
        setTimeout("Effect.Fade('msg-to-fade', {duration:1})", 2000);
    }

    if ($('shout1')) {
        $('shout1').focus();
        $('shout1-button').disabled = true;
    }
}
