var month = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var alertCountChars = new Array(0,0);
var alertResExpCC = new Array(0,0);
var maxChars = new Array(1000,3000,1000,1000,400);
var labelChars = new Array('additional information','research interest',
			   'first level additional information','second level additional information',
			   'computer competence');
var experienceIndex = 0;
var experienceCount = 1;
var languageIndex = 0;
var languageCount = 1;
var publicationIndex = 0;
var publicationCount = 1;
var abstractIndex = 0;
var abstractCount = 1;

// not mandatory
//		      nomenclature2:'exact nomenclature of Second Level Degree',
//		      fieldsubject2:'field subject of Second Level Degree',
//		      finalgrade2:'final grade of Second Level Degree',
//		      additional_information:'additional information',
//		       countrydegree2:'country of Second Level Degree'
var mandatoryText = { surname:'surname',name:'name',
		      email:'email',
		      borncity:'place of birth',
		      address:'address in Home Address',
		      number:'number in Home Address',
		      town:'town in Home Address',
		      zip:'zip in Home Address',
		      countrycode:'country code of Phone Number',
		      areacode:'areacode of Phone Number',
		      phonenumber:'number of Phone Number',
		      degreetype:'degree type',
		      nomenclature1:'exact nomenclature of First Level Degree',
		      fieldsubject1:'field/subject of First Level Degree',
		      finalgrade1:'final grade of First Level Degree',
		      research_interest:'research interest',
		      native_speaker:'native speaker',
		      computer_competence:'computer competence',
		      name_referee1:'name of Referee 1',title_referee1:'title of Referee 1',
		      affiliation_referee1:'affiliation of Referee 1',email_referee1:'email of Referee 1'
};
/*
		      name_referee2:'name of Referee 2',title_referee2:'title of Referee 2',
		      affiliation_referee2:'affiliation of Referee 2',email_referee2:'email of Referee 2'
*/
var mandatorySelect = {apply_for:'\'apply for\' field',gender:'gender',
		       nationality:'nationality',country:'country of Home Address',
		       howdidyoulearn:'\'how did you learn\' field',
		       countrydegree1:'country of First Level Degree',
		       language_0:'first language',
		       reading_language_0:'reading skills of first language (other than native)',
		       writing_language_0:'writing skills of first language (other than native)',		       
		       verbal_language_0:'verbal skills of first language (other than native)'
};


function checkMandatory() {
  var o;
  for (var i in mandatoryText) {
    o = eval('document.myForm.'+i);
    o.value = o.value.replace(/^ +/,'');
    o.value = o.value.replace(/ +$/,'');
    if (o.value == '') {
      alert('please, fill ' + mandatoryText[i]);
      o.focus();
      return false;
    }
  }

  for (var i in mandatorySelect) {
    o = eval('document.myForm.'+i);
    if (o.value) continue;
    alert('please, select '+ mandatorySelect[i]);
    o.focus();
    return false;
  }

  if (document.myForm.apply_for.value == '2') {
      var sel = false;
      for (var i=0;i<document.myForm.area.options.length;i++) {
	  if (document.myForm.area.options[i].selected) {
	      sel = true;
	      break;
	  }
      }

    if (!sel) {
      alert('please, select tematic area field');
      return false;
    }
  }
  
  if (document.myForm.howdidyoulearn.value == '6') {
    o = document.myForm.other;
    o.value = o.value.replace(/^ +/,'');
    o.value = o.value.replace(/ +$/,'');
    if (o.value == '') {
      alert('please, fill ' + 'other field');
      o.focus();
      return false;
    }
  }
  return true;
}

function checkNumber(obj,label) {
  var v = obj.value;
  v = v.replace(/ /g,"");
  obj.value = v;

  if (isNaN(v)) {
    alert(label + ": only numbers are permitted");
    obj.focus();
    return false;
  }
  return true;
}

