var sakdbangebote;

function initSakDBAngebote(){
  sakdbangebote=new SakDBAngebote();
  sakdbangebote.render();
}

function SakDBAngebote(){
  this.type_ausbildung=false;
  this.type_weiterbildung=false;
  
  this.render=function(){
    this.renderCoaches();
    this.renderSearchBox();
  };
  
  
  this.renderCoaches=function(){
      var el=document.getElementById("coachlist");
      var count=0;
      if(el){
	var s="";
      var e=document.getElementById("searchfield");
      if(e)
	  this.query=trim(e.value);  
  //    if(isNaN(this.query))
	this.searchmatches=this.jsdb.search(this.query,"titel".split(","));
 //    else
//		this.searchmatches=this.jsdb.search(this.query,"plz".split(","));
 
//    alert(this.searchmatches.indexOf("1"));
	for(var n=0;n<this.jsdb.datapoints.length;n++){
	  var dp=this.jsdb.datapoints[n];
	  var typ=dp.getValue("typ").toLowerCase();
	  if((typ=="weiterbildung" && this.type_weiterbildung) || (typ=="ausbildung" && this.type_ausbildung)){
	  //if(this.searchmatches.indexOf(n)>-1 && this.hasSelWorkfocus(dp) && this.hasSelTargetGroup(dp) && this.hasSelPLZ(dp)){
	  if(this.searchmatches.indexOf(n)>-1 && (this.tgall || this.hasSelTargetGroup(dp))){
	    s+=this.renderCoach(dp);
	    count++;
	    }
	}
	}
	el.innerHTML=s;
	el=document.getElementById("resultinfo");
	if(el){
	  var s="<table class=\"searchresultinfo\"><tr><td>Ihre Suche ergab "+count+" Treffer";// (sortiert nach ";
	/*  var cssclass=this.sortby=="titel"?"search_selected":"search_unselected";
	  s+="<a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.setSorting('titel')\">Titel</a>";
	  cssclass=this.sortby=="plz"?"search_selected":"search_unselected";
	  s+="<a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.setSorting('plz')\">PLZ</a>";
	  cssclass=this.sortby=="ort"?"search_selected":"search_unselected";
	  s+="<a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.setSorting('ort')\">Ort</a>";*/
	  s+="</td></tr></table>";
	  el.innerHTML=s;
	}
      }else
	alert("problem rendering angebote - target dom-element not found");
    };
    
    this.toggleTypeAusbildung=function(){
      this.type_ausbildung=!this.type_ausbildung;
      this.render();
    };
    
    this.toggleTypeWeiterbildung=function(){
      this.type_weiterbildung=!this.type_weiterbildung;
      this.render();
    };

 this.renderSearchBox=function(){
    var el=document.getElementById("coachsearchbox");
	if(el){
	  var cls=this.type_ausbildung?"search_selected":"search_unselected";
	  var s="<a id=\"type_ausbildung\" href=\"javascript:sakdbangebote.toggleTypeAusbildung()\" class=\""+cls+"\">Ausbildung</a>";
	  var cls=this.type_weiterbildung?"search_selected":"search_unselected";
	  s+="<a id=\"type_weiterbildung\" href=\"javascript:sakdbangebote.toggleTypeWeiterbildung()\" class=\""+cls+"\">Weiterbildung</a>";
	  
	  //"<div class=\"agboxkey\">Zielgruppen</div>";
	/*  s+="<select id=\"tgselect\" onchange=\"sakdbangebote.tgChanged()\">";
	  if(this.tgall)
	    s+="<option selected value=\"Alle\">";
	  else
	    s+="<option value=\"Alle\" >";
	  s+="Alle</option>";
	  for(var n=0;n<this.targetgroups.kvs.length;n++){ 
	    var tgname=this.targetgroups.kvs[n].key;
	    var tgsel=this.targetgroups.kvs[n].val;
	    if(tgsel=="true" && !this.tgall)
	      s+="<option selected value=\""+tgname+"\">";
	    else
	      s+="<option value=\""+tgname+"\">";
	    s+=tgname+"</option>";
	  }
	  s+="</select>";
	*/
	  el.innerHTML=s;
	}else
	  alert("problem rendering searchbox - target dom-element not found");
  };

 /* this.tgChanged=function(){
    tg=document.getElementById("tgselect").value;
    if(tg=="Alle"){
      this.selAllTG();
      return;
    }
    this.tgall=false;
    for(var n=0;n<this.targetgroups.kvs.length;n++){
//       alert(this.targetgroups.kvs[n].key+"::"+tg);
	if(this.targetgroups.kvs[n].key==tg)
	  this.targetgroups.kvs[n].val="true";
	else
	  this.targetgroups.kvs[n].val="false";
     }
     this.render();

  };
/*
  this.renderSearchBox=function(){
    var el=document.getElementById("coachsearchbox");
	if(el){
	  var s="<table class=\"searchboxdetails\">";
	
	  s+="<td ><span class=\"search_headline\">Suchfilter<br></span><br><span class=\"search_headline\">PLZ</span>";
	  s+="<a class=\"search_selall\" href=\"javascript:sakdbangebote.selAllPLZ()\">(Alle)</a><br>";
	  for(var n=1;n<10;n++){
            cssclass=this.plzs.getValue(""+n)=="true"?"search_selected2":"search_unselected2";
            s+="<a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.togglePLZSelection('"+n+"')\">"+n+"..</a>";
            if(n==3 || n==6)
              s+="<br>";
	  }
      s+="<br><br></td></tr><tr>";
	  s+="<td style=\"vertical-align:top\"><span class=\"search_headline\">Arbeitsschwerpunkte</span>";
	  s+="<a class=\"search_selall\" href=\"javascript:sakdbangebote.selAllWF()\">(Alle)</a>";
	  for(var n=0;n<this.workfocusses.kvs.length;n++){
	    var wfname=this.workfocusses.kvs[n].key;
	    var wfsel=this.workfocusses.kvs[n].val;
	    cssclass=wfsel=="true"?"search_selected2":"search_unselected2";
	    s+="<br><a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.toggleWFSelection('"+wfname+"')\">"+wfname+"</a>";
	  }

	  s+="<br><br></td></tr><tr><td style=\"vertical-align:top\">"
	  s+="<span class=\"search_headline\">Zielgruppen</span>";
	  s+="<a class=\"search_selall\" href=\"javascript:sakdbangebote.selAllTG()\">(Alle)</a>";
	  for(var n=0;n<this.targetgroups.kvs.length;n++){
	    var tgname=this.targetgroups.kvs[n].key;
	    var tgsel=this.targetgroups.kvs[n].val;
	    cssclass=tgsel=="true"?"search_selected2":"search_unselected2";
	    s+="<br><a class=\""+cssclass+"\" href=\"javascript:sakdbangebote.toggleTGSelection('"+tgname+"')\">"+tgname+"</a>";
	  }
	  s+="</td></tr></table>";
	
	  el.innerHTML=s;
	}else
	  alert("problem rendering searchbox - target dom-element not found");
  };
*/

  this.renderCoach=function(dp){
    var id=dp.getValue("id");
    var viewmode=this.viewmodes.getValue(id);
    if(!viewmode){
      viewmode=1;
      this.viewmodes.setValue(id,viewmode);
    }
   var h="<table class=\"coachbox\" border=0><tr>";
    h+="<td  style=\"max-width:600px;width:600px;\"><table style=\"width:100%\" border=0>"
     h+="<tr><td colspan=\"2\" class=\"agboxname\">"+dp.getValue("titel","(kein titel)")+"</td></tr>";
    h+="<tr><td class=\"agboxkey\">Typ</td><td class=\"agboxvalue\">"+dp.getValue("typ","(keine Angabe)")+"</td></tr>";

     h+="<tr><td class=\"agboxkey\">Vollzeit</td><td class=\"agboxvalue\">"+dp.getValue("vollzeit","(keine Angabe)")+"</td></tr>";
    h+="<tr><td class=\"agboxkey\">Berufsbegleitend</td><td class=\"agboxvalue\">"+dp.getValue("berufsbegleitend","(keine Angabe)")+"</td></tr>";

   // h+="<tr><td class=\"agboxkey\">Ort</td><td class=\"agboxvalue\">"+highlight(dp.getValue("ort","(keine Angabe)"),this.query)+"</td></tr>";

//     var tgs=this.getTargetGroups(dp);
//     if(tgs && tgs.length>0){
//       h+="<tr><td class=\"agboxkey\">Zielgruppen</td><td class=\"agboxvalue\">";
//       for(var n=0;n<tgs.length;n++){
// 	h+=highlight(tgs[n],this.query);
// 	if(n<tgs.length-1)
// 	  h+=",<br>";
//       }
//       h+="</td></tr>";
//     }
// 
//     var wfs=this.getWorkFocusses(dp);
//     if(wfs && wfs.length>0){
//       h+="<tr><td class=\"agboxkey\">Arbeitsschwerpunkte</td><td class=\"agboxvalue\">";
//       for(var n=0;n<wfs.length;n++){
// 	h+=highlight(wfs[n],this.query);;
// 	if(n<wfs.length-1)
// 	  h+=",<br>";
//       }
//       h+="</td></tr>";
//     }

    if(viewmode==2){
		var v=dp.getValue("fachgebiete");
		if(v && trim(v)!="")
			h+="<tr><td class=\"agboxkey\">Fachgebiete</td><td class=\"agboxvalue\">"+v+"</td></tr>";
		var v=dp.getValue("zulassungsvoraussetzungen");
		if(v && trim(v)!="")
			h+="<tr><td class=\"agboxkey\">Zulassungsvoraussetzungen</td><td class=\"agboxvalue\">"+v+"</td></tr>";
    }
    h+="</table>";
    if(viewmode==1){
      	  h+="<a class=\"search_selall\" href=\"javascript:sakdbangebote.setViewMode("+id+",2)\">Details einblenden</a>";
    }else{
     	  h+="<a class=\"search_selall\" href=\"javascript:sakdbangebote.setViewMode("+id+",1)\">Details ausblenden</a>";
    }
    h+="</td></table>";
    return h;
  };
  
  
// PLZs:
//-----------------
  this.hasSelPLZ=function(dp){
    var plz=dp.getValue("plz");
    if(plz){
      if(this.plzs.getValue(plz.charAt(0))=="true")
        return true;
    }
    return false;
  };
  
  this.togglePLZSelection=function(plz){
    var s=this.plzs.getValue(plz);
    if(s=="true")
      this.plzs.setValue(plz,"false");
    else
      this.plzs.setValue(plz,"true");
    this.render();
  };
  
    this.selAllPLZ=function(){
     for(var n=1;n<=9;n++)
      this.plzs.setValue(""+n,"true");
     this.render();
  };

// Targetgroups:
//-----------------

  this.hasSelTargetGroup=function(dp){
   var tgs=this.getTargetGroups(dp);
   
   var tg=dp.getValue("zielgruppen");
   for(var n=0;n<this.targetgroups.kvs.length;n++){
    if(this.targetgroups.kvs[n].val=="true"){
	var tmp=this.targetgroups.kvs[n].key.split("/");
	for(var i=0;i<tmp.length;i++){
	    var t=tmp[i].toLowerCase();
// 	    alert(t);
	    for(var j=0;j<tgs.length;j++){
		if(tgs[j].toLowerCase().indexOf(t)>-1)
		    return true;
	    }
	}
    }
   }
   return false;
   /* var tgs=this.getTargetGroups(dp);
    for(var n=0;n<tgs.length;n++)
      if(this.targetgroups.getValue(tgs[n])=="true")
	return true;
    return false;*/
  };

  this.selAllTG=function(){
      this.tgall=true;
     for(var n=0;n<this.targetgroups.kvs.length;n++)
      this.targetgroups.setValue(this.targetgroups.kvs[n].key,"true");
     this.render();
  };
  
  this.toggleTGSelection=function(tg){
  var s=this.targetgroups.getValue(tg);
    if(s=="true")
      this.targetgroups.setValue(tg,"false");
    else
      this.targetgroups.setValue(tg,"true");
    this.render();
  };

  this.updateTargetGroups=function(){
    this.targetgroups=new DataPoint();
/*    for(var n=0;n<this.jsdb.datapoints.length;n++){
      var dp=this.jsdb.datapoints[n];
      var tg=dp.getValue("zielgruppen");
      if(tg){
	var tmp=tg.split("+");
	if(tmp){
	  for(var i=0;i<tmp.length;i++){
	    var t=tmp[i];
	    if(t){
		  t=trim(t);
			t=t.replace("&uuml;","ü");
			t=t.replace("&ouml;","ö");
			t=t.replace("&auml;","ä");
			t=t.replace("&Uuml;","Ü");
			t=t.replace("&Ouml;","Ö");
			t=t.replace("&Auml;","Ä");
	      this.targetgroups.setValue(t,"true");
		}
	  }
	}
      }
    }*/
    	/*  s+="<option value=\"Angestellte\">Angestellte</option>";
	  s+="<option value=\"Berater/Trainer\">Berater/Trainer</option>";
	  s+="<option value=\"Eltern\">Eltern</option>";
	  s+="<option value=\"Existenzgründer/Jungunternehmer\">Existenzgründer/Jungunternehmer</option>";
	  s+="<option value=\"Frauen\">Frauen</option>";
	  s+="<option value=\"Freiberufler\">Freiberufler</option>";
	  s+="<option value=\"Führungskräfte/Manager\">Führungskräfte/Manager</option>";
	  s+="<option value=\"Führungsnachwuchs\">Führungsnachwuchs</option>";
	  s+="<option value=\"Handwerker\">Handwerker</option>";
	  s+="<option value=\"Projektleiter\">Projektleiter</option>";
	  s+="<option value=\"Schüler/Studenten/Berufseinsteiger\">Schüler/Studenten/Berufseinsteiger</option>";
	  s+="<option value=\"Seketärinnen/AssistentInnen\">Seketärinnen/AssistentInnen</option>";
	  s+="<option value=\"Speaker\">Speaker</option>";
	  s+="<option value=\"Unternehmer\">Unternehmer</option>";
	  s+="<option value=\"Vorstände\">Vorstände</option>";
	  s+="<option value=\"WiedereinsteigerInnen\">WiedereinsteigerInnen</option>";*/
	  
    this.targetgroups.setValue("Angestellte","true");
    this.targetgroups.setValue("Berater/Trainer","true");
    this.targetgroups.setValue("Eltern","true");
    this.targetgroups.setValue("Existenzgründer/Jungunternehmer","true");
    this.targetgroups.setValue("Frauen","true");
    this.targetgroups.setValue("Freiberufler","true");
    this.targetgroups.setValue("Führungskräfte/Manager","true");
    this.targetgroups.setValue("Führungsnachwuchs","true");
    this.targetgroups.setValue("Handwerker","true");
    this.targetgroups.setValue("Projektleiter","true");
    this.targetgroups.setValue("Schüler/Studenten/Berufseinsteiger","true");
    this.targetgroups.setValue("Seketärinnen/AssistentInnen","true");
    this.targetgroups.setValue("Speaker","true");
    this.targetgroups.setValue("Unternehmer","true");
    this.targetgroups.setValue("Vorstände","true");
    this.targetgroups.setValue("WiedereinsteigerInnen","true");
    this.targetgroups.sort();
  };

  this.getTargetGroups=function(dp){
      var result=new Array();
      var tg=dp.getValue("zielgruppen");
      if(tg){
	var tmp=tg.split("+");
	if(tmp){
	  for(var i=0;i<tmp.length;i++){
	    var t=tmp[i];
	    if(t)
	      result[result.length]=t;
	  }
	}
      }
    return result;
  };

// Workfocusses:
//-----------------
/*
  this.hasSelWorkfocus=function(dp){
    var wfs=this.getWorkFocusses(dp);
    for(var n=0;n<wfs.length;n++)
      if(this.workfocusses.getValue(wfs[n])=="true")
	return true;
    return false;
  };

  this.selAllWF=function(){
     for(var n=0;n<this.workfocusses.kvs.length;n++)
      this.workfocusses.setValue(this.workfocusses.kvs[n].key,"true");
     this.render();
  };
  
  this.toggleWFSelection=function(wf){
  var s=this.workfocusses.getValue(wf);
    if(s=="true")
      this.workfocusses.setValue(wf,"false");
    else
      this.workfocusses.setValue(wf,"true");
    this.render();
  };

  this.updateWorkFocusses=function(){
    this.workfocusses=new DataPoint();
   // this.sel_workfocusses=new Array();
    for(var n=0;n<this.jsdb.datapoints.length;n++){
      var dp=this.jsdb.datapoints[n];
      var wf=dp.getValue("arbeitsschwerpunkte");
      if(wf){
	var tmp=wf.split("+");
	if(tmp){
	  for(var i=0;i<tmp.length;i++){
	    var w=tmp[i];
	    if(w)
	      this.workfocusses.setValue(w,"true");
	  }
	}
      }
    }
    this.workfocusses.sort();
  };
*/
  this.getWorkFocusses=function(dp){
      var result=new Array();
      var wf=dp.getValue("arbeitsschwerpunkte");
      if(wf){
	var tmp=wf.split("+");
	if(tmp){
	  for(var i=0;i<tmp.length;i++){
	    var w=tmp[i];
	    if(w)
	      result[result.length]=w;
	  }
	}
      }
    return result;
  };

// Sorting:
//-----------------

  this.setSorting=function(s){
    this.sortby=s;
    if(s=="titel")
      this.jsdb.datapoints.sort(this.sort_titel);
    if(s=="plz")
      this.jsdb.datapoints.sort(this.sort_plz);
    if(s=="ort")
      this.jsdb.datapoints.sort(this.sort_ort);
    this.render();
  };

  this.sort_titel=function(dp1, dp2){
    var nn1=dp1.getValue("titel");
    var nn2=dp2.getValue("titel");
    if(nn1 && !nn2)	
      return -1;
    if(!nn1 && nn2)	
      return 1;
    if(!nn1 && !nn2)	
      return 0;
    if(nn1>nn2)
      return 1;
    if(nn1<nn2)
      return -1;
    return 0;
  };

  this.sort_ort=function(dp1, dp2){
    var nn1=dp1.getValue("ort");
    var nn2=dp2.getValue("ort");
    if(nn1 && !nn2)	
      return -1;
    if(!nn1 && nn2)	
      return 1;
    if(!nn1 && !nn2)	
      return 0;
    if(nn1>nn2)
      return 1;
    if(nn1<nn2)
      return -1;
    return 0;
  };

  this.sort_plz=function(dp1, dp2){
    var nn1=dp1.getValue("plz");
    var nn2=dp2.getValue("plz");
    if(nn1 && !nn2)	
      return -1;
    if(!nn1 && nn2)	
      return 1;
    if(!nn1 && !nn2)	
      return 0;
    if(nn1>nn2)
      return 1;
    if(nn1<nn2)
      return -1;
    return 0;
  };

  this.setViewMode=function(id,mode){
      this.viewmodes.setValue(id,mode);
      this.render();
  };

  this.tgall=true;
  this.jsdb=new JSDB();
  this.jsdb.nostrip=true;
  this.jsdb.loadData("data_angebote.html");
  this.sortby="titel";
 // this.workfocusses=new DataPoint();
  this.targetgroups=new DataPoint();
  this.plzs=new DataPoint();
  this.viewmodes=new DataPoint();
  this.searchmatches=new Array();
//   this.updateWorkFocusses();
  this.updateTargetGroups();
    this.query="";
  for(var n=1;n<=9;n++)
    this.plzs.setValue(""+n,"true");
  this.setSorting("titel");
}



function highlight(txt,term){
	return txt;
	if(term.length==0)
	    return txt;
// 	    alert("term='"+term+"' txt='"+txt+"'");
	txt=txt.replace(term,"<span style=\"font-weight:bold;color:#ee5500\">"+term+"</span>");
	if(isNaN(term))
	    term=term.substring(0,1).toUpperCase()+term.substring(1);
	txt=txt.replace(term,"<span style=\"font-weight:bold;color:#ee5500\">"+term+"</span>");
	return txt;
	//var t=txt.toLowerCase();
	//t=t.replace(/term/i,"<span style=\"font-weight:bold;color:#ee5500\">"+term+"</span>");
// 		t=t.replace(term,"!"+term+"!");
	//return t;
}



