﻿var usePortability = false;
var showCalculationsButton = false;
var firstTime = true;
var toolTipTimer = null;
var activeToolTip = null;
var toolTipArray = new Array();

function ShowInstructions()
{
    $get('instructions').innerHTML += "<div id='buttonArea'><input id='Accept' type='button' value='OK' /><input id='Decline' type='button' value='Cancel' /></div>";
    $addHandler($get('Accept'), 'click', DisclaimerAccept);
    $addHandler($get('Decline'), 'click', DisclaimerDecline);
}

function EnablePageElements()
{
    $get('txtSalePrice').disabled = false;
    $get('btnCalculate').disabled = false;
    $get('ckbPortability').disabled = false;    
    
    $addHandler($get('photo'), 'click', Tab_click);
    $addHandler($get('description'), 'click', Tab_click);
    $addHandler($get('AssessedValueToolTip'), 'mouseover', ToolTip_Show);
    $addHandler($get('AssessedValueToolTip'), 'mouseout', ToolTip_Hide); 
    $addHandler($get('MillageToolTip'), 'mouseover', ToolTip_Show);
    $addHandler($get('MillageToolTip'), 'mouseout', ToolTip_Hide);
    $addHandler($get('PortabilityToolTip'), 'mouseover', ToolTip_Show);
    $addHandler($get('PortabilityToolTip'), 'mouseout', ToolTip_Hide); 
    toolTipArray[0] = $get('AssessedValueToolTip');
    toolTipArray[1] = $get('MillageToolTip');
    toolTipArray[2] = $get('PortabilityToolTip');
    
    if(showCalculationsButton)
    {
        ShowCalcultationsButton();
    }  
}

function pageLoad()
{
    
    if(CssEnabled())
    {   
        $get('propertyData').innerHTML += "<div id='photo' class='tab selected'>Aerial Photo</div><div id='description' class='tab'>Property Description</div>";
        $get('portability').innerHTML = "<h4 id='portabilityHeader'>Save Our Homes Portability</h4>" + $get('portability').innerHTML;             
    }
    
    if(CssEnabled() && firstTime)
    {
        ShowInstructions();
    }
    
    if(firstTime)
    {
        $get('txtSalePrice').disabled = true;
        $get('btnCalculate').disabled = true;
        $get('ckbPortability').disabled = true;
    }
    else
    {
        EnablePageElements();
    }
    
    $addHandler($get('txtSalePrice'), 'keydown' , Textbox_keyDown);
    $addHandler($get('txtOldMarket'), 'keydown' , Textbox_keyDown);
    $addHandler($get('txtOldAssessed'), 'keydown' , Textbox_keyDown);
    $addHandler($get('txtSalePrice'), 'blur', Textbox_blur);
    $addHandler($get('txtOldMarket'), 'blur', Textbox_blur);
    $addHandler($get('txtOldAssessed'), 'blur', Textbox_blur);
    $addHandler($get('ckbPortability'), 'click', Checkbox_click);
    $addHandler($get('btnCalculate'), 'click', btnCalculate_click);
    $addHandler($get('btnCalculate'), 'mouseover', btnCalculate_mouseover);
    $addHandler($get('btnCalculate'), 'mouseout', btnCalculate_mouseout);
         
    if(!usePortability)
    {
        $get('txtOldMarket').disabled = true;
        $get('txtOldAssessed').disabled = true;
        $get('oldMarketCell').className = "displayCell disabled";
        $get('oldAssessedCell').className = "displayCell disabled";
    }
}

function ShowCalculations_MouseOver(evt)
{
    $get('calculations').className = 'shown';
}

function btnCalculate_mouseover(evt)
{
    window.status = "Calculate Property Taxes";  
    return true;  
}

function btnCalculate_mouseout(evt)
{
    window.status = "";
}

function ShowCalculations_MouseOut(evt)
{
    $get('calculations').className = '';
}

function ToolTip_Show(evt)
{
    for(var i = 0 ; i < toolTipArray.length; i++)
    {
        toolTipArray[i].className = "toolTip toolTipHidden";
    }
    toolTipTimer = setTimeout('$get("' + evt.target.id + '").className="toolTip toolTipVisible";', 200);    
}

function ToolTip_Hide(evt)
{
    evt.target.className = "toolTip toolTipHidden";
    clearTimeout(toolTipTimer);
}

function Tab_click(evt)
{
	if(evt.target.id == 'photo')
	{
		$get('ParcelImage').className = '';
		$get('ParcelDescription').className = 'hidden';
		$get('photo').className = 'tab selected';
		$get('description').className = 'tab';	
	}
	else
	{
		$get('ParcelImage').className = 'hidden';
		$get('ParcelDescription').className = '';
		$get('photo').className = 'tab';
		$get('description').className = 'tab selected';		
	}
}


