(function($){
    $.annualfund = function(el, options, data){
        var base = this;
        
        base.$el = $(el);
        base.el = el;
        
        base.$el.data("annualfund", base);
        
        base.init = function(){
            base.options = $.extend({},$.annualfund.defaultOptions, options);
            
            base.writeHTML();
            base.setBar();
            
        };
        
        base.writeHTML = function(){
        	var astring = "<div class='annual-fund'>";
				astring += "<div id='title'>";
					if(data.af.title.length > 0){
						astring += "<div class='title_data'>"+data.af.title+"</div>";
					}
				astring += "</div>";
				astring += "<div class='barContainer'>";
					astring += "<div class='barContainerTop'></div>"
					astring += "<div class='bar'>";					
						astring += "<div class='barTop'></div>";
						astring += "<div class='barMiddle'>";
							astring += "<div id='percent'>";
								if(parseInt(data.af.percent) > 9){
									if(parseInt(data.af.percent) > 100){
										data.af.percent = 100;
										astring += "<div class='percent_data'>"+data.af.percent+"%</div>";
									}else{
									astring += "<div class='percent_data'>"+data.af.percent+"</div>";
									}
								}
							astring += "</div>";
						astring += "</div>";
						astring += "<div class='barBottom'></div>";
					astring += "</div>";
					astring += "<div class='annual-fund-content'>";
						astring += "<ul class='af-data'>";
							if(data.af.goal.length > 0){
								astring += "<li><span><b>Goal:</b><br> "+base.dollarAmount(data.af.goal)+"</span></li>";
							}
							if(data.af.current.length > 0){
								astring += "<li><span><b>Current Amount:</b><br> "+base.dollarAmount(data.af.current)+"</span></li>";
							}
							if(data.af.start.length > 0){
								//CSP sdb 102010 was this astring += "<li><span><b>As Of:</b></br> "+data.af.start+"</span></li>";
								astring += "<li><span><b>As Of:</b></br> "+data.af.asof+"</span></li>";
							}
						astring += "</ul>";
					astring += "</div>";
			astring += "</div>";
			astring += "<div id='lower_container'></div>";
			astring += "<div id='date_container'>";
				astring += "<div id='start'>";
					if ((data.af.start.length > 0) && (data.af.end.length > 0)){
						var startDateArray = data.af.start.split("/");
						var endDateArray = data.af.end.split("/");
						var months = ["January","February","March","April","May","June","July","August","September","October","Novemever","December"];
						var formattedStartDate = months[parseInt(startDateArray[0])-1] + " " + startDateArray[1];
						var formattedEndDate = months[parseInt(endDateArray[0])-1] + " " + endDateArray[1];
						astring += "<div class='data'>"+formattedStartDate+" - "+formattedEndDate+"</div>";
					}
				astring += "</div>";
			astring += "</div>";
        	base.$el.append(astring);
        };
        
        base.setBar = function(){
        	var $bar = $(".bar");
			var $barMiddle = $(".barMiddle");
			$bar.css("margin-top","4px");
        	if(parseInt(data.af.current) >= parseInt(data.af.goal)){
        		$bar.height(base.options.bar_height);
				$barMiddle.height(base.options.bar_height-5);		
        	}else if(parseInt(data.af.current) === 0){
				$bar.height(196).css("margin-top","0px");
			}
			else{
        		var midHeight = base.options.bar_height * (data.af.current/data.af.goal);
        		$bar.height(midHeight).css("margin-top",base.options.bar_height-midHeight);
				$barMiddle.css("height",midHeight+"px");
        	}
        }
        
        base.checkNum = function(data){ 
			var valid = "0123456789.";
			var ok = 1; var checktemp;
			for (var i=0; i<data.length; i++) {
				checktemp = "" + data.substring(i, i+1);
				if (valid.indexOf(checktemp) == "-1") return 0;}
				return 1;
		}
        
        base.dollarAmount = function(Num) {
			dec = Num.indexOf(".");
			end = ((dec > -1) ? "" + Num.substring(dec,Num.length) : ".00");
			Num = "" + parseInt(Num);
			var temp1 = "";
			var temp2 = "";
			if (base.checkNum(Num) == 0) {
				alert("This does not appear to be a valid number.  Please try again.");
			}else{ 
				if (end.length == 2) end += "0";
				if (end.length == 1) end += "00";
				if (end == "") end += ".00";
				var count = 0;
				for (var k = Num.length-1; k >= 0; k--) {
					var oneChar = Num.charAt(k);
					if (count == 3) {
						temp1 += ",";
						temp1 += oneChar;
						count = 1;
						continue;
					}else{
						temp1 += oneChar;
						count ++;
					}
				}
				for (var k = temp1.length-1; k >= 0; k--) {
					var oneChar = temp1.charAt(k);
					temp2 += oneChar;
				}
				temp2 = "$" + temp2; //+ end; CSP NRM 10/21/2010 - Removed cents from end of amount.
				return temp2;
			}
		}
        
        base.init();
    };
    
    $.annualfund.defaultOptions = {
    	bar_height:196
    };
    
    $.fn.annualfund = function(data,options){
        return this.each(function(){
            (new $.annualfund(this, options, data));
        });
    };
    
})(jQuery);
