function bodyOnLoad() {
			return true;
}

/* Remove whitespace from string */
function strip_whitespace(string) {
//	while(string.indexOf(' ') >= 0) string = string.replace(/ /,'');
	while(string != string.replace(/\s/,'')) string = string.replace(/\s/,'');
	return string;
}

/* Remove whitespace around string */
function trim_whitespace(string) {
	string = string.replace(/^\s+/,'');
	string = string.replace(/\s+$/,'');
	return string;
}

/* Zero-pad a string */
function strpad(string, newlength) {
  var pad = "";
  var len = newlength-String(string).length;
  var i;
  for (i = 0; i<len; i++) {
    pad += "0";
  }
  return pad+string;
}

/* Toggle visibility of items */
function toggle(object) {
	if(object.className == 'hidden') {
		object.className = 'shown';
		return true;
	}
	if(object.className == 'shown') {
		object.className = 'hidden';
		return false;
	}
}

/* Hide items */
function hide(object) {
	object.className = 'hidden';
}

/* Show items */
function show(object) {
	object.className = 'shown';
}

/* Accepts a date in dd-MM-yyyy format and returns a Date object corresponding with that date */
function string2date (value) {
	dateseparator = '-';
	var parts = value.split(dateseparator);
	if(parts[1].substr(0,1) == '0') parts[1] = parts[1].substr(1);
	if(parts[0].substr(0,1) == '0') parts[0] = parts[0].substr(1);
//alert('value: '+value+', year: '+parseInt(parts[2])+', month: '+(parseInt(parts[1]))+', day: '+parseInt(parts[0]));
	return new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0]));
}

function updatePeriods(year, month, day) {
//alert(day+"-"+month+"-"+year);
}

function mydiff(date1,date2,interval) {
    var second=1000, minute=second*60, hour=minute*60, day=hour*24, week=day*7;
    date1 = new Date(date1);
    date2 = new Date(date2);
    var timediff = date2 - date1;
    if (isNaN(timediff)) return NaN;
    switch (interval) {
        case "years": return date2.getFullYear() - date1.getFullYear();
        case "months": return (
            ( date2.getFullYear() * 12 + date2.getMonth() )
            -
            ( date1.getFullYear() * 12 + date1.getMonth() )
        );
        case "weeks"  : return Math.floor(timediff / week);
        case "days"   : return Math.floor(timediff / day);
        case "hours"  : return Math.floor(timediff / hour);
        case "minutes": return Math.floor(timediff / minute);
        case "seconds": return Math.floor(timediff / second);
        default: return undefined;
    }
}

    var electra_blok3_total_days=0;
    var gas_blok3_total_days=0;
    var water_blok3_total_days=0;
    var warmte_blok3_total_days=0;

    var electra_blok3_badkuip=0;
    var gas_blok3_badkuip=0;
    var water_blok3_badkuip=0;
    var warmte_blok3_badkuip=0;

    var electra_blok2_total_days=0;
    var gas_blok2_total_days=0;
    var water_blok2_total_days=0;
    var warmte_blok2_total_days=0;

    var electra_blok2_badkuip=0;
    var gas_blok2_badkuip=0;
    var water_blok2_badkuip=0;
    var warmte_blok2_badkuip=0;

    var electra_blok1_total_days=0;
    var gas_blok1_total_days=0;
    var water_blok1_total_days=0;
    var warmte_blok1_total_days=0;

    var electra_blok1_badkuip=0;
    var gas_blok1_badkuip=0;
    var water_blok1_badkuip=0;
    var warmte_blok1_badkuip=0;