function checkEmail (obj,label) {
  var v = obj.value;
  v = v.replace(/^ +/,'');
  v = v.replace(/ +$/,'');
  obj.value = v;
  if (v == '') return true;

  // email address validation - Sandeep V. Tamhankar (stamhankar@hotmail.com)
  // for this code thanks to http://javascript.internet.com/link-us.html
  var emailStr = obj.value;
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);
  if (matchArray==null) {
    alert(label + ": the address seems incorrect (check @ and .'s)");
    obj.focus();
    return false;
  }
  var user=matchArray[1];
  var domain=matchArray[2];

  // See if "user" is valid 
  if (user.match(userPat)==null) {
  // user is not valid
    alert(label + ": the username doesn't seem to be valid.");
    obj.focus();
    return false;
  }

  var IPArray=domain.match(ipDomainPat);
  if (IPArray!=null) {
    // this is an IP address
    for (var i=1;i<=4;i++) {
      if (IPArray[i]>255) {
	alert(label + ": destination IP address is invalid");
	obj.focus();
	return false;
      }
    }
    return true;
  }

  // Domain is symbolic name
  var domainArray=domain.match(domainPat);
  if (domainArray==null) {
    alert(label + ": the domain name doesn't seem to be valid.");
    obj.focus();
    return false;
  }
  
  // domain name seems valid, but now make sure that it ends in a
  //  three-letter word (like com, edu, gov) or a two-letter word,
  //   representing country (uk, nl), and that there's a hostname preceding 
  //   the domain or country. 
  
  // Now we need to break up the domain to get a count of how many atoms
  // it consists of. 
  var atomPat=new RegExp(atom,"g");
  var domArr=domain.match(atomPat);
  var len=domArr.length;
  if (domArr[domArr.length-1].length<2 || 
      domArr[domArr.length-1].length>4) {
    // the address must end in a two letter or three letter word.
    
    alert(label + ": the address must end in a three/four-letter domain, or two letter country.");
    obj.focus();
    return false;
  }

  // Make sure there's a host name preceding the domain.
  if (len<2) {
    var errStr=label + ": missing a hostname";
    alert(errStr);
    obj.focus();
    return false;
  }

  // If we've gotten this far, everything's valid!
  return true;
}

function checkDate(d,m,y,label) {
  if (y % 4) month[1] = 28;
  else month[1] = 29;
  
  if (d > month[m-1]) {
    alert(label + ': uncorrect date');
    return false;
  }

  return true;
}

function checkExperience() {
  var tb = gEl('experienceTblID');
  var c = 0;
  for (var i=0;i<tb.rows.length-1;i+=3) {
    c++;

    var fm = parseInt(tb.rows[i+1].cells[1].childNodes[0].value);
    var fy = parseInt(tb.rows[i+1].cells[2].childNodes[0].value);
    var tm = parseInt(tb.rows[i+1].cells[4].childNodes[0].value);
    var ty = parseInt(tb.rows[i+1].cells[5].childNodes[0].value);

    var de = tb.rows[i+2].cells[1].childNodes[0].value;
    de = de.replace(/^ +/,'');
    de = de.replace(/ +$/,'');
    if (fm && fy && tm && ty && de) {
      if ((ty < fy) || (ty == fy && tm < fm)) {
	alert('Research experience ['+c+']: uncorrect period');
	tb.rows[i+1].cells[1].childNodes[0].focus();
	return false;
      }
      if (de.length > 1000) {
	alert('description of Research experience ['+c+']: '+de.length+'\n\nMaximum 1000 characters, including spaces, are permitted');
	tb.rows[i+2].cells[1].childNodes[0].focus();
	return false;
      }
      continue;
    }
    
    alert('please, complete Research experience ['+c+']');
    tb.rows[i+2].cells[1].childNodes[0].focus();
    return false;
  }
  return true;
}


function checkAbstractPublication(tblID) {
  var tb = gEl(tblID);
  var c = 0;
  for (var i=0;i<tb.rows.length-1;i++) {
    c++;
    var de = tb.rows[i].cells[1].childNodes[0].value;
    de = de.replace(/^ +/,'');
    de = de.replace(/ +$/,'');
    if (de) continue;
    var lb = tb.rows[i].cells[0].innerHTML;
    alert('please, complete ' + lb);
    tb.rows[i].cells[1].childNodes[0].focus();
    return false;
  }
  return true;
}

function checkLanguage() {
    var tb = gEl('languageTblID');
    var c = 0;
    for (var i=5;i<tb.rows.length-1;i+=4) {
	var lang = tb.rows[i].cells[1].childNodes[0].value;
	lang = lang.replace(/^ +/,'');
	lang = lang.replace(/ +$/,'');
	var fld = tb.rows[i].cells[0].innerHTML;
	if (lang == '') {
	    alert('please, fill field '+fld);
	    tb.rows[i].cells[1].childNodes[0].focus();
	    return false;
	}
	var o = tb.rows[i+1].cells[1].childNodes[0];
	if (!o.value) {
	    alert('please, fill reading skills of ' + fld);
	    o.focus();
	    return false;
	}
	o = tb.rows[i+2].cells[1].childNodes[0];
	if (!o.value) {
	    alert('please, fill writing skills of ' + fld);
	    o.focus();
	    return false;
	}
	o = tb.rows[i+3].cells[1].childNodes[0];
	if (!o.value) {
	    alert('please, fill verbal skills of ' + fld);
	    o.focus();
	    return false;
	}
	
    }
    
}

