
function do_over(item, isOver) {
//  srcstr = "images/"+item.getAttribute('imagesrc');
//  item.src = (isOver) ? srcstr+".png" : srcstr+"_d.png";
  var classNameStr = "floor floor_"+item.getAttribute('floorType');
  item.className = (isOver) ? classNameStr : classNameStr+"_d";
};

var TYPE_FULL="full", TYPE_PART="part", TYPE_HALF="half", TYPE_MIDDLE_COLD="middle_cold", TYPE_MIDDLE_HOT="middle_hot";
var house, activeFloor;

var energy_select = document.createElement("select");


var year_select = document.createElement("select");
for(i=1990;i<=2008;i++) {
  var opt = document.createElement("option");
  opt.value = i;
  opt.appendChild(document.createTextNode(i));
  year_select.appendChild(opt);
}
year_select.selectedIndex=10;



// gets called onload
function do_load() {
  house = new House();
  house.addFloor();
  house.computeClass();

  new Ajax.Request('energietypen.php', { 
    method:'get', 
    onSuccess: function(transport){
      var response = transport.responseText || "no response text";
    
      var energietypen = response.evalJSON(true);
      for (var i=0;  i<energietypen.size(); i++) { 
        var opt = document.createElement("option"); 
        opt.appendChild(document.createTextNode(energietypen[i]["name"])); 
        opt.value = energietypen[i]["ID"]; 
        opt.id="energy_select_"+energietypen[i]["ID"];
        opt.setAttribute("dimension", energietypen[i]["dimension"]); 
        opt.setAttribute("inkwh", energietypen[i]["inkwh"]); 
        energy_select.appendChild(opt); 
      } 
      do_loaded(); 
    }, 
    onFailure: function(){ 
      alert('Something went wrong...') }
    }
  );
  
}

// gets called after last ajax-init-request
function do_loaded() {
  //alert("wow");
  house.addEnergyRow();
  editHouse();
}

function addFloor() {
  house.addFloor();
}

function deleteFloor() {
  house.deleteFloor(activeFloor);
  editHouse();
}

function editHouse() {
  $('house_editor').style.display="block";
  $('floor_editor').style.display="none";
  $('fh_baujahr').value = "";
  $('fh_sanierungsjahr').value = "";
  $('homelink').href="http://www.optimacasa.ch/site/";

  if (activeFloor != null) {
    activeFloor.floorImage.className="floor floor_"+activeFloor.floorType+"_d";
    activeFloor = null;
  }
  
  $('fh_floors').value=house.floors.size();
  $('fh_area').value=house.getTotalArea();
}

function editFloor(nextFloor) {
  if (activeFloor!=nextFloor) {
    $('house_editor').style.display="none";
    $('floor_editor').style.display="block";
    if (activeFloor!=null)
      activeFloor.floorImage.className="floor floor_"+activeFloor.floorType+"_d";
    
    nextFloor.floorImage.className="floor floor_"+nextFloor.floorType;
    activeFloor = nextFloor;
    
    $('f_isGroundFloor').checked=activeFloor.isGroundFloor;
    $('f_floorType_'+activeFloor.floorType).click();
    $('bigFloorImage').className = "bigImage bigImage_"+activeFloor.floorType;
    
    activeFloor.changeFieldVisibility();
    activeFloor.displayFieldValues();
  }
}

function changed_floorType(elmt) {
  activeFloor.changedFloorType(elmt.value);
    
//  activeFloor.fieldValues = [0,0,0,0];
//  activeFloor.displayFieldValues();
}

function changed_isGroundFloor(elmt) {
  if (elmt.checked)
    activeFloor.changedIsGroundFloor(elmt.checked);
  else
    elmt.checked = true;
}

function changed_sizeField(elmt) {
  activeFloor.changedSizeField(elmt.value, elmt.id.substr(9,1));
}

function cancelEvent(e) {
	if (!e) {
		e = window.event;
	}
	if( e ) {
		e.cancelBubble = true;
		if (e.stopPropagation) {
			e.stopPropagation();
		}
	}
}

function saveRestart() {
  if (nameFieldsFilled() || confirm("Sie sind im Bezug die Daten ohne alle Angaben zur Person zu speichern.")) {
    saveHouse();
  }
}

function saveHouse() {
  var params = new Hash();
  
  params.set("fh_baujahr", $('fh_baujahr').value);
  params.set("fh_sanierungsjahr", $('fh_sanierungsjahr').value);
  params.set("fh_nachname", $('fh_nachname').value);
  params.set("fh_vorname", $('fh_vorname').value);
  params.set("fh_adresse", $('fh_adresse').value);
  params.set("fh_plz", $('fh_plz').value);
  params.set("fh_ort", $('fh_ort').value);
  params.set("fh_email", $('fh_email').value);
  params.set("fh_typ", $('fh_typ').value);
  
  var etypes = Array();
  
  var i = 0;
  house.energies.each(function (et) {
    var hp = new Hash();
    hp.set("type", et.energyField.value);
    hp.set("consum", et.consumField.value);
    hp.set("cost", et.costField.value);
    hp.set("year", et.yearField.value);
    etypes.push(hp);
    i++;
  });
  
  params.set("etypes", etypes.toJSON());
  
  var floors = Array();
  i = 0;
  house.floors.each(function (ft) {
    var fp = new Hash();
    fp.set("type", ft.floorType);
    fp.set("isGroundFloor", ft.isGroundFloor);
    fp.set("size1", ft.fieldValues[0]);
    fp.set("size2", ft.fieldValues[1]);
    fp.set("size3", ft.fieldValues[2]);
    fp.set("size4", ft.fieldValues[3]);
    fp.set("area", ft.area);
    
    floors.push(fp);
    i++;
  });
  
  params.set("floors", floors.toJSON());
  
  //alert(params.toJSON());

  
  new Ajax.Request('savehouse.php', { 
    method:'post', 
    parameters: params,
    onSuccess: function(transport){
      var response = transport.responseText || "no response text";
      alert("Speicherung erfolgreich.");
      restartHouse(); 
    }, 
    onFailure: function(){ 
      alert('Something went wrong...');
      //restartHouse(); 
    }
  });
}

function restartHouse() {
  window.document.location.reload();
}

function addPersonalities() {
  $('person_editor').style.display="block";
  $('fh_vorname').focus();
}

function nameFieldsFilled() {
  var isvalid = $('fh_vorname').value!="";
  isvalid = isvalid && $('fh_nachname').value!="";
//  isvalid = isvalid && $('fh_adresse').value!="";
//  isvalid = isvalid && $('fh_plz').value!="";
  isvalid = isvalid && $('fh_ort').value!="";
  isvalid = isvalid && $('fh_email').value!="";
  return isvalid;
}
