Ford.Bnp = {
	vars: {
		locale: _F.lang + '-CA',
//		postalCode: _F.postal,
//		province: _F.prov,
		section: 'buildandprice'
		
	},
	obj: null,
	load: function() {
		
		Ford.Bnp.obj = $('<div>').attr("id", "bnpModal").dialog(
			{
				autoOpen: false, 
				modal: true,
				resizable: false,
				width: 965,
				height: 950
			});
		
		// Need to be updated to current postal code always
		Ford.Bnp.vars.postalCode = _F.postal;
		Ford.Bnp.vars.province = _F.prov;
		
		//get parameters passed into bnp.do url to deeplink to specific model page i.e. crossover - NB
		if ($.getUrlVar('page') != undefined)
		{
			Ford.Bnp.vars.page = $.getUrlVar('page');
		}
		
		if ($.getUrlVar('vehicletype') != undefined)
		{
			Ford.Bnp.vars.vehicletype = $.getUrlVar('vehicletype');
		}
		Ford.Bnp.vars.dealerConnect = _F.dc;
		
		// The legacy parameter was added to fix KITE
		// - KITE requires the classid attribute (which cannot have the data and type attribute)
		var flash = $.flash.create({
			id: "BAndP",
			flashvars: Ford.Bnp.vars,
			base: '.',
			wmode: 'transparent',
			allowScriptAccess: 'always',
			height:795,
			width:965,
			swf: '/flash/buildandprice/shellLoader.swf',
			legacy: true
		});
		Ford.Bnp.obj.html(flash);

		Ford.Bnp.obj.append($('<div>').attr('id', 'disclosureWrapper').html($('#disclosureWrapper').html()));
	},
	open: function() {
		if(Ford.Bnp.obj == null) {
			Ford.Bnp.load();
		}
		window.scrollTo(0,0);

		/*Chrome Fix, allowing scrollbar to be grabbed, RB 8/8/11*/ Ford.Bnp.obj.dialog({open: function(event, ui) { window.setTimeout(function() { jQuery(document).unbind('mousedown.dialog-overlay').unbind('mouseup.dialog-overlay');},100);},modal:true});
		
		Ford.Bnp.obj.dialog('open');
	},
	close: function() {
		if(Ford.Bnp.obj != null) {
			Ford.Bnp.obj.dialog('close');
			Ford.Bnp.obj = null;
		}
	},
	setType: function(acode) {
		if(acode != undefined && acode.length == 13) {
			var page;
			//alert(acode);
			switch(acode.substring(7, 11)) {
				case 'T11D': case 'T11E': page = 'options'; break;
				case 'C051': page = 'options'; break;
				//case 'T121': page = 'model'; break;
				default: page = 'bodystyle';
			}
			Ford.Bnp.vars.page = page;
				//alert(page);
			var type;
			/*alert("TYPE: " + Ford.Common.Acode.getType(acode));
			CAC10FOV171A0
			alert(acode.substring(7,11));*/
			switch(acode.substring(7, 11)) {
			
				case 'S101': // Explorer
				case 'S131': case 'S132': case 'S141': case 'S142': // Escape
				case 'S301': //Expedition
					type = 'suv'; break;
				case 'S151': case 'S152':// Edge
				case 'S351': case 'S352': // Flex
					type = 'crossover'; break;
				case 'V171': case 'V172'://E Series
					type = 'truck';break;
				case 'V321'://Transit Connect
					type = 'truck';break;
				case 'T11D': case 'T11E':
					type = 'truck';break;
				default: type = Ford.Common.Acode.getType(acode);
			};
			
			Ford.Bnp.vars.vehicletype = type;
		}	
	}
};

$(function() {
	$('.js_bnp').bind('click', function() {
		var acode = '';
		if($(this).data('acode') != undefined && $(this).data('acode').length == 13) {
			Ford.Bnp.vars.acode = $(this).data('acode');
			Ford.Bnp.setType($(this).data('acode'));
			acode = $(this).data('acode');
		}
		
		// send everything for SSL to bnp.do
		if(window.location.protocol == 'https:') {
			window.location.href = _F.root + '/' + _F.lang + '/fo/bnp.do';
			return;
		}
		
		Ford.Bnp.open();
	});
});

function getPostal()
{
	return _F.postal;
}
function getProvince()
{
	return _F.prov;
}

/**
 * Make Bnp work with new code base
 * This Code need to be cleaned up after site rework
 */
function closeShell() {
	Ford.Bnp.close();
}
function savePostalCode(postalCode) {
	Ford.Common.PostalCode.change(postalCode);
}
function printVehicleFord(jsonString) {
	var obj = eval('(' + jsonString + ')');
	
	var url = _F.root + "/print.do?";
	var ampersand = false;

	for(var prop in obj) {
		if(obj[prop]) {
			if (ampersand) {
				url += "&";
			} else {
				ampersand = true;
			}
			url += prop + "=" + obj[prop];
		}
	}

	window.open(url, "fordcapopup", "width=800,height=675,scrollbars=yes,location=no,menubar=no,toolbar=no,directories=no,resizable=no,status=yes");
}