function checkForm() {  
  var f = document.myForm;
  if (checkMandatory() == false) 
    return false;

  // birthdate
  if (f.birthD.value && f.birthM.value && f.birthY.value) {
    if (checkDate(f.birthD.value,f.birthM.value,f.birthY.value,'date of birth') == false) {
      f.birthD.focus();
      return false;
    }
  }
  else {
    alert('please, fill date of birth');
    f.birthD.focus();
    return false;
  }
  // graduation date
  if (f.graduationD.value && f.graduationM.value && f.graduationY.value) {
    if (checkDate(f.graduationD.value,f.graduationM.value,f.graduationY.value,'date of graduation') == false) {
      f.graduationD.focus();
      return false;
    }
  }
  else {
    alert('please, fill date of graduation');
    f.graduationD.focus();
    return false;
  }

  if (checkEmail(eval(f.email),'email') == false) {
    f.email.focus();
    return false;
  }
  if (!(f.cf.value || f.passport.value)) {
      alert('please, fill fiscal code or passport number');
      f.cf.focus();
      return false;
  }
  

  if (checkNumber(eval(f.countrycode),'country code') == false) {
    f.countrycode.focus();
    return false;
  }
  if (checkNumber(eval(f.areacode),'area code') == false) {
    f.areacode.focus();
    return false;
  }
  if (checkNumber(eval(f.phonenumber),'phone number') == false) {
    f.phonenumber.focus();
    return false;
  }

  if (checkNumber(eval(f.mobilecountrycode),'mobile country code') == false) {
    return false;
  }
  if (checkNumber(eval(f.mobileareacode),'mobile area code') == false) {
    return false;
  }
  if (checkNumber(eval(f.mobilephonenumber),'mobile phone number') == false) {
    return false;
  }

  // graduation date First and Second Level 
  if (f.graduationD1.value && f.graduationM1.value && f.graduationY1.value) {
    if (checkDate(f.graduationD1.value,f.graduationM1.value,f.graduationY1.value,'date of graduation of First Level Degree') == false) {
      f.graduationD1.focus();
      return false;
    }
  }
  else {
    alert('please, fill date of graduation of First Level Degree');
    f.graduationD1.focus();
    return false;
  }

  if (f.graduationD2.value && f.graduationM2.value && f.graduationY2.value) {
    if (checkDate(f.graduationD2.value,f.graduationM2.value,f.graduationY2.value,'date of graduation of Second Level Degree') == false) {
      f.graduationD2.focus();
      return false;
    }
  }
  // second level degree not mandatory
  //  else {
  //    alert('please, fill date of graduation of Second Level Degree');
  //    f.graduationD2.focus();
  //return false;
  //}

  if (checkExperience() == false) return false;
  if (checkLanguage() == false) return false;
  // publication and abstract not mandatory
  //  if (checkAbstractPublication('publicationTblID') == false) return false;
  //  if (checkAbstractPublication('abstractTblID') == false) return false;

  for (i in alertCountChars) 
    alertCountChars[i] = 0;
  if (charsCount(0) == false) { f.additional_information.focus(); return false; }
  if (charsCount(1) == false) { f.research_interest.focus(); return false; }

  if (checkEmail(eval(f.email_referee1),'email of Referee 1') == false) {
    f.email_referee1.focus();
    return false;
  }
  if (checkEmail(eval(f.email_referee2),'email of Referee 2') == false) {
    f.email_referee2.focus();
    return false;
  }

  document.body.scrollTop = 0;
  gEl('previewID').style.display = 'block';
  gEl('mainID').style.display = 'none';
  buildPreview();
  f.last_publication_index.value = publicationIndex;
  f.last_experience_index.value = experienceIndex;
  f.last_abstract_index.value = abstractIndex;
  f.last_language_index.value = languageIndex;

  return false;
  f.submit();
}

