var php_path = '/cgi-bin/live_bbs_alpha/';
var openedCommentThreadId;
var currentStart = null;

function loadData( startNo )
{
    setStatus( 'ロード中' );
    var query = '';
    if( startNo )
    {
        query = 'start_no=' + startNo;
    }
    var ajax = new Ajax.Request( php_path + 'threads.php', {method: 'post', postBody: query, onComplete: updateData });
    currentStart = startNo;
}

function updateData( req )
{
    clearStatus();
    window.scroll(0, 0);
    $( 'bbs-data' ).innerHTML = req.responseText;
}


function submitNewThread( form )
{
    clearFormError( '' );

    if( validateFormValue( form, '' ) )
    {
        $('submit-newthread').disabled = true;
        $('clear-newthread').disabled = true;
        var query = Form.serialize( form );
        var ajax = new Ajax.Request( php_path + 'new_thread.php', { method: 'post', postBody: query, onComplete: onCompleteNewThread } );
    }
}

function onCompleteNewThread( req )
{
    $('submit-newthread').disabled = false;
    $('clear-newthread').disabled = false;

    $('form-new-thread').title.value = '';
    $('form-new-thread').data.value = '';
    if( req.responseText == 'success writing.' )
    {
		loadData();
    }
    else
    {
        alert( req.responseText );
    }
}

var lastCommentThreadId;

function submitComment( form )
{
    var threadId = form.threadid.value;
    var suffix = '-' + threadId;

    clearFormError( suffix );

    if( validateFormValue( form, suffix ) )
    {
        lastCommentThreadId = threadId;
        $( 'submit-comment' + suffix ).disabled = true;
        $( 'clear-comment' + suffix ).disabled = true;
        var query = Form.serialize( form );
        var ajax = new Ajax.Request( php_path + 'add_comment.php', { method: 'post', postBody: query, onComplete: onCompleteComment } );
    }

}

function onCompleteComment( req )
{
    var suffix = '-' + lastCommentThreadId;
    $( 'submit-comment' + suffix ).disabled = false;
    $( 'clear-comment' + suffix ).disabled = false;
    if( req.responseText == 'success writing.' )
    {
        loadData( currentStart );
    }
    else
    {
        alert( req.responseText );
    }
}


function clearFormError( suffix )
{
    $( 'nameError' + suffix ).innerHTML = '';
    $( 'mailError' + suffix ).innerHTML = '';
    $( 'urlError' + suffix ).innerHTML = '';
    $( 'dataError' + suffix ).innerHTML = '';
    $( 'passError' + suffix ).innerHTML = '';
}

function validateFormValue( form, suffix )
{
    var result = true;
    if( form.name.value == '' )
    {
        $( 'nameError' + suffix ).innerHTML = '名前を入力してください。';
        result = false;
    }

    //if( form.mail.value != '' )
    //{
    //    var mailStr = new String(form.mail.value);
    //    var mailMatch = mailStr.match('[a-zA-Z0-9_-]+(\@)[a-zA-Z0-9_-]+(\.)[a-zA-Z]+((\.)[a-zA-Z]+)?');
    //    if( ! mailMatch || mailStr.length != mailMatch.length )
    //    {
    //        $( 'mailError' + suffix ).innerHTML = '正しいメールアドレスを入力してください。';
    //        result = false;
    //    }
    //}

    //var urlStr = new String(form.url.value);
    //var urlMatch = urlStr.match('(http://|https://)[0-9a-zA-Z_-]+(\.)[0-9a-zA-Z]+((\.)[0-9a-zA-Z]+)?');
    //if( ! urlMatch || urlMatch.length != urlStr.length )
    //{
    //    $( 'urlError' + suffix ).innerHTML = '正しい URLを入力してください。'; 
    //    result = false;
    //}

    if( form.data.value == '' )
    {
        $( 'dataError' + suffix ).innerHTML = '記事を入力してください。';
        result = false;
    }

    if( form.pass.value == '' )
    {
        $( 'passError' + suffix ).innerHTML = 'パスワードを入力してください。';
        result = false;
    }

    return result;
}

function switchNewThreadForm()
{
    if( $('new-thread').style.display == 'none' )
    {
        clearFormError('');
        closeOpenedCommentForm();
        $('new-thread').style.display = 'block';
        $('link-form-visible').innerHTML = '[書き込み欄を閉じる]';
    }
    else
    {
        closeNewThreadForm();
    }

}

function closeNewThreadForm()
{
    $('new-thread').style.display = 'none';
    $('link-form-visible').innerHTML = '[新しい書き込みをする]';
}

var openingCommentThreadId;

function switchCommentForm( threadId )
{
    var replyElem =  $( 'reply-' + threadId );
    if( replyElem.innerHTML == '' )
    {
        setStatus( 'ロード中' );
        var query = 'threadid=' + threadId;
        openingCommentThreadId = threadId;
        var ajax = new Ajax.Request( php_path + 'comment_form.php', { method: 'post', postBody: query, onComplete: onLoadCommentForm } );
    }
    else
    {
        closeOpenedCommentForm();
    }
}

function onLoadCommentForm( req )
{
    clearStatus();
    closeOpenedCommentForm();
    closeNewThreadForm();
    $( 'reply-' + openingCommentThreadId ).style.display = 'block';
    $( 'reply-' + openingCommentThreadId ).innerHTML = req.responseText;
    $( 'link-reply-thread-' + openingCommentThreadId  ).innerHTML = '[コメント欄を閉じる]';
    openedCommentThreadId = openingCommentThreadId;
}

function closeOpenedCommentForm()
{
    if( openedCommentThreadId )
    {
        $( 'reply-' + openedCommentThreadId ).innerHTML = '';
        $( 'reply-' + openedCommentThreadId ).style.display = 'none';
        $( 'link-reply-thread-' + openedCommentThreadId  ).innerHTML = '[コメントを書く]';
    }
    openedCommentThreadId = null;
}

function setStatus( text )
{
    var y = 10;
    if( window.pageYOffset )
    {
        y += window.pageYOffset;
    }
    else if( document.body.scrollTop )
    {
        y += document.body.scrollTop;
    }
    $( 'status' ).style.top = y + 'px';
    $( 'status' ).innerHTML = text;
    $( 'status' ).style.display = 'block';
}

function clearStatus()
{
    $( 'status' ).style.display = 'none';
    $( 'status' ).innerHTML = '';
}

