



function hasOptions(obj)
  {
      if(obj!=null && obj.options!=null)
      {
        return true;
      }
      return false;
  }

function selectUnselectMatchingOptions(obj,regex,which,only){if(window.RegExp){if(which == "select"){var selected1=true;var selected2=false;}else if(which == "unselect"){var selected1=false;var selected2=true;}else{return;}var re = new RegExp(regex);if(!hasOptions(obj)){return;}for(var i=0;i<obj.options.length;i++){if(re.test(obj.options[i].text)){obj.options[i].selected = selected1;}else{if(only == true){obj.options[i].selected = selected2;}}}}}
function selectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",false);}
function selectOnlyMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",true);}
function unSelectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"unselect",false);}

var wSC = new Array('á','â','ã','ç','é','ê','í','ó','ô','õ','ú','û');
var woSC = new Array("a","a","a",'c','e','e','i','o','o','o','u','u');

function tiraAcentos(data)
{
    data=data.toLowerCase();
    for (i=0; i<wSC.length; i++)
    {
        data=data.replace(wSC[i],woSC[i]);
    }
    return data;
}

function sortSelect(obj){
    var o = new Array();
    if(!hasOptions(obj))
    {
        return;
    }
    for(var i=0;i<obj.options.length;i++){
        o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
    }
    if(o.length==0){return;}o = o.sort(
        function(a,b){
                if((tiraAcentos(a.text+"")) <(tiraAcentos(b.text+""))){
                    return -1;
                }
                if((tiraAcentos(a.text+"")) >(tiraAcentos(b.text+""))){
                    return 1;
                }
                return 0;
      }
    );
    for(var i=0;i<o.length;i++){
        obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
    }
}

function selectAllOptions(obj){if(!hasOptions(obj)){return;}for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}
function moveSelectedOptions(from,to){if(arguments.length>3){var regex = arguments[3];if(regex != ""){unSelectMatchingOptions(from,regex);}}if(!hasOptions(from)){return;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(!hasOptions(to)){var index = 0;}else{var index=to.options.length;}to.options[index] = new Option( o.text, o.value, false, false);}}for(var i=(from.options.length-1);i>=0;i--){var o = from.options[i];if(o.selected){from.options[i] = null;}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(from);sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}

function copySelectedOptions(from,to)
{
	var options = new Object();
    var count = 0;
    if (hasOptions(to)) {
		for (var i=0; i<to.options.length; i++) {
			options[to.options[i].value] = to.options[i].text;
			}
		}
	if (!hasOptions(from)) { return 0; }
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
		    //alert(o.value+ " "+options[o.value])
			if (options[o.value] == null || options[o.value] == "undefined" || options[o.value]!=o.text) {
				if (!hasOptions(to))
				{
				   var index = 0;
				} else{
				   var index = to.options.length;
				}
				to.options[index] = new Option( o.text, o.value, false, false);
                count++;
            }
		}
	}
	if ((arguments.length<3) || (arguments[2]==true)) {
		sortSelect(to);
		}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

    return count;
}





function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}

function copyAllOptions(from,to){
    selectAllOptions(from);
    if(arguments.length==2){
        return copySelectedOptions(from,to);
    }else if(arguments.length==3){
        return copySelectedOptions(from,to,arguments[2]);
    }
}

function swapOptions(obj,i,j){var o = obj.options;var i_selected = o[i].selected;var j_selected = o[j].selected;var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);o[i] = temp2;o[j] = temp;o[i].selected = j_selected;o[j].selected = i_selected;}
function moveOptionUp(obj){if(!hasOptions(obj)){return;}for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){if(i != 0 && !obj.options[i-1].selected){swapOptions(obj,i,i-1);obj.options[i-1].selected = true;}}}}
function moveOptionDown(obj){if(!hasOptions(obj)){return;}for(i=obj.options.length-1;i>=0;i--){if(obj.options[i].selected){if(i !=(obj.options.length-1) && ! obj.options[i+1].selected){swapOptions(obj,i,i+1);obj.options[i+1].selected = true;}}}}

function removeSelectedOptions(from){
    var count = 0;

    if(!hasOptions(from))
    {
        return count;
    }

    if(from.type=="select-one"){
        from.options[from.selectedIndex] = null;
        count++;
    }else{
        for(var i=(from.options.length-1);i>=0;i--){
            var o=from.options[i];
            if(o.selected){
                    from.options[i] = null;
                    count++;
            }
         }
     }
    from.selectedIndex = -1;
    return count;
}

function removeAllOptions(from){
    var count = 0;

    if(!hasOptions(from)){
        return count;
    }

    for(var i=(from.options.length-1);i>=0;i--){
        from.options[i] = null;
        count++;
    }
    from.selectedIndex = -1;
    return count;
}

function addOption(obj,text,value,selected){if(obj!=null && obj.options!=null){obj.options[obj.options.length] = new Option(text, value, false, selected);}}