function buildPreview() {
  var f = document.myForm;
  if (f.apply_for.value == '2') {
      var a = new Array();
      for (var i=0;i<f.area.options.length;i++) {
	  if (f.area.options[i].selected) 
	      a.push(f.area.options[i].text);
      }
      a = a.join(',');
    gEl('pApplyID').innerHTML = f.apply_for.options[f.apply_for.selectedIndex].text + '<br>Area(s): ' + a;
    //      f.area.options[f.area.selectedIndex].text;
    gEl('pApplyID').parentNode.childNodes[0].innerHTML = 'apply for';
  }
  else {
    gEl('pApplyID').innerHTML = f.apply_for.options[f.apply_for.selectedIndex].text;
    gEl('pApplyID').parentNode.childNodes[0].innerHTML = 'apply for';
  }

  gEl('pNameID').innerHTML = f.name.value + ', ' + f.surname.value;
  gEl('pGenderID').innerHTML = f.gender.options[f.gender.selectedIndex].text;
  gEl('pBirthID').innerHTML = f.nationality.options[f.nationality.selectedIndex].text + ', ' +
    f.birthD.value + '.' +  f.birthM.value + '.' + f.birthY.value;
  gEl('pPlaceBirthID').innerHTML = f.borncity.value;
  gEl('pFiscalID').innerHTML = f.cf.value;
  gEl('pPassaportID').innerHTML = f.passport.value;
  gEl('pDegreeID').innerHTML = f.degreetype.value + ', ' +
    f.graduationD.value + '.' +  f.graduationM.value + '.' + f.graduationY.value;
  //  gEl('pOtherDegreeID').innerHTML = f.otherdegree.value;
  gEl('pEmailID').innerHTML = f.email.value;
  gEl('pAddressID').innerHTML = f.address.value + ', ' + f.number.value;
  gEl('pCountryID').innerHTML = f.town.value + ', ' + f.zip.value + ', ' + f.country.options[f.country.selectedIndex].text;
  gEl('pPhoneID').innerHTML = f.countrycode.value + ', ' + f.areacode.value + ', ' + f.phonenumber.value;
  gEl('pMobileID').innerHTML = f.mobilecountrycode.value + ', ' + f.mobileareacode.value + ', ' + f.mobilephonenumber.value;
  if (f.howdidyoulearn.value == '6')  // other
    gEl('pLearnID').innerHTML = 'other: ' + f.other.value;
  else
    gEl('pLearnID').innerHTML = f.howdidyoulearn.options[f.howdidyoulearn.selectedIndex].text;
  
  gEl('pNomencl1ID').innerHTML = f.nomenclature1.value;
  gEl('pField1ID').innerHTML = f.fieldsubject1.value;
  gEl('pCountry1ID').innerHTML = f.countrydegree1.options[f.countrydegree1.selectedIndex].text + ', ' +
    f.graduationD1.value + '.' +  f.graduationM1.value + '.' + f.graduationY1.value;
  gEl('pGrade1ID').innerHTML = f.finalgrade1.value;
  gEl('pInst1ID').innerHTML = f.inst1.value;
  gEl('pAdditionalInfo1ID').innerHTML = f.additional_info1.value;

  if (f.nomenclature2.value && f.fieldsubject2.value && f.countrydegree2.selectedIndex && 
      f.graduationD2.selectedIndex && f.graduationM2.selectedIndex && f.graduationY2.selectedIndex) {
    gEl('pNomencl2ID').innerHTML = f.nomenclature2.value;
    gEl('pField2ID').innerHTML = f.fieldsubject2.value;
    gEl('pCountry2ID').innerHTML = f.countrydegree2.options[f.countrydegree2.selectedIndex].text + ', ' +
      f.graduationD2.value + '.' +  f.graduationM2.value + '.' + f.graduationY2.value;
    gEl('pGrade2ID').innerHTML = f.finalgrade2.value;
    gEl('pInst2ID').innerHTML = f.inst2.value;
    gEl('pAdditionalInfo2ID').innerHTML = f.additional_info2.value;
    gEl('pSecondLevelDegree').style.display = 'block';

  }
  else {
    gEl('pSecondLevelDegree').style.display = 'none';
  }

  previewExperience();
  previewAbstract();
  previewPublication();
  previewCompetence();

  if (f.additional_information.value == '') {
    gEl('pAdditionalInfo').style.display = 'none';
    gEl('pAddInfoID').innerHTML = '';
  }
  else {
    gEl('pAddInfoID').innerHTML = f.additional_information.value;
    gEl('pAdditionalInfo').style.display = 'block';
  }
  gEl('pResInterestID').innerHTML = f.research_interest.value;

  gEl('pRef1NameID').innerHTML = f.name_referee1.value;
  gEl('pRef1TitleID').innerHTML = f.title_referee1.value;
  gEl('pRef1AffiliationID').innerHTML = f.affiliation_referee1.value;
  gEl('pRef1EmailID').innerHTML = f.email_referee1.value;

  if (f.name_referee2.value == '') {
      gEl('ref2').style.display = 'none';
  }
  else {
      gEl('ref2').style.display = 'block';
      gEl('pRef2NameID').innerHTML = f.name_referee2.value;
      gEl('pRef2TitleID').innerHTML = f.title_referee2.value;
      gEl('pRef2AffiliationID').innerHTML = f.affiliation_referee2.value;
      gEl('pRef2EmailID').innerHTML = f.email_referee2.value;
  }
}