function btnCalculate_click(evt)
{
    var value = FixNumbers($get('txtSalePrice'));
    FixNumbers($get('txtOldMarket'));
    FixNumbers($get('txtOldAssessed'));
    
    var oldAssessed = parseInt($get('txtOldAssessed').value);
    var oldMarket = parseInt($get('txtOldMarket').value);
    
    if(oldAssessed > oldMarket)
    {
        $get('txtOldAssessed').value = $get('txtOldMarket').value;
    }
    
    if(value < serverVars.minSalePrice || value > serverVars.maxSalePrice)
    {
        $get('footer').innerHTML += "<div id='errorBox'><div id='errorClose'></div>Please enter a sale value between " + formatMoney(serverVars.minSalePrice) + " and <nobr>" + formatMoney(serverVars.maxSalePrice) + "</nobr>.</div>";
        $addHandler($get('errorClose'), 'click', ErrorClose_click);
        evt.preventDefault();
        $get('txtSalePrice').focus();
        $get('txtSalePrice').select();        
        return;
    }

    returnValue = LCPA.Web.taxestimator.TaxEstimationService.CalculateTaxes(
        value,
        $get('txtOldAssessed').value,
        $get('txtOldMarket').value,
        serverVars.actualMillage,
        serverVars.schoolMillage,
        OnCalculateComplete,
        OnCalculateTimeout,
        OnCalculateError);
        
    evt.preventDefault();
}

function ErrorClose_click(evt)
{
    $get('footer').innerHTML = "";
    $get('txtSalePrice').focus();
}

function ShowCalculationsButton()
{
    $get('showCalculations').innerHTML = "<p>Show Calculations</p>";
    $addHandler($get('showCalculations'), 'mouseover', ShowCalculations_MouseOver);
    $addHandler($get('showCalculations'), 'mouseout', ShowCalculations_MouseOut);
}

function OnCalculateComplete(args)
{
    $get('AssessedValue').innerHTML = formatMoney(args.AssessedValue);
    $get('Millage').innerHTML = RoundNumber(serverVars.actualMillage, 4);
    $get('Taxes').innerHTML = formatMoney(args.EstimatedTaxes);
    if(parseFloat(args.TaxesWithHomestead) < 100.00)
    {
        $get('HomesteadTaxes').innerHTML = "Less than $ 100*";
    }
    else
    {
        $get('HomesteadTaxes').innerHTML = formatMoney(RoundNumber(args.TaxesWithHomestead, 0));
    }
    $get('calculations').innerHTML = args.CalculationsHTML;
    ShowCalculationsButton();
}

function OnCalculateTimeout(args)
{
    
}

function OnCalculateError(args)
{
    
}

function formatMoney(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return "$ " + x1;
}

function RoundNumber(number, decimals)
{
    return Math.round(number * Math.pow(10,decimals)) / Math.pow(10,decimals);
}

function FixNumbers(control)
{
    if(control.value.length == 0)
        control.value = "0";
    var value = parseFloat(control.value);
    if(value == NaN)
        value = 0;
    control.value = value.toString();
    return value;    
}

function Checkbox_click(evt)
{
    $get('txtOldMarket').disabled = !evt.target.checked;
    $get('txtOldAssessed').disabled = !evt.target.checked;
    usePortability = evt.target.checked;
    if(usePortability)
    {
        $get('oldMarketCell').className = "displayCell";
        $get('oldAssessedCell').className = "displayCell";
    }
    else
    {
        $get('oldMarketCell').className = "displayCell disabled";
        $get('oldAssessedCell').className = "displayCell disabled";
    }
}

function DisclaimerAccept()
{
    $get('instructions').className = "hidden";
    EnablePageElements();
    $get('txtSalePrice').focus();
}

function Textbox_blur(evt)
{
    while(evt.target.value.substring(0, 1) == "0")
    {
        evt.target.value = evt.target.value.substring(1);
    }
    if(evt.target.value.length == 0)
    {
        evt.target.value = "0";
    }    
}

function CssEnabled()
{
    if(Sys.UI.DomElement.getBounds($get('branding')).width == 770
        && Sys.UI.DomElement.getBounds($get('branding')).height == 124)
    {
        return true;    
    }    
    return false;
}

function Textbox_keyDown(evt)
{
    if(evt.keyCode == Sys.UI.Key.enter)
    {
        evt.preventDefault();
        return;
    }
    if(evt.keyCode == 37 || evt.keyCode == 39 || evt.keyCode == 127)
    {
        return;
    }   
    
    if(evt.keyCode < 31 || (evt.keyCode > 47 && evt.keyCode < 58) || (evt.keyCode > 95 && evt.keyCode < 106))
    {
        resetForm();
        return;
    } 
    
    evt.preventDefault();
    return;    
    
    
}

function DisclaimerDecline()
{
    document.location.href = "http://www.Leepa.org";
}

function resetForm()
{
   $get('AssessedValue').innerHTML = "$ 0";
   $get('Millage').innerHTML = "0.0000";
   $get('Taxes').innerHTML = "$ 0";
   $get('HomesteadTaxes').innerHTML = "$ 0"; 
   $get('footer').innerHTML = "";
   var calcIcon = $get('showCalculations');
   if(calcIcon)
   {
      $clearHandlers(calcIcon);
      $get('showCalculations').innerHTML = "";
   }
}

function OpenAndFocusWindow(control)
{
    var newWin = window.open(control.href, control.target, 'menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes');
    newWin.focus();
}



if(typeof(Sys) !== 'undefined')
    Sys.Application.notifyScriptLoaded();