var commonIds = new Array('economyItem','basicItem','completeItem','internationalItem');
var styleIds = new Array('col_economy','col_basic','col_complete','col_international');
var winLoaded = false;
var clientId = Math.round(1000*Math.random());
var errorCount = 0;
var asyncCallCount = 0;
var selectedItems;
var selectedItemKeys;
var serverCallDone = true;
function init() {
	DWRUtil.useLoadingMessageQQ();
	getItems();
}

DWRUtil.useLoadingMessageQQ = function(message) {
var loadingMessage;
if (message) loadingMessage = message;
else loadingMessage = "Loading";
DWREngine.setPreHook(function() {
serverCallDone = false;
var disabledZone = $('disabledZone');
if (!disabledZone) {
disabledZone = document.createElement('div');
disabledZone.setAttribute('id', 'disabledZone');
disabledZone.style.position = "absolute";
disabledZone.style.zIndex = "1000";
disabledZone.style.left = "0px";
disabledZone.style.top = "0px";
disabledZone.style.width = "100%";
disabledZone.style.height = "100%";
document.body.appendChild(disabledZone);
var messageZone = document.createElement('div');
messageZone.setAttribute('id', 'messageZone');
messageZone.style.position = "absolute";
messageZone.style.top = "0px";
messageZone.style.right = "0px";
messageZone.style.background = "red";
messageZone.style.color = "white";
messageZone.style.fontFamily = "Arial,Helvetica,sans-serif";
messageZone.style.padding = "4px";
disabledZone.appendChild(messageZone);
var text = document.createTextNode(loadingMessage);
messageZone.appendChild(text);
}
else {
$('messageZone').innerHTML = loadingMessage;
disabledZone.style.visibility = 'visible';
}
});
DWREngine.setPostHook(function() {
serverCallDone = true;
$('disabledZone').style.visibility = 'hidden';
});
}


if (window.addEventListener) {
	window.addEventListener("load", init, false);
}
else if (window.attachEvent) {
	window.attachEvent("onload", init);
}
else {
	window.onload = init;
}

function enableContinue(enable) 
{
   var continueButton = document.getElementById("continue");
   if (continueButton != null)
   {
      if (enable == true)
         continueButton.disabled = false;
	   else
		 continueButton.disabled = "disabled";
	}
}

function getItems()
{
    enableContinue(false);
   	var entityType = $('entityType').value;
	var state = $('entityState').value;
	asyncCallCount++;
	packageView.createView(entityType,state,{callback:populateView, async:asyncCall, errorHandler:function(message) {errorCount++;packageView.logError( "ClientId-" + clientId + " :ErrorCount-" + errorCount + " :AsynCall-" + asyncCallCount + " msg:"+ message + ",entityType:" + entityType + ",state:" + state); alert("Please press F5 or refresh your browser to view the most current information."); }});
	
}

var disableDiscount = new Boolean(false);