function previewExperience () {
  var f = document.myForm;  
  var t = gEl('experienceTblID');
  gEl('pFromToID').innerHTML =  f.experienceFromM_0.options[f.experienceFromM_0.selectedIndex].text + '.' +
    f.experienceFromY_0.options[f.experienceFromY_0.selectedIndex].text + ', ' + 
    f.experienceToM_0.options[f.experienceToM_0.selectedIndex].text + '.' + 
    f.experienceToY_0.options[f.experienceToY_0.selectedIndex].text;
    
  gEl('pDescrID').innerHTML =  f.experienceDescr_0.value;
  var c = 0;
  //  var tp = gEl('pDescrID').parentNode.parentNode;
  var tp = gEl('pResExp');
  for (var i=tp.rows.length;i>2;i--) {
      tp.removeChild(tp.rows[i-1]);
  }

  if (t.rows.length > 4) {
    for (var i=3;i<t.rows.length-1;i+=3) {
      c++;
      var r = document.createElement('TR');
      var c1 = document.createElement('TD');
      var c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = '&nbsp;';
      c2.innerHTML = '&nbsp;';
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);
      
      r = document.createElement('TR');
      c1 = document.createElement('TD');
      c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = 'from, to';
      c2.innerHTML = t.rows[i+1].cells[1].childNodes[0].options[t.rows[i+1].cells[1].childNodes[0].selectedIndex].text +
	'.'  + t.rows[i+1].cells[2].childNodes[0].options[t.rows[i+1].cells[2].childNodes[0].selectedIndex].text + 
	', ' + t.rows[i+1].cells[4].childNodes[0].options[t.rows[i+1].cells[4].childNodes[0].selectedIndex].text + 	
	'.'  + t.rows[i+1].cells[5].childNodes[0].options[t.rows[i+1].cells[5].childNodes[0].selectedIndex].text;
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);

      r = document.createElement('TR');
      c1 = document.createElement('TD');
      c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = 'description';
      c2.innerHTML = t.rows[i+2].cells[1].childNodes[0].value;
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);
    }
  }
}

function previewAbstract () {
  var f = document.myForm;  
  var t = gEl('abstractTblID');
  var flag = false;

  if (f.abstract_0.value != '') flag = true;
  gEl('pAbstractDescrID').innerHTML =  f.abstract_0.value;
    
  var c = 0;
  var tp = gEl('pAbstractDescrID').parentNode.parentNode;

  for (var i=tp.rows.length;i>1;i--) 
    tp.removeChild(tp.rows[i-1]);

  if (t.rows.length > 1) {
    for (var i=1;i<t.rows.length-1;i++) {
      if (t.rows[i].cells[1].childNodes[0].value == '') continue;
      flag = true;
      c++;
      var r = document.createElement('TR');
      var c1 = document.createElement('TD');
      var c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = '&nbsp;';
      c2.innerHTML = '&nbsp;';
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);

      r = document.createElement('TR');
      c1 = document.createElement('TD');
      c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = 'abstract';
      c2.innerHTML = t.rows[i].cells[1].childNodes[0].value;
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);

    }
  }
  if (flag) 
    gEl('pAbstracts').style.display = 'block';  
  else 
    gEl('pAbstracts').style.display = 'none';  
}

function previewPublication () {
  var f = document.myForm;  
  var t = gEl('publicationTblID');
  var flag = false;

  if (f.publication_0.value != '') flag = true;
  gEl('pPublDescrID').innerHTML =  f.publication_0.value;
  
  var c = 0;
  var tp = gEl('pPublDescrID').parentNode.parentNode;
  for (var i=tp.rows.length;i>1;i--) 
      tp.removeChild(tp.rows[i-1]);

  if (t.rows.length > 1) {
    for (var i=1;i<t.rows.length-1;i++) {
      if (t.rows[i].cells[1].childNodes[0].value == '') continue;
      flag = true;
      c++;
      var r = document.createElement('TR');
      var c1 = document.createElement('TD');
      var c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = '&nbsp;';
      c2.innerHTML = '&nbsp;';
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);

      r = document.createElement('TR');
      c1 = document.createElement('TD');
      c2 = document.createElement('TD');
      c1.className = 'pLabel';
      c1.innerHTML = 'publication';
      c2.innerHTML = t.rows[i].cells[1].childNodes[0].value;
      r.appendChild(c1);
      r.appendChild(c2);
      tp.appendChild(r);

    }
  }      

  if (flag) 
    gEl('pPublication').style.display = 'block';  
  else 
    gEl('pPublication').style.display = 'none';  

}

