// Show error 
function showError(err_str, input_obj, errorbox) {
	
	// Hide process error if present
	var obj = document.getElementById('process_error');
	if (obj) {
		obj.style.display = 'none';
	}
	
	// Put error in errorbox & show it
	if (!errorbox) {
		errorbox = 'errorbox';
	}
	var obj = document.getElementById(errorbox);
	if (obj == null) {
		alert("Errorbox div doesn't exist!");
	} else {
		obj.innerHTML = err_str;
		if (obj.style.display == "none") {
			obj.style.display = "block";
		}
	}

	// focus input 
	var obj = document.getElementById(input_obj);
	if (obj) {
		obj.focus();
		if (obj.select) {
			obj.select();
		}
	} 
}


// Check for value not empty
function checkNotEmpty(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj) {
		if (obj.value.length > 0) {
			return true;
		} else {
			return false;
		}
	} else {
		alert('Object ' + obj_name + ' doesn\'t exist.');
	}
}

// Check for value not empty if object exist
function checkNotEmptyIfExist(obj_name) {
    var obj = document.getElementById(obj_name);
    if (obj) {
        if (obj.value.length > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}

// Check for value 0/1
function checkLevel(obj_name) {
	var obj = document.getElementById(obj_name);
	var level = /^[0-1]$/i;
	if (level.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Check for integer number
function checkNumber(obj_name) {  
	var obj = document.getElementById(obj_name);
	var level = /^[1-9]{1}[0-9]*$/i;
	if (level.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Checks that not the first option of a select is selected
function checkSelectNotFirst(obj_id) 
{                           
    var obj = $$(obj_id);
	return (obj.selectedIndex != 0);
}

// Check select for number > 0
function checkSelectNotZero(obj_name) {             
	var obj = document.getElementById(obj_name);
	var value = obj.options[obj.selectedIndex].value;
	if (parseInt(value) > 0) {
		return true;
	} else {
		return false;
	}
}

// Check for valid name
function checkValidName(obj_name) {
	var obj = document.getElementById(obj_name);
	var name = /^[A-Z\-\.\']+$/i;
	if (name.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Check for valid dutch postal code
function checkValidPostalcode(obj_name) {
	var obj = document.getElementById(obj_name);
	var name = /^[0-9]{4}[ ]*[A-Z]{2}$/i;
	if (name.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Check for valid dutch date (dd-mm-yyyy)
function checkValidDutchDate(obj_name) {
	var obj = document.getElementById(obj_name);
	var date = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d\d$/i;
	if (date.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Check email address
function checkValidEmail(obj_name) {
	var obj = document.getElementById(obj_name);
	obj.value = obj.value.replace(" ", "");
	var email = /^[A-Za-z0-9.\-_]+@[A-Za-z0-9.\-_]+$/i;
	if (email.test(obj.value)) {
		return true;
	} else {
		return false;
	}
}

// Check if checkbox is checked
function checkChecked(obj_name) {
	var obj = document.getElementById(obj_name);
	if (obj.checked) {
		return true;
	} else {
		return false;
	}
}

// Check phone number (generic)
// May start with +, followed by 0-9, -, ., and spaces
function checkValidPhoneNumber(obj_name) {
	var obj = document.getElementById(obj_name);
	var pattern = /^(\+*)[0-9\-\s\.]+$/i;
	if (pattern.test(obj.value)) {

		// Count number of digits, must be at least 10
		var counter = 0;
		pattern = /[0-9]/i;
		for (var i = 0; i < obj.value.length; i++) {
			if ( pattern.test(obj.value.charAt(i) ) ) {
				counter++;
			}
		}
		if (counter < 10) {
			return false;
		} else {
			return true;
		}
		
	} else {
		return false;
	}
}

// Check if one date comes before another
// Objects are assumed to be selects, which contain
// values like "2006-01-01"
function checkDateSequence(obj_name1, obj_name2) {
	
	// Get values
	var sel1 = document.getElementById(obj_name1);
	var sel2 = document.getElementById(obj_name2);
	var date1 = sel1.options[sel1.selectedIndex].value;
	var date2 = sel2.options[sel2.selectedIndex].value;

	date1 = makeDateObject(date1);
	date2 = makeDateObject(date2);
	
	// Date1 before date2: error
	if (date1 > date2) {
		return false;
	} else {
		return true;
	}

}

// Check if one date/time comes before another.
// Objects are assumed to be selects.
// Expected dates are 2006-01-01, expected times are 10:00 (24h, leading zeroes)
function checkDateTimeSequence(date_sel1, time_sel1, date_sel2, time_sel2) {	 
	// Get objects
	var date_sel1 = document.getElementById(date_sel1);
	var date_sel2 = document.getElementById(date_sel2);
	var time_sel1 = document.getElementById(time_sel1);
	var time_sel2 = document.getElementById(time_sel2);

	// Get values
	var date1 = date_sel1.options[date_sel1.selectedIndex].value;
	var date2 = date_sel2.options[date_sel2.selectedIndex].value;
	var time1 = time_sel1.options[time_sel1.selectedIndex].value;
	var time2 = time_sel2.options[time_sel2.selectedIndex].value;

	var date_obj1 = makeDateObject(date1, time1);
	var date_obj2 = makeDateObject(date2, time2);
	
	// Date1 occurs before date2, or date1 = date2: error
	if (date_obj1 >= date_obj2) {
		return false;
	} else {
		return true;
	}

}
// Check if one date/time after 48 hour from Now
// Objects are assumed to be selects.
// Expected dates are 2006-01-01, expected times are 10:00 (24h, leading zeroes)
function isDateTimeCanBringTakeService(date_sel1, time_sel1) {

 	ret_value = true;
//    var ret_value = new Array(true, 'Alles goed'); 
    
    // Get objects
    var date_sel1 = document.getElementById(date_sel1);    
    var time_sel1 = document.getElementById(time_sel1);    

    // Get values
    var date1 = date_sel1.options[date_sel1.selectedIndex].value;    
    var time1 = time_sel1.options[time_sel1.selectedIndex].value;    

    var date_obj1 = makeDateObject(date1, time1);    
    
//    var date_obj2 = new Date();  //Today
    var date_obj2 = makeDateObject(globalCurrentDate, globalCurrentTime);  //Today
//    alert(date_obj2.toString());
    date_obj2.setHours(date_obj2.getHours () + 48);
    
    // Date1 occurs after 48 hours from Now
    if (date_obj1 < date_obj2) {
//		alert('minimaal 48 uur');
//		ret_value = new Array(false, 'De haal- en brengservice moet minimaal 48 uur van te voren worden besteld'); 
        ret_value = false;
    }
    // Weekend procedure
    var dayOfWeek =  date_obj1.getDay();

    if(dayOfWeek==0 || dayOfWeek == 6)
    {
//		alert('weekend is de service niet beschikbaar');
//		ret_value = new Array(false, 'In het weekend is de service niet beschikbaar'); 
        ret_value = false;
    }
    //must be in 10:00-12:00  and 14:00-16:00  range...
    var hour = date_obj1.getHours();
    var minute = date_obj1.getMinutes();
    
    // It's easier to use hours as hundreds.
    var tmpTime = (hour * 100) + minute
//  if(hour<10 || hour>16 || (hour>12 && hour<14))
    if(tmpTime < 1000 || tmpTime > 1600 || (tmpTime > 1200 && tmpTime < 1400))
    {
//		alert('alleen beschikbaar van 10 tot 12 en 14 tot 16 uur');
//		ret_value = new Array(false, 'De service alleen beschikbaar van 10 tot 12 en 14 tot 16 uur'); 
        ret_value = false;

    }
    return ret_value;   
}

