/**
 * Javascript dass die Ajax-Aufrufe koordiniert
 */ 
 
// Container, der die Ajax-Fehlermeldungen ausgibt.
var div_error;

// Variable für den aktuellen Container
var div;
var id;

// Custom Event Handler
var transactionObject = {
	start:function(type, args){ },
	complete:function(type, args){ },

	success:function(type, args){ 
        if(args[0].responseText !== undefined) {            
            document.getElementById(args[0].argument[0]).innerHTML = args[0].responseText;
            if (args[0].argument[0] == "kfz_step2") checkForm();
		} 
	},
	successHsnTsn:function(type, args) { 
        if(args[0].responseText !== undefined) {
            if (args[0].responseText == "") {
				
                //Alle nachfolgenden Schritte löschen  
                document.getElementById('kfz_result').innerHTML = "";
                //document.getElementById("co2_exhaust").value = "";                                     
                alert("Es konnte leider kein CO2-Wert zu ihrer HSN/TSN Nummer gefunden werden. Probieren Sie es mit dem kombinierten Verbrauch");
                return;
            }
            document.getElementById("co2_exhaust").value = args[0].responseText;
            if (document.getElementById("kfz_dropdown").style.display == 'block') changeState();
            checkForm();
		} 
	},
	failure:function(type, args){
        div_error.innerHTML = "<b>Es ist ein Fehler aufgetreten</b>"; 
		if(args[0].responseText !== undefined){
			div_error.innerHTML += "<br>HTTP status: " + args[0].status + "";
			div_error.innerHTML += "<br>Status code message: " + args[0].statusText + "";
			div_error.innerHTML += args[0].responseText; 
		}
	},

	abort:function(type, args){ }
};

// Diese Events werden durch den CustomEventHandler abgefangen
var handleSuccess = function(o){};
var handleFailure = function(o){};

// Callback-Objekte
// Step2:
var callback_step2 = {
	success:handleSuccess,
	failure:handleFailure,
	customevents:{
		onStart:transactionObject.start,
		onComplete:transactionObject.complete,
		onSuccess:transactionObject.success,
		onFailure:transactionObject.failure,
		onAbort:transactionObject.abort
	},
 	argument:["kfz_step2"]
};
// Step3:
var callback_step3 = {
	success:handleSuccess,
	failure:handleFailure,
	customevents:{
		onStart:transactionObject.start,
		onComplete:transactionObject.complete,
		onSuccess:transactionObject.success,
		onFailure:transactionObject.failure,
		onAbort:transactionObject.abort
	},
 	argument:["kfz_step3"]
};
// Result:
var callback_result = {
	success:handleSuccess,
	failure:handleFailure,
	customevents:{
		onStart:transactionObject.start,
		onComplete:transactionObject.complete,
		onSuccess:transactionObject.success,
		onFailure:transactionObject.failure,
		onAbort:transactionObject.abort
	},
 	argument:["kfz_result"]
};
// HSN/TSN:
var callback_hsntsn = {
	success:handleSuccess,
	failure:handleFailure,
	customevents:{
		onStart:transactionObject.start,
		onComplete:transactionObject.complete,
		onSuccess:transactionObject.successHsnTsn,
		onFailure:transactionObject.failure,
		onAbort:transactionObject.abort
	},
 	argument:["kfz_hsntsn"]
};
function getStep2() {
    //Alle nachfolgenden Schritte löschen   
    document.getElementById('kfz_result').innerHTML = "";
    
	var sSelect = getVehicleType();
    
    //Form spezifizieren
    var formObject = document.getElementById('kfz_form');
    YAHOO.util.Connect.setForm(formObject); 
    
    // entryPoint is the base URL 
  	var entryPoint = 'index.php'; 

  	// queryString
    var queryString = encodeURI('?id='+id+'&eID=tx_allianzkfzsteuer_pi2&mode=step2&type=' + sSelect); 
    var sUrl = entryPoint + queryString;
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback_step2);
}

