/*
 ********************************************************************************************************
	This is the integration file for the external users. The users can customize the toolbar
	options, select language for the tool. User also can select the options for saving data, 
	customized results screen.		
 ********************************************************************************************************

*/

//var relurl='http://www.hrblock.com/taxes/tax_calculators/'
var relurl='/taxes/tax_calculators/laszlo_calcs/taxest09/'

//div where the TE will be displayed
var targetdiv=''

//store input xml as a string
var inputxmlstr='';

var inputxmldom=null;

// select the language, default is english
var language='en'

// populate from inputxmlstr and will 
var inputtoflash=''

// populate from inputxmlstr and will 
var enabletoolbar=true
var enablehelp=true
var enabledc=true
var browsertype='';
var clientid='hrblock'
/*
 ********************************************************************************************************
	Initialize the process
	set the global variables, parseinput xml, format the input parameters to pass to flash, display the TE 
 ********************************************************************************************************
*/

function initialize(divname, inputxml, lang, client,toolbar,help,dc)
{
 
 if (client=='' )
 {
	 alert("Please enter appropriate client  id.")
	 return 
 }
	

	if (divname=='' || document.getElementById(divname)==null)
	{
		alert('Please specify a div where TaxEstimator can be launched.')
		return;
	}
//alert(document.getElementById('calcdiv'))
 targetdiv=divname;
 language=lang;
 clientid=client;
 enabledc=dc;
 enablehelp=help;
 enabletoolbar=toolbar;
 detectbrowser();
inputtoflash=inputxml;
 //createformtags();

// alert(document.getElementById('module').value)
 displayTE( (inputxml == '')?'':parseinputxml(inputxml));
}


/*
 ********************************************************************************************************
	create the form tags, currently this is used only for invoking help 
 ********************************************************************************************************
*/


function createformtags()
{
	var newForm=document.createElement("form");
	newForm.name="te_form"
	newField = document.createElement("input");
	newField.type = "hidden";
	newField.name = "module";
	newField.id="module"
	newField.value="hellllllllll....."
	newForm.appendChild(newField);
	document.getElementById(targetdiv).appendChild(newForm)
}

/*
 ********************************************************************************************************
	Display the TaxEstimator, pass required parameters
 ********************************************************************************************************
*/
 
function displayTE(inputval) 
{
		fo_te = new FlashObject(relurl+"taxest2009.lzx.swf", "lzapp", 735, 516, "6", "#FFFFFF");
		fo_te.addParam("swLiveConnect", "true");
		fo_te.addParam("name", "lzapp");
//		fo_te.addParam("wmode", "transparent");
		fo_te.addParam("base", relurl);
		fo_te.addVariable("inputval", inputval); 
		fo_te.addVariable("language", language);
		fo_te.addVariable("clientId", clientid);
		fo_te.addVariable("toolbar", enabletoolbar);
		if (clientid!="hrblock")
		{

		fo_te.addVariable("dc", "false");

		}
		else
		fo_te.addVariable("dc", enabledc);

		
		fo_te.addVariable("help", enablehelp);
		fo_te.write(targetdiv);
}

function calltaxest2007help(arg)
{
document.forms['taxest'].module.value=arg

var helpURL="";
if (language=='sp')
{
	 helpURL='/espanol/herramientas/help/taxest2007/frames.html'
}
else helpURL='/taxes/tax_calculators/help/taxest2009/frames.html';	

var x=window.open(helpURL,'helpWindow','height=400,width=650,scrollbars=0')}

/*
 ********************************************************************************************************
	parse the xml input string
 ********************************************************************************************************
*/
 
