/*===================================================================
 Author: Matt Kruse
 
 View documentation, examples, and source code at:
     http://www.JavascriptToolbox.com/

 NOTICE: You may use this code for any purpose, commercial or
 private, without any further permission from the author. You may
 remove this notice from your final code if you wish, however it is
 appreciated by the author if at least the web site address is kept.

 This code may NOT be distributed for download from script sites, 
 open source CDs or sites, or any other distribution method. If you
 wish you share this code with others, please direct them to the 
 web site above.
 
 Pleae do not link directly to the .js files on the server above. Copy
 the files to your own server for use with your site or webapp.
 ===================================================================*/
var Selectbox = new Object();
Selectbox.$VERSION = 1.0;

Selectbox.hasOptions = function(obj) {
	return (obj!=null && typeof(obj.options)!="undefined" && obj.options!=null && obj.options.length > 0 );
}

Selectbox.selectUnselectMatchingOptions = function(obj,regex,which,only) {
	if (window.RegExp) {
		if (!this.hasOptions(obj)) { return false; }
		if (typeof(only)=="undefined" || only==null) { var only = false; }
		var re = new RegExp(regex);
		for (var i=0; i<obj.options.length; i++) {
			if (re.test(obj.options[i].text)) {
				obj.options[i].selected = (which=="select");
			}
			else if (only) {
				obj.options[i].selected = (which=="unselect");
			}
		}
		return true;
	}
	return false;
}

Selectbox.selectOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"select",false);
}

Selectbox.selectOnlyOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"select",true);
}

Selectbox.unselectOptions = function(obj,regex) {
	return this.selectUnselectMatchingOptions(obj,regex,"unselect",false);
}

Selectbox.sort = function(obj) {
	var o = new Array();
	if (!this.hasOptions(obj)) { return false; }
	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 true; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (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);
	}
	return true;
}

Selectbox.selectAllOptions = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (var i=0; i<obj.options.length; i++) {
		obj.options[i].selected = true;
	}
	return true;
}

Selectbox.moveSelectedOptions = function(from,to) {
	if (!this.hasOptions(from)) { return false; }
	// Unselect matching options, if required
	if (arguments.length>3) {
		var regex = arguments[3];
		if (regex != "") {
			if (!this.unselectOptions(from,regex)) {
				return false;
			}
		}
	}
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (!this.hasOptions(to)) { 
				var index = 0; 
			} 
			else { 
				var index=to.options.length; 
			}
			to.options[index] = new Option(o.text, o.value, false, false);
		}
	}
	// Delete them from original
	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])) {
		this.sort(from);
		this.sort(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

	return true;
}

Selectbox.copySelectedOptions = function(from,to) {
	if (!this.hasOptions(from)) { return false; }
	var options = new Object();
	if (this.hasOptions(to)) {
		for (var i=0; i<to.options.length; i++) {
			options[to.options[i].value] = to.options[i].text;
		}
	}
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (typeof(options[o.value])=="undefined" || options[o.value]==null || options[o.value]!=o.text) {
				if (!this.hasOptions(to)) { 
					var index = 0; 
				} 
				else { 
					var index=to.options.length; 
				}
				to.options[index] = new Option( o.text, o.value, false, false);
			}
		}
	}
	if ((arguments.length<3) || (arguments[2]==true)) {
		this.sort(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;

	return true;
}

Selectbox.moveAllOptions = function(from,to) {
	this.selectAllOptions(from);
	if (arguments.length==2) {
		this.moveSelectedOptions(from,to);
	}
	else if (arguments.length==3) {
		this.moveSelectedOptions(from,to,arguments[2]);
		}
	else if (arguments.length==4) {
		this.moveSelectedOptions(from,to,arguments[2],arguments[3]);
	}
}

Selectbox.copyAllOptions = function(from,to) {
	this.selectAllOptions(from);
	if (arguments.length==2) {
		this.copySelectedOptions(from,to);
	}
	else if (arguments.length==3) {
		this.copySelectedOptions(from,to,arguments[2]);
	}
}

Selectbox.swapOptions = function(obj,i,j) {
	if (!this.hasOptions(obj)) { return false; }
	var o = obj.options;
	if (i<0 || i>=o.length || j<0 || j>=o.length) { return false; }
	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;
	return true;
}

Selectbox.moveOptionUp = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			if (i>0 && !obj.options[i-1].selected) {
				this.swapOptions(obj,i,i-1);
				obj.options[i-1].selected = true;
			}
		}
	}
	return true;
}

