var Account = new Class({
  lastStep: false,
  url: false,


  clearSearch: function(form)
  {
    var elements = new Array();
    elements.extend(form.elements);
    elements.each(function (element) {
      if ($(element).get('tag') == "input") {
        switch ($(element).get('type')) {
          case "text": $(element).value = ""; break;
          case "checkbox": $(element).checked = false; break;
          case "radio": $(element).checked = ($(element).id.search('\[0\]') == 0); break;
        }
      } else if ($(element).get('tag') == "select") {
        $(element).value = "";
      }
    });
    form.submit();
  },

  disableCopyPaste: function(target)
  {
    if (typeof target.onselectstart!="undefined") //IE route
      target.onselectstart=function(){return false}
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
      target.style.MozUserSelect="none"
    //else //All other route (ie: Opera)
      //target.onmousedown=function(){return false}

    target.ondragstart = function(){return false}
    target.onkeydown = function(e) { 
      if (!e) e = window.event;
      if (e.ctrlKey) if (e.keyCode == 86) return false;
    }
    target.style.cursor = "default";
  },

  companyCar: function ( element )
  {
    if (!element) return;
    var companyCarChange = (element.name == "company_car");
    var companyCarYes = $("company_car_yes"); var companyCarMaybe = $("company_car_maybe");
    var carYes = $("car_yes"); var carNo = $("car_no");
    if (!companyCarYes || !companyCarMaybe || !carYes || !carNo) return;
    if (!companyCarYes.checked && element.id != "company_car_yes") return;

    if (carYes.checked) {
      if (companyCarChange) {
        carYes.checked = false;
        carNo.checked = true;
      } else {
        companyCarYes.checked = false;
        companyCarMaybe.checked = true;
      }
    }
    return;
  },

  switchActions: function ( id )
  {
    var currentDisplay = $(id).getStyle('display');
    $(id).setStyle('display',(currentDisplay == 'none'?'':'none'));
    var images = $(id+'Link').getElements("img");

    images.each(function(img) {
      if (currentDisplay == "none") {
        img.src = img.src.replace(/down.gif/,"up.gif");
      } else {
        img.src = img.src.replace(/up.gif/,"down.gif");
      }
    });
  },

  transportSwitch: function()
  {
    if ($('nocar')) $( 'nocar' ).setStyle( 'display', ($('car_no').checked?'block':'none') );
  },
  
  whyjobsearchSwitch: function() {
    var jobsearchValue = $( 'whyjobsearch' ).value;
    //display or hide other input field
    if ( jobsearchValue == "other" )
      $( 'whyjobsearch_other' ).setStyle( 'display', 'block' );
    else
      $( 'whyjobsearch_other' ).setStyle( 'display', 'none' );
  },
  
  archiveAppointment: function()
  {
    if (!$("status_offered_info")) return;
    var offered = $("status_offered_info").value;
    var reasonRegistered = $("status_reason_registered").value;
    var firstImpression = $("status_first_impression").value;
    var match = $("status_match").checked;
    var manager = $("status_manager_name").value;
    if (match) {
      var matchStart = $("status_match_start").value;
    } else {
      var permitNoreason = ($("status_permit_noreason").checked);
      var permitNoshow = ($("status_permit_noshow").checked);
      var permitWNReason = $("status_permit_wn_reason").value;
      var permitWGReason = $("status_permit_wg_reason").value;
    }
  
    var notes = $("notes").value;
    var today = new Date();
    var hours = (today.getHours() < 10?"0"+today.getHours():today.getHours());
    var minutes = (today.getMinutes() < 10?"0"+today.getMinutes():today.getMinutes());
    var todayStr = today.getDate()+"-"+today.getMonth()+"-"+today.getFullYear()+" "+hours+":"+minutes;
    var archive = "-[Afspraak archief]-----------------------------------------------------\n";
    if (manager.length > 0) {
      archive += "Behandeld door: "+manager+"\n";
    }
    archive += "Datum: "+todayStr+"\n";
    archive += "Aangeboden bij: "+offered+"\n";
    archive += "Waarom aangemeld?: "+reasonRegistered+"\n";
    archive += "Eerste indruk: "+firstImpression+"\n";
    if (match) {
      archive += "[Match]\n";
      archive += "  Aanvangen per: "+matchStart+"\n";
    } else {
      archive += "[Geen match]\n";
      if (permitNoreason) archive += "  Zonder reden geweigerd.\n";
      if (permitNoshow) archive += "  Niet op gesprek verschenen.\n";
      if (permitWNReason != "") archive += "  Werknemer werk afgewezen, omdat "+permitWNReason+"\n";
      if (permitWGReason != "") archive += "  Werkgever ziet af, omdat "+permitWGReason+"\n";
    }
    archive += "------------------------------------------------------------------------\n\n";
  
    $("notes").value = archive+notes;
  
    $("status_offered").checked = false;
    $("status_offered_text").setStyle("display", "none");
    $("status_offered_info").value = "";
    $("status_reason_registered").value = "";
    $("status_first_impression").value = "";
  
    $("status_match").checked = false;
    $("status_match_info").setStyle("display", "none");
    $("status_match_start").value = "";
  
    $("status_no_match").checked = false;
    $("status_no_match_info").setStyle("display", "none");
    $("status_permit_noreason").checked = false;
    $("status_permit_noshow").checked = false;
    $("status_permit_wn_reason").value = "";
    $("status_permit_wg_reason").value = "";
  
    $("archive_appointment").setStyle("display","none");
    alert("Afspraak is gearchiveerd in de notities. Klik op 'gegevens opslaan' om dit te bewaren.");
  },

  validateStep: function ( nr )
  {
    if (!nr) {
      if ($('step[0]'))
        nr = 0;
      else
        nr = 1;
    }

    var error = false;
    if (nr == 0) {
      var radios = $('step[0]').getElements("input.checkbox");
      var found = false;
      radios.each(function (r) { if (r.checked) found = true; });
      if (!found) error = true;
    } else {
      var inputs = $('step['+nr+']').getElements("input");
      if (inputs && inputs.length > 0) {
        inputs.each(function ( input ) {
          if (input.validationDataIndex != undefined && !validation.validateField(input,input.validationDataIndex)) error = true;
        });
      }

      var selects = $('step['+nr+']').getElements("select");
      selects.each(function ( select ) {
        if (select.validationDataIndex != undefined && !validation.validateField(select,select.validationDataIndex)) error = true;
      });
    }
    return !error;
  },

  checkCheckboxes: function ( el )
  {
    checkboxes = el.getElements("input[name^=activity]");
    var i = 0;
    var filled = false;
    for (i = 0; i < checkboxes.length; i++) {
      if (checkboxes[i].checked == true) filled = true;
    }
    if (!filled) {
      alert("Selecteer minimaal 1 werkzaamheid om verder te gaan.");
      return false;
    }

    if (!$('site').hasClass('werkgever') && !$('site').hasClass('admin')) {
      checkboxes = el.getElements("input[name^=company]");
      var i = 0;
      var filled = false;
      for (i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].checked == true) {
          filled = true;
          break;
        }
      }
      if (!filled) {
        alert("Selecteer minimaal 1 soort bedrijf om verder te gaan.");
        return false;
      }
    }

    return true;
  },

  checkStep: function ( step )
  {
    if (!step) step = 1;
    var el = $("step["+step+"]");
    var form = $("middle").getElement("form[name^=registerForm]");

    if (form && step == 2) {
      if (!this.checkCheckboxes(el)) return false;
      if ($('site').hasClass('werkgever')) {
        var functionValue = $("function").value;
        if (functionValue <= 0) {
          alert("Selecteer een functie om verder te gaan.");
          return false;
        }
      } else if ($('site').hasClass('werknemer') || $('site').hasClass('zzp') || ($("specialityRegister") && $("specialityRegister").hasClass("cv"))) {
        var age = parseInt($("entityActivityAge").value,10);
        var activityTotal = parseInt($("experienceActivityTotal").value,10);
        var companyTotal = parseInt($("experienceCompanyTotal").value,10);

        if (isNaN(activityTotal) || activityTotal <= 0 || activityTotal+15 > age) {
          alert("Totaal jaren ervaring bij werkzaamheden is onjuist.");
          return false;
        }
        if (isNaN(companyTotal) || companyTotal <= 0 || companyTotal+15 > age) {
          alert("Totaal jaren ervaring bij 'soort bedrijf' is onjuist.");
          return false;
        }
        if (activityTotal != companyTotal) {
          alert("Totaal jaren ervaring is niet gelijk.");
          return false;
        }
      }
    }
    return true;
  },

  step: function ( step )
  {
    var stepEl = {};
   
    var i = 0;
    var el = $("step["+i+"]");
    if (!el) el = $("step["+(++i)+"]");

    if (step > this.lastStep) {
      if (!this.checkStep(this.lastStep)) return false;
      if (!this.validateStep(this.lastStep)) {
        alert("Bepaalde gegevens zijn onjuist ingevoerd. Controleer uw gegevens.");
        return false;
      }
    }

    if (($('site').hasClass('werknemer') || $('site').hasClass('zzp') || ($("specialityRegister") && $("specialityRegister").hasClass("cv")))) {
      var dobElements = $("step[1]").getElements("select[name^=dob]");
      if (dobElements && dobElements.length > 0) {
        var d,m,y = 0;
        for (var j = 0; j < dobElements.length; j++) {
          var dobElement = dobElements[j];
          switch (dobElement.name) {
            case "dob[Day]": d = dobElement.value; break;
            case "dob[Month]": m = dobElement.value; break;
            case "dob[Year]": y = dobElement.value; break;
          }
        }
        var dateStamp = new Date();
        dateStamp.setFullYear(y,parseInt(m,10)-1,d);
        var age = this.calculateAge(dateStamp);
        if (isNaN(age)) age = "??";
        $("step[2]").getElement("input#entityActivityAge").value = age;
        $("step[2]").getElement("input#entityCompanyAge").value = age;
       
        this.updateSpecialities();
      }
    }

    for (; el; el = $("step["+(++i)+"]")) {
      stepEl[i] = el;
      if (stepEl[i].getStyle("display") != "none") stepEl[i].setStyle("display","none");
    }
    if (step < 0 || step > stepEl.length) return false;

    if (this.lastStep) {
      var lastEl = $("step["+this.lastStep+"]");
      if (lastEl && lastEl.getStyle("display") != "none") lastEl.setStyle("display","none");
    }
    stepEl[step].setStyle("display","");
    this.lastStep = step;
    return true;
  },
  
  boxSelected_alt: function (box){
	  alert(box.id);
  },

  boxSelected: function ( box )
  {
	//alert('You clicked me');
    var id = box.id;
    var checked = box.checked;
    //alert('voor de replace: '+id);
    //alert (id);
    //alert(checked);
    id = id.replace(/werkzaamheid_/,"container_jaarervaring_");
    id = id.replace(/soortbedrijf_/,"sbjaarervaring_");
    id = id.replace(/werkzaamheden_/,"wz_gewicht_");
    //alert('na de replace: '+id);
    var checkbox = document.getElementById(id);
    checkbox.value = "";
    //alert(id);
    
    try{
    	$(id).setStyle("display", (box.checked?"":"none"));
    	$(id).setStyle("width", (box.checked?"":"50%"));
    }catch(err){
    	
    }
    
//    if (box.checked) {
//      var pos = $(id).getPosition($("middle"));
//      $(id).getElement("div.validationErrorMessage").setStyles({
//        "position": "absolute",
//        "top": pos.y,
//        "left": pos.x+20
//      });
//      $(id).getElement("input").focus();
//    } else {
////      $(id).getElement("input").value = "";
//      this.updateExperience("werkzaamheid",true);
//      this.updateExperience("soortbedrijf",true);
//      this.updateExperience("werkzaamheden",true);
//    }
	  //alert("boxSelected");
  },

  msgBox: function ( inputEl, show )
  {
    if (!inputEl) return false;
    var containerId = inputEl.id;
    var msg = $(containerId).getElement("div.validationErrorMessage");
    var id = "msg_"+inputEl.id;

    if (msg.getStyle("position") != "absolute") {
      var pos = $(containerId).getPosition($("middle"));
      msg.setStyles({
        "position": "absolute",
        "top": pos.y,
        "left": pos.x+20
      });
    }
    $(id).setStyle("display",(show == true?"":"none"));
  },


  updateBannerClick: function (id, click)
  {
    var url = 'index.php?page=leveranciers&ubc=1&click=' + click + '&bannernr=' + id;
    var req = new Request({method: 'get', url: url,
    onComplete: function() {
        location.reload();
    }
    });
    req.send();
    return true;
  },
  
  
  zipCodeSearch: function(url, form)
  {
	  //alert('here we go!');
	  var req	=	 new Request.HTML({
		
		  url: url,
		  method: 'get',
		  update: 'result_pn',
		  onSuccess: function(html) { $('result_pn').adopt(html);}
	  }).send($(form));
	 
  },
  
  
  emailCheck: function(url, form)
  {

	  var req	=	 new Request.HTML({
		
		  url: url,
		  method: 'get',
		  update: 'result_email',
		  onSuccess: function(html) { $('result_email').adopt(html);}
	  }).send($(form));
	 
  },


  updateSpecialities: function ( )
  {
    var id = "specialityRegister";
    var checkboxes = $("middle").getElements("input[name^=activity]");
    if (!$(id) || !checkboxes) return;
    var functionElement = $("middle").getElement("select[name^=function]");
    var functionId = functionElement.value;

    var activities = []; 
    for (var j = 0; j < checkboxes.length; j++) {
      if (checkboxes[j].checked == true) activities.push(checkboxes[j].value);
    }
    var activityString = activities.join(",");

    var type = $(id).className;
    var admin = false;
    if ($('site').className == "admin") admin = true;
    var url = "/data/gebruiker/specialities/"+(admin?"admin/":"")+type+"/"+functionId+"/"+activityString+".html";
    if (url != this.url) {
      $(id).innerHTML = "Bezig met ophalen van de specialisaties. E&eacute;n moment a.u.b.";
      this.url = url;
      $(id).load(url);
    }
  },

  calculateAge: function ( dateStamp )
  {
    var today = new Date();
    alert(today.getFullYear());
    var age = today.getFullYear() - dateStamp.getFullYear();
    if (today.getMonth() < dateStamp.getMonth() || (today.getMonth() == dateStamp.getMonth() && today.getDate() < dateStamp.getDate())) age--;
    alert(age);
  },
  
  updateExperience: function ( type, start )
  {
    var elements = $("middle").getElements("input[id^=experience"+type+"]");
    var total = 0;
    var newValue = 0;
    if (elements && elements.length > 0) elements.each( function ( el ) {
      if (el.id != "experience"+type+"Total" && el.id != 'experienceActivity[other]' && el.id != 'experienceCompany[other]') {
        newValue = parseInt(el.value,10);
        if (!isNaN(newValue) && newValue > 0) {
          el.value = newValue;
          total += newValue;
        } else {
          el.value = "";
        }
      }
    });
    var input = $("experience"+type+"Total");
    input.value = total;
    if (!start) {
      input = $("experienceCompanyTotal");
      if (input.validationDataIndex != undefined) validation.validateField(input,input.validationDataIndex);
      input = $("experienceActivityTotal");
      if (input.validationDataIndex != undefined) validation.validateField(input,input.validationDataIndex);
    }
  }
});