function sendBnpDataToFordCredit(jsonString) {
	var obj = eval('(' + jsonString + ')');
	var params = '';
	var goodThruDate = "2008-03-30";
	var vehicle = $.ford.vehicle.get(obj.acode);

	if (_F.dealer) {
		// Add the header data URL parameters.
		params += 'ATD_SERVLET_ACTION=CA';
		params += '&ATD_SERVLET_PAGE_CLASS=AAExternal';
		params += '&CountryCode=CAN';
		params += '&LanguageCode=' + _F.lang;
		params += '&InterfaceHomeURL=http://www.ford.ca';
		params += '&WindowStyle=P';
		params += '&SourceOfData=CANBC';

		// Add the dealer data URL parameters if a dealer was specified.
		if (_F.dealer) {
			params += '&DealerPACode=' + _F.dealer.key;
			params += '&DealerName=' + _F.dealer.name;
			params += '&DealerFullFax=' + _F.dealer.fax;
			params += '&DealerFullPhone=' + _F.dealer.phone;
			if(_F.dealer.email) {
				params += '&DealerEmailAddr=' + _F.dealer.email;
			}
		}

		// Add the general contract and vehicle data URL parameters.
		params += '&prodType=Buy';
		params += '&totalMonthlyPayment=' + obj.Payment;	
		params += '&msrp=' + obj.MSRP;
		params += '&goodThruDate=' + goodThruDate;
		params += '&SellingPrice=' + obj.Total;
		params += '&term=' + obj.Term;
		params += '&ePrice=N';
		params += '&PEPDiscount=0';
		params += '&NewUsedIndicator=N';
		if(_F.location) {
			params += '&paCurResState=' + _F.location.province;
		}
		params += '&Mileage=0';
		params += '&ModelName=' + vehicle.model;
		params += '&ModelPrice=' + obj.Total;
		params += '&EngineCode=' + vehicle.engine;
		params += '&AutoTrans=' + vehicle.transmission;
		params += '&TrimCode=' + vehicle.trimCode;
	} else {
		// Add the header data URL parameters.
		params += 'ATD_SERVLET_ACTION=CAOEM';
		params += '&ATD_SERVLET_PAGE_CLASS=AAExternal';
		params += '&InterfaceHomeURL=http://www.ford.ca';
		params += '&SourceOfData=CANBC';
		params += '&CountryCode=CAN';
		params += '&LanguageCode=' + _F.lang;
		params += '&WindowStyle=P';

		params += '&EngineCode=' + vehicle.engine;
		params += '&vin567=' + vehicle.vin567;
		params += '&make=' + vehicle.make;
		params += '&AutoTrans=' + vehicle.transmission;
		params += '&modelYear=' + vehicle.year;
		params += '&NewUsedIndicator=N';
		params += '&TrimCode=' + vehicle.trimCode;

		// Add the dealer data URL parameters if a dealer was specified.
		if (_F.dealer) {
			params += '&dealerDataSW=Y';
			params += '&DealerPACode=' + _F.dealer.key;
			params += '&DealerName=' + _F.dealer.name;
			params += '&DealerFullFax=' + _F.dealer.fax;
			params += '&DealerFullPhone=' + _F.dealer.phone;
			if(_F.dealer.email) {
				params += '&DealerEmailAddr=' + _F.dealer.email;
			}
		} else {
			params += '&dealerDataSW=N';
		}

		params += '&zipCode=' + _F.postal;
		if(_F.location) {
			params += '&paCurResState=' + _F.location.province;
		}
		params += '&prodType=Buy';
		params += '&totalMonthlyPayment=' + obj.Payment;	
		params += '&msrp=' + obj.MSRP;
		params += '&goodThruDate=' + goodThruDate;
		params += '&SellingPrice=' + obj.Total;
		params += '&term=' + obj.Term;
		params += '&ModelName=' + vehicle.model;
	}
	
	// TODO When we figure out how to call the QA URL, perform a check to set the
	// base URL based on the current domain.
	var baseUrl = 'https://www.onlinevehiclefinancing.com/ovfui/fcovfui?';
	var newWindowFocus = window.open(baseUrl + params, 'fordfinance', 'menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes');
	newWindowFocus.focus();
}
function sendVehicle(jsonString) {
	var obj = eval('(' + jsonString + ')');
	
	var url = _F.root + "/" + _F.lang + "/shopping_tools/bnp_to_friend.do?";
    var ampersand = false;
    for(var prop in obj) {
        if(obj[prop]) {
            if (ampersand) {
            	url += "&";
            }  else {
            	ampersand = true;
            }
            var val = obj[prop];
            
            if(val == "undefined") {
            	val = "";
            }
            url += prop + "=" + val;
        }
    }
    window.open(url, "fordcapopup", "width=800,height=675,scrollbars=yes,location=no,menubar=no,toolbar=no,directories=no,resizable=no,status=yes");
}
function goToUrl(newUrl) {
    if(newUrl.href) {
        newUrl = newUrl.href;
    }

    if(_F.dc ) {
        if(newUrl.indexOf("?") == -1) newUrl += "?";
        else newUrl += "&";
        newUrl += "source=DC";
    }
	var t = setTimeout("delayURL('" + newUrl + "')", 500);
    return false;
}

function delayURL(url) {
	document.location.href = url;
}
function OpenFlash(x, y, FlashVars) {
	Ford.Bnp.vars.acode = FlashVars.aCode;
	Ford.Bnp.vars.page = FlashVars.page;
	Ford.Bnp.vars.vehicletype = FlashVars.vehicleType;
	//Ford.Bnp.setType(Ford.Bnp.vars.acode);
	Ford.Bnp.open();
}

function getX(val) { }
function getY(val) { }

//get parameters passed in to the bnp.do url - NB
$.extend({
	getUrlVars: function(){
		var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		
		for(var i = 0; i < hashes.length; i++)
		{
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}
		return vars;
	},
	getUrlVar: function(name){
		return $.getUrlVars()[name];
	}
});
