var changingTabsAllowed = true;

(function(jQuery){
	$.extend($, {
		jtabber: function(params){			
				// parameters
				var navDiv = params.mainLinkTag;
				var selectedClass = params.activeLinkClass;
				var hiddenContentDiv = params.hiddenContentClass;
				var showDefaultTab = params.showDefaultTab;
				var showErrors = params.showErrors;
				var effect = params.effect;
				var effectSpeed = params.effectSpeed;				
				// If error checking is enabled
				if(showErrors){
					if(!$(navDiv).attr('title')){
						alert("ERROR: The elements in your mainLinkTag paramater need a 'title' attribute.\n ("+navDiv+")");	
						return false;
					}
					else if(!$("."+hiddenContentDiv).attr('id')){
						alert("ERROR: The elements in your hiddenContentClass paramater need to have an id.\n (."+hiddenContentDiv+")");	
						return false;
					}
				}					
				// If we want to show the first block of content when the page loads
				if(!isNaN(showDefaultTab)){
					showDefaultTab--;
					$("."+hiddenContentDiv+":eq("+showDefaultTab+")").css('display','block');
					$(navDiv+":eq("+showDefaultTab+")").addClass(selectedClass);	
				}				
				// each anchor
				$(navDiv).each(function(){
					//something			
					$(this).click(function(){
					   //if we're allowed to change the tab i.e. validation is ok
					   if (changingTabsAllowed == true){	
						// once clicked, remove all classes
						$(navDiv).each(function(){
							$(this).removeClass();
						})
						// hide all content
						$("."+hiddenContentDiv).css('display','none');
						// now lets show the desired information
						$(this).addClass(selectedClass);
						if($(this).attr("rel")){
							$($(this).attr("rel")).addClass(selectedClass);
						}				
						var contentDivId = $(this).attr('title');						
						if(effect != null){							
							switch(effect){								
								case 'slide':
								$("#"+contentDivId).slideDown(effectSpeed);
								break;
								case 'fade':
								$("#"+contentDivId).fadeIn(effectSpeed);
								break;								
							}
								
						}
						else {
							$("#"+contentDivId).css('display','block');
						}
						return false;						
}
					})
					

				})

			}
	})
	
})(jQuery);

function isNumber(str){
    var index;
    var charCode;
    var numDash;
    var numPeriod;
    var numNumeric;
        numDash = 0;
        numPeriod = 0;
        numNumeric = 0;
        for(index = 0; index < str.length; index++){
            charCode = str.charCodeAt(index);
            if(charCode >= 48 && charCode <= 57){
                numNumeric++;
            }
            else if(charCode == 45){
                numDash++;
                if(numDash > 1) return false;    
                if(index != 0) return false;
            }
            else if(charCode == 46){
                numPeriod++;
                if(numPeriod > 1) return false;
            }
            else
                return false;
        }
        if(numNumeric == 0) return false;
        return true;
    }
	function addCommas(nrValue){
         var objRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');
         while(objRegExp.test(nrValue)) {
	           nrValue = nrValue.replace(objRegExp, '$1,$2');
         }
         return nrValue;
    }
	function process(task){
		var f1 = document.getElementById("field1");
		var f2 = document.getElementById("field2");
		var f3 = document.getElementById("field3");
		var f4 = document.getElementById("field4");			
		var ans = document.getElementById("field5");
	
		if(task == "reset"){			
			f1.value = "0";
			f2.value = "0";
			f3.value = "0";
			f4.value = "0";
			ans.value = "";
		}
		else if(task == "sum"){			
			ans.value = "";			
			validateField();		
			if (changingTabsAllowed == true){			
				validateNext(f2.value);
				if (changingTabsAllowed == true){			
					validateNext(f3.value);
					if (changingTabsAllowed == true){
						validateNext(f4.value);		
						if (changingTabsAllowed == true){				   
							var a = ("0.8");
							var b = ("0.5");
							var c = ("0.6");	
							ans.value = addCommas((Math.round([(f1.value * a) + (f2.value * b) + (f3.value * b) + (f4.value * c)])).toString());
							
						}
					}
				}
			}
		}
	}

function validateField(){			
	var fieldValue = 0;
	fieldValue = document.getElementById("field1").value;
	//not a number
	if(!isNumber(fieldValue) || fieldValue<=0){
		changingTabsAllowed = false;
		alert("You must have outstanding debts to use this tool. Please enter a value greater than zero.");
		//don't go forwards
	} else {
		changingTabsAllowed = true;
		//is a number let through
	}			
}		
function validateNext(theValue){	
	//not a number
	if(!isNumber(theValue) || theValue <0){
		changingTabsAllowed = false;
		alert("Please enter a valid number greater than or equal to zero.");
		//don't go forwards
	} else {
		changingTabsAllowed = true;
		//is a number let through
	}			
}		
function allowNavigation(){
	changingTabsAllowed = true;
}