var account = false;
var accountCallback = function ( ) {
  if (!account) account = new Account();

  if ($("specialityRegister")) {
    account.updateSpecialities();
    if ($('site').hasClass('werknemer') || $('site').hasClass('zzp') || ($("specialityRegister") && $("specialityRegister").hasClass("cv"))) {
      account.updateExperience("Company",true);
      account.updateExperience("Activity",true);
    }
  }
  if ($('car_no') && $('car_yes')) {
    $( 'car_no' ).addEvent( 'click', function() { account.transportSwitch(); });
    $( 'car_yes' ).addEvent( 'click', function() { account.transportSwitch(); });
    account.transportSwitch();
  }
  if ($('archiveappointment')) {
    $( 'archiveappointment' ).addEvent( 'click', function() {
      account.archiveAppointment();
      return false;
    });
  }
  if ($('whyjobsearch')) {
    $('whyjobsearch').addEvent( 'change', function() {
      account.whyjobsearchSwitch();
      return false;
    });
    account.whyjobsearchSwitch();
  }
};

/*window.addEvent("domready", accountCallback);*/
var account;
window.addEvent("domready", accountCallback);

function emptyGewicht(val){
	//alert(val);
	var inputValue = document.getElementById(val);
	//alert(inputValue.style.display);
	if (inputValue.style.display == "none"){
		inputValue.value = "1";
		//alert('1 ingevuld');
	} else {
		inputValue.value = "";
		//alert('leeg gemaakt');
	}
}