var electra_blok1_badkuip_extra=0;
var gas_blok1_badkuip_extra=0;
var water_blok1_badkuip_extra=0;
var warmte_blok1_badkuip_extra=0;
var electra_blok1_total_days_extra=0;
var gas_blok1_total_days_extra=0;
var water_blok1_total_days_extra=0;
var warmte_blok1_total_days_extra=0;
/* Calculate blocks in period and change shown items */
function processPeriods(connectiontype, begindate, enddate) {
	var processPossible = true;
	var dateseparator = '-';
	var format = 'dd'+dateseparator+'MM'+dateseparator+'yyyy';
	var maxblocks = 3;
	var beginyear;
	var endyear;
	var yearturns;
	var blocks;
	var begin = new Array();
	var end = new Array();

	// Validate
	eval("hide("+connectiontype+"UsageData);");
	eval("hide("+connectiontype+"UsageError);");
	eval("hide("+connectiontype+"UsageData1);");
	eval("hide("+connectiontype+"UsageData2);");
	eval("hide("+connectiontype+"UsageData3);");

	if(!isDate(begindate, format)) {
		processPossible = false;
	}
	if(!isDate(enddate, format)) {
		processPossible = false;
	}
	if(compareDates(begindate, format, enddate, format) != 0) {
		processPossible = false;
	}

	// Calculate
	if(processPossible) {
		// Determine how many new years parties have passed
		beginyear = formatDate(string2date(begindate), 'yyyy');
		endyear = formatDate(string2date(enddate), 'yyyy');
		yearturns = endyear - beginyear;

		// We thus have that many + 1 blocks
		blocks = yearturns + 1;

//alert('beginyear: '+beginyear+'\n'+'endyear: '+endyear+'\n'+'yearturns: '+yearturns+'\n'+'blocks: '+blocks);

		if(blocks > maxblocks) {
			processPossible = false;
		}
	}
	// Set the boundaries
	if(processPossible) {
		if(blocks > 1) {
			for(i = 1; i <= blocks; i ++) {
				if(i == 1) {
					begin[i] = begindate; // begindate
					end[i] = '31-12-'+beginyear; // 31-12-(beginyear)
				}
				else if(i == blocks) {
					begin[i] = '01-01-'+endyear; // 01-01-(endyear)
					end[i] = enddate; // enddate
				}
				else {
					begin[i] = '01-01-'+(parseInt(formatDate(string2date(end[i - 1]), 'yyyy')) + 1); // 01-01-(year last block + 1)
					end[i] = '31-12-'+(formatDate(string2date(begin[i]), 'yyyy')); // 31-12-(year this block)
				}
			}
		}
		else {
			begin[1] = begindate;
			end[1] = enddate;
		}
	}

	// Show the correct values
	if(processPossible) {
//alert(connectiontype);
		eval(connectiontype+"InvoiceBlocks.value = blocks;");
		if(connectiontype == "electricity" || connectiontype == "gas") {
			// This doesn't count for other types
			eval("hasDelivery = "+connectiontype+"HasDelivery;");
			if((hasDelivery.selectedIndex == 0) && (formatDate(string2date(begindate), 'dd-MM') != '01-01')) {
				eval("show("+connectiontype+"UsageData);");
			}
		}
		else {
			// Treat other types differently
			if(formatDate(string2date(begindate), 'dd-MM') != '01-01') {
				eval("show("+connectiontype+"UsageData);");
			}
		}
		if(blocks > 2) {
                        if(connectiontype=='electricity'){
                            connection_type = 'electra';
                        }else if(connectiontype=='warmth'){
                            connection_type = 'warmte';
                        }else{
                            connection_type = connectiontype;
                        }
			eval(connectiontype+"UsageBeginBlock3.value = begin[3];");
			eval(connectiontype+"UsageEndBlock3.value = end[3];");
			eval(connectiontype+"UsageBeginBlockLabel3.innerHTML = begin[3];");
			eval(connectiontype+"UsageEndBlockLabel3.innerHTML = end[3];");
			eval("show("+connectiontype+"UsageData3);");
                        dbegin = begin[3].split('-');
                        dbegin = new Date(dbegin[2],dbegin[1]-1,dbegin[0]); //date[2],date[1],date[0],0,0,0,0
                                                dend   = end[3].split('-');
                        dend   = new Date(dend[2],dend[1]-1,dend[0]); //date[2],date[1],date[0],0,0,0,0
                  //      alert(dbegin);
                  //      alert(dend);
                        
                        if(connection_type == 'gas' || connection_type == 'warmte'){
                            $.get("invoice/check_bathtub.php", { begin: begin[3], end: end[3] },
                                function(data){
                                    eval(connection_type+"_blok3_badkuip = "+data+"");
                                }
                            );
                        }

                        eval(connection_type+"_blok3_total_days = mydiff(dbegin,dend,'days');");
                        //alert(connection_type+"_blok3_total_days = "+mydiff(dbegin,dend,'days'));
		}
		if(blocks > 1) {
                        if(connectiontype=='electricity'){
                            connection_type = 'electra';
                        }else if(connectiontype=='warmth'){
                            connection_type = 'warmte';
                        }else{
                            connection_type = connectiontype;
                        }
			eval(connectiontype+"UsageBeginBlock2.value = begin[2];");
			eval(connectiontype+"UsageEndBlock2.value = end[2];");
			eval(connectiontype+"UsageBeginBlockLabel2.innerHTML = begin[2];");
			eval(connectiontype+"UsageEndBlockLabel2.innerHTML = end[2];");
			eval("show("+connectiontype+"UsageData2);");
                        dbegin = begin[2].split('-');
                        dbegin = new Date(dbegin[2],dbegin[1]-1,dbegin[0]); //date[2],date[1],date[0],0,0,0,0
                                                dend   = end[2].split('-');
                        dend   = new Date(dend[2],dend[1]-1,dend[0]); //date[2],date[1],date[0],0,0,0,0
                  //      alert(dbegin);
                  //      alert(dend);
                        
                        if(connection_type == 'gas' || connection_type == 'warmte'){
                            $.get("invoice/check_bathtub.php", { begin: begin[2], end: end[2] },
                                function(data){
                                    eval(connection_type+"_blok2_badkuip = "+data+"");
                                }
                            );
                        }

                        eval(connection_type+"_blok2_total_days = mydiff(dbegin,dend,'days');");
                        //alert(connection_type+"_blok2_total_days = "+mydiff(dbegin,dend,'days'));
		}
		if(blocks > 0) {
                        if(connectiontype=='electricity'){
                            connection_type = 'electra';
                        }else if(connectiontype=='warmth'){
                            connection_type = 'warmte';
                        }else{
                            connection_type = connectiontype;
                        }
			eval(connectiontype+"UsageBeginBlock1.value = begin[1];");
			eval(connectiontype+"UsageEndBlock1.value = end[1];");
			eval(connectiontype+"UsageBeginBlockLabel1.innerHTML = begin[1];");
			eval(connectiontype+"UsageEndBlockLabel1.innerHTML = end[1];");
			eval("show("+connectiontype+"UsageData1);");
                        dbegin = begin[1].split('-');
                        dbegin = new Date(dbegin[2],dbegin[1]-1,dbegin[0]); //date[2],date[1],date[0],0,0,0,0
                                                    eval(connection_type+"_blok1_total_days_extra = "+mydiff(new Date(begin[1].split('-')[2],0,1),dbegin,'days')+"");
                            if(connection_type == 'gas' || connection_type == 'warmte'){
                                $.get("invoice/check_bathtub.php", { begin: '01-01-'+begin[1].split('-')[2], end: begin[1] },  //overlapt 1 dag! FIX
                                    function(data){
                                        eval(connection_type+"_blok1_badkuip_extra = "+data+"");
                                        $("input[name$='_verbruik']").trigger('keyup');
                                    }
                                );
                            }
                                                dend   = end[1].split('-');
                        dend   = new Date(dend[2],dend[1]-1,dend[0]); //date[2],date[1],date[0],0,0,0,0
                  //      alert(dbegin);
                  //      alert(dend);
                        
                        if(connection_type == 'gas' || connection_type == 'warmte'){
                            $.get("invoice/check_bathtub.php", { begin: begin[1], end: end[1] },
                                function(data){
                                    eval(connection_type+"_blok1_badkuip = "+data+"");
                                }
                            );
                        }

                        eval(connection_type+"_blok1_total_days = mydiff(dbegin,dend,'days');");
                        //alert(connection_type+"_blok1_total_days = "+mydiff(dbegin,dend,'days'));
		}
	}
	else {
		eval(connectiontype+"InvoiceBlocks.value = '';");
		eval("show("+connectiontype+"UsageError);");
	}
	return false;
}

