/**
 * @file	js_select.js
 *
 * @author	Antti Kuuskoski, antti@null.coop
 * 
 * @brief	Selector-related javascript functions
 *
 * Changelog
 *
 * @version	0.01   	011205		Initial entry
 * @version	0.02	271205		-Combined ToGroup and FromGroup to
 *					Swap with parameter ADD/REMOVE
 *					-Added SwapMultiple for multiple selectors
 * @version	0.03	050206      Added a more general PopulateArrayData function 
 */

function FillSelectFrom(selectid, srcvar, validx, textidx, current)
{
    var nuva = NullValue();
    
    //First, clear selector
    var select = document.getElementById(selectid);
    var n= select.options.length;
    for(var i=0; i<n ; i++)
	select.remove(0);

    for(var i=1 ; i < srcvar.length ; i++)
    {
	var anOption = document.createElement("OPTION");
	select.add( anOption, nuva );			//back of list
	if(current == srcvar[i][validx])
	    anOption.selected=true;
	anOption.value = srcvar[i][validx];		//user id
	anOption.text = srcvar[i][textidx];		//user name
    }
    return;
}


/**
 * Populates two fields from an array variable according
 * to current selection.
 */
function PopulateNameDescData(selector, srcvar, nameid, descid)
{
    var nuva = NullValue();

    var temp=document.getElementById(selector);
    var filter = temp.value;
    
    //Add new options
    for(var i=0 ; i<srcvar.length ; i++)
    {
	//Update data when id match
	if(srcvar[i][0] == filter)
	{
	    var foo1=document.getElementById(nameid);
	    foo1.value = srcvar[i][1];
	    var foo2=document.getElementById(descid);
	    foo2.value = srcvar[i][2];
	}	
    }
    return;
}

/**
 * Populates all contents of fields from an array variable according to current 
 * selection. The first row in the array contains input element names
 */
function PopulateArrayDataAndEditors(selector, srcdata, srccontent)
{
    PopulateArrayData(selector, srcdata);
    PopulateArrayFCKEditors(selector, srccontent);
    return;
}
/**
 * Populates all contents of fields from an array variable according to current 
 * selection. The first row in the array contains input element names
 */
function PopulateArrayFCKEditors(selector, srcvar)
{
    var nuva = NullValue();

    var temp=document.getElementById(selector);
    var filter = temp.value;
    //Add new options
    for(var i=1 ; i<srcvar.length ; i++)
    {
	//Update data when id match
	if(srcvar[i][0] == filter)
	{
	for (var j = 1; j < srcvar[i].length; j++)
	{
	    //var foo1=document.getElementById(srcvar[0][j]);
	    //foo1.innerHTML = srcvar[i][j];
	    //alert("joo" + srcvar[0][1]);
	    var oEditor = FCKeditorAPI.GetInstance(srcvar[0][1]);
	    oEditor.SetHTML(srcvar[i][j]);
	    
	}	
	}
    }
    return;
}
/**
 * Populates all fields from an array variable according to current 
 * selection. The first row in the array contains input element names
 */
function PopulateArrayData(selector, srcvar)
{
    var nuva = NullValue();

    var temp=document.getElementById(selector);
    var filter = temp.value;
    //Add new options
    for(var i=1 ; i<srcvar.length ; i++)
    {
	//Update data when id match
	if(srcvar[i][0] == filter)
	{
	    for (var j = 1; j < srcvar[i].length; j++)
	    {
		var foo1=document.getElementById(srcvar[0][j]);
		
		switch(foo1.nodeName)
		{
		case "SELECT":
		    for(var k=0 ; k<foo1.options.length ; k++)
		    {
			foo1.options[k].selected =
			    (foo1.options[k].value == srcvar[i][j]);
		    }
		    break;
		case "INPUT":
		    switch(foo1.type)
		    {
		    case "text":
			foo1.value = srcvar[i][j];
			break;
		    case "checkbox":
		    case "radio":
			if(srcvar[i][j])
			    foo1.checked = true;
			else
			    foo1.checked = false;
			break;
		    }
		    break;
		case "IMG":
		    foo1.src = srcvar[i][j];
		    break;
		case "SPAN":
		    foo1.innerHTML = srcvar[i][j];
		    break;
		case "P":
		    foo1.firstChild.nodeValue = srcvar[i][j];
		    break;
		}
	    }	
	}
    }
    return;
}

function PopulateDualData2(selector, srcvar, id1, id2, filterindex, i1, i2)
{
    var nuva = NullValue();

    var temp=document.getElementById(selector);
    var filter = temp.value;
    
    //Add new options
    for(var i=0 ; i<srcvar.length ; i++)
    {
	//Update data when id match
	//if(srcvar[i][0] == filter)
	if(srcvar[i][filterindex] == filter)
	{
	    if(id1 != -1)
	    {
		var foo1=document.getElementById(id1);
		foo1.value = srcvar[i][i1];
	    }
	    if(id2 != -1)
	    {
		var foo2=document.getElementById(id2);
		foo2.value = srcvar[i][i2];
	    }
	}	
    }
    return;
}

function FilterFromSelToSel(sourcesel, sourcevar, targetsel,
			    filterindex, valindex, textindex,
			    current)
{
    var nuva = NullValue();
    var target = document.getElementById(targetsel);
    var source = document.getElementById(sourcesel);
    var filter = source.value;
    
    //Clear options
    var n= target.options.length;
    for(var i=0; i<n ; i++)
	target.remove(0);

    //Fill target by rules
    for(var i=0 ; i < sourcevar.length ; i++)
    {	
	if( (sourcevar[i][filterindex] == filter) || (filter == "all") )
	{
	    var anOption = document.createElement("OPTION");
	    target.add( anOption, nuva );			//back of list
	    if(current == sourcevar[i][valindex])
	    	anOption.selected=true;
	    if(valindex != -1)
		anOption.value = sourcevar[i][valindex];	//
	    if(textindex != -1)
		anOption.text = sourcevar[i][textindex];	//
	}
    }
    return;
}






