

/********************************************************************
* Dojo!
********************************************************************/
// djConfig.isDebug = true; ///

// dojo.require("dojo.lang");
// dojo.require("dojo.lfx.*");
// dojo.require("dojo.io.*");
// dojo.require("dojo.event.*");


/********************************************************************
* Global functions
********************************************************************/

// Header search/recent functions.
dojo.addOnLoad(function(){
    if (dojo.byId('search-link') && dojo.byId('search-form')) {
        dojo.event.connect(dojo.byId('search-link').firstChild, 'onclick', displaySearchBox);
        dojo.event.connect(dojo.byId('search-button'), 'onclick', doSearch);
        dojo.event.connect(dojo.byId('search-form'), 'onsubmit', function(evt) {
            evt.preventDefault();
        	evt.stopPropagation();        
        });
    }
});
function displaySearchBox(evt)
{
    evt.preventDefault();
	evt.stopPropagation();
    dojo.byId('search-link').style.display = 'none';
    dojo.style.setOpacity('search', 0);
    dojo.lfx.fadeShow('search', 500, dojo.lfx.easeInOut).play();
    dojo.byId('q').focus();
}
function doSearch(evt)
{
    evt.preventDefault();
	evt.stopPropagation();
    var op = evt.target.form.op.options[evt.target.form.op.selectedIndex].value;
    var q = encodeURIComponent(evt.target.form.q.value).replace(/(?:%20)+/g, '+');
    window.location = '/search/' + op + '/' + q;
}

// Recent nodes select menu.
dojo.addOnLoad(function(){
    if (dojo.byId('recent-nodes-link')) {
        dojo.event.connect(dojo.byId('recent-nodes-link').firstChild, 'onclick', displayRecentBox);
        var rn = dojo.byId('recent-node');
        dojo.event.connect(rn, 'onchange', function() { window.location = '/view/' + rn.options[rn.selectedIndex].value; });
    }
});
function displayRecentBox(evt)
{
    evt.preventDefault();
	evt.stopPropagation();
    dojo.byId('recent-nodes-link').style.display = 'none';
    dojo.style.setOpacity('recent-nodes', 0);
    dojo.lfx.fadeShow('recent-nodes', 500, dojo.lfx.easeInOut).play();
    dojo.byId('recent-node').focus();
}

// Advanced search form submissions.
dojo.addOnLoad(function(){
    if (dojo.byId('search-button-advanced')) {
        dojo.event.connect(dojo.byId('search-button-advanced'), 'onclick', doSearchAdvanced);
        dojo.event.connect(dojo.byId('search-form-advanced'), 'onsubmit', function(evt) {
            evt.preventDefault();
        	evt.stopPropagation();        
        });
    }
});
function doSearchAdvanced(evt)
{
    evt.preventDefault();
	evt.stopPropagation();
    var op = '';
    for (var i = 0; i < evt.target.form.op.length; i++) {
        if (evt.target.form.op[i].checked) {
            var op = evt.target.form.op[i].value;
            break;
        }
    }
    var q = encodeURIComponent(evt.target.form.q.value).replace(/(?:%20)+/g, '+');
    window.location = '/search/' + op + '/' + q;
}

// Edit/Add tag form.
dojo.addOnLoad(function(){
    if (dojo.byId('add_tags_form')) {
        dojo.event.connect(dojo.byId('add_tags_form'), 'onsubmit', function(evt){
            evt.preventDefault();
        	evt.stopPropagation();
            dojo.io.bind({
                url: '/io/tags.php',
                load: function(type, data, evt) {
                    addTags(data, dojo.byId('tags').value, dojo.byId('add_tags_form').remote_tbl.value, dojo.byId('add_tags_form').remote_id.value);
                },
                content: { ajax: 'true' },
                formNode: dojo.byId('add_tags_form'),
                mimetype: 'text/plain'
            });
        });
    }
});
function addTags(ids, tags, r_tbl, r_id)
{
    if (ids.length > 0 && tags.length > 0) {        
        ids = ids.split(/,+\s*/);
        tags = tags.split(/[,;]+\s*/);
        for (var i = 0; i < ids.length && ids.length != 0; i++) {
            if ('' == tags[i]) {
                // If duplicate tags are submitted, only one will be added and only one tag_id returned.
                continue;
            }
            var new_tag = document.createElement('li');
            new_tag.setAttribute('id', 'tag_' + ids[i]);
            new_tag.innerHTML = tags[i] + ' <a href="" title="Remove tag &quot;' + tags[i] + '&quot;?" onclick="rmTag(\'' + ids[i] + '\', \'' + r_tbl + '\', \'' + r_id + '\', event);">[x]</a> ';
            dojo.style.setOpacity(new_tag, 0);
            dojo.lfx.fadeShow(new_tag, 500, dojo.lfx.easeInOut).play();
            dojo.byId('tags_edit_list').appendChild(new_tag);
        }
    }
    dojo.byId('tags').value = '';
    dojo.byId('tags').blur();
}
function rmTag(id, r_tbl, r_id, evt)
{
    dojo.event.browser.stopEvent(evt);
    dojo.lfx.fadeHide('tag_' + id, 500, dojo.lfx.easeOut).play();
    dojo.io.bind({
        url: '/io/tags.php',
        load: function(type, data, evt){ dojo.byId('tag_' + id).style.display = 'none'; },
        content: { op: 'rm', tag_id: id, remote_tbl: r_tbl, remote_id: r_id }
    });
}

// Add-to-scripbook links.
function addToScrapbook(id, evt)
{
    dojo.lfx.fadeHide(evt.target, 500, dojo.lfx.easeOut).play();
    dojo.event.browser.stopEvent(evt);
    dojo.lfx.highlight('scrapbook-link', [255, 80, 0], 1000, dojo.lfx.easeOut).play();
    dojo.io.bind({
        url: '/io/add_to_scrapbook.php',
        content: { ajax: 'true', file_id: id }
    });
    return false;
}

// Hood hookup links.
function hoodHookup(n, evt)
{
    dojo.lfx.fadeHide(evt.target, 500, dojo.lfx.easeOut).play();
    dojo.event.browser.stopEvent(evt);
    dojo.lfx.highlight('user-link', [255, 80, 0], 1000, dojo.lfx.easeOut).play();
    dojo.io.bind({
        url: '/hood.php',
        content: { ajax: 'true', op: 'hookup', node: n }
    });
    return false;
}


/********************************************************************
* Document elements are not available until after the page loads.
* Use this wrapper function to contain all event handlers.
********************************************************************/
function globalInit()
{    
    // Automatically fade in sc messages.
    if (dojo.byId('sc-msg')) {
        dojo.style.setOpacity('sc-msg', 0);
        dojo.lfx.fadeShow('sc-msg', 500, dojo.lfx.easeInOut).play();
    }
    if (dojo.byId('sc-msg-formvalidator')) {
        dojo.style.setOpacity('sc-msg-formvalidator', 0);
        dojo.lfx.fadeShow('sc-msg-formvalidator', 500, dojo.lfx.easeInOut).play();
    }
    dojo.event.connect(dojo.byId('functions-nav-inner'), 'onclick', function() {
        location.href = '/';
    });
    dojo.byId('functions-nav-inner').style.cursor = 'pointer';
}
// Go! Make sure we don't have any onload conflicts.
dojo.addOnLoad(globalInit);
