// gmap vars
var map
var NL_CENTER=new GLatLng(52, 5.03)
var markerOptions
var oproepen
var markers
var latLngBounds
var types=new Array('oproep','aanbod','mijnads','mijnreacs')
var perPagina=23

function checkForm(wat,f){  
    var err='',d,A,B,OP
    if (wat=='reactie'||wat=='r_op_r') { 
        if (f.reactieTxt.value=='') {
            alert('U heeft nog geen reactie gegeven')
            f.reactieTxt.focus();
            return false
        }
        if (f.gastNaam){
            if (f.gastNaam.value=='') { 
                alert('Omdat niet bent geregistreerd moet u een naam opgeven');
                f.gastNaam.focus();
                return false;
            }
            if (!emCheck(f.gastEmail.value)) {
                alert('Omdat niet bent geregistreerd moet u een geldig e-mail adres opgeven,\nop deze manier kan de plaatser contact met u opnenmen.');
                f.gastEmail.focus();
                return false;
            }	
        }
    }
    else if (wat=='vacature'){
        OP=f.type.value=='oproep'; if (OP) d=f.deadline.value;
        if (f.nameAsset.value=='') { f.nameAsset.focus(); err='Geeft u de vacature een titel'; }
        else if (f.omschrijving.value=='') { f.omschrijving.focus(); err='Geeft u een omschrijving van de oproep'; }
        else if (OP&&d!=''&&!isDate(d)) { f.deadline.focus();err='Geef geen of geldige deadline'; }
        else if (f.categorie.value==0) err='Kies een categorie';
        else if (f.organisatie.value==0) err='Kies uw organisatietype';
        else if (f.logInNow.value==1) {
            if (f.username.value!=''&& f.password.value!='' || f.usernameNew.value!='' && f.passwordNew.value!='' && f.emailNew.value!='') {}	
            else err='U bent momenteel niet ingelogd en inlog/registratie velden zijn niet ingevuld'
        }
        if (err!='') { alert(err);	return false }
    }
    return true
}
function menu(aan,doload){
    var f=document.forms['jobForm'],i
    formCurrent=aan
    var knop=new Array($(types[0]),$(types[1]),$(types[2]),$(types[3]))
    for (i=0;knop[i];i++) knop[i].className='knop'
    knop[aan].className='knopAan'
    f.keywords.value=formKey[aan]; f.cat.value=formCat[aan]; f.openVac.checked=formOpen[aan]==1
    f.order.value=formOrder[aan]; 
    f.type.value=types[aan]
    if (doload){
        if (!jobResults[aan]) zoekJob(f,1)
        else updateResults()
    } 
    else window.location="jobcenter?cat=10&A=25&offset=0&type="+types[aan] 
    return false
}
function setOff(off){
    var f=document.forms['jobForm']
    formOffset[formCurrent]=off
    zoekJob(f,0)
    return false
}  
function realSubmit(){ 
    var f=document.forms['jobForm']
    f.type.value=types[formCurrent]
    f.action='jobcenter'; 
    f.submit()
}
function zoekJob(f,resetOffset){ 
    document.getElementById('jobResults').innerHTML='<br><br>&nbsp;&nbsp;<img src="/img/animated_loading.gif"> laden...'
    if (resetOffset) formOffset[formCurrent]=0
    formCat[formCurrent]=f.cat.value
    formKey[formCurrent]=f.keywords.value
    formOrder[formCurrent]=f.order.value
    var a=f.A.value
    formOpen[formCurrent]=f.openVac.checked?1:0
    readJobs(f.cat.value,f.keywords.value,f.openVac.checked,a)
    return false
}
function readJobs(cat,keywords,openVac,a){ 
    if (document.xmlHttp) {
        try {
            if (document.xmlHttp.readyState==0||document.xmlHttp.readyState==4){
                var url="/rss/vacancy_list.php?offset="+formOffset[formCurrent]+"&type="+formCurrent+"&cat="+cat+"&A="+a+"&keywords="+keywords+"&openVac="+(openVac?1:0)
                //	   prompt('',url)
                document.xmlHttp.open("GET",url,true)
                document.xmlHttp.onreadystatechange=handleResponse
                document.xmlHttp.send(null);
            }
            else {}
        }
        catch (e) {}
    }
    else alert('browser does not allow http-request')
}
function handleResponse(){ 
    if (document.xmlHttp.readyState==4) {
        if (document.xmlHttp.status==200) {
            try {  
                var xmlResponse=document.xmlHttp.responseXML
                var xmlDoc=xmlResponse.documentElement
                var id,datum,deadline,organisatie,titel
                var vacancies = xmlDoc.getElementsByTagName("vacancy");
                jobResults[formCurrent]=new Array()
                for (var i = 0; i < vacancies.length; i++) {
                    jobResults[formCurrent][i]=new Array()
                    jobResults[formCurrent][i]['titel']=vacancies[i].getAttribute('titel')
                    jobResults[formCurrent][i]['stad']=vacancies[i].getAttribute('stad')
                    jobResults[formCurrent][i]['datum']=vacancies[i].getAttribute('datum')
                    jobResults[formCurrent][i]['id']=vacancies[i].getAttribute('id')
                    jobResults[formCurrent][i]['strip']=vacancies[i].getAttribute('strip')
                    jobResults[formCurrent][i]['organisatie']=vacancies[i].getAttribute('organisatie')
                    jobResults[formCurrent][i]['deadline']=vacancies[i].getAttribute('deadline')
                    jobResults[formCurrent][i]['reacties']=vacancies[i].getAttribute('reacties')
                    jobResults[formCurrent][i]['soort']=vacancies[i].getAttribute('soort')
                }
                var aantalNode=xmlDoc.getElementsByTagName('aantal')
                jobAantal[formCurrent]=aantalNode[0].getAttribute('value')
                updateResults()
            }
            catch(e) { }
        }
    }
}
function updateResults(){
    var txt='<div class=header style="width:440px">'
    if (pageType=='index') {
        txt+='<div>'
        if (!formCurrent) txt+='RECENTE JOBS'
        else if (formCurrent==1) txt+='RECENT AANGEBODEN'
        else if (formCurrent==2) txt+='MIJN ADVERTENTIES'
        else if (formCurrent==3) txt+='MIJN REACTIES'
        txt+='</div></div>';
    }
    else txt+='<div>ZOEKRESULTATEN <span style="font-weight:normal">('+jobAantal[formCurrent]+' gevonden)</span></div></div>';
    if (formCurrent!=1)txt+='<div class=header style="width:92px"><div>'
    if (!formCurrent) txt+='door'
    else if (formCurrent==1) {}
    else if (formCurrent==2) txt+='type'
    else if (formCurrent==3) txt+='type'
    if (formCurrent!=1) txt+='</div></div>';
    txt+='<div class=header style="width:92px;background:url(../img/jobcenter_blueBG.gif) repeat-x"><div>geplaatst</div></div>';
    txt+='<div class=header style="width:92px"><div>'
    if (!formCurrent) txt+='reacties'
    else if (formCurrent==1) txt+='plaatsnaam'
    else if (formCurrent==2) txt+='reacties'
    else if (formCurrent==3) {}
    txt+='</div></div>';
    var greys=new Array('#fff','#f0f1f3'), blues=new Array('#f4f9fc','#E6EEF1'),col=0,reacs
    var none=true
    for (i=0;jobResults[formCurrent][i];i++){ none=false
        txt+='<div class=jobveld style="width:440px;background:'+greys[col]+'" >'
        txt+='<a href="/jobcenter/'+jobResults[formCurrent][i]['id']+'/'+jobResults[formCurrent][i]['strip']
        txt+='" class=titel>'
        txt+=jobResults[formCurrent][i]['titel']+'</a></div>'
        if (formCurrent!=1) txt+='<div class=jobveld style="width:92px;background:'+greys[col]+'"><div>'
        if (!formCurrent) txt+=jobResults[formCurrent][i]['organisatie']
        else if (formCurrent==1) {}
        else if (formCurrent==2) txt+=jobResults[formCurrent][i]['soort']
        else if (formCurrent==3) txt+=jobResults[formCurrent][i]['soort']
        if (formCurrent!=1) txt+='</div></div>'
        txt+='<div class=jobveld style="width:92px;background:'+blues[col]+'"><div>'+jobResults[formCurrent][i]['datum']+'</div></div>'
        if (!formCurrent) reacs=(jobResults[formCurrent][i]['reacties']>0?jobResults[formCurrent][i]['reacties']:'-')
        else if (formCurrent==1) reacs=jobResults[formCurrent][i]['stad']
        else if (formCurrent==2) reacs=(jobResults[formCurrent][i]['reacties']>0?jobResults[formCurrent][i]['reacties']:'-')
        else if (formCurrent==3) reacs=''
        txt+='<div class=jobveld style="width:'+(formCurrent==1?184:92)+'px;background:'+greys[col]+'"><div>'+reacs+'</div></div>'
        col=1-col
    } 
    if (none) txt+='<div class=jobveld style="width:600px"><div><b>Er zijn geen oproepen gevonden die voldoen aan criteria</b></div></div>'
    else if (pageType=='index') {
        txt+='<a href="javascript:void(0)" onclick="realSubmit()" id="seeAllJobs">'
        if (!formCurrent) txt+='Bekijk alle oproepen'
        else if (formCurrent==1) txt+='Bekijk het hele aanbod'
        else if (formCurrent==2) txt+='Bekijk al mijn vacatures'
        else if (formCurrent==3) txt+='Bekijk al mijn reacties'
        txt+='&nbsp;&raquo;</a>';
    } 
    else {
        if (jobAantal[formCurrent]>perPagina) addPaginatie()
        else $('pagina_indeling').innerHTML=''
    }
    $('jobResults').innerHTML=txt
}
function addPaginatie(){
    var d=$('pagina_indeling'), txt='<span>Pagina</span>',i=1,tot=0,offset=formOffset[formCurrent],jA=jobAantal[formCurrent]
    if (offset>0) txt+="<a href='javascript:void(0)' onclick='setOff("+(offset-1)+")'>&laquo;</a>"
    while (tot<jA){
        txt+="<a href='javascript:void(0)' onclick='setOff("+(i-1)+")' "+((i-1)==offset?'class=active':'')+">"+i+"</a>"
        i++; tot+=perPagina
    }
    if ((offset*perPagina+perPagina)<jA) txt+="<a href='javascript:void(0)' onclick='setOff("+(offset+1)+")'>&raquo;</a>"
    d.innerHTML=txt
}
// GMAP functies