function populateView(view) 
{							
	disableDiscount = false;
	getSelectedItemKeys();	
	var vPackages = view.packages ;
	var vEntityType = view.entityType ;
	if (vPackages == null || vEntityType == null) {
		//alert("Packages: " + vPackages + " entityType: " + vEntityType) ; 
		return ; 
	}
	DWRUtil.removeAllRows("itemList");
	DWRUtil.addRows("itemList", view.packageItems, [ getDescription, getEconomy, getBasic, getComplete, getInternational ]);
	
	var row = view.packages[0];
	
	var cellFuncs = [getPackageEconomy, getPackageBasic, getPackageComplete, getPackageInternational ];
	for (var j = 0; j < cellFuncs.length; j++)
	{
		var func = cellFuncs[j];
		var reply = func(row);
	}

    var stateFeeDescriptionEle = document.getElementById("stateFeeDescription"); 
    if (view.stateFeeDetails != null)
    {
       var stateFeeDescriptions = "";
       var maxFeeLength = view.stateFeeDetails[commonIds.length-1].length;
       for (var ii = 0; ii < maxFeeLength; ii++)
	   {
	      if (stateFeeDescriptions != "")
	         stateFeeDescriptions += "<br/>";
	      var anchor = view.stateFeeDetails[commonIds.length-1][ii].description;
	      anchor = anchor.replace(/\s/g, "");
	      if (anchor.search(/^Apostille/i) > -1)
	      {
	         stateFeeDescriptions += "<a href=\"javascript:popupWindow('popups/incFormHelp.jsp#Apostille')\">" + 
	                               view.stateFeeDetails[commonIds.length-1][ii].description + "</a>";
	      }
	      else
	      {
	         if (view.stateFeeDetails[commonIds.length-1][ii].feeCode.search(/^2SF/) > -1 || anchor.search(/CertifiedCopyFee$/) > -1)
	            anchor = "2SFCertifiedCopyFee";
	         stateFeeDescriptions += "<a href=\"javascript:popupWindow('State_Fee_Popup_All_Sites.html#" + anchor + "')\">" + 
	                                 view.stateFeeDetails[commonIds.length-1][ii].description + "</a>";
	      }
	   }
	   if (stateFeeDescriptionEle != null)
	      stateFeeDescriptionEle.innerHTML = stateFeeDescriptions;	
	}
	else
	{
	   if (stateFeeDescriptionEle != null)
	      stateFeeDescriptionEle.innerHTML = "";	
	}
    
	var _internationalCost = view.internationalCost;
	var _stateFee =  view.stateFee;
	for(var k=0; k<commonIds.length; k++)
	{				
		var stateFeeEle = $('stateFee_' + commonIds[k] );
		var stateFeeBkEle = document.getElementById("stateFeeBk_" + commonIds[k]);
		var totalStateFee = 0.0;

        if (view.stateFeeDetails != null)
        {
		   var stateFeeBreakdown = "";
		   for (var j = 0; j < view.stateFeeDetails[k].length; j++)
		   {
		      totalStateFee += view.stateFeeDetails[k][j].price;
		      if (stateFeeBreakdown != "")
		         stateFeeBreakdown += "<br/>";
		      stateFeeBreakdown += "$" + currencyFormat(view.stateFeeDetails[k][j].price);
		   }
		   if (view.stateFeeDetails[k].length < maxFeeLength)
		      stateFeeBreakdown += "<br/>n/a";
		   if (stateFeeBkEle != null)
		      stateFeeBkEle.innerHTML = stateFeeBreakdown;	
		}
		else
		{
		   if (stateFeeBkEle != null)
		      stateFeeBkEle.innerHTML = "";	
		   totalStateFee = _stateFee;
		}
		stateFeeEle.value = currencyFormat(totalStateFee);
		stateFeeEle.innerHTML = currencyFormat(totalStateFee)
	}

	var ele = $("itemList");
	var noOfNodes = ele.childNodes.length;
	for(var i=0; i< noOfNodes; i++)
	{
		var tr = ele.childNodes[i];
		tr.vAlign = 'middle';
		if(i % 2)
		{
			tr.className = 'rowA';
		}
		else
		{	
			tr.className = 'rowB';
		}
	}

	if(!winLoaded)
	{
		var pkgEle = $(view.selectedProductType + 'Package');
		pkgEle.checked = true;
		pkgEle.onclick();
		if(view.entityType != null)
		{
			DWRUtil.setValue($('entityType'), view.entityType);
		}
		DWRUtil.setValue($('entityState'), view.state);					
	}
	else
	{
		disableSelectedColumn(false);
	}

	//hiding the discount if cost > actualCost
	if (document.getElementById("callout_Discount_Codes") != null &&
		document.getElementById("callout_Discount_Codes") != null) {
		if (disableDiscount == true) {
		  show("callout_Discount_Codes_disabled");
		  hide("callout_Discount_Codes");
		} else {
		  show("callout_Discount_Codes");
		  hide("callout_Discount_Codes_disabled");
		}
	}

	getSelectedItems();			  
	refreshTotalCost();				
	winLoaded = true;
	enableContinue(true);
}
function getSelectedItemKeys()
{				
	selectedItemKeys = new Array();
	for(var i=0; i<commonIds.length; i++)
	{
		var commonId = commonIds[i];
		selectedItemKeys[commonId]= new Array();
		var itemKeyArray = selectedItemKeys[commonId];
		var items = document.getElementsByName(commonId);				
		for(var j=0; j<items.length; j++)
		{
			if(items[j].checked)
			{						
				itemKeyArray[items[j].value] = items[j].value;
			}
		}
	}
}			
function refreshTotalCost()
{
	for(var i=0; i<commonIds.length; i++)
		{
			var commonId = commonIds[i];
			var commonIdItems = selectedItems[commonId];
			var totalSelectedCost = 0;
		for(var j=0; j<commonIdItems.length; j++)
		{
			totalSelectedCost = Number(totalSelectedCost) + Number(commonIdItems[j]);
		}	
		var packagePriceEle = $('price_' + commonId + 'Package');						
		var stateFeeEle = $('stateFee_' + commonId );
		var totalCost = Number(packagePriceEle.innerHTML) + Number(totalSelectedCost) + Number(stateFeeEle.value);
		var totalCostEle = $('totalCost_' + commonId);
		totalCostEle.value = currencyFormat(totalCost);
		totalCostEle.innerHTML = currencyFormat(totalCost);					
		}
}
function getSelectedItems()
{				
	selectedItems = new Array();
	for(var i=0; i<commonIds.length; i++)
	{
		var commonId = commonIds[i];
		selectedItems[commonId]= new Array();
		var itemArray = selectedItems[commonId];
		var items = document.getElementsByName(commonId);				
		for(var j=0; j<items.length; j++)
		{
			if(items[j].checked)
			{
				var index = itemArray.push( $('price_' + items[j].name + items[j].value).innerHTML);
			}
		}			  		
	}
}	
function updateTotalCost(item)
{
	var commonId = item.name;
	var price = $('price_' + item.id).innerHTML;				
	var isChecked = item.checked;
	var totalCostEle = $('totalCost_' + commonId );
	var totalCost = totalCostEle.innerHTML;
	if(isChecked)
	{
		totalCost = Number(totalCost) + Number(price);
	}
	else
	{
		totalCost = Number(totalCost) - Number(price);
	}
	totalCostEle.value = currencyFormat(totalCost);
	totalCostEle.innerHTML = currencyFormat(totalCost);		
	packageView.updateView(item.id, item.checked);		
}
function getItemColumn(item, colNo)
{
    var selectedByCode = false;
	var commonId = commonIds[colNo];
	var itemObj = eval('item[' + colNo + ']');
	if(itemObj.restricted)
	{
		return 'n/a';
	}
	if(itemObj.included)
	{
		return '<img src="images/checkmark_off.gif" width="23" height="18" />';
	}
	else
	{
		var isChecked = '';
		if(selectedItemKeys[commonId][itemObj.itemId] != null)
		{						
			//alert(commonId + "  " + itemObj.itemId	+ " selected by user");
			isChecked = ' CHECKED ';
		}
		if(!winLoaded && itemObj.inCart)
		{			
		    //alert(commonId + "  " + itemObj.itemId	+ " in Cart");
			isChecked = ' CHECKED ';
			if (itemObj.selectedByCode)
			   selectedByCode = true;
		}
		//alert(commonId + " " + itemObj.itemId	+ " " + colNo + " selected: " + itemObj.selected);
		if (itemObj.selected)
		   isChecked = ' CHECKED ';
		return  '<input type="checkbox" DISABLED price="66" selectedbycode="' + selectedByCode + '"' + ' name="' +  commonId  + '" id = "'+ commonId + itemObj.itemId +'" value="'+ itemObj.itemId +'"'+ isChecked + ' onclick="updateTotalCost(this);"><label>$<span id = "price_'+ commonId + itemObj.itemId +'" value="'+ itemObj.cost +'">' + itemObj.cost + '</span></label>';
	}
}
function getPackageColumn(item, colNo)
{
	var commonId = commonIds[colNo];
	var packageObj = eval('item[' + colNo + ']');
	var radioEle = $(commonId + 'Package');
	radioEle.value = packageObj.itemId;
	var priceEle = $('price_' + commonId + 'Package');
	priceEle.value = packageObj.cost;
	priceEle.innerHTML = packageObj.cost;
	//alert(item.actualCost);
	if(Number(packageObj.actualCost) > Number(packageObj.cost))
	{
	  var actualpriceEle = $('actualprice_' + commonId + 'Package');
	  actualpriceEle.innerHTML = "$" + packageObj.actualCost + "<br>";
	  disableDiscount = true;
	}
	else
	{
	  var actualpriceEle = $('actualprice_' + commonId + 'Package');
	  actualpriceEle.innerHTML = "";		
	}
	var totalCostEle = $('totalCost_' + commonId);
	totalCostEle.innerHTML = packageObj.cost;
	totalCostEle.value = packageObj.cost;
}
function ViewDoc()
{
	var newWin = window.open('','EIN_Detail','status=no,scrollbars=yes,resizable=yes');
	newWin.document.write('<TEXTAREA rows=50 cols=50>');
	newWin.document.write(window.document.body.innerHTML);
	newWin.document.write('</TEXTAREA>');
}
function TestTotal()
{
	var items = document.getElementsByName('economyItem');
	var total = 0;
	for(var i=0; i<items.length; i++)
	{
		if(items[i].checked)
		{
			total += Number($(items[i].name + items[i].value).value);
		}
	}
	alert(total);
}
function ViewDoc()
{
	var newWin = window.open('','EIN_Detail','status=no,scrollbars=yes,resizable=yes');
	newWin.document.write('<TEXTAREA rows=50 cols=50>');
	newWin.document.write(window.document.body.innerHTML);
	newWin.document.write('</TEXTAREA>');
}
function selectPkg(colNo)
{
	disableSelectedColumn(true);				

	$(commonIds[colNo] + 'PackageType').checked = true;
	$("selectedItemType").value = commonIds[colNo];

	items = document.getElementsByName($('selectedItemType').value);
	disableSelectedColumn(false);					
}
function disableSelectedColumn(disable)
{
	var items = document.getElementsByName($('selectedItemType').value);
	for(var i=0; i<items.length; i++)
	{
		if (items[i].getAttribute("selectedbycode") == "true")
			items[i].disabled = true;
		else
			items[i].disabled = disable;
	}
	if(!disable)
	{					
		var stateFee = $('stateFee');	
		var itemTypeSelected = 	$('selectedItemType').value;		
		var stateFeeEle = $('stateFee_' +  itemTypeSelected);
		stateFee.value = stateFeeEle.innerHTML;
		var selectedIndex = 0;
		for(; selectedIndex<commonIds.length; selectedIndex++)
		{
			if(commonIds[selectedIndex] == itemTypeSelected)
				break;
		}
		selectCols(selectedIndex );
	}
}
function validateForm()
{
	if(!serverCallDone)
		return false;
	var state = $('entityState').value;
	if(state == "")
	{
		alert("Please select a state");
		return false;
	}
	document.redesignincForm.action = incPath + "entityPackage.do";
	return true;
}
function addDiscount()
{
	var discountCode = $('discCode').value;
	packageView.addDiscount(discountCode,{callback:displayDiscountMessage});
}
function displayDiscountMessage(msg)
{
	var discountMsgEl = $('discMsg');
	discountMsgEl.innerHTML = msg;
}
function selectCols(colNo)
{    
	var selectedStyle = styleIds[colNo];
	//alert(selectedStyle);
	var cTds = document.getElementsByTagName("TD");
	for (var i=0 ; i < cTds.length ; i++) 
	{
		for(var j=0 ; j < styleIds.length ; j++)
		{	   		
			if (cTds[i].className==selectedStyle  || cTds[i].className==(selectedStyle + "_selected")) 
			{
					cTds[i].className = selectedStyle + "_selected";
					break;
			}
			else if(cTds[i].className==styleIds[j] + "_selected")
			{
				cTds[i].className = styleIds[j];
				break;
			}			   	
		}
	}   
}

