/*********************
FORM CHECK
*********************/
function checkFields(param){
    // currently supports check values: char, int, float, zip, tel, email, checked, date (yyyy-mm-dd)
    // needs Jquery
    // set default values if none exist.
    param['inputBad'] = param['inputBad'] || '#fbe3e4';
    param['inputBadBorder'] = param['inputBadBorder'] || '#fbc2c4';
    param['inputOk'] = param['inputOk'] || '#e6efc2';  
    param['inputOkBorder'] = param['inputOkBorder'] || '#c6d880';
    
    var retval = true;
    var error = '';
    // check if there is a form.      
    if(param['form']){              
	// for each input field
	$('input, textarea, select', param['form']).each(function(){       
	    var re = undefined;
	    var tmpval = true;
	    switch($(this).attr('check')){
		case 'char':
		    re=/^.+$/; 
		    break;          
			case 'int':
		    re=/^\d+$/;
		    break;
			case 'float':
		    re=/^\d+\.?\d+?$/;
		    break;
			case 'zip':
		    re=/^\d{4}\s?\w{2}$/;
		    break;
			case 'tel':
		    re=/^\d{10}$/;
		    break;
			case 'email':
		    re= /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		    break;
			case 'date':
		    re= /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
		    break;
			case 'checked':
		    if(!$(this).attr("checked")){
			tmpval = false;
		    }
		    break;
			default:
		    re = undefined;
		    //skip because this element has no check
	    }       
	    
	    // handle regex
	    var ok = true;
	    if(re != undefined){      
		if(!re.test($(this).val())){
		    retval = false;              
		    ok = false;          
		}
	    }
	    
	    // handle visual
	    if(re){
		if(ok){
		    $(this).css("background", param['inputOk']); 
		    $(this).css("border", 'solid 1px '+param['inputOkBorder']);
		}else{  
		    $(this).css("background", param['inputBad']);
		    $(this).css("border", 'solid 1px '+param['inputBadBorder']);
		    if($('label[for='+$(this).attr('name')+']').attr('error')){
			error+=$('label[for='+$(this).attr('name')+']').attr('error')+"\n";
		    }
		}
	    }
	});
    }
    if(error.length > 0){
	$('label[for='+$(this).attr('name')+']').focus();
	alert(error);

    }
    // return if the form passed the test of not.
    return retval;
}


//*********************
// Verwijder image
//*********************

function delImage(form,target,srcid){
    if (document.forms[form][target].checked ){
	var r=confirm('Wil je deze afbeelding echt verwijderen?');
	if (r==true){
	    document.forms[form][target].checked = false; 
	}
	else {
	    document.forms[form][srcid].checked = false; 
	}	
	
    } else{
	document.forms[form][target].checked = true; 
    }
}


//*********************
// GEMIDDELDE BEREKENEN 
//*********************

// aanroep calcAverage('cijfer', 'gemmiddelde', 1,0);
function calcAverage(classname, targetelement, decimals ,exeptionvalue){
	var nodes = document.getElementsByTagName('input');
	var aantal = 0;
	var totaal = 0;
	for(i=0; i<nodes.length; i++){
		if(nodes[i].className == classname){
			if(nodes[i].value != exeptionvalue){	
				totaal+=parseInt(nodes[i].value);
				aantal++;
			}
		}
	}
	var retVal = 0;
	if(aantal > 0){	
		retVal = Math.round(totaal/aantal).toFixed(decimals);
	}
	document.getElementById(targetelement).value = retVal;
}



//*********************
// Rollover homepage
//*********************

function doOver(id,url){
	object = document.getElementById(id);
	object.src=url ;

	}

//*********************
// INPUT FIELD FOCUS
//*********************
function inpFocus(obj, stdText) {
  if (obj.value == stdText) {
     obj.value = '';
  }
}

function inpBlur(obj, stdText) {
  if (obj.value == '') {
     obj.value = stdText;
  }
}

//*********************
// GEMIDDELDE UITREKENEN
//*********************
function average(){
	var ids = new Array('value1','value2','value3','value4','value5','value6','value7','value8','value9','value10','value11','value12','value13','value14','value15','value16','value17','value18','value19','value20');
	var aantal = 0;
	var totaal = 0;
	for(i=0; i<ids.length; i++){
		if(document.getElementById(ids[i]) && document.getElementById(ids[i]).value > 0){
			aantal++;
			totaal += parseInt(document.getElementById(ids[i]).value);
		}
	}
	var uitkomst = Math.round(totaal / aantal);
	uitkomst = (aantal > 0 ? uitkomst : 0);
	if(document.getElementById('gemiddelde')){
		document.getElementById('gemiddelde').value= uitkomst;
	}
} // end Avg function


//*********************
// CREATE STARS
//*********************
function initStars(containerId, inputId, starEl, disabled){
    if(starEl){
	var star = starEl.id.replace(containerId+'_subStar_','');
    }
    
    var stars = 6;
    input = document.getElementById(inputId);
    container = document.getElementById(containerId);
    var v = (star ? star : input.value);
    var tmp = document.createElement('div');
    for(i=1; i<=stars; i++){
	var s = document.createElement('div');
	s.id = containerId+"_subStar_"+i;
	if(v >= i){
	    s.className = "star starFull";
	}else{
	    s.className = "star starEmpty";
	}
	if(!disabled){
	    s.onclick = function(){initStars(containerId, inputId, this);};
	}else{
	    s.style.cursor='auto';
	}
	tmp.appendChild(s);
    }
    container.innerHTML = "";
    container.appendChild(tmp);
    input.value = v;
    if(!disabled){
	average();
    }
}

//*****************************
// TOOLTIP
//*****************************

$(function() {
    $('a.tooltip').tooltip({
	//track: true,
	showURL: false,
	delay: 0
    });
});

//*****************************
// SWAP PHOTOS (PARKLEVEL)
//*****************************
function swapPhotos(){
    if(document.getElementById("thumbholder")){
	var children = document.getElementById("thumbholder").childNodes;
	for(i=0; i<children.length; i++){					
	    if(children[i].href){
		children[i].onclick = function(){
		    document.getElementById("imgBig").src = this.href;
		    return false;
		}
            }
	}
    }
}

//*********************
// GOOGLE FUNCTIES
//*********************
/* checkLatLon
Description:	Function checks address and sets latitude and longitude in given fields
Call: 		checkLatLon("address string", "id of lat input field", "id o lon input field", "callback");
*/
var geocoder;
function checkLatLon(address, lat, lon, callback) {
	if(address == ""){
		return true;
	}
  if (!geocoder) {
	  geocoder = new GClientGeocoder();
	  setTimeout(function(){checkLatLon(address, lat, lon, callback)},150);
  }else{
	geocoder.getLatLng(
	  address,
	  function(point) {
		  if(point){
			  $('#latitude').val(point['y']);
			  $('#longitude').val(point['x']);
			  if(callback != ''){
				eval(callback);
			  }
		  }else{
			alert("Helaas, het adres is niet gevonden. Heeft u het goed geschreven?");  
		  }
	  }
	);
  }
}