function previewCompetence() {
    var f = document.myForm;  
    gEl('pNativeSpeakerID').innerHTML = f.native_speaker.value;
    gEl('pLanguageID').innerHTML = f.language_0.value;
    gEl('pReadingID').innerHTML = f.reading_language_0.value;
    gEl('pWritingID').innerHTML = f.writing_language_0.value;
    gEl('pVerbalID').innerHTML = f.verbal_language_0.value;

    var t = gEl('languageTblID');
    var tb = gEl('pLanguageTblID');
    if (t.rows.length > 6) {
	for (var i=5;i<t.rows.length-1;i+=4) {
	    var r = document.createElement('TR');
	    var c1 = document.createElement('TD');
	    var c2 = document.createElement('TD');
	    c1.className = 'pLabel';
	    c1.innerHTML = 'language';
	    c2.innerHTML = t.rows[i].childNodes[1].childNodes[0].value;
	    r.appendChild(c1);
	    r.appendChild(c2);
	    tb.appendChild(r);
	    r = document.createElement('TR');
	    c1 = document.createElement('TD');
	    c2 = document.createElement('TD');
	    c1.className = 'pLabel';
	    c1.innerHTML = 'reading, writing, verbal skills';
	    c2.innerHTML = t.rows[i+1].childNodes[1].childNodes[0].value + ', ' +
		t.rows[i+2].childNodes[1].childNodes[0].value + ', ' +
		t.rows[i+3].childNodes[1].childNodes[0].value;
	    r.appendChild(c1);
	    r.appendChild(c2);
	    tb.appendChild(r);
	}
    }

    gEl('pComputerCompetenceID').innerHTML = f.computer_competence.value;
}


function addAbstract() {
  abstractIndex++;
  abstractCount++;
  var newIndex = parseInt(abstractIndex);

  var lr = gEl('rowButtonAbstract');

  var r = document.createElement('TR');
  var c1 = document.createElement('TD');
  var c2 = document.createElement('TD');
  var c3 = document.createElement('TD');
  c1.innerHTML = 'abstract ' + parseInt(abstractCount);
  c1.style.width = '110px';
  c1.className = 'label';
  c1.style.whiteSpace = 'nowrap';
  c2.innerHTML = '<textarea onFocus="setFocus(event)" onBlur="unsetFocus(event)" style="width:360px;height:40px;" name="abstract_'+newIndex+'"></textarea>';
  c3.className = 'button';
  c3.innerHTML = '<a onClick="removeAbstract(event);return false;" title="remove abstract" href="#"><img border="0" src="img/del.gif"></a>';
  r.appendChild(c1);
  r.appendChild(c2);
  r.appendChild(c3);
  gEl('abstractTblID').insertBefore(r,lr);
  return false;
}

function removeAbstract(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;

  var r = o.parentNode.parentNode.parentNode;
  if (r.cells[1].childNodes[0].value != '') {
    var ans = confirm('Abstract text will be lost.\nAre you sure to remove?');
    if (!ans) return false;
  }

  var t = gEl('abstractTblID');
  t.removeChild(o.parentNode.parentNode.parentNode);

  var c = 1;
  for (var i=1;i<t.rows.length-1;i++) {
    c++;
    t.rows[i].cells[0].innerHTML = 'abstract ' + c;
  }

  abstractCount--;
  return false;
}

function addPublication() {
  publicationIndex++;
  publicationCount++;
  var newIndex = parseInt(publicationIndex);

  var lr = gEl('rowButtonPublication');

  var r = document.createElement('TR');
  var c1 = document.createElement('TD');
  var c2 = document.createElement('TD');
  var c3 = document.createElement('TD');
  c1.innerHTML = 'publication ' + parseInt(publicationCount);
  c1.style.width = '110px';
  c1.className = 'label';
  c1.style.whiteSpace = 'nowrap';
  c2.innerHTML = '<textarea onFocus="setFocus(event)" onBlur="unsetFocus(event)" style="width:360px;height:40px;" name="publication_'+newIndex+'"></textarea>';
  c3.className = 'button';
  c3.innerHTML = '<a onClick="removePublication(event);return false;" title="remove publication" href="#"><img border="0" src="img/del.gif"></a>';
  r.appendChild(c1);
  r.appendChild(c2);
  r.appendChild(c3);
  gEl('publicationTblID').insertBefore(r,lr);
  return false;
}

function removePublication(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;
  var r = o.parentNode.parentNode.parentNode;
  if (r.cells[1].childNodes[0].value != '') {
    var ans = confirm('Publication text will be lost.\nAre you sure to remove?');
    if (!ans) return false;
  }

  var t = gEl('publicationTblID');
  t.removeChild(o.parentNode.parentNode.parentNode);
  var c = 1;
  for (var i=1;i<t.rows.length-1;i++) {
    c++;
    t.rows[i].cells[0].innerHTML = 'publication ' + c;
  }

  publicationCount--;
  return false;
}