var getDescription = function(item) {
	var td = document.createElement("td");
	td.align = 'left';
	td.vAlign = 'middle';
	td.className = 'miniSummary2';
	var innerHtml = '<b>' + item[0].detailDescription + '</b>';
	td.innerHTML = innerHtml;
	return td;
}
var populateColumnItem = function(item, colNumber) {
	var td = document.createElement("td");
	td.align = 'center';
	td.className = styleIds[colNumber];
	var innerHtml = getItemColumn(item,colNumber);
	td.innerHTML = innerHtml;
	return td;
}
var getEconomy = function(item) {
	return populateColumnItem(item,0);
}
var getBasic = function(item) {
	return populateColumnItem(item,1);
}
var getComplete = function(item) {
	return populateColumnItem(item,2);
}
var getInternational = function(item) {
	return populateColumnItem(item,3);
}
var getPackageEconomy = function(item) {
	getPackageColumn(item,0);
}
var getPackageBasic = function(item) {
	getPackageColumn(item,1);
}
var getPackageComplete = function(item) {
	getPackageColumn(item,2);
}
var getPackageInternational = function(item) {
	getPackageColumn(item,3);
}

function checkCALlc() {
  if ($('entityState').value == "CA" &&
      $('entityType').value == "LLC") {
       popMSG();
  }
  
  return true;
}

function popMSG() {
  var winparm = "";
  var corptype = "";
  window.name = "parent";

  var url = "includes/californiaMsg.jsp";

  winparm = "width=600,height=380,resizable=yes,scrollbars=yes";
  var hWnd = window.open(url,"MSG",winparm);
  if (hWnd != null) {
    if (hWnd.opener == null) {
      hWnd.opener = self; window.name = "home"; hWnd.location.href=url;
    }
  }
}

function currencyFormat(amount) {
    var val = parseFloat(amount);
    if (isNaN(val)) {
        return "0.00";
    }
    if (val <= 0) {
        return "0.00";
    }
    val += "";
    if (val.indexOf('.') == -1) {
        return val+".00";
    } else {
        val = val.substring(0,val.indexOf('.')+3);
    }
    val = (val == Math.floor(val)) ? val + '.00' : ((val*10 == Math.floor(val*10)) ? val + '0' : val);
    return val;
}