function parseinputxml(xmlstr)
{
	
	var inputs   = new Array();
	inputs[0]    = "personal";
	inputs[1]    = "income";
	inputs[2]    = "deductions";

	createDomPublicXml(xmlstr);
	var input_str = "";   
    
	for (var j=0; j<inputs.length; j++)
    {
		var xmlroot_element=inputxmldom.getElementsByTagName(inputs[j])
		var tmpstr=""

		
		for (var i=0;i<xmlroot_element[0].childNodes.length ;i++ )
		{
			if (xmlroot_element[0].childNodes[i].nodeType==1)
			{
				var nodetxt='';
				if (browsertype=="IE")
				{
					nodetxt= xmlroot_element[0].childNodes[i].text

					if (nodetxt=='')
					{
						nodetxt= xmlroot_element[0].childNodes[i].attributes.getNamedItem("def").value;
					}
				}
				else 
				{ // This is done for mozilla since the parsing for IE and FF is totally different with XML str
						if (xmlroot_element[0].childNodes[i].hasChildNodes())
						{
							nodetxt=xmlroot_element[0].childNodes[i].childNodes[0].nodeValue
							//even if the nodevalue is found  check if it is white space, if so trim it first and if the result is blank, replace it with default value
							nodetxt=nodetxt.replace(/^\s+|\s+$/g, '');
							if (nodetxt=='')
							{
								nodetxt=xmlroot_element[0].childNodes[i].attributes.getNamedItem("def").value
							}
							//alert('has child nodes'+xmlroot_element[0].childNodes[i].childNodes[0].nodeValue)
						}
						else
						{
							nodetxt=xmlroot_element[0].childNodes[i].attributes.getNamedItem("def").value
						}
				}

				// trim nodetxt before
				if (nodetxt!=null || nodetxt!=undefined )
				{
					nodetxt=nodetxt.replace(/^\s+|\s+$/g, '');
				}

				tmpstr+=nodetxt +"*"
				
				
			}
		} // end of for loop for each section

		tmpstr=tmpstr.substring(0,tmpstr.length-1)
		
		if (j< inputs.length-1)
			{
			input_str+=tmpstr +"_";
			}
			else 
			input_str+=tmpstr ;
	}// end of for loop for all sections

	//alert('input_str'+input_str)
	
	return input_str;
}


function updatetracking(module)
{
	  return;
}

/*
 ********************************************************************************************************
	Create a DOM object out of string
 ********************************************************************************************************
*/

function createDomPublicXml(stringToConvert)
{
inputxmldom=null;
    try //Internet Explorer
    {
      inputxmldom=new ActiveXObject("Microsoft.XMLDOM");
      inputxmldom.async="false";
      inputxmldom.loadXML(stringToConvert);

    }
    catch(e)
    {
      try //Firefox, Mozilla, Opera, etc.
      {
        var parser=new DOMParser();
        inputxmldom=parser.parseFromString(stringToConvert,"text/xml");


	  }
      catch(e)
      {
        alert(e.message);
        return false;
      }
    }

    return true;
}

/*
 ********************************************************************************************************
	this is the call back function to update the results.
	te_results will contain the results. ********************************************************************************************************
*/


function updatejsresults(te_results)
{

if (inputtoflash=='')
{
	return;
}
//var xR=AGI+'*'+ tot_itemized+'*'+totExemptions+'*'+stdDedTmp+'*'+taxableIncome+'*'+AMT+'*'+OrdinaryTax+'*'+regTax+'*'+childTaxCredit+'*'+taxAfterCredit+'*'+eic+'*'+totTaxes+'*'+TPTotWH+'*'+SpouseTotWH+'*'+payments+'*'+totPayments+'*'+grtStandDed+'*'+lifeTimeCredit+'*'+selfEmploymentTax+'*'+childCareCredit+'*'+sumWHtoDate+'*'+refChildTaxCredit+'*'+objExpense.fedExp+'*'+objExpense.otherCreditsExp+'*'+objExpense.saversCreditExp+'*'+objExpense.homeCreditsExp+'*'+hybridcredit;
createDomPublicXml(inputtoflash)
//alert(te_results)
var resobj=inputxmldom.getElementsByTagName("refund_owe");		
var resultstr=te_results.split("_");
var resdetails=resultstr[1].split("*");

resobj[0].appendChild(inputxmldom.createTextNode(''+resultstr[0]));
inputxmldom.getElementsByTagName("grt_std_item")[0].appendChild(inputxmldom.createTextNode(''+resdetails[16]))
inputxmldom.getElementsByTagName("agi")[0].appendChild(inputxmldom.createTextNode(''+resdetails[0]))
inputxmldom.getElementsByTagName("personal_exmp")[0].appendChild(inputxmldom.createTextNode(''+resdetails[2]))
inputxmldom.getElementsByTagName("taxable_income")[0].appendChild(inputxmldom.createTextNode(''+resdetails[4]))
inputxmldom.getElementsByTagName("regular_tax")[0].appendChild(inputxmldom.createTextNode(''+resdetails[7]))
inputxmldom.getElementsByTagName("amt")[0].appendChild(inputxmldom.createTextNode(''+resdetails[5]))
inputxmldom.getElementsByTagName("total_tax")[0].appendChild(inputxmldom.createTextNode(''+resdetails[0]))

var returnrestr=''
if(browsertype=="IE")
    {
     returnrestr= inputxmldom.xml

    }
else{
        var serialize=new XMLSerializer();
        returnrestr=serialize.serializeToString(inputxmldom);
    }
updateresults( returnrestr)
}




function detectbrowser()
{
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Netscape" && navigator.appCodeName=="Mozilla")
	{
		browsertype = "FF"
	}
else if (browser=="Netscape" )
	{
		browsertype = "NN"
	}
else if (browser=="Microsoft Internet Explorer")
	{
		browsertype="IE"
	}
}