function addExperience() {
  experienceIndex++;
  experienceCount++;
  var newIndex = parseInt(experienceIndex);


  var r = document.createElement('TR');
  var c1 = document.createElement('TD');
  c1.innerHTML = '&nbsp;';
  c1.className = 'label';
  c1.style.width = '60px';
  //c1.setAttribute('style','width:60px;');
  //c1.setAttribute('class','label');
  var c2 = document.createElement('TD');
  c2.setAttribute('colSpan','6'); // ie case sensitive!!
  c2.setAttribute('class','label');
  c2.setAttribute('style','text-align:center');
  c2.innerHTML = '&nbsp;';//'-- experience ' + parseInt(newIndex+1) + ' --';
  r.appendChild(c1);  
  r.appendChild(c2);  
  var lr = gEl('rowButtonExperience');
  gEl('experienceTblID').insertBefore(r,lr);

  r = document.createElement('TR');
  c1 = document.createElement('TD');
  c2 = document.createElement('TD');
  var c3 = document.createElement('TD');
  var c4 = document.createElement('TD');
  var c5 = document.createElement('TD');
  var c6 = document.createElement('TD');
  var c7 = document.createElement('TD');
  c1.innerHTML = 'from';
  c1.style.width = '60px';
  c1.className = 'label';
  //c1.setAttribute('style','width:60px;');
  //c1.setAttribute('class','label');
  c2.innerHTML = createMonthSelect('experienceFromM_'+newIndex);
  c3.innerHTML = createYearSelect('experienceFromY_'+newIndex);
  c4.innerHTML = 'to';
  //c4.setAttribute('style','width:60px;');
  //c4.setAttribute('class','label');
  c4.style.width = '60px';
  c4.className = 'label';
  c5.innerHTML = createMonthSelect('experienceToM_'+newIndex);
  c6.innerHTML = createYearSelect('experienceToY_'+newIndex);
  c7.innerHTML = '<a onClick="removeExperience(event);return false;" title="remove experience" href="#"><img border="0" src="img/del.gif"></a>';
  c7.className = 'button';
  r.appendChild(c1);
  r.appendChild(c2);
  r.appendChild(c3);
  r.appendChild(c4);
  r.appendChild(c5);
  r.appendChild(c6);
  r.appendChild(c7);
  gEl('experienceTblID').insertBefore(r,lr);

  r = document.createElement('TR');
  c1 = document.createElement('TD');
  c1.innerHTML = 'description';
  //c1.setAttribute('style','width:60px;');
  //c1.setAttribute('class','label');
  c1.className = 'label';
  c1.style.verticalAlign = 'top';
  c1.style.width = '60px';
  c2 = document.createElement('TD');
  c2.setAttribute('colSpan','6');
  c2.innerHTML = '<textarea onKeyUp="charsResEspCount('+newIndex+')" id="taExp'+newIndex+'" onFocus="setFocus(event)" onBlur="unsetFocus(event)" style="width:400px;height:60px;" name="experienceDescr_'+newIndex+'"></textarea><div class="maxchars" style="width:400px;"><span id="charsResNum'+newIndex+'"> 0</span> character(s) [MAX 1000]</div>';
  r.appendChild(c1);
  r.appendChild(c2);  
  gEl('experienceTblID').insertBefore(r,lr);
  return false;
}

function removeExperience(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;

  var i = o.parentNode.parentNode.parentNode.rowIndex;
  var t = gEl('experienceTblID');

  if (t.rows[i].cells[1].childNodes[0].value ||
      t.rows[i].cells[2].childNodes[0].value ||
      t.rows[i].cells[4].childNodes[0].value ||
      t.rows[i].cells[5].childNodes[0].value ||
      t.rows[i+1].cells[1].childNodes[0].value) {
    var ans = confirm('Research Experience data will be lost.\nAre you sure to remove?');
    if (!ans) return false;
  }


  t.removeChild(t.rows[i+1]);
  t.removeChild(t.rows[i]);
  t.removeChild(t.rows[i-1]);
  experienceCount--;
  return false;
}


function addLanguage() {
  languageIndex++;
  languageCount++;
  var newIndex = parseInt(languageIndex);

  var r = document.createElement('TR');
  var c1 = document.createElement('TD');
  c1.innerHTML = 'language '+languageCount;
  c1.className = 'label';
  c1.style.width = '60px';
  var c2 = document.createElement('TD');
  var span = document.createElement('SPAN');
  var input = document.createElement('INPUT');
  input.setAttribute('type','text');
  input.setAttribute('name','language_'+newIndex);
  c2.appendChild(input);
  span.innerHTML = '<a onClick="removeLanguage(event);return false;" title="remove language" href="#"><img border="0" src="img/del.gif"></a>';
  c2.appendChild(span);


  r.appendChild(c1);  
  r.appendChild(c2);  
  var lr = gEl('rowButtonLanguage');
  gEl('languageTblID').insertBefore(r,lr);


  r = document.createElement('TR');
  c1 = document.createElement('TD');
  c1.innerHTML = 'reading skills';
  c1.className = 'label';
  c2 = document.createElement('TD');
  c2.innerHTML = createLanguageLevel('reading_language_'+newIndex);
  r.appendChild(c1);
  r.appendChild(c2);
  gEl('languageTblID').insertBefore(r,lr);

  r = document.createElement('TR');
  c1 = document.createElement('TD');
  c1.innerHTML = 'writing skills';
  c1.className = 'label';
  c2 = document.createElement('TD');
  c2.innerHTML = createLanguageLevel('writing_language_'+newIndex);
  r.appendChild(c1);
  r.appendChild(c2);
  gEl('languageTblID').insertBefore(r,lr);

  r = document.createElement('TR');
  c1 = document.createElement('TD');
  c1.innerHTML = 'verbal skills';
  c1.className = 'label';
  c2 = document.createElement('TD');
  c2.innerHTML = createLanguageLevel('verbal_language_'+newIndex);
  r.appendChild(c1);
  r.appendChild(c2);
  gEl('languageTblID').insertBefore(r,lr);

  return false;
}


