var aTimeRequest = new Request({method: 'post', url: '../../lib/ajax/index.php'});

window.addEvent('domready', function() {
	
	if($('filterdateslink'))
	{
		if ($('datefilter'))
		{
			var aFilterDatesForm = new Fx.Slide('datefilter');
			aFilterDatesForm.hide();
		
			if($('addtask').style.display == "block")
			{
				var aAddTaskForm = new Fx.Slide('addtask');
				aAddTaskForm.slideOut();
			}
		
			if($('projectsettingsform').style.display == "block")
			{
				var aProjectSettingForm = new Fx.Slide('projectsettingsform');
				aProjectSettingForm.slideOut();
			}
		
			$('datefilter').style.display = 'block';
			$('filterdateslink').addEvent('click', function() {
				$('formholder').setStyle('display', 'block');
			
				var aFilterDatesForm = new Fx.Slide('datefilter');
				aFilterDatesForm.toggle().chain(function(){
					var aCurrentMargin = ($('datefilter').style.marginTop.replace('px', '')*1);
								
						if (aCurrentMargin < 0)
						{						
							$('formholder').hide();
						}
					});
			
				return false;
			});
		}
	}
	
	if($('addprojectlink'))
	{
		var aAddProjectForm = new Fx.Slide('addproject');
		aAddProjectForm.hide();
		$('addproject').style.display = 'block';
		$('addprojectlink').addEvent('click', function() {
			$('formholder').setStyle('display', 'block');
			
			if($('addcategory').style.display == "block")
			{
				var aAddCategoryForm = new Fx.Slide('addcategory');
				aAddCategoryForm.slideOut();
			}
			
			if ($('datefilter') && ($('datefilter').style.display == "block"))
			{
				var aFilterDatesForm = new Fx.Slide('datefilter');
				aFilterDatesForm.slideOut();
			}
			
			aAddProjectForm.toggle().chain(function(){
				var aCurrentMargin = ($('addproject').style.marginTop.replace('px', '')*1);				
					if (aCurrentMargin < 0)
					{
						$('formholder').hide();
					}
				});
			return false;
		});
	}

	if($('addcategorylink'))
	{
		var aAddCategoryForm = new Fx.Slide('addcategory');
		aAddCategoryForm.hide();
		
		$('addcategory').style.display = 'block';
		$('addcategorylink').addEvent('click', function() {
			$('formholder').setStyle('display', 'block');
			
			if ($('addproject'))
			{
				if($('addproject').style.display == "block")
				{
					var aAddProjectForm = new Fx.Slide('addproject');
					aAddProjectForm.slideOut();
				}
			}
			
			aAddCategoryForm.toggle().chain(function(){
				var aCurrentMargin = ($('addcategory').style.marginTop.replace('px', '')*1);
					if (aCurrentMargin < 0)
					{
						$('formholder').hide();
					}
				});
			return false;
		});
	}
	
	if($('TaxRate'))
	{
		$('TaxRate').addEvent('keyup', function() {
			var aSubTotal = parseFloat($('SubTotal').get('value').replace(',', ''));
			var aTaxRate = parseFloat($('TaxRate').get('value').replace(',', ''));
			var aCurrency = $('Curr').get('value');
			aTotalDue = (aSubTotal+(aTaxRate*(aSubTotal/100)));
			$('total-inc-tax').innerHTML = aCurrency + formatCurrency(parseFloat(aTotalDue));
		});
	}
	
	if($('invoiceextraitems'))
	{
    	var counter = 0;
	    function new_rows() {
	        counter = counter + 1;
	        var myHTMLRequest = new Request({
	            url: '../../lib/ajax/index.php',
	            method: 'post',
	            autoCancel: true,
	            data: {
	                'action': 'extra',
	                num: counter
	            },
	            onComplete: function(responseText) {
	                var new_rows = new Element('div', {
	                    'html': responseText,
						'class' : 'extra'
	                });

	                new_rows.inject($('invoiceextraitems'), 'bottom');
	
					$$('.extracost').addEvent('keyup', function(){
						var aExistingTotal = $('sub-total-value').get('html').replace(',','').toFloat();
						var aNewTotal = 0;
						var aTaxRate = parseFloat($('TaxRate').get('value'));
												
						if ($('TaxRate').get('value') == '') aTaxRate = 0;

						$each($$('.extracost'), function(aScore, index){
							if (aScore.get('value') != '') aNewTotal += aScore.get('value').replace(',','').toFloat();							
						});

						$('sub-total-value').set('html', formatCurrency(parseFloat(aExistingTotal+aNewTotal)));
						$('SubTotal').set('value', formatCurrency(parseFloat(aExistingTotal+aNewTotal)));
						
						var aSubTotal = $('SubTotal').get('value').replace(',','').toFloat();												
						var aCurrency = $('Curr').get('value');
												
						aTotalDue = (aSubTotal+(aTaxRate*(aSubTotal/100)));
																		
						$('total-inc-tax').innerHTML = aCurrency + formatCurrency(aTotalDue);
					});
	            }
	        }).send();
	    }
	
	    $('add_item').addEvent('click', function(e) {
			e.stop();
			new_rows();
		});
	}
	
	// if($('addtasklink'))
	// {
	// 	var aAddTaskForm = new Fx.Slide('addtask');
	// 	aAddTaskForm.hide();
	// 
	// 	$('addtask').style.display = 'block';
	// 	$('addtasklink').addEvent('click', function() {
	// 			aAddTaskForm.toggle();
	// 		return false;
	// 	});
	// }
	
	if($('addtasklink'))
	{
		var aAddTaskForm = new Fx.Slide('addtask');
		aAddTaskForm.hide();
		
		$('addtask').style.display = 'block';
		$('addtasklink').addEvent('click', function() {
			$('formholder').setStyle('display', 'block');
			
			if($('projectsettingsform').style.display == "block")
			{
				var aProjectSettingForm = new Fx.Slide('projectsettingsform');
				aProjectSettingForm.slideOut();
			}
			
			// if ($('datefilter').style.display == "block")
			// {
			// 	var aFilterDatesForm = new Fx.Slide('datefilter');
			// 	aFilterDatesForm.slideOut();
			// }
						
			aAddTaskForm.toggle().chain(function(){
				var aCurrentMargin = ($('addtask').style.marginTop.replace('px', '')*1);
				
					if (aCurrentMargin < 0)
					{
						$('formholder').hide();
					}
				});
			
			return false;
		});
	}
	
	if($('projectsettingslink'))
	{
		var aProjectSettingForm = new Fx.Slide('projectsettingsform');
		aProjectSettingForm.hide();
		
		$('projectsettingsform').style.display = 'block';
		$('projectsettingslink').addEvent('click', function() {
			$('formholder').setStyle('display', 'block');
			
			if($('addtask').style.display == "block")
			{
				var aAddTaskForm = new Fx.Slide('addtask');
				aAddTaskForm.slideOut();
			}
			
			// if ($('datefilter').style.display == "block")
			// {
			// 	var aFilterDatesForm = new Fx.Slide('datefilter');
			// 	aFilterDatesForm.slideOut();
			// }
			
			aProjectSettingForm.toggle().chain(function(){
				var aCurrentMargin = ($('projectsettingsform').style.marginTop.replace('px', '')*1);
				
					if (aCurrentMargin < 0)
					{
						$('formholder').hide();
					}
				});
			return false;
		});
	}
	
	if($$('.timerstop').length > 0)
	{
        $$('.timerstop').addEvent('click', function() {
            var aID = this.get('ID');
            eval(aID +'.stop('+ aID +')');

        	var aCurrentTime = $(aID).get('value');
			var aTotalTime = document.getElementById('totalseconds').firstChild.nodeValue;
			var aAllTasks = document.getElementById('alltasks').firstChild.nodeValue;
        	var aCurrentProjectID = document.getElementById('project_'+ aID).firstChild.nodeValue;
			var aCurrentProjectRate = document.getElementById('project_rate_'+ aID).firstChild.nodeValue;
        	var aCurrentTaskID = document.getElementById('task_'+ aID).firstChild.nodeValue;
			var aServerHash = document.getElementById('serverid').firstChild.nodeValue;

        	aTimeRequest.send('action=addTtime&t='+ aCurrentTaskID +'&p='+ aCurrentProjectID +'&single=true&rate='+ aCurrentProjectRate +'&Ttime='+ aCurrentTime.trim()+'&server='+escape(aServerHash));

			var aTotalReq = new Request.HTML({
				method: 'post',
				url: '../../lib/ajax/index.php',
				data: { 'action' : 'totalbar', 'tasktime' : aTotalTime, 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
				update: $('totalbar')
			}).send();
			
			var aBillableDiv = 'billable_'+aID;
			var aBillableReq = new Request.HTML({
				method: 'post',
				url: '../../lib/ajax/index.php',
				data: { 'action' : 'billable', 'tasktime' : aCurrentTime.trim(), 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
				update: $(aBillableDiv)
			}).send();
			
			var aPercentageDiv = 'percentage_'+aID;			
			var aPercentage = new Request.HTML({
				method: 'post',
				url: '../../lib/ajax/index.php',
				data: { 'action' : 'percentage', 'tasktime' : aCurrentTime.trim(), 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
				update: $(aPercentageDiv)
			}).send();
			
        });
	}
	
	
	if($$('.timerstart').length > 0)
	{
        $$('.timerstart').addEvent('click', function() {
            var aID = this.get('ID');
            eval(aID +'.start('+ aID +')');
        });
	}
});

function PingTimes()
{
	aActiveTasks = $$('.active');

	if($$('.aActiveTasks'))
	{
		aActiveTaskStoppers = aActiveTasks.getElement('.timerstop');
				
		if(aActiveTaskStoppers.length > 0)
		{
			$each(aActiveTaskStoppers, function(value, key){
				var aID = value.get('ID');
			
	        	var aCurrentTime = $(aID).get('value');
				var aTotalTime = document.getElementById('totalseconds').firstChild.nodeValue;
				var aAllTasks = document.getElementById('alltasks').firstChild.nodeValue;
	        	var aCurrentProjectID = document.getElementById('project_'+ aID).firstChild.nodeValue;
				var aCurrentProjectRate = document.getElementById('project_rate_'+ aID).firstChild.nodeValue;
	        	var aCurrentTaskID = document.getElementById('task_'+ aID).firstChild.nodeValue;
				var aServerHash = document.getElementById('serverid').firstChild.nodeValue;

	        	aTimeRequest.send('action=addTtime&t='+ aCurrentTaskID +'&p='+ aCurrentProjectID +'&single=true&rate='+ aCurrentProjectRate +'&Ttime='+ aCurrentTime.trim()+'&server='+aServerHash);

				var aTotalReq = new Request.HTML({
					method: 'post',
					url: '../../lib/ajax/index.php',
					data: { 'action' : 'totalbar', 'tasktime' : aTotalTime, 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
					update: $('totalbar')
				}).send();
			
				var aBillableDiv = 'billable_'+aID;
				var aBillableReq = new Request.HTML({
					method: 'post',
					url: '../../lib/ajax/index.php',
					data: { 'action' : 'billable', 'tasktime' : aCurrentTime.trim(), 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
					update: $(aBillableDiv)
				}).send();
			
				var aPercentageDiv = 'percentage_'+aID;			
				var aPercentage = new Request.HTML({
					method: 'post',
					url: '../../lib/ajax/index.php',
					data: { 'action' : 'percentage', 'tasktime' : aCurrentTime.trim(), 'p' : aCurrentProjectID, 'a' : aAllTasks, rate : aCurrentProjectRate },
					update: $(aPercentageDiv)
				}).send();
			
			});
		}
	}
}

function UpdateTitle()
{
	if($('tasktable'))
	{
        aCurrentTitle = document.title;

        if($$('.active').length > 0)
        {
            if(aCurrentTitle.indexOf('Timing : ') == -1)
            { 
               document.title = aCurrentTitle;
               aNewTitle = 'Timing : ' + document.title;
			   document.title = aNewTitle; 
            }
        }
        else
        {
            if(aCurrentTitle.indexOf('Timing : ') > -1)
            {
                document.title = aCurrentTitle.replace('Timing : ', '');
            }
        }
	}
}

function formatCurrency(num) {
  num = isNaN(num) ? 0 : num;
  var rounded = round(num, 2).toFixed(2);
  
  // split to three parts
  var parts = rounded.match(/^(-?)([0-9]+)(.[0-9]+)$/);
  var sign = parts[1];
  var integer = parts[2];
  var fraction = parts[3];
  
  // split integer part into thousands
  var thousands = [];
  while (integer.length > 3) {
    thousands.unshift( integer.substr(integer.length - 3, 3) );
    integer = integer.substr(0, integer.length - 3);
  }
  thousands.unshift(integer);
  
  // separate thousands with comma and put it all together
  return sign + thousands.join(",") + fraction;
}

function round(nr, digits) {
  digits = digits || 0;
  var multiplier = Math.pow(10, digits);
  return Math.round(nr * multiplier) / multiplier;
};

function WaitPause()
{
	for (var i =  0; i <= 1000; i++){
		//console.log(i);
	};
	return true;
}

function SaveAllTasks()
{	
	$$('.timerstop').each(function(el) {
		var aID = el.get('ID');
		eval(aID +'.stop()');
		var aCurrentTime = document.getElementById(aID).firstChild.nodeValue;
		var aCurrentProjectID = document.getElementById('project_'+ aID).firstChild.nodeValue;
		var aCurrentTaskID = document.getElementById('task_'+ aID).firstChild.nodeValue;
        var aSaveRequest = new Request({method: 'post', url: '../../lib/ajax/index.php'});
        aSaveRequest.send('action=addTtime&t='+ aCurrentTaskID +'&p='+ aCurrentProjectID +'&Ttime='+ aCurrentTime.trim());
	});
	WaitPause();
}

function addClass(element, value) {
	if(!element.className) {
		element.className = value;
	} else {
		newClassName = element.className;
		newClassName+= " ";
		newClassName+= value;
		element.className = newClassName;
	}
}