function loadMap(element) {
    if (GBrowserIsCompatible()) {
        if (!map) {
            map = new GMap2(element);
            map.addControl(new GSmallMapControl());
            map.enableScrollWheelZoom()
            var blueIcon = new GIcon(G_DEFAULT_ICON);
            blueIcon.iconSize=new GSize(32,32)
            blueIcon.image = "http://maps.google.com/mapfiles/ms/micons/ltblue-dot.png";
            markerOptions = { icon:blueIcon };
        }
        map.clearOverlays()
        map.setCenter(NL_CENTER,6)
    }
}
function _Oproep(id,lat,lng,adres,stad,naam,datum,deadline,i){
    this.lat=lat; this.lng=lng; this.adres=adres; this.naam=naam; this.id=id; 
    this.stad=stad; this.i_=i; this.datum=datum; this.deadline=deadline
    return this
}
function laadLoc(cat,stad,cat_naam){
    laadOproepen(cat,stad,cat_naam)
    return false
}
function laadOproepen(cat,stad,cat_naam){ 
    var url="/rss/vacancy_location.php?cat="+cat+"&stad="+stad
    GDownloadUrl(url, function(data) {
        oproepen=new Array()
        var xml = GXml.parse(data),info;
        var lat,lng,bedrijf,adres,id,i=0,markers = xml.documentElement.getElementsByTagName("marker");
        for (i = 0; markers[i]; i++) {
            lat=parseFloat(markers[i].getAttribute("lat"))
            lng=parseFloat(markers[i].getAttribute("lng"))
            adres=markers[i].getAttribute('adres'); 
            datum=markers[i].getAttribute('date'); 
            deadline=markers[i].getAttribute('deadline'); 
            stad=markers[i].getAttribute('stad')
            id=markers[i].getAttribute("id")
            naam=markers[i].getAttribute("titel")
            vac=new _Oproep(id,lat,lng,adres,stad,naam,datum,deadline,i)
            oproepen.push(vac)
        }
        var txt='<b>'+(i?i:'geen')+'</b> oproep'+(i==1?'':'en')
        if (cat>0) txt+=' voor <b>'+cat_naam.toLowerCase()+'</b>'
        $('jobLocationResults').innerHTML=txt
        toonOproepen()
    });
}
function toonOproepen(){
    if (!map) loadMap($('googleMap'))
    map.clearOverlays()
    markers=new Array()
    if (!oproepen||!oproepen.length) { map.setCenter(NL_CENTER,6); return; }
    latLngBounds=new GLatLngBounds()
    for (var i=0;oproepen[i];i++) addOproepMarker(i)
    mapZoomCenter()
}
function addOproepMarker(n){
    var v=oproepen[n]
    var lat=v.lat, lng=v.lng
    var latlng=new GLatLng(lat,lng)
    var marker=new GMarker(latlng,markerOptions)
    marker.addOproep(v)
    GEvent.addListener(marker,'click',function() { window.location='/jobcenter?id='+this.oproep_.id  })
    GEvent.addListener(marker,'mouseover',function() { this.showSmallDiv();  })
    GEvent.addListener(marker,'mouseout',function() { this.hideSmallDiv(); })
    markers.push(marker)
    latLngBounds.extend(latlng)
    map.addOverlay(marker)  
}
function mapZoomCenter(){ 
    if (!map) return
    if (!latLngBounds||latLngBounds.isEmpty()) map.setCenter(NL,7); 
    else {
        var zoom=map.getBoundsZoomLevel(latLngBounds);
        if (zoom>16) zoom=16;
        //if (oproepen.length<5)
        zoom--
        map.setCenter(latLngBounds.getCenter(), zoom);
    }
}
// prototypen extensies
GMarker.prototype.addOproep= function(v){ this.oproep_=v; }
GMarker.prototype.showSmallDiv = function(){ 
    var v=this.oproep_
    var lat = v.lat, lng = v.lng;
    var latlng = new GLatLng(lat,lng);
    var txt='<b>'+v.naam+'</b>'
    //  if (v.datum!="") txt+='<br>'+v.datum
    //  if (v.deadline!="") txt+='<br>(deadline: '+v.deadline+')'
    this.smallDiv_ = new smallDiv(latlng, txt);
    map.addOverlay(this.smallDiv_);
}
GMarker.prototype.hideSmallDiv = function() {
    if(this.smallDiv_!=null) this.smallDiv_.remove();
    this.smallDiv_ = null;
}
function smallDiv( latLng, text ){
    this.latLng_ = latLng;
    this.text_=text
}
smallDiv.prototype = new GOverlay();
smallDiv.prototype.initialize = function( map ) {
    var div = $("small_div_node");
    div.style.display='block';
    div.innerHTML = this.text_
    map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
    this.map_ = map;
    this.div_ = div;
}
smallDiv.prototype.remove = function() {
    if(this.div_ && this.div_.parentNode) this.div_.style.display='none'
}
smallDiv.prototype.copy = function() {
    return new smallDiv(this.latLng_, this.text_);
}
smallDiv.prototype.redraw = function(force) {
    if (!force) return;
    var c = this.map_.fromLatLngToDivPixel(this.latLng_);
    this.div_.style.left = (c.x -50 ) + "px";
    this.div_.style.top = (c.y - 94) + "px";
}