function checkForm() {
	var sSelect = getVehicleType();
    var checked = false; 
    //Prüfen ob alle Boxen für den jeweiligen Typ ausgefüllt sind
    switch (sSelect) {
	    case "10": //PkW
	    	if (document.forms["kfz_form"].engine != null) {
				if (document.forms["kfz_form"].engine.options[document.forms["kfz_form"].engine.selectedIndex].value != "" &&
				document.forms["kfz_form"].engine_size.value != "" &&
				document.forms["kfz_form"].co2_exhaust.value != "") {
					checked = true;
				}
			}
				
				
	        break;
	    case "11": //Lkw
	        if (document.forms["kfz_form"].emissionclass.options[document.forms["kfz_form"].emissionclass.selectedIndex].value != "" && 
	            document.forms["kfz_form"].overall_mass.value != "") checked = true;
	        break;
	    case "12": //Womo
	        if (document.forms["kfz_form"].emissionclass.options[document.forms["kfz_form"].emissionclass.selectedIndex].value != "" && 
	            document.forms["kfz_form"].overall_mass.value != "") checked = true;
	        break;
	    case "13": //Elektroauto
	        if (document.forms["kfz_form"].overall_mass.value != "") checked = true;
	        break;
	    case "14": //Oldtimer
	        checked = true;
	        break;
	    case "15": //Anhänger
	        if (document.forms["kfz_form"].overall_mass.value != "") checked = true;
	        break;
	    case "16": //Motorrad
	        if (document.forms["kfz_form"].engine_size.value != "") checked = true;
	        break;
	    case "17": //Pkw_alt
		    if (document.forms[0].emissionclass.options[document.forms[0].emissionclass.selectedIndex].value != "" && 
		    document.forms[0].engine.options[document.forms[0].engine.selectedIndex].value != "" &&
		    document.forms[0].engine_size.value != "") checked = true;
	        break;    
	    default: 
	        break;
 	}

  if (checked) {
    // entryPoint is the base URL 
	var entryPoint = 'index.php'; 
	
    //Form spezifizieren
    var formObject = document.getElementById('kfz_form'); 
    YAHOO.util.Connect.setForm(formObject);
    
  	// queryString
    var queryString = encodeURI('?id='+id+'&eID=tx_allianzkfzsteuer_pi2&mode=step3&type=' + sSelect); 

    var sUrl = entryPoint + queryString;
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback_step3);
  } else {
    //document.getElementById("kfz_step3").innerHTML = "";
    document.getElementById('kfz_result').innerHTML = "";
  }
  
  return checked;
}

var getVehicleType = function() {
    // selection of kfz type dropdownbox
    if (document.getElementById("id") == null) {
		var sSelect = document.forms[0].step1select.options[document.forms[0].step1select.selectedIndex].value;
	} else {
		var sSelect = document.getElementById("id").innerHTML;
	}
	return sSelect;	
}

var validateKfzData = function() {
    switch (getVehicleType()) {
	    case "10": //PkW new
			return validateNewPKW();
	    case "11": //Lkw
			return validateLKW();
	    case "12": //Womo
			return validateWohnmobil();
	    case "13": //Elektroauto
			return validateElektro();	    
	    case "14": //Oldtimer
			return validateOldtimer();
	    case "15": //Anhaenger
			return validateTrailer();
	    case "16": //Motorrad
			return validateMotorrad();
	    case "17": //Pkw_alt
			return validateOldPKW();
 	}
	return false;	
}

var validateNewPKW = function() {
	var res = true;
	if (document.forms["kfz_form"].engine.options[document.forms["kfz_form"].engine.selectedIndex].value == "") {
		res = markError('engine');
	} else {
		markCorrect('engine');
	}
	
	if (document.forms["kfz_form"].engine_size.value == "") {
		res = markError('engine_size');
	} else {
		markCorrect('engine_size');
	}	
	
	if (document.getElementById('co2_exhaust').value == '') {
		res = markError('co2_exhaust');
	} else {
		markCorrect('co2_exhaust');
	}
	
	markCorrect('date_from');
	markCorrect('date_to');	
	
	return res;
}

