var jsonURL="https://www.vkb-servicepool.de/bavariadirekt/tarif/";
var rechneroffen=false;
var gesperrt=false;

function check_fzg_typ(value){
    var hersteller=document.frmrechnerklein.hersteller.options[document.frmrechnerklein.hersteller.options.selectedIndex].value;
    if(value.length>1 && hersteller){
	getJSONKFZSUCHE();
    }
}

function get_kfz_info(typ){
    gesperrt=true;
    var hsn=document.frmrechnerklein.hsn.value;
    var tsn=document.frmrechnerklein.tsn.value;
    if(typ=='hsn' && hsn.length==4){
	getJSONKFZINFO();
    }
    if(typ=='tsn' && tsn.length==3 && hsn.length==4){
	getJSONKFZINFO();
    }
}

function getJSONKFZSUCHE(){
    var hersteller=document.frmrechnerklein.hersteller.options[document.frmrechnerklein.hersteller.options.selectedIndex].value;
    var typ=document.frmrechnerklein.typ.value;
    var leistung=document.frmrechnerklein.leistung.value;
    var leistungs_typ=document.frmrechnerklein.leistungs_typ.options[document.frmrechnerklein.leistungs_typ.options.selectedIndex].value;
    var url = jsonURL+'getInfo?region=kfzautofill&output=json&value=' + typ + '&callback=sucheKFZ&hersteller='+hersteller+'&leistung='+leistung+'&leistungs_typ='+leistungs_typ+'&toleranz=5&ms=' + new Date().getTime();
    
    headElement = document.getElementsByTagName("head")[0];
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", url);
    headElement.appendChild(scriptTag);
}

function getJSONKFZINFO(){
    var hsn=document.frmrechnerklein.hsn.value;
    var tsn=document.frmrechnerklein.tsn.value;
    var url = jsonURL+'getInfo?region=quickinfo&output=json&hsn=' + hsn + '&callback=KFZ_INFO&tsn='+tsn+'&ms=' + new Date().getTime();
    headElement = document.getElementsByTagName("head")[0];
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", url);
    headElement.appendChild(scriptTag);
}

function getJSONKennzeichen(){
    var plz=document.frmrechnerklein.plz.value;
    var url = jsonURL+'getInfo?region=plzsearch&output=json&callback=sucheKennzeichen&&value='+plz+'&ms=' + new Date().getTime();
    
    headElement = document.getElementsByTagName("head")[0];
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", url);
    headElement.appendChild(scriptTag);
}

function getJSONTarif(){
    var plz=document.frmrechnerklein.plz.value;
    var kennzeichen_1=document.frmrechnerklein.kennzeichen_1.value;
    var kennzeichen_2=document.frmrechnerklein.kennzeichen_2.value;
    var kennzeichen_3=document.frmrechnerklein.kennzeichen_3.value;
    var erstzulassung=document.frmrechnerklein.erstzulassung.value;
    var stadtland=document.frmrechnerklein.stadt_land.options[document.frmrechnerklein.stadt_land.options.selectedIndex].value;
    var fahrleistung=document.frmrechnerklein.fahrleistung.value;
    var sfklasse_kh=document.frmrechnerklein.sfklasse_kh.options[document.frmrechnerklein.sfklasse_kh.options.selectedIndex].value;
    var hsn=document.frmrechnerklein.hsn.value;
    var tsn=document.frmrechnerklein.tsn.value;
    var d = new Date();
    var tag = (d.getDate()<10)?'0'+d.getDate():d.getDate();
    var monat = (d.getMonth()<10)?'0'+d.getMonth():d.getMonth();
    var jahr = d.getFullYear();
    var versicherungsbeginn=tag+"."+monat+"."+jahr;
    
    //Werte prüfen
    if(!erstzulassung || !kennzeichen_1 || !hsn || !tsn || !fahrleistung){
	alert("Eine Berechnung ist nicht möglich!\nEs müssen mindestens folgende Felder Korrekt ausgebüllt werden:\nHSN\nTSN\nErstzulassung\nKennzeichen (erster Teil vor dem Strich)\nJahreskilometer ");
	return;
    }
    if(!erstzulassung.match(/\d\d\.\d\d\.\d\d\d\d/)){
	alert("Das Datum der Erstzulassung hat nicht das richtige Format");
	return;
    }

    var url = jsonURL+'index?output=json&callback=getTarif&versicherungsbeginn='+versicherungsbeginn+'&hsn='+hsn+'&tsn='+tsn+'&kennzeichen_1='+kennzeichen_1+'&kennzeichen_2='+kennzeichen_2+'&kennzeichen_3='+kennzeichen_3+'&StadtLand='+stadtland+'&plz='+plz+'&erstzulassung='+erstzulassung+'&erwerb='+erstzulassung+'&neuwert=20000&sonderzubehoer=&fahrleistung='+fahrleistung+'&abstellplatz=&halter=VN&privat=J&nutzung=P&oed=N&beruf=ANG&branche=DL&geburtsdatum=19.04.1981&nutzerkreis=AVN&wohneigentum=KA&fahrerU23=N&fahrerU23_w=&fahrerU23_m=&schutzbrief=J&vorschaeden_kh=&vorschaeden_vk=&sfklasse_kh='+sfklasse_kh+'&sfklasse_vk=&deckung_kh=&selbstbeteiligung_vk=all&selbstbeteiligung_tk=all&zahlungsweise=&ms=' + new Date().getTime();
    
    headElement = document.getElementsByTagName("head")[0];
    var scriptTag = document.createElement("script");
    scriptTag.setAttribute("type", "text/javascript");
    scriptTag.setAttribute("src", url);
    headElement.appendChild(scriptTag);
    //document.getElementById("jsonkfzliste").innerHTML = url;
}