function returnSelected(box){
	var checked 	= box.checked;
	var id 			= box.id;
	var basketcase	= document.getElementById("basketcase");
	var id_length	= id.length;
	
	//alert(id);
	//alert(id_length);
	//alert(checked);
	
	if (checked) {
		var basketcase_prevalue 	= 'i:'+id+';s:5:"false"';
		var basketcase_postvalue	= 'i:'+id+';s:4:"true"';
//		alert(basketcase_prevalue);
//		alert(basketcase_postvalue);		
		
		basketcase.value 		= basketcase.value.replace(basketcase_prevalue, basketcase_postvalue);
//		alert(checked);
//		alert(basketcase.value);		
	} else {
		var basketcase_prevalue 	= 'i:'+id+';s:4:"true"';
		var basketcase_postvalue	= 'i:'+id+';s:5:"false"';
//		alert(basketcase_prevalue);
//		alert(basketcase_postvalue);		
		
		basketcase.value 		= basketcase.value.replace(basketcase_prevalue, basketcase_postvalue);
//		alert(checked);
//		alert(basketcase.value);		
	}
	
	//alert(basketcase.value);
}

function rewriteFaxSubmit(user, val) {
	var val 	= val.value;
	var form 	= document.getElementById("basketcase_post");
	//alert(val);
	//alert(form.action);
	//alert(newUrl);
	form.action	= 'admin.php?page=faxzoeken&searchtype=faxmodule&gebruikernr='+user+'&pagina='+val+'#results';	
}

