/**
 * @author Peter Hoffmann
 */
var results;

function callback(){} ;

callback.prototype = {
	doRequest : function(response){
		if(typeof(response) == "string")alert(unescape("Fehler: "+response));
		else{


			if(response['template']){

			}

            if(response['obj']=="User"){


				if(response['data']['e']){

					var errbox=document.getElementById('errorbox');
					errbox.innerHTML="";
					errbox.style.display="none";
					var upw=document.getElementById('upw');
                    if ( upw !== null ) {
                        upw.value='';
                    }
					errbox.style.display="block";
					errbox.innerHTML=response['data']['e'];
				}
				else{

					if ( response['func'] == "get" ) {
						if(response['type']=="getUserByEncryptedMail"){
							onUserNameByEncryptedMail(response['data']['username']);
						}
					}


					if(response['type']=="login"){
						if(response['data'][0]['urname']=="Administrator")window.location="AdminIndex";
						else if(response['data'][0]['urname']=="BDZ-Administrator")window.location="BDZIndex";
						else if(response['data'][0]['urname']=="BDZ-Redaktion")window.location="RedaktionIndex";
						else window.location=response['data'][0]['urname']+"Index";
					}
					if(response['type']=="logout"){
						window.location="Index";
					}
                    if(response['type']=="resetpassword"){
                        window.location='PasswortVergessen2';
                    }

				}
				if(response['func']=="update"){

                    if(response['type']=="updateUserPasswordAndName"){
                        window.location='PasswortVergessen3';
                    }

					if(response['type']=="self"){
						if(response['scope']=="Admin"){

							initAdmin();

							var out=document.getElementById('out');
							out.style.display="block";

							if(response['data'][0].Message)out.innerHTML=response['data'][0].Message;
						}
						if(response['scope']=="Editor"){

							initEditor();

							var out=document.getElementById('out');
							out.style.display="block";

							if(response['data'][0].Message)out.innerHTML=response['data'][0].Message;
						}
					}


				}

			}

			if(response['obj']=="Company"){

				if (response['type']=="MissingGeo"){
					displayMissingGeoDataCompanies(response['data']);

					return;
				}


				if(response['data']['e']&&response['type']!="geo"){
					if(response['type']!="gz"&&response['type']!="bdz"){
						var map = getMap();
						map.clearOverlays();
						/*map.*/
						setMapCenter(new GLatLng(51.000000, 10.500000), 6);
						/*map.*/
						setErrNotification(response['data']['e']);
						wait=0;
						if(response['data']['match']&&response['data']['match']>=1)document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>&nbsp;<span style=\"font-size:12px;font-weight:normal;\">("+response['data']['match']+" Treffer)</span>";
						else document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>";
					}
					else{
						var out=document.getElementById('outdiv');
						out.style.display="block";

						out.innerHTML="<span style =\"color :#FF0000;float:left;\">"+response['data']['e'].message+"</span>";
					}
				}


				if(response['data']['i']){
					if(response['type']!="gz"&&response['type']!="bdz"){
						var map = getMap();
						map.clearOverlays();
						/*map.*/
						getGeoCode(response['data']);
						wait=0;
					}
					else{
						var out=document.getElementById('outdiv');
						out.style.display="block";
						out.innerHTML="<span style =\"color :#FF0000;float:left;\">"+response['data']['e'].message+"</span>";
					}
				}

				if(response['data']['r']){
					/*if(wait=="1")document.getElementById("infos").innerHTML="";*/
					if(!response['data']['r'][0]['Dif']&&response['type']!="detail")target='';

					if(response['type']=="geo"){
						/*document.body.style.cursor = "default";*/
						results=new Array();
						results=response;
						getGeo(0);
					}
					else{
						document.body.style.cursor = "default";
					}

					if(response['type']=="gz"||response['type']=="bdz"){

						if(response['func']=="get"){
							results=new Array();
							results=response;

							var out=document.getElementById('outdiv');
							out.innerHTML="";
							out.style.display="none";
							out.style.height="auto";

							if(response['type']=="gz"){
								var table=document.getElementById('datatable');
								table.style.display="block";
								table.innerHTML="";
								setEditorTable(response);
							}
							else setBDZTable(response);
						}
						if(response['func']=="update"){

							var table=document.getElementById('datatable');
							table.innerHTML="";
							table.style.display="none";

							var out=document.getElementById('outdiv');
							out.style.display="block";

							var outstr=out.innerHTML;
							outstr+=response['data']['r'][0].Message+"<br/>"

							var reg=/<br/gi;
							if(outstr.match(reg)){
								var count = outstr.match(reg);
								if(count.length<20)out.style.height=count.length*15+"px";
								else out.style.height="300px";
							}
							else out.style.height="20px";
							out.style.overflow="auto";

							out.innerHTML=outstr;

						}
					}


					if(response['type']=="oview"){
						if(wait=="1")document.getElementById("infos").innerHTML="";
						var map = getMap();
						map.clearOverlays();
						results=response['data']['r'];

						if(response['data']['match']&&response['data']['match']>=1)document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>&nbsp;<span style=\"font-size:12px;font-weight:normal;\">("+response['data']['match']+" Treffer)</span>";
						else document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>";

						if(response['data']['c']!=''&&response['data']['c']!='undefined'){
							/*if(results.length<<20){
								addToCompResult(response['data']['c'],results.length);
							}*/
						}
						showZBSearchResult(response['data']['r']);
					}

					if(response['type']=="oviewdrag"){
						var map = getMap();
						map.clearOverlays();
						results=response['data']['r'];
						target=new GLatLng(response['Lat'],response['Lng']);

						var ext=document.getElementById('searchinputext');
						if(ext.style.display!="none")extsearch();

						if(response['data']['match']&&response['data']['match']>=1)document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>&nbsp;<span style=\"font-size:12px;font-weight:normal;\">("+response['data']['match']+" Treffer)</span>";
						else document.getElementById('match').innerHTML="<h2 style=\"float:left;\">Ihr Suchergebnis:</h2>";

						document.getElementById("infos").innerHTML="";
						document.getElementById("pager").style.display="block"
						setInfoNotification({"message":"Es folgen Betriebe in regionaler N&auml;he."});

						showZBSearchResult(response['data']['r'],0,target);
					}

					if(response['type']=="detail"){
						/*var map = getMap();
						map.clearOverlays();*/
						/*if(document.getElementById("infos").innerHTML=="")setInfoNotification({"message":"Es folgen Betriebe in regionaler N&auml;he."});
						else*/
						showZBSearchDetail(response['data']['r'][0]);
					}

					if(response['type']=="self"){
						showZBData(response['data']['r'][0]);
					}

					if(response['type']=="upself"){

						if(response['func']=="get"){
							zb = new Array();
							zb=response['data']['r'][0];
						}
						else if(response['data']['comp']){
							zb = new Array();
							zb=response['data']['comp'];
						}

						if(response['func']=="update"){
							var out=document.getElementById('outdiv');
							out.style.display="block";

							if(response['data'].updated=="true")out.innerHTML="";

							var outstr=out.innerHTML;

							if(response['data'].path){
								zb.Logo[0].pfad=response['data'].path;
							}
							for(var i=0;i<response['data']['r'].length;i++){
								outstr+=response['data']['r'][i][0].Message+"<br>";
							}
							var reg=/<br/gi;
							if(outstr.match(reg)){
								var count = outstr.match(reg);
								if(count.length<=10)out.style.height=count.length*17+"px";
								else out.style.height="180px";
							}
							else out.style.height="20px";
							out.innerHTML=outstr;
						}

						showZBUpData(zb);
					}

					if(response['type']=="glob"){
						if(response['func']=="update"){

							var sum=document.getElementById('sumdiv');
							sum.style.display="block";
							var out=document.getElementById('outdiv');
							out.style.display="block";

							if(response['sum'])sum.innerHTML=response['sum'];
							/*out.innerHTML="";*/
							if(response['updated']!="true"){
								if(response['data']['r'][0][0].Message)out.innerHTML+=response['data']['r'][0][0].Message;
								if(response['info'])out.innerHTML+=response['info'];
							}
							else{
								out.innerHTML+=response['data']['r'][0][0].Message+"<br/> ";
							}
							/*for(var i=0;i<response['data']['r'].length;i++){
								out.innerHTML+=response['data']['r'][i][0].Message+"<br/> ";
							}*/



							var reg=/<br/gi;
							if(out.innerHTML.match(reg)){
								var count = out.innerHTML.match(reg);
								if(count.length<=10)out.style.height=count.length*17+"px";
								else out.style.height="180px";
							}
							else out.style.height="20px";

							if(response['scope']=="geo"){
								results=new Array();
								results=response;
								getGeo(0);
							}
						}
					}

					if(response['type']=="admin"){

						if(response['func']=="update"){
							var out=document.getElementById('outdiv');
							out.style.display="block";
							out.style.height="20px";
							out.innerHTML="";
							var outstr="";
							for(var i=0;i<response['data']['r'].length;i++){
								outstr+=response['data']['r'][i].Message+"<br>";
							}
							out.innerHTML=outstr;
						}
						/*setBDZTable(results);*/
					}



				}
			}

			if(response['obj']=="Association"){
				var errbox=document.getElementById('errorbox');
				if(errbox){
					errbox.innerHTML="";
					errbox.style.display="none";
				}
				var info=document.getElementById('infobox');
				if(info)info.style.display="none";

				if(response['data']){
					if(response['data']['r']){
						if(response['func']=="get")	{
							if(response['type']=="self")	{
								var log=document.getElementById('logName');
								log.innerHTML="<b>"+response['data']['r'][0].lvName+"</b><br/>"+response['data']['r'][0].lvNameExt;

                                var lastUploadDate=document.getElementById('lastUploadDate');
                                var data = response['data']['r'][0].lastUploadData;
                                if (data == false) {
                                    document.getElementById('lastUploadDateText').innerHTML =
                                        'Seit dem 14.09.2009 wurde keine Mitgliederaktualisierung vorgenommen.';
                                } else {
                                    lastUploadDate.innerHTML="<b>" + data + " Uhr</b>";
                                }
							}
							else showLVSearchResult(response['data']['r']);
						}
					}
					else{
						if(response['data']['q']){
							errbox.style.display="block";
							var err="F&uuml;r ";
							if(response['data']['q'].distplz)err+="die eingegebene Postleitzahl ";
							if(response['data']['q'].lvblname)err+="das eingegebene Bundesland ";
							err+="konnte kein <br/>verantwortlicher Landesverband in der Verbandstruktur<br/>des BDZ gefunden werden.";
							errbox.innerHTML=err;
						}
					}
				}
			}

			if(response['obj']=="Federation"){
				if(response['func']=="get"){
					if(response['type']=="self"){
						showBDZData(response['data'][0]);
						showLastImportDate(response);
					}
				}
			}

			if(response['obj']=="Qualitysymbol"){
				if(response['data']['r']){
					if(response['func']=="get"){
						if(response['type']=="select"){
							gz=response['data']['r'];
							drawSelection('qsymb',response['data']['r']);
						}
						if(response['type']=="oview"){
							showGZ(response['data']['r']);
						}
						if(response['type']=="bdz"){
							fillGZs(response);
						}
					}
				}
			}
			if(response['obj']=="Accomplishment"){
				if(response['data']['r']){
					if(response['func']=="get"){
						if(response['type']=="select"){
							lm=response['data']['r'];
							drawSelection('acc',response['data']['r']);
						}
					}
				}
			}

			if(response['obj']=="Admin"){
				if(response['func']=="get"){
					if(response['type']=="self"){
					    showAdminData(response['data'][0]);
					    showLastImportDate(response);
					}
				}

			}


			if(response['obj']=="Editor"){

				if(response['func']=="get"){
					if(response['type']=="self"){
						showEditorData(response['data'][0]);
					}
				}

			}


		}

	}
}

var mCallback = new callback();
var AjaxHandler = new AjaxHandler(mCallback);

function getAjaxCall(query){
	AjaxHandler.doRequest(query);
}