function KFZ_INFO(factObj){
    var tmptxt='';
    if(factObj.result.tsn_name){
	document.frmrechnerklein.typ.value=factObj.result.tsn_name;
	document.frmrechnerklein.leistung.value=(document.frmrechnerklein.leistungs_typ.options[document.frmrechnerklein.leistungs_typ.options.selectedIndex].value=='ps')?factObj.result.ps:factObj.result.kw;
    }
    if(factObj.result.hsn_name){
	for(var tmp in document.frmrechnerklein.hersteller.options){
	    if(document.frmrechnerklein.hersteller.options[tmp])
		if(document.frmrechnerklein.hersteller.options[tmp].text){
		    if(document.frmrechnerklein.hersteller.options[tmp].text.toLowerCase()==factObj.result.hsn_name.toLowerCase()){
			document.frmrechnerklein.hersteller.options[tmp].selected=true;
		    }
		}
	}
    }

}

function sucheKFZ(factObj){
    var content = '<table cellpadding=0 cellspacing=0 class="pulldown_table">';
    for(var x=0; x < factObj.result.option.length;x++){
	content += '<tr onMouseover="this.className=\'pulldown_option_hover\'" onMouseout="this.className=\'pulldown_option\'" onClick="document.frmrechnerklein.typ.value=\''+factObj.result.option[x].name+'\';document.frmrechnerklein.hsn.value=\''+factObj.result.option[x].hsn+'\';document.frmrechnerklein.tsn.value=\''+factObj.result.option[x].tsn+'\';document.getElementById(\'jsonkfzliste\').innerHTML = \'\';"><td class="pulldown_option">'+factObj.result.option[x].name + '&nbsp;</td>';
	content += '<td class="pulldown_option">KW '+factObj.result.option[x].kw + '&nbsp;</td>';
	content += '<td class="pulldown_option">PS '+factObj.result.option[x].ps + '&nbsp;</td>';
	content += '</tr>';
    }
    content += '</table>';
    document.getElementById("jsonkfzliste").innerHTML = content;
    //document.getElementById("jsonkfzliste").style.display= 'block';
}

function sucheKennzeichen(Objekt){
    var content = '';
    var Land=false;
    var Stadt=false;
    var kennzeichen='XXXX';
    for(var x=0; x < Objekt.result.kennzeichen.length;x++){
	if(Objekt.result.kennzeichen[x].StadtLand=="L")
	    Land=true;
	if(Objekt.result.kennzeichen[x].StadtLand=="S")
	    Stadt=true;
	if(Objekt.result.kennzeichen[x].KZ.length<kennzeichen.length)
	    kennzeichen=Objekt.result.kennzeichen[x].KZ;
	//content += Objekt.result.kennzeichen[x].KZ + " " + Objekt.result.kennzeichen[x].StadtLand + "\n";
    }
    if(Land==true && Stadt==true)
	document.getElementById('stadtland').style.visibility='visible';
    document.getElementById('kennzeichen_1').value=kennzeichen;
    
}

function getTarif(Objekt){
    var content='';

    if(Objekt.error){
	//alert(Objekt.error[0].reason);
	if(Objekt.error[0].reason=="Kein Fahrzeug gefunden")
	    alert("Zu Ihren Angaben HSN/TSN wurde kein Fahrzeug gefunden");
	if(Objekt.error[0].reason="Keine Regionalklasse gefunden")
	    alert("Zu dem von Ihnen angegebenen Unterscheidungszeichen im Kennzeichen wurden keine Einträge in unserer Datenbank gefunden");
	alert(dump(Objekt,5));
	return;
    }

    var beitrag1=Objekt.result.KH[11].monat;
    var beitrag2=Objekt.result.KH[13].monat;
    var beitrag=(beitrag2>beitrag1)?beitrag1:beitrag2;
    document.getElementById('rechnerbeitrag').style.visibility='visible';
    document.getElementById('rechnerbeitrag').innerHTML='<br>mtl. ab EUR <span class="rechner_intro_headmega">'+beitrag+'</span>';
}

function wait_hide_rechner(){
    setTimeout('hide_rechner()',100);
}

function hide_rechner(){
    if(rechneroffen==false && gesperrt==false){
	document.getElementById('rechner').style.visibility='hidden';
    }
}

function lock_form(){
    gesperrt=true;
}

function ckeck_element(elem){
    //document.getElementById("closerechner").innerHTML = '<img src="images/bt_close.gif" onClick="gesperrt=false;rechneroffen=false;hide_rechner();">';
    gesperrt=true;
    var typval=document.frmrechnerklein.typ.value;
    switch(elem.name){
    case "plz":
	if(elem.value.length==5)
	    getJSONKennzeichen();
	break;
    case "leistung":
	check_fzg_typ(typval);
	break;
    case "leistungs_typ":
	check_fzg_typ(typval);
	break;
    }
    
}

/*
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/

function dump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;
    
    //The padding given at the beginning of the line.
    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";
    
    if(typeof(arr) == 'object') { //Array/Hashes/Objects
	for(var item in arr) {
	    var value = arr[item];
	    
	    if(typeof(value) == 'object') { //If it is an array,
		dumped_text += level_padding + "'" + item + "' ...\n";
		dumped_text += dump(value,level+1);
	    } else {
		dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	    }
	}
    } else { //Stings/Chars/Numbers etc.
	dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}