function rewriteRegSubmit(formId, targetPage){
	var form	= document.getElementById(formId);
	//alert(form.action);
	form.action = targetPage;
	//alert(form.action);
}

function rewriteFaxSubmitSend(user, val, pagina) {
	var val 	= val;
	var form 	= document.getElementById("basketcase_post");
//	alert(val);
//	alert(form.action);
//	alert(pagina);
	form.action	= 'admin.php?page=faxzoeken&searchtype=faxmodule&gebruikernr='+user+'&pagina='+pagina+'&versturen='+val+'#results';	
}

function rewriteFaxBack(user, val) {
	var val 	= val;
	var form 	= document.getElementById("basketcase_post");
	//alert(val);
	//alert(form.action);
	//alert(newUrl);
	form.action	= 'admin.php?page=faxzoeken&searchtype=faxmodule&gebruikernr='+user+'&pagina='+val+'#results';	
}

function rewriteFaxSend(user) {
	var form 	= document.getElementById("basketcase_post");
	//alert(val);
	//alert(form.action);
	//alert(newUrl);
	form.action = 'admin.php?page=account_werknemer&action=viewaccount-gebruiker&gebruikernr='+user+'&faxverzonden=1';	
}

function rewriteSubmit(form, url, val){
	var form	= document.getElementById(form);
	var url 	= url;
	var val 	= val.value;
//	alert(form.action);
//	alert(url);
//	alert(val);
	form.action = url+val;
//	alert(form.action);
}