/* Calculate end dates based on a certain start date */
function calculate_date_end(date_begin) {
	var dateseparator = '-';
	var format = 'dd'+dateseparator+'MM'+dateseparator+'yyyy';
	if(!isDate(date_begin, format)) return false;

	var DateParts = date_begin.split("-");
	return strpad(days_in_month(DateParts[2], DateParts[1]))+"-"+strpad(DateParts[1],2)+"-"+DateParts[2];
}

/* Used in calculate_date_end to determine the total amount of days in a certain month of a certain year */
function days_in_month (year, month) {
	return 32 - new Date(year, month - 1, 32).getDate();
}

/* Use smart dates */
function smart_date(string) {
	if(string.length == 4) {
		// ddmm -> add yyyy (current) and reformat to dd-mm-yyyy
		var dd = string.substr(0,2);
		var mm = string.substr(2,2);
		var yyyy = 2010;
		string = dd+'-'+mm+'-'+yyyy;
	}
	else if(string.length == 6) {
		// ddmmyy -> change to 4-digit yyyy and reformat to dd-mm-yyyy
		var dd = string.substr(0,2);
		var mm = string.substr(2,2);
		var yyyy = 0000;
		if(parseInt(string.substr(4,2)) > 25) yyyy = '19'+string.substr(4,2);
		else  yyyy = '20'+string.substr(4,2);
		string = dd+'-'+mm+'-'+yyyy;
	}
	else if(string.length == 8) {
		// only reformat to dd-mm-yyyy
		var dd = string.substr(0,2);
		var mm = string.substr(2,2);
		var yyyy = string.substr(4,4);
		string = dd+'-'+mm+'-'+yyyy;
	}
	return string;
}