/* Hide, toggle, show, replace */
function toggleElm(name)
{
    var elm = document.getElementById(name);
    elm.style.display = (elm.style.display == "block") ? "none" : "block";
}

function showElm(name, display)
{
    var elm = document.getElementById(name);
    var display = display || 'block';
    elm.style.display = display;
}

function hideElm(name)
{
    var elm = document.getElementById(name);
    elm.style.display = "none";
}

function replaceElm(id, by_id) {
    var elm = document.getElementById(id);
    if (elm) { 
        elm.style.display = 'none'; 
    }
    elm = document.getElementById(by_id);
    if (elm) { 
        elm.style.display = 'block'; 
    }
}

function toggleExpandCollapse(name) {
    var elm = document.getElementById("expandee"+name);
    if (elm) {
        if (elm.style.display == "block") {
            collapse(name);
        }
        else {
            expand(name);
        }
    }
}
        
function expand(name, display) {
    showElm("expandee"+name, display);
    hideElm("expander"+name);
}

function collapse(name, display) {
    showElm("expander"+name, display);
    hideElm("expandee"+name);
}
/* end of Hide, toggle, show, replace */

function getElementsByClassName(classname, node)  {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

/* Cookie functions */
function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}
/* end of Cookie functions */

function setUserPreferences(name, value) {
    prefs = readCookie('user_pref');
    if (prefs) {
        prefs = JSON.parse(prefs)
        prefs[name] = value;
    } else {
        prefs = new Object();
        prefs[name] = value;
    }
    createCookie('user_pref', JSON.stringify(prefs));
}

function activateUserPreferences() {
    var c = readCookie('user_pref')
    if (!c) {return}
    prefs = JSON.parse(c);
    for (name in prefs) {
        if (prefs[name] == 'on') {
            replaceElm('clouds_'+name, 'counts_'+name);
        } else {
            replaceElm('counts_'+name, 'clouds_'+name);
        }
    }
}

function doQuery() {
    var new_search = document.search_form.search_mode[0].checked    
    var query = ''
    if (new_search) {
        query = document.getElementById('query_inactive').value;
    }
    else {
        query = document.getElementById('query').value;
    }
    var added_query = document.search_form.q.value;
    var params = document.getElementById('params').value;
    window.location = "/search?q=" + query + ' ' + added_query + '&' + params;
}

function showAddItem() {
    alert(this);
    var e = getElementsByClassName('add_item', this)[0];
    showElm(e);
}

function hideAddItem() {
    var e = getElementsByClassName('add_item', this)[0];
    hideElm(e);
}

function enableDragNDrop() {
    var classes = ['year', 'genre', 'keyword', 'director', 'writer', 'actor', 'company'];
    var options = { scroll: true, scrollSensitivity: 10, scrollSpeed: 10, revert: true };
    
    for (i in classes) {
        new YAHOO.util.DD($('.result' + ' .' + classes[i] + ' a'));
        new YAHOO.util.DD($('.facets' + ' .' + classes[i] + ' a'));
        new YAHOO.util.DD($('.search_keywords' + ' li.' + classes[i]));
    }
}