var validateOldPKW = function() {
	var res = true;
	if (document.forms[0].emissionclass.options[document.forms[0].emissionclass.selectedIndex].value == "") {
		res = markError('emissionclass');
	} else {
		markCorrect('emissionclass');
	}
	
	if (document.forms[0].engine.options[document.forms[0].engine.selectedIndex].value == "") {
		res = markError('engine');
	} else {
		markCorrect('engine');
	}
	
	if (document.forms[0].engine_size.value == "") {
		res = markError('engine_size');		
	} else {
		markCorrect('engine_size');
	}	
	
	markCorrect('date_from');
	markCorrect('date_to');	
		
	return res;
}

var validateLKW = function() {
	var res = true;
	
	if (document.forms["kfz_form"].emissionclass.options[document.forms["kfz_form"].emissionclass.selectedIndex].value == "") {
		res = markError('emissionclass');
	} else {
		markCorrect('emissionclass');
	}
	
	if (document.forms["kfz_form"].overall_mass.value == "") {
		res = markError('overall_mass');
	} else {
		markCorrect('overall_mass');
	}
	
	return res;		
}

var validateMotorrad = function() {
	var res = true;
	
	if (document.forms["kfz_form"].engine_size.value == "") {
		res = markError('engine_size');
	} else {
		markCorrect('engine_size');
	}
		
	markCorrect('date_from');
	markCorrect('date_to');	
	
	return res;		
}

var validateWohnmobil = function() {
	var res = true;
	
	if (document.forms["kfz_form"].emissionclass.options[document.forms["kfz_form"].emissionclass.selectedIndex].value == "") {
		res = markError('emissionclass');
	} else {
		markCorrect('emissionclass');
	}
	
	if (document.forms["kfz_form"].overall_mass.value == "") {
		res = markError('overall_mass');
	} else {
		markCorrect('overall_mass');
	}
		
	markCorrect('date_from');
	markCorrect('date_to');	
	
	return res;		
}

var validateElektro = function() {
	var res = true;
	
	if (document.forms["kfz_form"].overall_mass.value == "") {
		res = markError('overall_mass');
	} else {
		markCorrect('overall_mass');
	}
	
	return res;		
}

var validateOldtimer = function() {	
	return true;		
}

var validateTrailer = function() {
	var res = true;
	
	if (document.forms["kfz_form"].overall_mass.value == "") {
		res = markError('overall_mass');
	} else {
		markCorrect('overall_mass');
	}
	
	return res;		
}


function getResult() {
	var sSelect = getVehicleType();
		
	//alert(validateKfzData());
	if (validateKfzData() == false) {
		return;
	}  
    
    //Form spezifizieren
    var formObject = document.getElementById('kfz_form');
    YAHOO.util.Connect.setForm(formObject);

    // entryPoint is the base URL 
  	var entryPoint = 'index.php'; 

  	// queryString
    var queryString = encodeURI('?id='+id+'&eID=tx_allianzkfzsteuer_pi2&mode=result&type=' + sSelect); 

    var sUrl = entryPoint + queryString;
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback_result);
}

var markError = function(elementId) {
	document.getElementById(elementId).style.backgroundColor = '#f8aaaa';
	document.getElementById(elementId).style.border = '2px solid #df0001';
	return false;
}

var markCorrect = function(elementId) {
	//document.getElementById(elementId).style.backgroundColor = '#c8ffb7';
	//document.getElementById(elementId).style.border = '2px solid #0f6d0c';
	return true;
} 

function validNumber(e) {
    var key;
    var keychar;

    if (window.event) key = window.event.keyCode;
    else if (e) key = e.which;
    else return true;

    keychar = String.fromCharCode(key);
    if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) return true;
    else if ((("0123456789").indexOf(keychar) > -1)) return true;

    return false;
}

function validFloat(e) {
    var key;
    var keychar;

    if (window.event) key = window.event.keyCode;
    else if (e) key = e.which;
    else return true;

    keychar = String.fromCharCode(key);
    if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) return true;
    else if ((("0123456789,").indexOf(keychar) > -1)) return true;

    return false;
}

function initAjax(pageid) {
    div_error = document.getElementById('kfz_ajaxerror');
    id = pageid;
}

