function gebid(id) {
	return document.getElementById(id);
}

function gebn(name) {
	return document.getElementsByName(name);
}

function empty_textarea(ta_obj, default_value) {
	// if(ta_obj.innerHTML==default_value) {
	// 	ta_obj.innerHTML = "" ;
	// }
	if(ta_obj.value==default_value) {
		ta_obj.value = "" ;
	}
	return false;
}

function textarea_to_default(ta_obj, default_value) {
	// if(ta_obj.innerHTML=="") {
	// 	ta_obj.innerHTML = default_value ;
	// }
	if(ta_obj.value=="") {
		ta_obj.value = default_value ;
	}
	return false;
}

function empty_textfield(tf_obj, default_value) {
	if(tf_obj.value==default_value) {
		tf_obj.value = "" ;
	}
	return false;
}

function textfield_to_default(tf_obj, default_value) {
	if(tf_obj.value=="") {
		tf_obj.value = default_value ;
	}
	return false;
}

function show_more_lg() {
	var lg_left = gebid("more-lg-left") ;
	var lg_right = gebid("more-lg-right") ;
	var more_lg_link = gebid("more-lg-link") ;
	
	lg_left.style.display = "block";
	lg_right.style.display = "block";
	
	more_lg_link.style.display = "none";
	
	return false
}

function show_more_exp(exp_id) {
	var exp = gebid("more-experience-"+exp_id) ;
	var exp_link = gebid("more-experience-link-"+exp_id) ;

	exp.style.display = "block";
	exp_link.style.display = "none";
	return false ;
}

function change_lg(id) {
    var ddlb            = gebid('LangNom'+id) ;
	var txt	            = gebid('LangTxt'+id) ;
	// var selectedIndex   = ddlb.options.selectedIndex ;
	var lastIndex       = ddlb.options.length -1 ;
	
    // if "Other" selected
    if(ddlb.options[lastIndex].selected) {
        txt.style.display='inline' ;
    }
    else {
        txt.style.display='none' ;
    }
	
}

function show_other_languages() {
	var txt	            = gebid('LangTxt1') ;
	var checkbox = gebid('other_languages_checkbox') ;
	
	if (checkbox.checked) {
		 txt.style.display='inline' ;
	}
    else {
        txt.style.display='none' ;
    }

	return true;
}

function change_origin_candidature() {
    var label       = gebid('origin-other-label');
    var separator   = gebid('origin-other-separator');
    var field       = gebid('AnnAutre') ;
	var row			= gebid('row-origin-other') ;
    var display     = "none" ;
	var row_display	= "none" ;
    
	if (gebid('Annonce').selectedIndex==5 || gebid('Annonce').selectedIndex==6 || gebid('Annonce').selectedIndex==7) {
	    display = "inline" ;
		row_display = "block" ;
	}
	
	label.style.display=display ;
	separator.style.display=display ;
	field.style.display=display ;
	row.style.display=row_display ;
}

// *** start form validation
function isEmailAddr(email) {
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}


function validRequired(formField,fieldLabel) {
	var result = true;

	if (formField.value == "") 	{
		if(formField.name=="Refer")
			alert(label_1+' "' + fieldLabel + '", '+label_1b);
		else
			alert(label_1+' "' + fieldLabel + '".');
		formField.focus();
		result = false;
	}

	return result;
}

function validRadioChecked(formField,fieldLabel) {
	var result = false ;
	for(i =0; i <formField.length; i++) {
		if(formField[i].checked)
			result = true ;
	}
	if(!result)
		alert(label_1+' "' + fieldLabel + '".');
	return result ;
}

// function allDigits(str) {
// 	return inValidCharSet(str,"0123456789");
// }

function validEmail(formField,fieldLabel,required) {
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) ) {
		alert(label_2);
		formField.focus();
		result = false;
	}

  return result;

}

// function validNum(formField,fieldLabel,required) {
// 	var result = true;
// 
// 	if (required && !validRequired(formField,fieldLabel))
// 		result = false;
// 
//  	if (result)
//  	{
//  		if (!allDigits(formField.value))
//  		{
//  			alert('xxx "' + fieldLabel +'".');
// 			formField.focus();
// 			result = false;
// 		}
// 	}
// 
// 	return result;
// }

// function validLength(formField,fieldLabel,length) {
// 	var result = true;
// 
// 	if (formField.value.length < length) {
// 		alert('xxx');
// 		formField.focus();
// 		result = false;
// 	}
// 
//   return result;
// }

function concat_date(hidden, dd, mm, yyyy) {
	gebid(hidden).value = gebid(dd).value + "/" + gebid(mm).value + "/" + gebid(yyyy).value ;
}