function removeLanguage(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;

  var i = o.parentNode.parentNode.parentNode.parentNode.rowIndex;
  var t = gEl('languageTblID');

  var ans = confirm('Language data will be lost.\nAre you sure to remove?');
  if (!ans) return false;


  t.removeChild(t.rows[i]);
  t.removeChild(t.rows[i]);
  t.removeChild(t.rows[i]);
  t.removeChild(t.rows[i]);
  languageCount--;

  if (t.rows.length > 6) {
      var cnt = 1;
      for (var i=5;i<t.rows.length-1;i+=4) {
	  cnt++;
	  var c = t.rows[i].cells[0].innerHTML = 'language ' + cnt;
      }
  }

  return false;
}


function createLanguageLevel (nome) {
  return '<select onFocus="setFocus(event)" onBlur="unsetFocus(event)" name="'+nome+'"><option value="">-- please select --</option><option value="basic">basic</option><option value="good">good</option><option value="excellent">excellent</option></select>';
}


function createMonthSelect (nome) {
  return '<select onFocus="setFocus(event)" onBlur="unsetFocus(event)" class="date" name="'+nome+'"><option value="">--</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option></select>';
}

function createYearSelect (nome) {
  return '<select onFocus="setFocus(event)" onBlur="unsetFocus(event)" class="date" name="'+nome+'"><option value="">--</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option><option value="2002">2002</option><option value="2003">2003</option><option value="2004">2004</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option><option value="2008">2008</option></select>';
}

function changeApply (ev) {
  ev = fixIEevent(ev);
  var o = ev.target;
  if (o.value == '2') {
    gEl('molecularBiolID').style.display = 'block';
  }
  else {
    gEl('molecularBiolID').style.display = 'none';
  }
}

function changeHowDid (ev) {
  ev = fixIEevent(ev);
  var o = ev.target;
  if (o.value == '6') {
    gEl('otherID').style.display = 'block';
  }
  else {
    gEl('otherID').style.display = 'none';
  }
}

function charsCount(i) {
  var a = gEl('taID'+i).value;
  gEl('charsNum'+i).innerHTML = a.length;
  if ((a.length > maxChars[i]) && (alertCountChars[i] == 0)) {
	alert(labelChars[i]+': maximum '+maxChars[i]+' characters, including spaces, are permitted');
	alertCountChars[i] = 1;
	return false;
  }
  else { 
    if (a.length <= maxChars[i]) {
      alertCountChars[i] = 0;
      return true;
    }
    else 
      return false;
  }
}


function charsResEspCount(i) {
  var a = gEl('taExp'+i).value;
  gEl('charsResNum'+i).innerHTML = a.length;
  if ((a.length > 1000) && (alertResExpCC[i] == 0)) {
	alert('description: maximum 1000 characters, including spaces, are permitted');
	alertResExpCC[i] = 1;
	return false;
  }
  else { 
    if (a.length <= 1000) {
      alertResExpCC[i] = 0;
      return true;
    }
    else 
      return false;
  }
}



function setFocus(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;
  o.style.backgroundColor = '#EDEDED';//'#FFF8DC';//'#F0FFFF';//'#F5F5DC';//'#F0E68C';//'#EEE8AA';
}

function unsetFocus(ev) {
  ev = fixIEevent(ev);
  var o = ev.target;
  o.style.backgroundColor = '#FFFFFF';
}

function fixIEevent(ev) {
  if(typeof ev=="undefined")ev=window.event;
  if(typeof ev.target=="undefined")ev.target=window.event.srcElement;
  return ev;
}

function gEl(name) {
  return document.getElementById(name);
}

function backToForm() {
  gEl('previewID').style.display = 'none';
  gEl('mainID').style.display = 'block';  
}

function doSubmit() {
  var ans = confirm('confirm all submitted data?\n\n[upon submission please follow the instruction on the resulting screen]');
  if (ans) 
    document.myForm.submit();    
}