function getRequestedStep2009() {
    if (trim(document.getElementById("kfz_step2").innerHTML) == "") {
        getStep2();
    }    

    /* Prüfen ob CO2-Wert berechnet werden kann */
	
    var co2 = document.getElementById("co2_exhaust");
    var consumption = document.getElementById("consumption");
    var hsn = document.getElementById("hsn");
    var tsn = document.getElementById("tsn");
    if (hsn != null && tsn != null && co2 != null && co2.value == "") {
        /* Reihenfolge: HSN/TSN, Verbrauch */
        if (hsn.value != "" && tsn.value != "") calcHsnTsn();
        else if (consumption.value != "") calcCO2();
    }
    if (checkForm()) getResult();
}

function trim(s) {
    return s.replace (/^\s+/, '').replace (/\s+$/, '');
}

function setDirty() {
    document.getElementById('dirty').value = '1';
}

function neutralize(id) {
	document.getElementById(id).style.backgroundColor = '#ffffff';

	if (YAHOO.env.ua.ie > 0) {
		document.getElementById(id).style.border = '2px #ffffff inset';
	} else {
		document.getElementById(id).style.border = '';		
	}
}
/**
 * Javascript zum ein-/ausblenden der Dropdown DIVs
 */ 
function changeState()
{
  if (document.getElementById("kfz_dropdown").style.display == 'none') 
  {
    document.getElementById("kfz_dropdown").style.display = 'block';
    document.getElementById("consumption").value = "";
    document.getElementById("hsn").value = "";
    document.getElementById("tsn").value = "";    
    //document.images["img_" + divid].src = "typo3conf/ext/cfilm_filmlist/images/minus.gif";
  } 
  else
  {
    document.getElementById("kfz_dropdown").style.display = 'none';
    //document.images["img_" + divid].src = "typo3conf/ext/cfilm_filmlist/images/plus.gif";
  }
}

/**
 * Javascript zum berechnen des CO2-Wertes anhands des Verbrauchs
 */ 
function calcCO2() {
    var engine = document.forms["kfz_form"].engine.options[document.forms["kfz_form"].engine.selectedIndex].value;
    var consumption = document.getElementById("consumption").value.replace(/,/, ".");
    if (consumption == "") {
        //Alle nachfolgenden Schritte löschen    
        document.getElementById('kfz_result').innerHTML = "";  
        document.getElementById("co2_exhaust").value = "";
		markError('consumption');     
        //alert("Bitte geben Sie ihren kombinierten Verbrauch an");         
        return;
    } else if (engine == "") {
        //Alle nachfolgenden Schritte löschen    
        document.getElementById('kfz_result').innerHTML = "";
        document.getElementById("co2_exhaust").value = "";
		markError('engine');         
        alert("Bitte waehlen Sie zus�tzlich die Motorart aus");
        return;
    }
    
    if (engine == 30) {
        //Benzin... Faktor: 23,7
        document.getElementById("co2_exhaust").value = Math.round(consumption * 23.7);
        if (document.getElementById("kfz_dropdown").style.display == 'block') changeState();
        checkForm();
    } else if (engine == 31 || engine == 32 || engine == 33 || engine == 34) {
        //Diesel... Faktor: 26,5
        document.getElementById("co2_exhaust").value = Math.round(consumption * 26.5);
        if (document.getElementById("kfz_dropdown").style.display == 'block') changeState();
        checkForm();
    }

}

/**
 * Javascript zum berechnen des CO2-Wertes anhands der HSN/TSN Nummern
 */ 
function calcHsnTsn() {
    var hsn = document.getElementById("hsn").value;
    var tsn = document.getElementById("tsn").value;
	
	var res = true;
	if (hsn == '') {
		res = markError('hsn');
	}

	if (tsn == '') {
		res = markError('tsn');
	}
	if (res == false) {
		return;
	}	
    
    //Form spezifizieren
    var formObject = document.getElementById('kfz_form'); 
    YAHOO.util.Connect.setForm(formObject);

    // entryPoint is the base URL 
	var entryPoint = 'index.php'; 

  	// queryString
    var queryString = encodeURI('?id='+id+'&eID=tx_allianzkfzsteuer_pi2&mode=getco2&hsn='+hsn+'&tsn='+tsn); 

    var sUrl = entryPoint + queryString;
    var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback_hsntsn);    
}