function validate () {
	// force selected values for DDLB
	options = gebid('CurrentSect').options ;
	for (var i=0; i < options.length; i++) {
		options[i].selected = true ;
	};
	options = gebid('CurrentFonc').options ;
	for (var i=0; i < options.length; i++) {
		options[i].selected = true ;
	};
	options = gebid('CheSect').options ;
	for (var i=0; i < options.length; i++) {
		options[i].selected = true ;
	};
	options = gebid('CheFonc').options ;
	for (var i=0; i < options.length; i++) {
		options[i].selected = true ;
	};
		
	if (!validRequired(gebid('Prenom'),label_3))
		return false ;

	if (!validRequired(gebid('Nom'),label_4))
		return false ;

	if (!validRequired(gebid('CodeP'),label_24))
		return false ;

	if (!validRequired(gebid('Ville'),label_25))
		return false ;

	if (!validEmail(gebid("Mail"),"Email",true))
		return false ;

	if (!validRequired(gebid("TelH"),label_19,true))
		return false ;
		
	// langue
	// if (!validRequired(gebid("LangNom1"),label_16))
	// 	return false ;
	
	if (!validRadioChecked(gebn("LangNom1[]"),label_16))
		return false;
    	
	if (gebid('other_languages_checkbox').checked) {
		if (!validRequired(gebid('LangTxt1'),label_16))
			return false ;
	}
	
	// if (gebid('LangNom1').selectedIndex==(gebid('LangNom1').options.length-1)) {
	// 	if (!validRequired(gebid('LangTxt1'),label_16))
	// 		return false ;
	// }
    

/*  if (!validRequired(gebid("bdd"),label_5))
        return false ;

    if (!validRequired(gebid("bdm"),label_5))
        return false ;

    if (!validRequired(gebid("bdy"),label_5))
        return false ;
*/


    if (!validRequired(gebid("Annonce"),label_7))
    	return false ;
	
	if (gebid('Annonce').selectedIndex==5 || gebid('Annonce').selectedIndex==6 || gebid('Annonce').selectedIndex==7) {
		if (!validRequired(gebid('AnnAutre'),label_8))
			return false ;
	}

	if (!validRequired(gebid("Refer"),label_6))
		return false ;
		
		
	// études secondaires
    // if (!validRadioChecked(gebn("EtuSecSel"),label_10))
    //         return false ;

	// études doctorat
    // if (!validRadioChecked(gebn("EtuDocSel"),label_11))
    //     return false ;

	// études bachelier
    // if (!validRadioChecked(gebn("EtuBacSel"),label_12))
    //     return false ;

	// études complémentaires
    // if (!validRadioChecked(gebn("EtuComSel"),label_13))
    //     return false ;

	// études master
    // if (!validRadioChecked(gebn("EtuMasSel"),label_14))
    //     return false ;

	// études autres
    // if (!validRadioChecked(gebn("EtuAutSel"),label_15))
    //     return false ;
		

	if (!validRequired(gebid("EnterpriseName"),label_21,true))
		return false ;	


	if (!validRequired(gebid("CurrentFonc"),label_20))
		return false ;
	
	// fonction recherchée
	if (!validRequired(gebid("CheFonc"),label_9))
		return false ;


		
	// langue
    // if (!validRequired(gebid("LangNom1"),label_16))
    //     return false ;
		
	// langue - écrit
    // if (!validRadioChecked(gebn("SelfEcrit1"),label_17))
    //     return false ;
		
	// langue - oral
    // if (!validRadioChecked(gebn("SelfOral1"),label_18))
    //     return false ;
 		

	
	// concat the dates
	concat_date('current_job_date_from', 'current_job_date_from_d', 'current_job_date_from_m', 'current_job_date_from_y') ;  
	concat_date('current_job_date_to', 'current_job_date_to_d', 'current_job_date_to_m', 'current_job_date_to_y') ;  
	    
	concat_date('DateNais', 'bdd', 'bdm', 'bdy') ;
	
/*  concat_date('DateNais', 'bdd', 'bdm', 'bdy') ;  
    concat_date('DateDispo', 'availd', 'availm', 'availy') ;    

    concat_date('ExpDe1', 'expfrom1d', 'expfrom1m', 'expfrom1y') ;  
    concat_date('ExpA1', 'expto1d', 'expto1m', 'expto1y') ; 

    concat_date('ExpDe2', 'expfrom2d', 'expfrom2m', 'expfrom2y') ;  
    concat_date('ExpA2', 'expto2d', 'expto2m', 'expto2y') ; 

    concat_date('ExpDe3', 'expfrom3d', 'expfrom3m', 'expfrom3y') ;  
    concat_date('ExpA3', 'expto3d', 'expto3m', 'expto3y') ; 

    concat_date('ExpDe4', 'expfrom4d', 'expfrom4m', 'expfrom4y') ;  
    concat_date('ExpA4', 'expto4d', 'expto4m', 'expto4y') ; 

    concat_date('ExpDe5', 'expfrom5d', 'expfrom5m', 'expfrom5y') ;  
    concat_date('ExpA5', 'expto5d', 'expto5m', 'expto5y') ; 

    concat_date('ExpDe6', 'expfrom6d', 'expfrom6m', 'expfrom6y') ;  
    concat_date('ExpA6', 'expto6d', 'expto6m', 'expto6y') ; 
*/		
	// change ddlb values
	options = gebid('CheSect').options ;
	for (var i=0; i < options.length; i++) {
		options[i].value = options[i].text ;
	};
	
	options = gebid('CheFonc').options ;
	for (var i=0; i < options.length; i++) {
		options[i].value = options[i].text ;
	};
		
	// // change ddlb values
	// options = gebid('CurrentSect').options ;
	// for (var i=0; i < options.length; i++) {
	// 	options[i].value = options[i].text ;
	// };
	// 
	// options = gebid('CurrentFonc').options ;
	// for (var i=0; i < options.length; i++) {
	// 	options[i].value = options[i].text ;
	// };
		
	return true ;
}