Selectbox.moveOptionDown = function(obj) {
	if (!this.hasOptions(obj)) { return false; }
	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) {
				this.swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
	return true;
}

Selectbox.removeSelectedOptions = function(from) { 
	if (!this.hasOptions(from)) { return false; }
	if (from.type=="select-one" && from.selectedIndex>=0) {
		from.options[from.selectedIndex] = null;
	}
	else {
		for (var i=(from.options.length-1); i>=0; i--) { 
			var o=from.options[i]; 
			if (o.selected) { 
				from.options[i] = null; 
			} 
		}
	}
	from.selectedIndex = -1; 
} 

Selectbox.removeAllOptions = function(from) { 
	if (!this.hasOptions(from)) { return false; }
	for (var i=(from.options.length-1); i>=0; i--) { 
		from.options[i] = null; 
	} 
	from.selectedIndex = -1; 
	return true;
} 

Selectbox.addOption = function(obj,text,value,selected) {
	if (obj!=null && obj.options!=null) {
		obj.options[obj.options.length] = new Option(text, value, false, selected);
	}
}

// Estas funções abaixo estão aqui presentes apenas para garantir compartibilidade
// em alguns sites antigos, na medida que eles forem sendo atualizados, deve-se por 
// bem removê-los desse arquivo.
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
// ===================================================================

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);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);}
function sortSelect(obj){var o = new Array();if(obj.options==null){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((a.text+"") <(b.text+"")){return -1;}if((a.text+"") >(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){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);}}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){to.options[to.options.length] = 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();for(var i=0;i<to.options.length;i++){options[to.options[i].value] = to.options[i].text;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(options[o.value] == null || options[o.value] == "undefined" || options[o.value]!=o.text){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
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){copySelectedOptions(from,to);}else if(arguments.length==3){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){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){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 selecionados = new Array();
	var j = -1;
	for ( var i=( from.options.length - 1 ); i >= 0; i-- ) {
		if ( from.options[i].selected ) { selecionados[++j] = i; }
	}

	if ( ( i = selecionados.length ) > 0 ) { 
		for ( ; i >= 0; --i ) {
			from.options[selecionados[i]] = null;	
			from.selectedIndex = -1;
		}
	}
	else { alert("Você precisa selecionar algum item para ser removido!"); }
}
function removeAllOptions(from){for(var i=(from.options.length-1);i>=0;i--){from.options[i] = null;}from.selectedIndex = -1;}
function addOption(obj,text,value,selected){if(obj!=null && obj.options!=null){obj.options[obj.options.length] = new Option(text, value, false, selected);}}

function renameSelectedOptions(obj,text){
for(var i=(obj.options.length-1);i>=0;i--){
	var o=obj.options[i];
      if(o.selected){
         var resposta = obj.options[i].value.split("#");
         obj.options[i].text = text;
         obj.options[i].value = resposta[0]+'#'+text;
      }
}
}


/**
 * Funções utilizando campos selects e texts.
 * Criador por: Ricardo José Ramalho Moreira ( ricardojrm@gmail.com )
 * Criada em: 14/04/2005
 * ChangeLog:
 *						1 - 14/04/2005 -
 */

	function loadEmpresaCurriculum( param_form ) {
		for ( var i = ( param_form.lista_empresas.options.length - 1 ); i >= 0; i-- ) {
			var o = param_form.lista_empresas.options[i];
			if ( o.selected ) {
				var itens = o.value.split(";¨ITEM¨;");
				var dados = itens[1].split(";¨CAMPO¨;");
				param_form.empresa_nome.value = dados[0];
				param_form.empresa_ddd.value = dados[1];
				param_form.empresa_telefone.value = dados[2];
				param_form.empresa_admissao.value = dados[3];
				param_form.empresa_demissao.value = dados[4];
				param_form.empresa_salario.value = dados[5];
				param_form.empresa_funcao.value = dados[6];
				param_form.empresa_motivo.value = dados[7];
				param_form.lista_empresas.selectedIndex = -1;
				param_form.empresa_nome.focus();
			}
		}
	}

	function addSelectInput( param_form , param_input , param_select , param_target , param_text ) {
		var	tam = param_target.length;
		var valor = "::¨ITEM¨::";
		var campos = "";
		for ( var i = ( param_form.length - 1 ); i >= 0; i-- ) {
			if ( param_target.toLowerCase() == param_form.elements[i].name.substring( 0 , tam ).toLowerCase() ) {
				if ( param_form.elements[i].name.substring( tam , param_form.elements[i].name.length ).toLowerCase() != 'remover'
						 	&& param_form.elements[i].name.substring( tam , param_form.elements[i].name.length ).toLowerCase() != 'adicionar' ) {
					if ( param_form.elements[i].value != null && param_form.elements[i].value != "" && param_form.elements[i].value != -1 ) {
						campos += i + ";";
		  			valor += "\t" + param_form.elements[i].name + "::¨::" + param_form.elements[i].value; 
					}
					else { alert("Você precisa preencher os campos antes de inserí-los!"); return false; }
				}
			}
		}

		param_input.value += valor;

		addOption( param_select , param_text , valor , false );
		
		campo = campos.split(";");

		// Resetando os campos...
		for ( i = (campo.length - 1); i > 0; i-- ) {
			if ( param_form.elements[campo[(i - 1)]].type == "select-one" ) { param_form.elements[campo[(i - 1)]].selectedIndex = 0; }
			else if ( param_form.elements[campo[(i - 1)]].type == "checkbox" ) { param_form.elements[campo[(i - 1)]].defaultChecked; }
			else if ( param_form.elements[campo[(i - 1)]].type != "hidden" ) { param_form.elements[campo[(i - 1)]].value = ""; }			
		}

		// Alterando os textos dos botões...	
		if ( param_select.options.length > 0 ) { 
			eval( "param_form." + param_target + "adicionar.value = \" adicionar outro \"" );
			eval( "param_form." + param_target + "remover.disabled = false " );
		}
		else {
			eval( "param_form." + param_target + "adicionar.value = \" adicionar \"" );
			eval( "param_form." + param_target + "remover.disabled = true " );
		}
		
	}

	function delSelectInput( param_form , param_from , param_to , param_target ) {
		for ( var i = ( param_from.options.length - 1 ); i >= 0; i-- ) {
			var o = param_from.options[i];
			if ( o.selected ) {
				param_to.value = param_to.value.replace( o.value , "" );
			}
		}
		// Alterando os textos dos botões...	
		if ( param_from.options.length > 1 ) { 
			eval( "param_form." + param_target + "adicionar.value = \" adicionar outro \"" );
			eval( "param_form." + param_target + "remover.disabled = false " );
		}
		else {
			eval( "param_form." + param_target + "adicionar.value = \" adicionar \"" );
			eval( "param_form." + param_target + "remover.disabled = true " );
		}
		removeSelectedOptions( param_from );
	}
	
	function dec2array( param_value ) {
	
	}
	
	function addAllInputSelectect( param_select , param_campo ) {
		param_campo.value = "";
		for (var i = ( param_select.options.length - 1 ); i >= 0; i-- ) {
			param_campo.value += param_select.options[i].value;			 
		}
	}
