
/*

    Sergio Álvarez (xergio)
    mail@xergio.net
    http://xergio.net
    
    Licencia Creative Commons BY-SA
    <http://creativecommons.org/licenses/by-sa/2.0/>

*/

var init = true;
var acordeon = null;
var rp = null;
var rpflag;
var keyReq = null;
var help = null;
var share = null;
var ayax = null;



window.onload = function() {
    rp = new Fx.Height('rp', {duration: 200});
    help = new Fx.Height('helpcontainer', {duration: 300});
    share = new Fx.Height('share', {duration: 300});

    acordeon = new Fx.Accordion($S('.option'), $S('.optarea'), {
        firstBlock: acc,
        opacity: false,
        duration: 200,
        onActive: function(obj) {     if (obj == $('h3__preg_replace') && !rpflag && !init) { rp.toggle(); rpflag = !rpflag; } },
        onBackground: function(obj) { if (obj == $('h3__preg_replace') &&  rpflag && !init) { rp.toggle(); rpflag = !rpflag; } }
    });

    if (acc != 3)
        rp.toggle();
    help.toggle();
    share.toggle();

    $$('.bot').each(function(elem) { elem.addEvent('click', function(obj) { sendRequest(); }); });
    $$('.edt').each(function(elem) { elem.addEvent('keyup', function(obj) { handleKeyUp(obj); }); });
    
    $E('.showhidehelp').addEvent('click', function(obj) { help.toggle(); });
    $E('.showhideshare').addEvent('click', function(obj) { share.toggle(); });
        
    $('formData').addEvent('submit', function() { return false; });
    $('formShare').onsubmit = function() { saveSession(); return false; };

    if (location.search)
        sendRequest();
        
    init = false;
};



function handleKeyUp(e) {
    var evt = (e) ? e: (window.event) ? window.event: null;
    if (evt) {
        var key = (evt.charCode) ? evt.charCode: ((evt.keyCode) ? evt.keyCode: ((evt.which) ? evt.which: 0));
        if (key >= 37 && key <= 40)
            return;
    }
    
    if (keyReq)
        clearTimeout(keyReq);
    keyReq = setTimeout('sendRequest()', 500);
}



function sendRequest() {
    $('loadImg').innerHTML = '<img src="load.gif" alt="..." />';

    var direccion = location.protocol + '//' + location.hostname + location.pathname;
    ayax = new Ajax(direccion, {
        method: 'post',
        postBody: $('formData'),
        onComplete: function(get) { showResult(get); }
    }).request();
    return false;
}



function showResult(get) {
    $('preResult').innerHTML = get;
    $('loadImg').innerHTML = '';
    if (get.substr(5, 2) == 'ok') {
        $('resultLabel').removeClass('error').removeClass('ok').addClass('ok');
    } else {
        $('resultLabel').removeClass('error').removeClass('ok').addClass('error');
    }
    
    var tmp = get.match(/<!-- tagged="([^"]+)?" cache="([^"]+)" -->/);
    if (tmp) {
        if (tmp[1])
            $('sharecontainer').innerHTML = 'This session are tagged as "'+tmp[1]+'"';
        $E('a.permalink').href = './?'+tmp[2];
    } else
        $E('a.permalink').href = './';
    $E('a.permalink').setStyle('font-weight', 'bold');
}


function saveSession() {
    var tmp = $E('a.permalink').href.match(/\?([0-9\-]+)$/);
    if (tmp[1]) {
        $('sharecache').value = tmp[1];
        $('shareLoad').innerHTML = '<img src="load.gif" alt="..." />';

        var direccion = location.protocol + '//' + location.hostname + location.pathname;
        ayax = new Ajax(direccion, {
            method: 'post',
            postBody: $('formShare'),
            onComplete: function(get) { $('sharecontainer').innerHTML = get; }
        }).request();
    }
    return false;
}