// *** end form validation


/* ================================================================
= by Thomas Balthazar - v0.2 - 2005/09/07		                  =
= 	changelog : when values pass from a <select> to another,	  =
= 	they are selected (.selected=true)							  =
=                                                                 =
= by Thomas Balthazar - v0.1 - 2005/09/02                         =
=                                                                 =
= This script allows you to pass values                           =
= between 2 multiselect.                                          =
=                                                                 =
= Usage :                                                         =
= 1. include this .js file in your .html page                     =
= 2. create 2 mutli-select, giving them id's                      =
=		e.g. <select id="from"> and <select id="to">              =
= 3. create 2 links  :                                            =
= 		>> : onclick="javascript:addSelectedValues('from','to')"  =
= 		<< : onclick="javascript:addSelectedValues('to','from')"  =
= 4. that's it                                                    =
=                                                                 =
================================================================ */


// ******************
// *** START PRIVATE
// ******************

// *** return an array containing the <option> of a multi <select>
// *** if aBlnSelectedOnly is true, only return selelcted <option>
function getOptions(aObjSelect,aBlnSelectedOnly) {
	var nbSelectedOptions = 0 ;
	var arrSelected = new Array();
	
	// *** get the nb of available option in the <select>
	nbSelectedOptions = aObjSelect.options.length ;
	
	// *** for each option, test if selected
	for(i=0;i<nbSelectedOptions;i++) {
		if(aBlnSelectedOnly) {
			if(aObjSelect.options[i].selected) {
				value = aObjSelect.options[i].value ;
				label = aObjSelect.options[i].text ;
				arrSelected[value] = label ;
			}
		}
		else {
			value = aObjSelect.options[i].value ;
			label = aObjSelect.options[i].text ;
			arrSelected[value] = label ;
		}
	}
		
	return arrSelected ;
}


// *** add an array of <option> to a <select> tag
function addOptionsTo(aArrValues,aArrAlready,aObjSelect) {
	for(key in aArrValues) {
		// *** if not already in
		if(aArrAlready[key]==undefined) {
			nextId = aObjSelect.options.length ; 
			aObjSelect.options[nextId] = new Option(aArrValues[key],key) ; 
			aObjSelect.options[nextId].selected = true ;
		}
	}
}


// *** remove an array of <option> from a <select> tag
function removeOptionsFrom(aArrOptions,aObjSelect) {
	var length 	= aObjSelect.options.length ;
	for(i=0;i<length;i++) {
		optionValue = aObjSelect.options[i].value  ;
		// *** if <option> is in the array -> remove it
		if(aArrOptions[optionValue]!=undefined) {
			aObjSelect.options[i] = null ;
			i-- ;
			length-- ;
		}
	}
}

// ******************
// *** END PRIVATE
// ******************



// ******************
// *** START PUBLIC
// ******************

// *** this is the main function to call
function	addSelectedValues(aFromId,aToId, max, lg) {
	var objFrom 			= document.getElementById(aFromId) ;
	var objTo 				= document.getElementById(aToId) ;
	var blnAll 				= false ;
	var blnOnlySelected 	= true ;
	var arrSelected, arrAlready ;
	
	// *** 1. get the selected <option> in the source <select>
	arrSelected	= getOptions(objFrom,blnOnlySelected) ;

	// *** 2. get all the <option> in the destination <select> 
	arrAlready = getOptions(objTo,blnAll) ;
	
	// calculate nb items
	nb_items = 0 ;
	for (var i=0; i < arrSelected.length; i++) {
		if(arrSelected[i]!=undefined)
			nb_items++ ;
	};
	for (var i=0; i < arrAlready.length; i++) {
		if(arrAlready[i]!=undefined)
			nb_items++ ;
	};
	
	// check nb values in destination
	if(nb_items > max) {
		if(lg=="fr") {
			alert("Vous ne pouvez sélectionner que "+max+" éléments.") ;
		}
		else if(lg=="en") {
			alert("Please select "+max+" items max.") ;
		}
		else if(lg=="nl") {
			alert("Gelieve "+max+" items max selecteren.") ;
		}
	}
	else {
		// *** 3. add the selected <option> in the destination <select>
		addOptionsTo(arrSelected,arrAlready,objTo) ;

		// *** 4. remove selected <option> from the source <select>
		removeOptionsFrom(arrSelected,objFrom) ;
	}
} 

// ******************
// *** END PUBLIC
// ******************
