var bIsFirebugReady = (!!window.console && !!window.console.log);
        
	$(document).ready(
    
		function (){
			// update the plug-in version
			$("#idPluginVersion").text($.Calculation.version);
            
            /*
            $.Calculation.setDefaults({
				// a regular expression for detecting European-style formatted numbers
            	reNumbers: /(-|-\$)?(\d+(\.\d{3})*(,\d{1,})?|,\d{1,})?/g
            	// define a procedure to convert the string number into an actual usable number
            	, cleanseNumber: function (v){
            		// cleanse the number one more time to remove extra data (like commas and dollar signs)
            		// use this for European numbers: v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".")
            		return v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".");
            	}
			});
            */
            
            // bind the recalc function to the quantity fields
			$("input[name^=qty_item_]").bind("keyup", recalc);
            $("select[name^=price_item_]").bind("click", recalc);            
			// run the calculation function now
			recalc();
 
			// automatically update the "#totalSum" field every time
			// the values are changes via the keyup event
			$("input[name^=sum]").sum("keyup", "#totalSum");
			
			// automatically update the "#totalAvg" field every time
			// the values are changes via the keyup event
			$("input[name^=avg]").avg({
				bind:"keyup"
				, selector: "#totalAvg"
				// if an invalid character is found, change the background color
				, onParseError: function(){
					this.css("backgroundColor", "#cc0000")
				}
				// if the error has been cleared, reset the bgcolor
				, onParseClear: function (){
					this.css("backgroundColor", "");
				}
			});
 
			// automatically update the "#minNumber" field every time
			// the values are changes via the keyup event
			$("input[name^=min]").min("keyup", "#numberMin");
 
			// automatically update the "#minNumber" field every time
			// the values are changes via the keyup event
			$("input[name^=max]").max("keyup", {
				selector: "#numberMax"
				, oncalc: function (value, options){
					// you can use this to format the value
					$(options.selector).val(value);
				}
			});
 
			// this calculates the sum for some text nodes
			$("#idTotalTextSum").click(
				function (){
					// get the sum of the elements
					var sum = $(".textSum").sum();
 
					// update the total
					$("#totalTextSum").text("kr." + sum.toString());
				}
			);
 
			// this calculates the average for some text nodes
			$("#idTotalTextAvg").click(
				function (){
					// get the average of the elements
					var avg = $(".textAvg").avg();
 
					// update the total
					$("#totalTextAvg").text(avg.toString());
				}
			);
		}
	);
	
	function recalc(){
		$("[id^=total_item]").calc(
			// the equation to use for the calculation
			"qty / 200 * price * 300 * 52 / 12",
			// define the variables used in the equation, these can be a jQuery object
			{
				qty: $("input[name^=qty_item_]"),
				price: $("select[name^=price_item_]")
			},
			// define the formatting callback, the results of the calculation are passed to this function
			function (s){
				// return the number as a dollar amount
				return "kr " + s.toFixed(0) + ",-";
			},
			// define the finish callback, this runs after the calculation has been complete
			function ($this){
				// sum the total of the $("[id^=total_item]") selector
				var sum = $this.sum();
				
				$("#grandTotal").text(
					// round the results to 2 digits
					"kr " + sum.toFixed(2)
				);
			}
		);
	}
