// ---- m_console_stub ----
try{ /*
 * the following statement creates a console.log stub for systems without a
 * predefined logging console.
 */
if((typeof(console) === 'undefined') || (console === null)){
	console = {
		log: function(param){
			// we don't log
		}
	};
}

}catch(e){console.log('Error in m_console_stub: ' + e.description);}

// ---- global ----
try{ /**
 * Global variables.
 */

 /**
 * Will be set to true in the source code of the offline copy
 * This prevents server calls (e.g. to the teaser server) in the offline version!
 */
var is_mini_offline_copy  = false;
 
/**
 * The model code (4-digit number) of a vehicle which is set by the model pages.
 * Values: null/empty (no model selected) or model code
 */
var modelCode;

/**
 * URL of the folder containing the current content page
 */
var parentTopicUrl;

/**
 * An associative array of quicklink ids as a keys and links as values which replace 
 * default quicklinks.
 */
var quicklinkOverrides = new Array();

/**
 * An associative array of additional footer link ids as a keys and links as values which replace 
 * default additional footer links.
 */
var footerOverrides = new Array();

/** 
 * Functions to prevent zoom in when tapping into form elements on mobile devices.
 * Used in e. g. 'Tell a Friend' form.
*/
function zoomDisable(){
  $('head meta[name="viewport"]').remove();
  $('head').prepend('<meta name="viewport" content="user-scalable=0" />');
}
        
function zoomEnable(){
  $('head meta[name=viewport]').remove();
  $('head').prepend('<meta name="viewport" content="user-scalable=1" />');
}

function gotoURLWithReferrer(url){
	if(url.indexOf('javascript:')>=0)
		// Ignore url starting with javascript:
		return;
		
	var _isIE = getInternetExplorerVersion() >0 ;
	
	if(_isIE){
		var referLink = document.createElement('a');
		referLink.href = url;
		document.body.appendChild(referLink);
		referLink.click();
	}
	else{
		window.location.href = url;
	}
}

/** premier google map key */
var googleMapsKey = "gme-bmw";

/** 
  * An array of iframe ids which will be dynamically resized based on their content if resizeCaller() of m_iframe_resize.js is called
  * The embedding page and the iframe must have the same document.domain property for this to work.
  */  
var iframeids = [];
var oldHeight = [];

function fixTCHeadlineImage(tcImgId, topMargin){
	var version = getInternetExplorerVersion();
	//	ie8 behaves like other browsers! var isIe = version > -1; 
	
	if(version === -1 || version > 7){
		var tcImgComponent = $('#'+tcImgId);
		var imageTopMargin = 0;
		try{
			imageTopMargin = parseInt(topMargin);
		}
		catch(e){
		}
		
		tcImgComponent.css('margin-top', Math.abs(imageTopMargin));
	}
}

function correctBackground(){
	if(window['backgroundId'] == undefined) {
		return;
	}
	
	var bgComponent = $('#'+backgroundId);
	var bgTopPosition = $('#teaser_area_quicklinks').offset().top + 1;
	var bgBottomOffset = 0;
	try{
		bgBottomOffset = parseInt(bottomOffset);
	}
	catch(exception){
	}
			
	bgTopPosition -= bgBottomOffset;
	bgComponent.height(bgTopPosition);
}

function fixBGDimension(){	
	if(window['backgroundId'] == undefined) {
		return;
	}
	
	var version = getInternetExplorerVersion();
	var isIe6 = version > -1 && version < 7;
	
	var bgComponent = $('#'+backgroundId);
	if(isIe6){
		bgComponent.width($(window).width());
		
		$(window).resize(function() {
			bgComponent.width($(window).width());
		});
	}
	
	$(document).ready(function(){
		correctBackground();
		//register content_area for resize
		$('#content_area').bind("sizechange", function (e) {
			correctBackground();
		});
	  }
	);
	
	$(window).load(function(){
	     correctBackground();
	  }
    );
}

var MINI_MAX_QUERY_PARAMS = 10;
var MINI_TOKEN_REGEX = /[?&]?([^=]+)=([^&]*)/g;
function getQueryParams() { 
	var qs = document.location.search.split("+").join(" ");
	var params = {};
	var tokens;
	// Max 5 query parameters
	var count = MINI_MAX_QUERY_PARAMS;
		
	while (tokens = MINI_TOKEN_REGEX.exec(qs)) {
		var key = tokens[1];
		var value = tokens[2];
		
		params[decodeURIComponent(key)] = decodeURIComponent(value);
		 
		count--;
		if(count === 0){
			break;
		}
	}
 
	return params; 
}

/** 
 * Get the model code of the current model by looking up all potential consecutive directory parts of the url in the modelData array
 * The modelData array must already be loaded when this function is called!
 */
function getModelCodeFromUrl() {
	if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) return modelCode; //modelCode was already set, e.g. by model comparison
	if (miniModel !== null) {
		modelCode = miniModel;
		return modelCode;
	}
	
	//lookup model data using current url
	modelCode = getModelDataFromUrl("model_code");
	
	if (modelCode === null || (typeof(modelCode) === 'undefined')) {
		//check current URL for a url param named "model"
		modelCode = getRequestParameter("model");
	}
	
	//cr-30a:
	if ((modelCode === null) && (window.location.href.indexOf("minimalism") !== -1)) {
		modelCode =  modelData[defaultMinimalismModel.body  + "." + defaultMinimalismModel.type + ".model_code"];
	}
	return modelCode;
}

/** 
 * Get an info material based on Url information
 */
function getInfomaterialId() {	
	var infomaterial_id = getModelDataFromUrl("infomaterial_id");
	
	if (infomaterial_id === null || (typeof(infomaterial_id) === 'undefined')) {
		//maybe param is already present in url
		infomaterial_id = getRequestParameter("infomaterial_id");
		
		//io flashes use other param ...
		if (infomaterial_id === null || (typeof(infomaterial_id) === 'undefined')) {
			infomaterial_id = getRequestParameter("information_id");
		}
	}
	
	return infomaterial_id;
}

function getBodyTypeFromUrl(){
	return getModelDataFromUrl("body_type");
}

/** 
 *  Returns the model data value specified by data_key
 *	The current model is determined by the current Url!
 *	
 *	Usage example: getModelDataFromUrl("modelCode") returns "FG31"
 */
function getModelDataFromUrl(data_key) {
	var data;
	var paths = window.location.pathname.split("/");
	for (var i = 0; i < paths.length; i++) {
		var key1 = paths[i];
		var key2 = paths[i+1];
		
		if(key2==='one_minimalist'){
			key2 = defaultMinimalismModel.type;
		}
		else if(key2==='one' && key1==='mini'){
			key2 = "one_70";
		}
		
		var key = key1 + "." + key2 + "." + data_key;
		data = modelData[key];
		if ((data !== null) && (typeof(data) !== 'undefined')) {
			break;
		}
	}	
	return data;
}

/**
 * // CR01 2011 Online Store Integration
 * Returns online store price if available in basicPriceOnline.
 * deactivated for CR06. Aktivate here if needed again
 **/
function getOnlineStorePrice(data_key){
  if(false && typeof(basicPriceOnline) !== "undefined"){
    try{ // defensive
      if(basicPriceOnline[data_key] != null || typeof(basicPriceOnline[data_key]) != 'undefined'){
        return basicPriceOnline[data_key];
      }
    }catch(ex){console.log(ex)}
  }
  return null;
}
/**
 * // CR06 Dynamischer Link
 * function returns true if model has a price in stock
 * having a price is similar with being available in stock
 **/
function isModelAvailableInStock(data_key){
  if(typeof(basicPriceOnline) !== "undefined"){
    try{ // defensive
	  if (basicPriceOnline[data_key].length > 0){
		return true;
      }
    }catch(ex){
		// no log, it's false
		//console.log(ex)
	}
  }
  return false;
}

/**
 * This function is for Flash Integration
 *  returns the value of model data array 
 **/
function getModelDataValue_FlashIf(bodyType, modelType, data_key) {
  
  // CR01 2011 Online Store Integration
  var online_store_price = null;
  if(data_key == 'basic_price' || data_key == 'basic_price_num'){ 
    online_store_price = getOnlineStorePrice(bodyType  + "." + modelType + "." + data_key);
    if(online_store_price != null){
      return online_store_price;
    }
  }

  return modelData[bodyType  + "." + modelType + "." + data_key];
  
}
/**
 * This function is for Flash Integration
 * returns the bodytypes and models 
 */
function getModels_FlashIf() {
	return modelIdsByBodyTypeIds;
}

/**
 * Calculate the URL for a target system, depending on the link type, the current 
 * model code (see global variable modelCode) and chosen dealer information.
 * 
 * The target type can e.g. be derived from the WCMS quicklink element during
 * statification.
 * 
 * @param link -
 *            the anchor DOM element
 * @param type -
 *            the maintained type of link (tda|rfi|rfo|rfci|eric|vco|dealer|mco|none)
 * @return the new URL or the passed URL if dependend variables are not set
 */
function getTargetUrlByType(link, type) {
	if( link.href.indexOf('javascript:') == 0) {
		return link.href;
	}
	link.href = getTargetByType(link.href, type);
	return link.href;
}

/**
 * Calculate the URL for a target system, depending on the link type, the current 
 * model code (see global variable modelCode) and given dealer information.
 * 
 * The target type can e.g. be derived from the WCMS quicklink element during
 * statification.
 * 
 * @param url -
 *            a url passed as a String
 * @param type -
 *            the maintained type of link (tda|rfi|rfo|rfci|eric|vco|dealer|mco|none)
 * @return the new URL or the passed URL if dependend variables are not set
 */
function getTargetByType(url, type, pMiniSubsidiary, isIFrameComponentCall) {		
		modelCode = getModelCodeFromUrl();
		var bodyType = getBodyTypeFromUrl();
		
		//append breadcrumb and module navigation (only evaluated by contact and faq pages), do not append for faq and contact pages		
		if (!isContactPage && !isFaqPage) {
			url = appendCurrentBreadcrumb(url);
		}
		if(window['module_navigation'] !== undefined && module_navigation !== '' && !isContactPage){				
				url = addParam(url, 'mod_nav', module_navigation);
		}
		switch (type) {
		case "mos": // MINI Online Store 
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'vgcode', modelCode);
				url = addParam(url, 'agcode', modelCode);
				url = addParam(url, 'vgModelCode', modelCode);
			}	
			break;
		case "tda": //test drive appointment
			//url = appendCurrentBreadcrumb(url); //not yet specified for tda
			//url = appendBackLinkName(url); //don't use, not specified for tda
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'model', modelCode); //for eCOM and web form
			}				
			if (isIFrameComponentCall) { //tda embedded in ecom iframe			
				url = addParam(url, 'process', 'tda');
				if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {
					url = addEcomDealerParams(pMiniSubsidiary, url);
				}
				if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {				
					url = addParam(url, 'action', 'tda.selectConfiguration'); //eCOM
				}	
				var leadContext = $.cookie('LEADCONTEXT');
				if (leadContext !== null) {
					url = addParam(url, 'leadContext', leadContext);
				}			
			}
			else { //web form:			
				if ((bodyType !== null) && (typeof(bodyType) !== 'undefined')) {
					url = addParam(url, 'body_type', bodyType);
				}
			}
			break;
		case "eric"://used cars database
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'model', modelCode);
			}
			if ((topicCountry !== null) && (typeof(topicCountry) !== 'undefined')) {
				url = addParam(url, 'countryCode', topicCountry.toUpperCase());
			}
			if ((topicLanguage !== null) && (typeof(topicLanguage) !== 'undefined') && (topicCountry !== null) && (typeof(topicCountry) !== 'undefined')) {
				url = addParam(url, 'lang', topicCountry.toUpperCase() + '_' + topicLanguage);
			}
			if (window['businessPartnerNumber'] != undefined) {
				url = addParam(url, 'businessPartnerNumber', businessPartnerNumber);
			}
			url = addParam(url, 'domain', 'MI');
			url = addParam(url, 'make', 'MI');
			break;
		case "vco": // vehicle configurator
			url = appendCurrentBreadcrumb(url);
			if (isIFrameComponentCall) {
				//eCOM requires these params first
				url = addParam(url, 'process', 'vco');//eCOM
				url = addParam(url, '_service', 'vco'); //eCOM light
				var leadContext = $.cookie('LEADCONTEXT');
				if (leadContext !== null) {
					url = addParam(url, 'leadContext', leadContext);
				}			
			}
			else {
				url = appendBackLinkName(url);
			}
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {				
				url = addParam(url, 'action', 'vco.selectConfiguration'); //eCOM 
				url = addParam(url, 'model', modelCode); //eCOM 
				url = addParam(url, 'vgCode', modelCode);//eCOM light
				url = addParam(url, 'vgModelCode', modelCode);//MAR configurator
			}
			if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {
				url = addEcomDealerParams(pMiniSubsidiary, url);
			}			
								
			url = addParam(url, 'initTarget', 'vco.configurator');

			break;
		case "rfci": // request for contact information, eCOM light
			url = addParam(url, '_service', 'rfci');//eCOM light
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'vgCode', modelCode);//eCOM light
			}
			if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {				
				url = addParam(url, '_dealerID', pMiniSubsidiary.getGoldmineId());
			}
			break;
		case "rfo": // request for offer		
			if (isIFrameComponentCall) {
				url = addParam(url, 'process', 'rfo');//eCOM	
			}
			else {
				url = appendBackLinkName(url);
			}			
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'action', 'vco.selectConfiguration'); //eCOM 
				url = addParam(url, 'model', modelCode); //eCOM 
			}			
			if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {
				url = addEcomDealerParams(pMiniSubsidiary, url);
			}
			var leadContext = $.cookie('LEADCONTEXT');
			if (leadContext !== null) {
				url = addParam(url, 'leadContext', leadContext);
			}		
			url = addParam(url, 'initTarget', 'rfo.checkList');			
			break;
		case "rfi": //request for information
			//url = appendCurrentBreadcrumb(url); //not yet specified for rfi
			//url = appendBackLinkName(url); //don't use, not specified for rfi
			var infomaterial_id = getInfomaterialId();		
	
			if (isIFrameComponentCall) {
				url = addParam(url, 'process', 'rfi');//eCOM
				
				if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {
					url = addEcomDealerParams(pMiniSubsidiary, url);
				}
				
				var leadContext = $.cookie('LEADCONTEXT');
				if (leadContext !== null) {
					url = addParam(url, 'leadContext', leadContext);
				}				
				if (infomaterial_id !== null && (typeof(infomaterial_id) !== 'undefined')) {
					url = addParam(url, 'action', 'rfi.selectInformation'); //eCOM 
					url = addParam(url, "infos", infomaterial_id);
				}				
			}			
			else {
				if (infomaterial_id !== null && (typeof(infomaterial_id) !== 'undefined')) {
					url = addParam(url, "infomaterial_id", infomaterial_id);
				}
			}
			break;
		case "dealer": //redirects to dealer page if a dealer is selected
			// use global miniSubsidiary variable since the parameter ist not passed by the quicklinks
			if ((miniSubsidiary !== null) && (typeof(miniSubsidiary) !== 'undefined')) {
				if (miniSubsidiary.isSubsidiarySelected()) {
					url = miniSubsidiary.getUrl();
				}
			}
			break;
		case "mco": //model comparison
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'model_code_1', modelCode);
			}
			break;
	}
	//do nothing for "none"
	return url;
}

var page_parameters = null;
/** Returns the value of a GET request parameter or null if the parameter is not set */
function getRequestParameter(param_name) {
	if (page_parameters === null) {
		page_parameters = getPageUrlVars();
	}
	
	//iterate over array to reuse functionality provided by getPageUrlVars which cannot use associative arrays (eCOM)
	for (var i = 0; i < page_parameters.length; i++) {
		if (page_parameters[i][0] == param_name) {
			return page_parameters[i][1];
		}
	}
	return null;
}

/** Adds (mapped) dealer ids to a url which will later be passed to eCOM or eCOM light */
function addEcomDealerParams(pMiniSubsidiary, url) {
	var dealerId = pMiniSubsidiary.getDistributionPartnerId();
	var mappedDealerId = dealerId;
	var outletId = pMiniSubsidiary.getOutletId();
	mappedDealerId = mapDealerId(dealerId, outletId);	
	outletId = mapSubsidiaryId(dealerId, outletId);
	url = addParam(url, 'action', 'dlo.selectDistributionPartner');
	url = addParam(url, 'distributionPartnerNumber', mappedDealerId);
	url = addParam(url, 'outletId', outletId);
	url = addParam(url, '_dealerID', pMiniSubsidiary.getGoldmineId());
	return url;
}

function addParam(url, name, value) {
	return addParam(url, name, value, true);
}

/** 
 *  Adds a parameter (name and value) to a url (no escaping) 
 *  This method does not add already existing url params
 *  CheckLocation: If set, no params are set if they occur within the current window url!
 */
function addParam(url, name, value, check_location) {
	if (url == null) return null;

	var cur_href = window.location.href;
	
	if (name != "action") { 
		//normal case:
		//skip all params which have already been defined 
		if (url.indexOf(name + '=') != -1){
			return url;
		}
		
		if (check_location && cur_href.indexOf(name + '=') != -1){
			return url;
		}
	}
	else {
		//do not skip the param "action" as eCOM potentially uses this param multiple times
		//only filter duplicate values:
		if (url.indexOf(name + '=' + value) != -1){
			return url;
		}
		if (check_location && cur_href.indexOf(name + '=' + value) != -1){
			return url;
		}
	}
	
	var conn = '&';
	if (url.indexOf('?') == -1) {
		conn = '?';
	}
	return url + conn + name + '=' + value;
}

/** 
 * Links to a link anchor on the current page 
 * (Workaround as WCMS-Links do not allow for relative anchor links).
 * @param anchor Anchor tag with leading #, e.g. #top
 */
function thisPageAnchor(anchor) {
	var currentHref = self.location.href;
	location.href = currentHref.substr(0, currentHref.lastIndexOf("#")) + anchor;
}

/*
 * Logging for debug
 */
var debugOutput = true;
var debugCount = 0;
function logMsg(msg) {
	if(debugOutput ){
		console.log(msg);
		if($('#log').length == 0 ) {
			$('#body').append('<div style="position:absolute;bottom:10px;right:10px;border:1px solid red;color:#FFF;" id="log">Log [<a onclick="$(this).parent().find(\'p\').remove();" href="javascript:void(0);">Clear</a>]:</div>');
		}
		if($('#log').length > 0 ) 
			$('#log').append('<p>' + ++debugCount + ': ' + msg + '</p>');
	}
}

/**
 * Returns the IE version as a float number.
 * This is the recommended way to get the version 
 * (see MSDN article http://msdn.microsoft.com/en-us/library/ms537509%28VS.85%29.aspx)
 */
function getInternetExplorerVersion()
//Returns the version of Internet Explorer or a -1
//(indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) !== null)
 rv = parseFloat( RegExp.$1 );
}
return rv;
}

/** adds the current breadcrumb as url parameter to the given url*/
function appendCurrentBreadcrumb(url) {
	return addParam(url, "bcId", window.location.pathname);
}

/** 
 * returns the backLinkName which is based on the current module name (uses breadcrumb) 
 * returns an empty String if no Breadcrumb is defined on the current page
 */
function getBackLinkName() {
	return encodeURIComponent(escape($("#breadcrumb li:last a").text()));
}

/* appends the backLinkName to a given url */
function appendBackLinkName(url) {
	return addParam(url, "backLinkName", getBackLinkName());
}
//Save current window location
var winLoc = window.location.href;

/*
	This method jumps to the component with the given position
*/
function jumpToComponent(position){
	  window.location.href = winLoc + "#cp_" + position;
}
/*
    Sharing layer: test, which icons are displayed depending on browser
 */
function testShareSite(sharetype) {
	//render bookmark-icon only, if browser is IE
	if(sharetype == 'bookmark') {
		if(getInternetExplorerVersion() > 0){
			return true;
		}
		else{
			return false;
		}
	} else {
		return true;
	}
}

function getAbsoluteUrl( url ) {
	var abs = location.href;
	abs = abs.substring(0,abs.lastIndexOf("/")+1);
	return abs + url;
}
function getRealAbsoluteUrl( url ) {
	var abs = location.protocol + "//" + location.host;	
	return abs + url;
}

function getVIPURL(url) {
	return url;
}


/** Callback for Google JS-API lazy-load event */
      //|| miniSubsidiaryLayer.displayLayer()
function googleApiLoaded() {
  mini_smartsearch_loadSearchEngine(); //m_smart_search
  initMaps(); // m_dealer_layer
  if (typeof contactTeamInitialize == 'function' || typeof dealerInitialize == 'function' ) {
	google.load("maps", "3", {"other_params":"client=gme-bmw&sensor=false&channel=MINI_DLO", "callback" : googleMapsLoaded});    
  }
}

/** Callback for Google Maps load event */
function googleMapsLoaded() {	
  //loadExtinfoWindow();
	if(typeof contactTeamInitialize == 'function') {
		//available on contact and team page
		contactTeamInitialize();
	}
	else if(typeof dealerInitialize == 'function') {
		//available on select dealer page	
		dealerInitialize();
  }
}

/* Dummy function which will be replaced in the offline copy */
function loadStaticTeaser() {
}

/** Returns the domain name (i.e. mustermann.mini.com -> mini.com) */
function getDomain() {	
  var host = window.location.host;
  if (host.indexOf("mini.com.mx") > 0) { 
    return 'mini.com.mx';
  }
  else if (host.indexOf("mini.com.gr") > 0) { 
    return 'mini.com.gr';
  }
  else if (host.indexOf("mini.com") > 0) { 
    return 'mini.com';
  }
  else if (host.indexOf("mini.at") > 0) { 
    return 'mini.at';
  }
  else if (host.indexOf("mini.be") > 0) { 
    return 'mini.be';
  }
  else if (host.indexOf("mini.ca") > 0) { 
    return 'mini.ca';
  }
  else if (host.indexOf("mini.ch") > 0) { 
    return 'mini.ch';
  }
  else if (host.indexOf("mini.mx") > 0) { 
    return 'mini.mx';
  }
  else if (host.indexOf("mini.com.mx") > 0) { 
    return 'mini.com.mx';
  }
  else if (host.indexOf("mini.de") > 0) { 
    return 'mini.de';
  }
  else if (host.indexOf("mini.dk") > 0) { 
    return 'mini.dk';
  }
  else if (host.indexOf("mini.es") > 0) { 
    return 'mini.es';
  }
  else if (host.indexOf("mini.fi") > 0) { 
    return 'mini.fi';
  }
  else if (host.indexOf("mini.fr") > 0) { 
    return 'mini.fr';
  }
  else if (host.indexOf("mini.gr") > 0) { 
    return 'mini.gr';
  }
  else if (host.indexOf("mini.ie") > 0) { 
    return 'mini.ie';
  }
  else if (host.indexOf("mini.in") > 0) { 
    return 'mini.in';
  }
  else if (host.indexOf("mini.it") > 0) { 
    return 'mini.it';
  }
  else if (host.indexOf("mini.jp") > 0) { 
    return 'mini.jp';
  }
  else if (host.indexOf("mini.lu") > 0) { 
    return 'mini.lu';
  }
  else if (host.indexOf("mini.nl") > 0) { 
    return 'mini.nl';
  }
  else if (host.indexOf("mini.no") > 0) { 
    return 'mini.no';
  }
  else if (host.indexOf("mini.pt") > 0) { 
    return 'mini.pt';
  }
  else if (host.indexOf("mini.se") > 0) { 
    return 'mini.se';
  }
  else if (host.indexOf("minibrasil.com") > 0) { 
    return 'minibrasil.com';
  }
  else if (host.indexOf("new-mini.no") > 0) { 
    return 'new-mini.no';
  }
  else if (host.indexOf("bmwgroup.net") > 0) { 
    return 'bmwgroup.net';
  }
  else if (host.indexOf("bmw.de") > 0) { 
    return 'bmw.de';
  }
  else if (host.indexOf("bmwgroup.com") > 0) { 
    return 'bmwgroup.com';
  }
  else return host;
}


/** Enables Phase 2 functionality for master and localhost. Will return true later */
var phase2 = null;
function isPhase2() {
	if (phase2 === null) {
		phase2 = (winLoc.indexOf("http://localhost") === 0 || winLoc.indexOf("http://master-") === 0 || winLoc.indexOf ("/_master/") !== -1);
	}	
	return phase2;
}

function isPrintEnabled() {
	return ((typeof(print_visible) !== 'undefined') && print_visible) ;	
}

function isAudioControlEnabled() {
	return ((typeof(sound_visible) !== 'undefined') && sound_visible) ;		
}

/** triggers tell a friend */
function isTAFEnabled() {
	return isPhase2();		
}


function isNewsRatingEnabled() {
	return true;
}

function mapDealerId(distributionPartnerId, subsidiaryId) {
	if (typeof dealerMappingNL == 'function') {
		var mapping = dealerMappingNL();
		var dealerId = mapping[distributionPartnerId + "_" + subsidiaryId];
		if (dealerId !== null && (typeof(dealerId) !== 'undefined')) {
			return dealerId;
		}
	}
	return distributionPartnerId;
}

function mapSubsidiaryId(distributionPartnerId, subsidiaryId) {
	if (typeof subsidiaryMappingNL == 'function') {
		var mapping = subsidiaryMappingNL();
		var outletId = mapping[distributionPartnerId + "_" + subsidiaryId];
		if (outletId !== null && (typeof(outletId) !== 'undefined')) {
			return outletId;
		}		 
	}
	return subsidiaryId;
}

function getDeploymentType() {
	if (getStage() === "EDIT") return "EDIT";
	if (winLoc.indexOf("http://testwww") === 0 || winLoc.indexOf("http://master-qa") === 0) return "QA";
	return "PROD";
}

/** This function is supposed to help Content Editors in not setting the statify flag for embedded components */
function reportStatifyError() {
	if (getDeploymentType() === "PROD") {
		console.log("This page contains a component which is not correctly flagged as an embedded component. Skipping component identifcation.");
		return;
	}
	var duplicateString = "NEVER CHANGE THIS";
	var includeComment = "VIPINCLUDE:mini2010:";
	var html = document.getElementsByTagName("html")[0].innerHTML;
	var first = html.indexOf(duplicateString);
	var last = html.lastIndexOf(duplicateString);
	if (first === last) {
		console.log("Falsely generated statify error.");
		return;	
	}
	for (var i = 0; i < 3; i++) {
		last = html.indexOf(includeComment, last+1);
	}
	var firstSpace = html.indexOf(" ", last);
	var oid = html.substring(last + includeComment.length, firstSpace);
	alert("WARNING: Component OID " + oid + " is not correctly flagged as an embedded object.");
}	

}catch(e){console.log('Error in global: ' + e.description);}

// ---- swfobject ----
try{ /*!	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

var swfobject = function() {
	
	var UNDEF = "undefined",
		OBJECT = "object",
		SHOCKWAVE_FLASH = "Shockwave Flash",
		SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
		FLASH_MIME_TYPE = "application/x-shockwave-flash",
		EXPRESS_INSTALL_ID = "SWFObjectExprInst",
		ON_READY_STATE_CHANGE = "onreadystatechange",
		
		win = window,
		doc = document,
		nav = navigator,
		
		plugin = false,
		domLoadFnArr = [main],
		regObjArr = [],
		objIdArr = [],
		listenersArr = [],
		storedAltContent,
		storedAltContentId,
		storedCallbackFn,
		storedCallbackObj,
		isDomLoaded = false,
		isExpressInstallActive = false,
		dynamicStylesheet,
		dynamicStylesheetMedia,
		autoHideShow = true,
	
	/* Centralized function for browser feature detection
		- User agent string detection is only used when no good alternative is possible
		- Is executed directly for optimal performance
	*/	
	ua = function() {
		var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
			u = nav.userAgent.toLowerCase(),
			p = nav.platform.toLowerCase(),
			windows = p ? /win/.test(p) : /win/.test(u),
			mac = p ? /mac/.test(p) : /mac/.test(u),
			webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
			ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html
			playerVersion = [0,0,0],
			d = null;
		if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
			d = nav.plugins[SHOCKWAVE_FLASH].description;
			if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
				plugin = true;
				ie = false; // cascaded feature detection for Internet Explorer
				d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
				playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
				playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
			}
		}
		else if (typeof win.ActiveXObject != UNDEF) {
			try {
				var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
				if (a) { // a will return null when ActiveX is disabled
					d = a.GetVariable("$version");
					if (d) {
						ie = true; // cascaded feature detection for Internet Explorer
						d = d.split(" ")[1].split(",");
						playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
					}
				}
			}
			catch(e) {}
		}
		return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };
	}(),
	
	/* Cross-browser onDomLoad
		- Will fire an event as soon as the DOM of a web page is loaded
		- Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/
		- Regular onload serves as fallback
	*/ 
	onDomLoad = function() {
		if (!ua.w3) { return; }
		if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically 
			callDomLoadFunctions();
		}
		if (!isDomLoaded) {
			if (typeof doc.addEventListener != UNDEF) {
				doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
			}		
			if (ua.ie && ua.win) {
				doc.attachEvent(ON_READY_STATE_CHANGE, function() {
					if (doc.readyState == "complete") {
						doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);
						callDomLoadFunctions();
					}
				});
				if (win == top) { // if not inside an iframe
					(function(){
						if (isDomLoaded) { return; }
						try {
							doc.documentElement.doScroll("left");
						}
						catch(e) {
							setTimeout(arguments.callee, 0);
							return;
						}
						callDomLoadFunctions();
					})();
				}
			}
			if (ua.wk) {
				(function(){
					if (isDomLoaded) { return; }
					if (!/loaded|complete/.test(doc.readyState)) {
						setTimeout(arguments.callee, 0);
						return;
					}
					callDomLoadFunctions();
				})();
			}
			addLoadEvent(callDomLoadFunctions);
		}
	}();
	
	function callDomLoadFunctions() {
		if (isDomLoaded) { return; }
		try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early
			var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
			t.parentNode.removeChild(t);
		}
		catch (e) { return; }
		isDomLoaded = true;
		var dl = domLoadFnArr.length;
		for (var i = 0; i < dl; i++) {
			domLoadFnArr[i]();
		}
	}
	
	function addDomLoadEvent(fn) {
		if (isDomLoaded) {
			fn();
		}
		else { 
			domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
		}
	}
	
	/* Cross-browser onload
		- Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
		- Will fire an event as soon as a web page including all of its assets are loaded 
	 */
	function addLoadEvent(fn) {
		if (typeof win.addEventListener != UNDEF) {
			win.addEventListener("load", fn, false);
		}
		else if (typeof doc.addEventListener != UNDEF) {
			doc.addEventListener("load", fn, false);
		}
		else if (typeof win.attachEvent != UNDEF) {
			addListener(win, "onload", fn);
		}
		else if (typeof win.onload == "function") {
			var fnOld = win.onload;
			win.onload = function() {
				fnOld();
				fn();
			};
		}
		else {
			win.onload = fn;
		}
	}
	
	/* Main function
		- Will preferably execute onDomLoad, otherwise onload (as a fallback)
	*/
	function main() { 
		if (plugin) {
			testPlayerVersion();
		}
		else {
			matchVersions();
		}
	}
	
	/* Detect the Flash Player version for non-Internet Explorer browsers
		- Detecting the plug-in version via the object element is more precise than using the plugins collection item's description:
		  a. Both release and build numbers can be detected
		  b. Avoid wrong descriptions by corrupt installers provided by Adobe
		  c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports
		- Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available
	*/
	function testPlayerVersion() {
		var b = doc.getElementsByTagName("body")[0];
		var o = createElement(OBJECT);
		o.setAttribute("type", FLASH_MIME_TYPE);
		var t = b.appendChild(o);
		if (t) {
			var counter = 0;
			(function(){
				if (typeof t.GetVariable != UNDEF) {
					var d = t.GetVariable("$version");
					if (d) {
						d = d.split(" ")[1].split(",");
						ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
					}
				}
				else if (counter < 10) {
					counter++;
					setTimeout(arguments.callee, 10);
					return;
				}
				b.removeChild(o);
				t = null;
				matchVersions();
			})();
		}
		else {
			matchVersions();
		}
	}
	
	/* Perform Flash Player and SWF version matching; static publishing only
	*/
	function matchVersions() {
		var rl = regObjArr.length;
		if (rl > 0) {
			for (var i = 0; i < rl; i++) { // for each registered object element
				var id = regObjArr[i].id;
				var cb = regObjArr[i].callbackFn;
				var cbObj = {success:false, id:id};
				if (ua.pv[0] > 0) {
					var obj = getElementById(id);
					if (obj) {
						if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!
							setVisibility(id, true);
							if (cb) {
								cbObj.success = true;
								cbObj.ref = getObjectById(id);
								cb(cbObj);
							}
						}
						else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported
							var att = {};
							att.data = regObjArr[i].expressInstall;
							att.width = obj.getAttribute("width") || "0";
							att.height = obj.getAttribute("height") || "0";
							if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
							if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
							// parse HTML object param element's name-value pairs
							var par = {};
							var p = obj.getElementsByTagName("param");
							var pl = p.length;
							for (var j = 0; j < pl; j++) {
								if (p[j].getAttribute("name").toLowerCase() != "movie") {
									par[p[j].getAttribute("name")] = p[j].getAttribute("value");
								}
							}
							showExpressInstall(att, par, id, cb);
						}
						else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF
							displayAltContent(obj);
							if (cb) { cb(cbObj); }
						}
					}
				}
				else {	// if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content)
					setVisibility(id, true);
					if (cb) {
						var o = getObjectById(id); // test whether there is an HTML object element or not
						if (o && typeof o.SetVariable != UNDEF) { 
							cbObj.success = true;
							cbObj.ref = o;
						}
						cb(cbObj);
					}
				}
			}
		}
	}
	
	function getObjectById(objectIdStr) {
		var r = null;
		var o = getElementById(objectIdStr);
		if (o && o.nodeName == "OBJECT") {
			if (typeof o.SetVariable != UNDEF) {
				r = o;
			}
			else {
				var n = o.getElementsByTagName(OBJECT)[0];
				if (n) {
					r = n;
				}
			}
		}
		return r;
	}
	
	/* Requirements for Adobe Express Install
		- only one instance can be active at a time
		- fp 6.0.65 or higher
		- Win/Mac OS only
		- no Webkit engines older than version 312
	*/
	function canExpressInstall() {
		return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
	}
	
	/* Show the Adobe Express Install dialog
		- Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
	*/
	function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
		isExpressInstallActive = true;
		storedCallbackFn = callbackFn || null;
		storedCallbackObj = {success:false, id:replaceElemIdStr};
		var obj = getElementById(replaceElemIdStr);
		if (obj) {
			if (obj.nodeName == "OBJECT") { // static publishing
				storedAltContent = abstractAltContent(obj);
				storedAltContentId = null;
			}
			else { // dynamic publishing
				storedAltContent = obj;
				storedAltContentId = replaceElemIdStr;
			}
			att.id = EXPRESS_INSTALL_ID;
			if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; }
			if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; }
			doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
			var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
				fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
			if (typeof par.flashvars != UNDEF) {
				par.flashvars += "&" + fv;
			}
			else {
				par.flashvars = fv;
			}
			// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
			// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
			if (ua.ie && ua.win && obj.readyState != 4) {
				var newObj = createElement("div");
				replaceElemIdStr += "SWFObjectNew";
				newObj.setAttribute("id", replaceElemIdStr);
				obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf
				obj.style.display = "none";
				(function(){
					if (obj.readyState == 4) {
						obj.parentNode.removeChild(obj);
					}
					else {
						setTimeout(arguments.callee, 10);
					}
				})();
			}
			createSWF(att, par, replaceElemIdStr);
		}
	}
	
	/* Functions to abstract and display alternative content
	*/
	function displayAltContent(obj) {
		if (ua.ie && ua.win && obj.readyState != 4) {
			// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
			// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
			var el = createElement("div");
			obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content
			el.parentNode.replaceChild(abstractAltContent(obj), el);
			obj.style.display = "none";
			(function(){
				if (obj.readyState == 4) {
					obj.parentNode.removeChild(obj);
				}
				else {
					setTimeout(arguments.callee, 10);
				}
			})();
		}
		else {
			obj.parentNode.replaceChild(abstractAltContent(obj), obj);
		}
	} 

	function abstractAltContent(obj) {
		var ac = createElement("div");
		if (ua.win && ua.ie) {
			ac.innerHTML = obj.innerHTML;
		}
		else {
			var nestedObj = obj.getElementsByTagName(OBJECT)[0];
			if (nestedObj) {
				var c = nestedObj.childNodes;
				if (c) {
					var cl = c.length;
					for (var i = 0; i < cl; i++) {
						if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
							ac.appendChild(c[i].cloneNode(true));
						}
					}
				}
			}
		}
		return ac;
	}
	
	/* Cross-browser dynamic SWF creation
	*/
	function createSWF(attObj, parObj, id) {
		var r, el = getElementById(id);
		if (ua.wk && ua.wk < 312) { return r; }
		if (el) {
			if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
				attObj.id = id;
			}
			if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
				var att = "";
				for (var i in attObj) {
					if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
						if (i.toLowerCase() == "data") {
							parObj.movie = attObj[i];
						}
						else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
							att += ' class="' + attObj[i] + '"';
						}
						else if (i.toLowerCase() != "classid") {
							att += ' ' + i + '="' + attObj[i] + '"';
						}
					}
				}
				var par = "";
				for (var j in parObj) {
					if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
						par += '<param name="' + j + '" value="' + parObj[j] + '" />';
					}
				}
				el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
				objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
				r = getElementById(attObj.id);	
			}
			else { // well-behaving browsers
				var o = createElement(OBJECT);
				o.setAttribute("type", FLASH_MIME_TYPE);
				for (var m in attObj) {
					if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
						if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
							o.setAttribute("class", attObj[m]);
						}
						else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
							o.setAttribute(m, attObj[m]);
						}
					}
				}
				for (var n in parObj) {
					if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
						createObjParam(o, n, parObj[n]);
					}
				}
				el.parentNode.replaceChild(o, el);
				r = o;
			}
		}
		return r;
	}
	
	function createObjParam(el, pName, pValue) {
		var p = createElement("param");
		p.setAttribute("name", pName);	
		p.setAttribute("value", pValue);
		el.appendChild(p);
	}
	
	/* Cross-browser SWF removal
		- Especially needed to safely and completely remove a SWF in Internet Explorer
	*/
	function removeSWF(id) {
		var obj = getElementById(id);
		if (obj && obj.nodeName == "OBJECT") {
			if (ua.ie && ua.win) {
				obj.style.display = "none";
				(function(){
					if (obj.readyState == 4) {
						removeObjectInIE(id);
					}
					else {
						setTimeout(arguments.callee, 10);
					}
				})();
			}
			else {
				obj.parentNode.removeChild(obj);
			}
		}
	}
	
	function removeObjectInIE(id) {
		var obj = getElementById(id);
		if (obj) {
			for (var i in obj) {
				if (typeof obj[i] == "function") {
					obj[i] = null;
				}
			}
			obj.parentNode.removeChild(obj);
		}
	}
	
	/* Functions to optimize JavaScript compression
	*/
	function getElementById(id) {
		var el = null;
		try {
			el = doc.getElementById(id);
		}
		catch (e) {}
		return el;
	}
	
	function createElement(el) {
		return doc.createElement(el);
	}
	
	/* Updated attachEvent function for Internet Explorer
		- Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
	*/	
	function addListener(target, eventType, fn) {
		target.attachEvent(eventType, fn);
		listenersArr[listenersArr.length] = [target, eventType, fn];
	}
	
	/* Flash Player and SWF content version matching
	*/
	function hasPlayerVersion(rv) {
		var pv = ua.pv, v = rv.split(".");
		v[0] = parseInt(v[0], 10);
		v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
		v[2] = parseInt(v[2], 10) || 0;
		return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
	}
	
	/* Cross-browser dynamic CSS creation
		- Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
	*/	
	function createCSS(sel, decl, media, newStyle) {
		if (ua.ie && ua.mac) { return; }
		var h = doc.getElementsByTagName("head")[0];
		if (!h) { return; } // to also support badly authored HTML pages that lack a head element
		var m = (media && typeof media == "string") ? media : "screen";
		if (newStyle) {
			dynamicStylesheet = null;
			dynamicStylesheetMedia = null;
		}
		if (!dynamicStylesheet || dynamicStylesheetMedia != m) { 
			// create dynamic stylesheet + get a global reference to it
			var s = createElement("style");
			s.setAttribute("type", "text/css");
			s.setAttribute("media", m);
			dynamicStylesheet = h.appendChild(s);
			if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
				dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
			}
			dynamicStylesheetMedia = m;
		}
		// add style rule
		if (ua.ie && ua.win) {
			if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
				dynamicStylesheet.addRule(sel, decl);
			}
		}
		else {
			if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
				dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
			}
		}
	}
	
	function setVisibility(id, isVisible) {
		if (!autoHideShow) { return; }
		var v = isVisible ? "visible" : "hidden";
		if (isDomLoaded && getElementById(id)) {
			getElementById(id).style.visibility = v;
		}
		else {
			createCSS("#" + id, "visibility:" + v);
		}
	}

	/* Filter to avoid XSS attacks
	*/
	function urlEncodeIfNecessary(s) {
		var regex = /[\\\"<>\.;]/;
		var hasBadChars = regex.exec(s) != null;
		return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
	}
	
	/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
	*/
	var cleanup = function() {
		if (ua.ie && ua.win) {
			window.attachEvent("onunload", function() {
				// remove listeners to avoid memory leaks
				var ll = listenersArr.length;
				for (var i = 0; i < ll; i++) {
					listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
				}
				// cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
				var il = objIdArr.length;
				for (var j = 0; j < il; j++) {
					removeSWF(objIdArr[j]);
				}
				// cleanup library's main closures to avoid memory leaks
				for (var k in ua) {
					ua[k] = null;
				}
				ua = null;
				for (var l in swfobject) {
					swfobject[l] = null;
				}
				swfobject = null;
			});
		}
	}();
	
	return {
		/* Public API
			- Reference: http://code.google.com/p/swfobject/wiki/documentation
		*/ 
		registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
			if (ua.w3 && objectIdStr && swfVersionStr) {
				var regObj = {};
				regObj.id = objectIdStr;
				regObj.swfVersion = swfVersionStr;
				regObj.expressInstall = xiSwfUrlStr;
				regObj.callbackFn = callbackFn;
				regObjArr[regObjArr.length] = regObj;
				setVisibility(objectIdStr, false);
			}
			else if (callbackFn) {
				callbackFn({success:false, id:objectIdStr});
			}
		},
		
		getObjectById: function(objectIdStr) {
			if (ua.w3) {
				return getObjectById(objectIdStr);
			}
		},
		
		embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
			var callbackObj = {success:false, id:replaceElemIdStr};
			if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
				setVisibility(replaceElemIdStr, false);
				addDomLoadEvent(function() {
					widthStr += ""; // auto-convert to string
					heightStr += "";
					var att = {};
					if (attObj && typeof attObj === OBJECT) {
						for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
							att[i] = attObj[i];
						}
					}
					att.data = swfUrlStr;
					att.width = widthStr;
					att.height = heightStr;
					var par = {}; 
					if (parObj && typeof parObj === OBJECT) {
						for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
							par[j] = parObj[j];
						}
					}
					if (flashvarsObj && typeof flashvarsObj === OBJECT) {
						for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
							if (typeof par.flashvars != UNDEF) {
								par.flashvars += "&" + k + "=" + flashvarsObj[k];
							}
							else {
								par.flashvars = k + "=" + flashvarsObj[k];
							}
						}
					}
					if (hasPlayerVersion(swfVersionStr)) { // create SWF
						var obj = createSWF(att, par, replaceElemIdStr);
						if (att.id == replaceElemIdStr) {
							setVisibility(replaceElemIdStr, true);
						}
						callbackObj.success = true;
						callbackObj.ref = obj;
					}
					else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install
						att.data = xiSwfUrlStr;
						showExpressInstall(att, par, replaceElemIdStr, callbackFn);
						return;
					}
					else { // show alternative content
						setVisibility(replaceElemIdStr, true);
					}
					if (callbackFn) { callbackFn(callbackObj); }
				});
			}
			else if (callbackFn) { callbackFn(callbackObj);	}
		},
		
		switchOffAutoHideShow: function() {
			autoHideShow = false;
		},
		
		ua: ua,
		
		getFlashPlayerVersion: function() {
			return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
		},
		
		hasFlashPlayerVersion: hasPlayerVersion,
		
		createSWF: function(attObj, parObj, replaceElemIdStr) {
			if (ua.w3) {
				return createSWF(attObj, parObj, replaceElemIdStr);
			}
			else {
				return undefined;
			}
		},
		
		showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
			if (ua.w3 && canExpressInstall()) {
				showExpressInstall(att, par, replaceElemIdStr, callbackFn);
			}
		},
		
		removeSWF: function(objElemIdStr) {
			if (ua.w3) {
				removeSWF(objElemIdStr);
			}
		},
		
		createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
			if (ua.w3) {
				createCSS(selStr, declStr, mediaStr, newStyleBoolean);
			}
		},
		
		addDomLoadEvent: addDomLoadEvent,
		
		addLoadEvent: addLoadEvent,
		
		getQueryParamValue: function(param) {
			var q = doc.location.search || doc.location.hash;
			if (q) {
				if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
				if (param == null) {
					return urlEncodeIfNecessary(q);
				}
				var pairs = q.split("&");
				for (var i = 0; i < pairs.length; i++) {
					if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
						return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
					}
				}
			}
			return "";
		},
		
		// For internal usage only
		expressInstallCallback: function() {
			if (isExpressInstallActive) {
				var obj = getElementById(EXPRESS_INSTALL_ID);
				if (obj && storedAltContent) {
					obj.parentNode.replaceChild(storedAltContent, obj);
					if (storedAltContentId) {
						setVisibility(storedAltContentId, true);
						if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
					}
					if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
				}
				isExpressInstallActive = false;
			} 
		}
	};
}();

}catch(e){console.log('Error in swfobject: ' + e.description);}

// ---- jquery-1.3.2 ----
try{ /*!
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){

var 
	// Will speed up references to window, and allows munging its name.
	window = this,
	// Will speed up references to undefined, and allows munging its name.
	undefined,
	// Map over jQuery in case of overwrite
	_jQuery = window.jQuery,
	// Map over the $ in case of overwrite
	_$ = window.$,

	jQuery = window.jQuery = window.$ = function( selector, context ) {
		// The jQuery object is actually just the init constructor 'enhanced'
		return new jQuery.fn.init( selector, context );
	},

	// A simple way to check for HTML strings or ID strings
	// (both of which we optimize for)
	quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
	// Is it a simple selector
	isSimple = /^.[^:#\[\.,]*$/;

jQuery.fn = jQuery.prototype = {
	init: function( selector, context ) {
		// Make sure that a selection was provided
		selector = selector || document;

		// Handle $(DOMElement)
		if ( selector.nodeType ) {
			this[0] = selector;
			this.length = 1;
			this.context = selector;
			return this;
		}
		// Handle HTML strings
		if ( typeof selector === "string" ) {
			// Are we dealing with HTML string or an ID?
			var match = quickExpr.exec( selector );

			// Verify a match, and that no context was specified for #id
			if ( match && (match[1] || !context) ) {

				// HANDLE: $(html) -> $(array)
				if ( match[1] )
					selector = jQuery.clean( [ match[1] ], context );

				// HANDLE: $("#id")
				else {
					var elem = document.getElementById( match[3] );

					// Handle the case where IE and Opera return items
					// by name instead of ID
					if ( elem && elem.id != match[3] )
						return jQuery().find( selector );

					// Otherwise, we inject the element directly into the jQuery object
					var ret = jQuery( elem || [] );
					ret.context = document;
					ret.selector = selector;
					return ret;
				}

			// HANDLE: $(expr, [context])
			// (which is just equivalent to: $(content).find(expr)
			} else
				return jQuery( context ).find( selector );

		// HANDLE: $(function)
		// Shortcut for document ready
		} else if ( jQuery.isFunction( selector ) )
			return jQuery( document ).ready( selector );

		// Make sure that old selector state is passed along
		if ( selector.selector && selector.context ) {
			this.selector = selector.selector;
			this.context = selector.context;
		}

		return this.setArray(jQuery.isArray( selector ) ?
			selector :
			jQuery.makeArray(selector));
	},

	// Start with an empty selector
	selector: "",

	// The current version of jQuery being used
	jquery: "1.3.2",

	// The number of elements contained in the matched element set
	size: function() {
		return this.length;
	},

	// Get the Nth element in the matched element set OR
	// Get the whole matched element set as a clean array
	get: function( num ) {
		return num === undefined ?

			// Return a 'clean' array
			Array.prototype.slice.call( this ) :

			// Return just the object
			this[ num ];
	},

	// Take an array of elements and push it onto the stack
	// (returning the new matched element set)
	pushStack: function( elems, name, selector ) {
		// Build a new jQuery matched element set
		var ret = jQuery( elems );

		// Add the old object onto the stack (as a reference)
		ret.prevObject = this;

		ret.context = this.context;

		if ( name === "find" )
			ret.selector = this.selector + (this.selector ? " " : "") + selector;
		else if ( name )
			ret.selector = this.selector + "." + name + "(" + selector + ")";

		// Return the newly-formed element set
		return ret;
	},

	// Force the current matched set of elements to become
	// the specified array of elements (destroying the stack in the process)
	// You should use pushStack() in order to do this, but maintain the stack
	setArray: function( elems ) {
		// Resetting the length to 0, then using the native Array push
		// is a super-fast way to populate an object with array-like properties
		this.length = 0;
		Array.prototype.push.apply( this, elems );

		return this;
	},

	// Execute a callback for every element in the matched set.
	// (You can seed the arguments with an array of args, but this is
	// only used internally.)
	each: function( callback, args ) {
		return jQuery.each( this, callback, args );
	},

	// Determine the position of an element within
	// the matched set of elements
	index: function( elem ) {
		// Locate the position of the desired element
		return jQuery.inArray(
			// If it receives a jQuery object, the first element is used
			elem && elem.jquery ? elem[0] : elem
		, this );
	},

	attr: function( name, value, type ) {
		var options = name;

		// Look for the case where we're accessing a style value
		if ( typeof name === "string" )
			if ( value === undefined )
				return this[0] && jQuery[ type || "attr" ]( this[0], name );

			else {
				options = {};
				options[ name ] = value;
			}

		// Check to see if we're setting style values
		return this.each(function(i){
			// Set all the styles
			for ( name in options )
				jQuery.attr(
					type ?
						this.style :
						this,
					name, jQuery.prop( this, options[ name ], type, i, name )
				);
		});
	},

	css: function( key, value ) {
		// ignore negative width and height values
		if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
			value = undefined;
		return this.attr( key, value, "curCSS" );
	},

	text: function( text ) {
		if ( typeof text !== "object" && text != null )
			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );

		var ret = "";

		jQuery.each( text || this, function(){
			jQuery.each( this.childNodes, function(){
				if ( this.nodeType != 8 )
					ret += this.nodeType != 1 ?
						this.nodeValue :
						jQuery.fn.text( [ this ] );
			});
		});

		return ret;
	},

	wrapAll: function( html ) {
		if ( this[0] ) {
			// The elements to wrap the target around
			var wrap = jQuery( html, this[0].ownerDocument ).clone();

			if ( this[0].parentNode )
				wrap.insertBefore( this[0] );

			wrap.map(function(){
				var elem = this;

				while ( elem.firstChild )
					elem = elem.firstChild;

				return elem;
			}).append(this);
		}

		return this;
	},

	wrapInner: function( html ) {
		return this.each(function(){
			jQuery( this ).contents().wrapAll( html );
		});
	},

	wrap: function( html ) {
		return this.each(function(){
			jQuery( this ).wrapAll( html );
		});
	},

	append: function() {
		return this.domManip(arguments, true, function(elem){
			if (this.nodeType == 1)
				this.appendChild( elem );
		});
	},

	prepend: function() {
		return this.domManip(arguments, true, function(elem){
			if (this.nodeType == 1)
				this.insertBefore( elem, this.firstChild );
		});
	},

	before: function() {
		return this.domManip(arguments, false, function(elem){
			this.parentNode.insertBefore( elem, this );
		});
	},

	after: function() {
		return this.domManip(arguments, false, function(elem){
			this.parentNode.insertBefore( elem, this.nextSibling );
		});
	},

	end: function() {
		return this.prevObject || jQuery( [] );
	},

	// For internal use only.
	// Behaves like an Array's method, not like a jQuery method.
	push: [].push,
	sort: [].sort,
	splice: [].splice,

	find: function( selector ) {
		if ( this.length === 1 ) {
			var ret = this.pushStack( [], "find", selector );
			ret.length = 0;
			jQuery.find( selector, this[0], ret );
			return ret;
		} else {
			return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
				return jQuery.find( selector, elem );
			})), "find", selector );
		}
	},

	clone: function( events ) {
		// Do the clone
		var ret = this.map(function(){
			if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
				// IE copies events bound via attachEvent when
				// using cloneNode. Calling detachEvent on the
				// clone will also remove the events from the orignal
				// In order to get around this, we use innerHTML.
				// Unfortunately, this means some modifications to
				// attributes in IE that are actually only stored
				// as properties will not be copied (such as the
				// the name attribute on an input).
				var html = this.outerHTML;
				if ( !html ) {
					var div = this.ownerDocument.createElement("div");
					div.appendChild( this.cloneNode(true) );
					html = div.innerHTML;
				}

				return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
			} else
				return this.cloneNode(true);
		});

		// Copy the events from the original to the clone
		if ( events === true ) {
			var orig = this.find("*").andSelf(), i = 0;

			ret.find("*").andSelf().each(function(){
				if ( this.nodeName !== orig[i].nodeName )
					return;

				var events = jQuery.data( orig[i], "events" );

				for ( var type in events ) {
					for ( var handler in events[ type ] ) {
						jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
					}
				}

				i++;
			});
		}

		// Return the cloned set
		return ret;
	},

	filter: function( selector ) {
		return this.pushStack(
			jQuery.isFunction( selector ) &&
			jQuery.grep(this, function(elem, i){
				return selector.call( elem, i );
			}) ||

			jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
				return elem.nodeType === 1;
			}) ), "filter", selector );
	},

	closest: function( selector ) {
		var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
			closer = 0;

		return this.map(function(){
			var cur = this;
			while ( cur && cur.ownerDocument ) {
				if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
					jQuery.data(cur, "closest", closer);
					return cur;
				}
				cur = cur.parentNode;
				closer++;
			}
		});
	},

	not: function( selector ) {
		if ( typeof selector === "string" )
			// test special case where just one selector is passed in
			if ( isSimple.test( selector ) )
				return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
			else
				selector = jQuery.multiFilter( selector, this );

		var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
		return this.filter(function() {
			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
		});
	},

	add: function( selector ) {
		return this.pushStack( jQuery.unique( jQuery.merge(
			this.get(),
			typeof selector === "string" ?
				jQuery( selector ) :
				jQuery.makeArray( selector )
		)));
	},

	is: function( selector ) {
		return !!selector && jQuery.multiFilter( selector, this ).length > 0;
	},

	hasClass: function( selector ) {
		return !!selector && this.is( "." + selector );
	},

	val: function( value ) {
		if ( value === undefined ) {			
			var elem = this[0];

			if ( elem ) {
				if( jQuery.nodeName( elem, 'option' ) )
					return (elem.attributes.value || {}).specified ? elem.value : elem.text;
				
				// We need to handle select boxes special
				if ( jQuery.nodeName( elem, "select" ) ) {
					var index = elem.selectedIndex,
						values = [],
						options = elem.options,
						one = elem.type == "select-one";

					// Nothing was selected
					if ( index < 0 )
						return null;

					// Loop through all the selected options
					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
						var option = options[ i ];

						if ( option.selected ) {
							// Get the specifc value for the option
							value = jQuery(option).val();

							// We don't need an array for one selects
							if ( one )
								return value;

							// Multi-Selects return an array
							values.push( value );
						}
					}

					return values;				
				}

				// Everything else, we just grab the value
				return (elem.value || "").replace(/\r/g, "");

			}

			return undefined;
		}

		if ( typeof value === "number" )
			value += '';

		return this.each(function(){
			if ( this.nodeType != 1 )
				return;

			if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
				this.checked = (jQuery.inArray(this.value, value) >= 0 ||
					jQuery.inArray(this.name, value) >= 0);

			else if ( jQuery.nodeName( this, "select" ) ) {
				var values = jQuery.makeArray(value);

				jQuery( "option", this ).each(function(){
					this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
						jQuery.inArray( this.text, values ) >= 0);
				});

				if ( !values.length )
					this.selectedIndex = -1;

			} else
				this.value = value;
		});
	},

	html: function( value ) {
		return value === undefined ?
			(this[0] ?
				this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
				null) :
			this.empty().append( value );
	},

	replaceWith: function( value ) {
		return this.after( value ).remove();
	},

	eq: function( i ) {
		return this.slice( i, +i + 1 );
	},

	slice: function() {
		return this.pushStack( Array.prototype.slice.apply( this, arguments ),
			"slice", Array.prototype.slice.call(arguments).join(",") );
	},

	map: function( callback ) {
		return this.pushStack( jQuery.map(this, function(elem, i){
			return callback.call( elem, i, elem );
		}));
	},

	andSelf: function() {
		return this.add( this.prevObject );
	},

	domManip: function( args, table, callback ) {
		if ( this[0] ) {
			var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
				scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
				first = fragment.firstChild;

			if ( first )
				for ( var i = 0, l = this.length; i < l; i++ )
					callback.call( root(this[i], first), this.length > 1 || i > 0 ?
							fragment.cloneNode(true) : fragment );
		
			if ( scripts )
				jQuery.each( scripts, evalScript );
		}

		return this;
		
		function root( elem, cur ) {
			return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
				(elem.getElementsByTagName("tbody")[0] ||
				elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
				elem;
		}
	}
};

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;

function evalScript( i, elem ) {
	if ( elem.src )
		jQuery.ajax({
			url: elem.src,
			async: false,
			dataType: "script"
		});

	else
		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );

	if ( elem.parentNode )
		elem.parentNode.removeChild( elem );
}

function now(){
	return +new Date;
}

jQuery.extend = jQuery.fn.extend = function() {
	// copy reference to target object
	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

	// Handle a deep copy situation
	if ( typeof target === "boolean" ) {
		deep = target;
		target = arguments[1] || {};
		// skip the boolean and the target
		i = 2;
	}

	// Handle case when target is a string or something (possible in deep copy)
	if ( typeof target !== "object" && !jQuery.isFunction(target) )
		target = {};

	// extend jQuery itself if only one argument is passed
	if ( length == i ) {
		target = this;
		--i;
	}

	for ( ; i < length; i++ )
		// Only deal with non-null/undefined values
		if ( (options = arguments[ i ]) != null )
			// Extend the base object
			for ( var name in options ) {
				var src = target[ name ], copy = options[ name ];

				// Prevent never-ending loop
				if ( target === copy )
					continue;

				// Recurse if we're merging object values
				if ( deep && copy && typeof copy === "object" && !copy.nodeType )
					target[ name ] = jQuery.extend( deep, 
						// Never move original objects, clone them
						src || ( copy.length != null ? [ ] : { } )
					, copy );

				// Don't bring in undefined values
				else if ( copy !== undefined )
					target[ name ] = copy;

			}

	// Return the modified object
	return target;
};

// exclude the following css properties to add px
var	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
	// cache defaultView
	defaultView = document.defaultView || {},
	toString = Object.prototype.toString;

jQuery.extend({
	noConflict: function( deep ) {
		window.$ = _$;

		if ( deep )
			window.jQuery = _jQuery;

		return jQuery;
	},

	// See test/unit/core.js for details concerning isFunction.
	// Since version 1.3, DOM methods and functions like alert
	// aren't supported. They return false on IE (#2968).
	isFunction: function( obj ) {
		return toString.call(obj) === "[object Function]";
	},

	isArray: function( obj ) {
		return toString.call(obj) === "[object Array]";
	},

	// check if an element is in a (or is an) XML document
	isXMLDoc: function( elem ) {
		return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
			!!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
	},

	// Evalulates a script in a global context
	globalEval: function( data ) {
		if ( data && /\S/.test(data) ) {
			// Inspired by code by Andrea Giammarchi
			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
			var head = document.getElementsByTagName("head")[0] || document.documentElement,
				script = document.createElement("script");

			script.type = "text/javascript";
			if ( jQuery.support.scriptEval )
				script.appendChild( document.createTextNode( data ) );
			else
				script.text = data;

			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
			// This arises when a base node is used (#2709).
			head.insertBefore( script, head.firstChild );
			head.removeChild( script );
		}
	},

	nodeName: function( elem, name ) {
		return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
	},

	// args is for internal usage only
	each: function( object, callback, args ) {
		var name, i = 0, length = object.length;

		if ( args ) {
			if ( length === undefined ) {
				for ( name in object )
					if ( callback.apply( object[ name ], args ) === false )
						break;
			} else
				for ( ; i < length; )
					if ( callback.apply( object[ i++ ], args ) === false )
						break;

		// A special, fast, case for the most common use of each
		} else {
			if ( length === undefined ) {
				for ( name in object )
					if ( callback.call( object[ name ], name, object[ name ] ) === false )
						break;
			} else
				for ( var value = object[0];
					i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
		}

		return object;
	},

	prop: function( elem, value, type, i, name ) {
		// Handle executable functions
		if ( jQuery.isFunction( value ) )
			value = value.call( elem, i );

		// Handle passing in a number to a CSS property
		return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
			value + "px" :
			value;
	},

	className: {
		// internal only, use addClass("class")
		add: function( elem, classNames ) {
			jQuery.each((classNames || "").split(/\s+/), function(i, className){
				if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
					elem.className += (elem.className ? " " : "") + className;
			});
		},

		// internal only, use removeClass("class")
		remove: function( elem, classNames ) {
			if (elem.nodeType == 1)
				elem.className = classNames !== undefined ?
					jQuery.grep(elem.className.split(/\s+/), function(className){
						return !jQuery.className.has( classNames, className );
					}).join(" ") :
					"";
		},

		// internal only, use hasClass("class")
		has: function( elem, className ) {
			return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
		}
	},

	// A method for quickly swapping in/out CSS properties to get correct calculations
	swap: function( elem, options, callback ) {
		var old = {};
		// Remember the old values, and insert the new ones
		for ( var name in options ) {
			old[ name ] = elem.style[ name ];
			elem.style[ name ] = options[ name ];
		}

		callback.call( elem );

		// Revert the old values
		for ( var name in options )
			elem.style[ name ] = old[ name ];
	},

	css: function( elem, name, force, extra ) {
		if ( name == "width" || name == "height" ) {
			var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];

			function getWH() {
				val = name == "width" ? elem.offsetWidth : elem.offsetHeight;

				if ( extra === "border" )
					return;

				jQuery.each( which, function() {
					if ( !extra )
						val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
					if ( extra === "margin" )
						val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
					else
						val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
				});
			}

			if ( elem.offsetWidth !== 0 )
				getWH();
			else
				jQuery.swap( elem, props, getWH );

			return Math.max(0, Math.round(val));
		}

		return jQuery.curCSS( elem, name, force );
	},

	curCSS: function( elem, name, force ) {
		var ret, style = elem.style;

		// We need to handle opacity special in IE
		if ( name == "opacity" && !jQuery.support.opacity ) {
			ret = jQuery.attr( style, "opacity" );

			return ret == "" ?
				"1" :
				ret;
		}

		// Make sure we're using the right name for getting the float value
		if ( name.match( /float/i ) )
			name = styleFloat;

		if ( !force && style && style[ name ] )
			ret = style[ name ];

		else if ( defaultView.getComputedStyle ) {

			// Only "float" is needed here
			if ( name.match( /float/i ) )
				name = "float";

			name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();

			var computedStyle = defaultView.getComputedStyle( elem, null );

			if ( computedStyle )
				ret = computedStyle.getPropertyValue( name );

			// We should always get a number back from opacity
			if ( name == "opacity" && ret == "" )
				ret = "1";

		} else if ( elem.currentStyle ) {
			var camelCase = name.replace(/\-(\w)/g, function(all, letter){
				return letter.toUpperCase();
			});

			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];

			// From the awesome hack by Dean Edwards
			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291

			// If we're not dealing with a regular pixel number
			// but a number that has a weird ending, we need to convert it to pixels
			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
				// Remember the original values
				var left = style.left, rsLeft = elem.runtimeStyle.left;

				// Put in the new values to get a computed value out
				elem.runtimeStyle.left = elem.currentStyle.left;
				style.left = ret || 0;
				ret = style.pixelLeft + "px";

				// Revert the changed values
				style.left = left;
				elem.runtimeStyle.left = rsLeft;
			}
		}

		return ret;
	},

	clean: function( elems, context, fragment ) {
		context = context || document;

		// !context.createElement fails in IE with an error but returns typeof 'object'
		if ( typeof context.createElement === "undefined" )
			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;

		// If a single string is passed in and it's a single tag
		// just do a createElement and skip the rest
		if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
			var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
			if ( match )
				return [ context.createElement( match[1] ) ];
		}

		var ret = [], scripts = [], div = context.createElement("div");

		jQuery.each(elems, function(i, elem){
			if ( typeof elem === "number" )
				elem += '';

			if ( !elem )
				return;

			// Convert html string into DOM nodes
			if ( typeof elem === "string" ) {
				// Fix "XHTML"-style tags in all browsers
				elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
					return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
						all :
						front + "></" + tag + ">";
				});

				// Trim whitespace, otherwise indexOf won't work as expected
				var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();

				var wrap =
					// option or optgroup
					!tags.indexOf("<opt") &&
					[ 1, "<select multiple='multiple'>", "</select>" ] ||

					!tags.indexOf("<leg") &&
					[ 1, "<fieldset>", "</fieldset>" ] ||

					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
					[ 1, "<table>", "</table>" ] ||

					!tags.indexOf("<tr") &&
					[ 2, "<table><tbody>", "</tbody></table>" ] ||

				 	// <thead> matched above
					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&
					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||

					!tags.indexOf("<col") &&
					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||

					// IE can't serialize <link> and <script> tags normally
					!jQuery.support.htmlSerialize &&
					[ 1, "div<div>", "</div>" ] ||

					[ 0, "", "" ];

				// Go to html and back, then peel off extra wrappers
				div.innerHTML = wrap[1] + elem + wrap[2];

				// Move to the right depth
				while ( wrap[0]-- )
					div = div.lastChild;

				// Remove IE's autoinserted <tbody> from table fragments
				if ( !jQuery.support.tbody ) {

					// String was a <table>, *may* have spurious <tbody>
					var hasBody = /<tbody/i.test(elem),
						tbody = !tags.indexOf("<table") && !hasBody ?
							div.firstChild && div.firstChild.childNodes :

						// String was a bare <thead> or <tfoot>
						wrap[1] == "<table>" && !hasBody ?
							div.childNodes :
							[];

					for ( var j = tbody.length - 1; j >= 0 ; --j )
						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
							tbody[ j ].parentNode.removeChild( tbody[ j ] );

					}

				// IE completely kills leading whitespace when innerHTML is used
				if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
					div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
				
				elem = jQuery.makeArray( div.childNodes );
			}

			if ( elem.nodeType )
				ret.push( elem );
			else
				ret = jQuery.merge( ret, elem );

		});

		if ( fragment ) {
			for ( var i = 0; ret[i]; i++ ) {
				if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
				} else {
					if ( ret[i].nodeType === 1 )
						ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
					fragment.appendChild( ret[i] );
				}
			}
			
			return scripts;
		}

		return ret;
	},

	attr: function( elem, name, value ) {
		// don't set attributes on text and comment nodes
		if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
			return undefined;

		var notxml = !jQuery.isXMLDoc( elem ),
			// Whether we are setting (or getting)
			set = value !== undefined;

		// Try to normalize/fix the name
		name = notxml && jQuery.props[ name ] || name;

		// Only do all the following if this is a node (faster for style)
		// IE elem.getAttribute passes even for style
		if ( elem.tagName ) {

			// These attributes require special treatment
			var special = /href|src|style/.test( name );

			// Safari mis-reports the default selected property of a hidden option
			// Accessing the parent's selectedIndex property fixes it
			if ( name == "selected" && elem.parentNode )
				elem.parentNode.selectedIndex;

			// If applicable, access the attribute via the DOM 0 way
			if ( name in elem && notxml && !special ) {
				if ( set ){
					// We can't allow the type property to be changed (since it causes problems in IE)
					if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
						throw "type property can't be changed";

					elem[ name ] = value;
				}

				// browsers index elements by id/name on forms, give priority to attributes.
				if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
					return elem.getAttributeNode( name ).nodeValue;

				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
				if ( name == "tabIndex" ) {
					var attributeNode = elem.getAttributeNode( "tabIndex" );
					return attributeNode && attributeNode.specified
						? attributeNode.value
						: elem.nodeName.match(/(button|input|object|select|textarea)/i)
							? 0
							: elem.nodeName.match(/^(a|area)$/i) && elem.href
								? 0
								: undefined;
				}

				return elem[ name ];
			}

			if ( !jQuery.support.style && notxml &&  name == "style" )
				return jQuery.attr( elem.style, "cssText", value );

			if ( set )
				// convert the value to a string (all browsers do this but IE) see #1070
				elem.setAttribute( name, "" + value );

			var attr = !jQuery.support.hrefNormalized && notxml && special
					// Some attributes require a special call on IE
					? elem.getAttribute( name, 2 )
					: elem.getAttribute( name );

			// Non-existent attributes return null, we normalize to undefined
			return attr === null ? undefined : attr;
		}

		// elem is actually elem.style ... set the style

		// IE uses filters for opacity
		if ( !jQuery.support.opacity && name == "opacity" ) {
			if ( set ) {
				// IE has trouble with opacity if it does not have layout
				// Force it by setting the zoom level
				elem.zoom = 1;

				// Set the alpha filter to set the opacity
				elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
					(parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
			}

			return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
				(parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
				"";
		}

		name = name.replace(/-([a-z])/ig, function(all, letter){
			return letter.toUpperCase();
		});

		if ( set )
			elem[ name ] = value;

		return elem[ name ];
	},

	trim: function( text ) {
		return (text || "").replace( /^\s+|\s+$/g, "" );
	},

	makeArray: function( array ) {
		var ret = [];

		if( array != null ){
			var i = array.length;
			// The window, strings (and functions) also have 'length'
			if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
				ret[0] = array;
			else
				while( i )
					ret[--i] = array[i];
		}

		return ret;
	},

	inArray: function( elem, array ) {
		for ( var i = 0, length = array.length; i < length; i++ )
		// Use === because on IE, window == document
			if ( array[ i ] === elem )
				return i;

		return -1;
	},

	merge: function( first, second ) {
		// We have to loop this way because IE & Opera overwrite the length
		// expando of getElementsByTagName
		var i = 0, elem, pos = first.length;
		// Also, we need to make sure that the correct elements are being returned
		// (IE returns comment nodes in a '*' query)
		if ( !jQuery.support.getAll ) {
			while ( (elem = second[ i++ ]) != null )
				if ( elem.nodeType != 8 )
					first[ pos++ ] = elem;

		} else
			while ( (elem = second[ i++ ]) != null )
				first[ pos++ ] = elem;

		return first;
	},

	unique: function( array ) {
		var ret = [], done = {};

		try {

			for ( var i = 0, length = array.length; i < length; i++ ) {
				var id = jQuery.data( array[ i ] );

				if ( !done[ id ] ) {
					done[ id ] = true;
					ret.push( array[ i ] );
				}
			}

		} catch( e ) {
			ret = array;
		}

		return ret;
	},

	grep: function( elems, callback, inv ) {
		var ret = [];

		// Go through the array, only saving the items
		// that pass the validator function
		for ( var i = 0, length = elems.length; i < length; i++ )
			if ( !inv != !callback( elems[ i ], i ) )
				ret.push( elems[ i ] );

		return ret;
	},

	map: function( elems, callback ) {
		var ret = [];

		// Go through the array, translating each of the items to their
		// new value (or values).
		for ( var i = 0, length = elems.length; i < length; i++ ) {
			var value = callback( elems[ i ], i );

			if ( value != null )
				ret[ ret.length ] = value;
		}

		return ret.concat.apply( [], ret );
	}
});

// Use of jQuery.browser is deprecated.
// It's included for backwards compatibility and plugins,
// although they should work to migrate away.

var userAgent = navigator.userAgent.toLowerCase();

// Figure out what browser is being used
jQuery.browser = {
	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
	safari: /webkit/.test( userAgent ),
	opera: /opera/.test( userAgent ),
	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
};

jQuery.each({
	parent: function(elem){return elem.parentNode;},
	parents: function(elem){return jQuery.dir(elem,"parentNode");},
	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
	siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
	children: function(elem){return jQuery.sibling(elem.firstChild);},
	contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
}, function(name, fn){
	jQuery.fn[ name ] = function( selector ) {
		var ret = jQuery.map( this, fn );

		if ( selector && typeof selector == "string" )
			ret = jQuery.multiFilter( selector, ret );

		return this.pushStack( jQuery.unique( ret ), name, selector );
	};
});

jQuery.each({
	appendTo: "append",
	prependTo: "prepend",
	insertBefore: "before",
	insertAfter: "after",
	replaceAll: "replaceWith"
}, function(name, original){
	jQuery.fn[ name ] = function( selector ) {
		var ret = [], insert = jQuery( selector );

		for ( var i = 0, l = insert.length; i < l; i++ ) {
			var elems = (i > 0 ? this.clone(true) : this).get();
			jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
			ret = ret.concat( elems );
		}

		return this.pushStack( ret, name, selector );
	};
});

jQuery.each({
	removeAttr: function( name ) {
		jQuery.attr( this, name, "" );
		if (this.nodeType == 1)
			this.removeAttribute( name );
	},

	addClass: function( classNames ) {
		jQuery.className.add( this, classNames );
	},

	removeClass: function( classNames ) {
		jQuery.className.remove( this, classNames );
	},

	toggleClass: function( classNames, state ) {
		if( typeof state !== "boolean" )
			state = !jQuery.className.has( this, classNames );
		jQuery.className[ state ? "add" : "remove" ]( this, classNames );
	},

	remove: function( selector ) {
		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
			// Prevent memory leaks
			jQuery( "*", this ).add([this]).each(function(){
				jQuery.event.remove(this);
				jQuery.removeData(this);
			});
			if (this.parentNode)
				this.parentNode.removeChild( this );
		}
	},

	empty: function() {
		// Remove element nodes and prevent memory leaks
		jQuery(this).children().remove();

		// Remove any remaining nodes
		while ( this.firstChild )
			this.removeChild( this.firstChild );
	}
}, function(name, fn){
	jQuery.fn[ name ] = function(){
		return this.each( fn, arguments );
	};
});

// Helper function used by the dimensions and offset modules
function num(elem, prop) {
	return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
}
var expando = "jQuery" + now(), uuid = 0, windowData = {};

jQuery.extend({
	cache: {},

	data: function( elem, name, data ) {
		elem = elem == window ?
			windowData :
			elem;

		var id = elem[ expando ];

		// Compute a unique ID for the element
		if ( !id )
			id = elem[ expando ] = ++uuid;

		// Only generate the data cache if we're
		// trying to access or manipulate it
		if ( name && !jQuery.cache[ id ] )
			jQuery.cache[ id ] = {};

		// Prevent overriding the named cache with undefined values
		if ( data !== undefined )
			jQuery.cache[ id ][ name ] = data;

		// Return the named cache data, or the ID for the element
		return name ?
			jQuery.cache[ id ][ name ] :
			id;
	},

	removeData: function( elem, name ) {
		elem = elem == window ?
			windowData :
			elem;

		var id = elem[ expando ];

		// If we want to remove a specific section of the element's data
		if ( name ) {
			if ( jQuery.cache[ id ] ) {
				// Remove the section of cache data
				delete jQuery.cache[ id ][ name ];

				// If we've removed all the data, remove the element's cache
				name = "";

				for ( name in jQuery.cache[ id ] )
					break;

				if ( !name )
					jQuery.removeData( elem );
			}

		// Otherwise, we want to remove all of the element's data
		} else {
			// Clean up the element expando
			try {
				delete elem[ expando ];
			} catch(e){
				// IE has trouble directly removing the expando
				// but it's ok with using removeAttribute
				if ( elem.removeAttribute )
					elem.removeAttribute( expando );
			}

			// Completely remove the data cache
			delete jQuery.cache[ id ];
		}
	},
	queue: function( elem, type, data ) {
		if ( elem ){
	
			type = (type || "fx") + "queue";
	
			var q = jQuery.data( elem, type );
	
			if ( !q || jQuery.isArray(data) )
				q = jQuery.data( elem, type, jQuery.makeArray(data) );
			else if( data )
				q.push( data );
	
		}
		return q;
	},

	dequeue: function( elem, type ){
		var queue = jQuery.queue( elem, type ),
			fn = queue.shift();
		
		if( !type || type === "fx" )
			fn = queue[0];
			
		if( fn !== undefined )
			fn.call(elem);
	}
});

jQuery.fn.extend({
	data: function( key, value ){
		var parts = key.split(".");
		parts[1] = parts[1] ? "." + parts[1] : "";

		if ( value === undefined ) {
			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);

			if ( data === undefined && this.length )
				data = jQuery.data( this[0], key );

			return data === undefined && parts[1] ?
				this.data( parts[0] ) :
				data;
		} else
			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
				jQuery.data( this, key, value );
			});
	},

	removeData: function( key ){
		return this.each(function(){
			jQuery.removeData( this, key );
		});
	},
	queue: function(type, data){
		if ( typeof type !== "string" ) {
			data = type;
			type = "fx";
		}

		if ( data === undefined )
			return jQuery.queue( this[0], type );

		return this.each(function(){
			var queue = jQuery.queue( this, type, data );
			
			 if( type == "fx" && queue.length == 1 )
				queue[0].call(this);
		});
	},
	dequeue: function(type){
		return this.each(function(){
			jQuery.dequeue( this, type );
		});
	}
});/*!
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){

var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
	done = 0,
	toString = Object.prototype.toString;

var Sizzle = function(selector, context, results, seed) {
	results = results || [];
	context = context || document;

	if ( context.nodeType !== 1 && context.nodeType !== 9 )
		return [];
	
	if ( !selector || typeof selector !== "string" ) {
		return results;
	}

	var parts = [], m, set, checkSet, check, mode, extra, prune = true;
	
	// Reset the position of the chunker regexp (start from head)
	chunker.lastIndex = 0;
	
	while ( (m = chunker.exec(selector)) !== null ) {
		parts.push( m[1] );
		
		if ( m[2] ) {
			extra = RegExp.rightContext;
			break;
		}
	}

	if ( parts.length > 1 && origPOS.exec( selector ) ) {
		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
			set = posProcess( parts[0] + parts[1], context );
		} else {
			set = Expr.relative[ parts[0] ] ?
				[ context ] :
				Sizzle( parts.shift(), context );

			while ( parts.length ) {
				selector = parts.shift();

				if ( Expr.relative[ selector ] )
					selector += parts.shift();

				set = posProcess( selector, set );
			}
		}
	} else {
		var ret = seed ?
			{ expr: parts.pop(), set: makeArray(seed) } :
			Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
		set = Sizzle.filter( ret.expr, ret.set );

		if ( parts.length > 0 ) {
			checkSet = makeArray(set);
		} else {
			prune = false;
		}

		while ( parts.length ) {
			var cur = parts.pop(), pop = cur;

			if ( !Expr.relative[ cur ] ) {
				cur = "";
			} else {
				pop = parts.pop();
			}

			if ( pop == null ) {
				pop = context;
			}

			Expr.relative[ cur ]( checkSet, pop, isXML(context) );
		}
	}

	if ( !checkSet ) {
		checkSet = set;
	}

	if ( !checkSet ) {
		throw "Syntax error, unrecognized expression: " + (cur || selector);
	}

	if ( toString.call(checkSet) === "[object Array]" ) {
		if ( !prune ) {
			results.push.apply( results, checkSet );
		} else if ( context.nodeType === 1 ) {
			for ( var i = 0; checkSet[i] != null; i++ ) {
				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
					results.push( set[i] );
				}
			}
		} else {
			for ( var i = 0; checkSet[i] != null; i++ ) {
				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
					results.push( set[i] );
				}
			}
		}
	} else {
		makeArray( checkSet, results );
	}

	if ( extra ) {
		Sizzle( extra, context, results, seed );

		if ( sortOrder ) {
			hasDuplicate = false;
			results.sort(sortOrder);

			if ( hasDuplicate ) {
				for ( var i = 1; i < results.length; i++ ) {
					if ( results[i] === results[i-1] ) {
						results.splice(i--, 1);
					}
				}
			}
		}
	}

	return results;
};

Sizzle.matches = function(expr, set){
	return Sizzle(expr, null, null, set);
};

Sizzle.find = function(expr, context, isXML){
	var set, match;

	if ( !expr ) {
		return [];
	}

	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
		var type = Expr.order[i], match;
		
		if ( (match = Expr.match[ type ].exec( expr )) ) {
			var left = RegExp.leftContext;

			if ( left.substr( left.length - 1 ) !== "\\" ) {
				match[1] = (match[1] || "").replace(/\\/g, "");
				set = Expr.find[ type ]( match, context, isXML );
				if ( set != null ) {
					expr = expr.replace( Expr.match[ type ], "" );
					break;
				}
			}
		}
	}

	if ( !set ) {
		set = context.getElementsByTagName("*");
	}

	return {set: set, expr: expr};
};

Sizzle.filter = function(expr, set, inplace, not){
	var old = expr, result = [], curLoop = set, match, anyFound,
		isXMLFilter = set && set[0] && isXML(set[0]);

	while ( expr && set.length ) {
		for ( var type in Expr.filter ) {
			if ( (match = Expr.match[ type ].exec( expr )) != null ) {
				var filter = Expr.filter[ type ], found, item;
				anyFound = false;

				if ( curLoop == result ) {
					result = [];
				}

				if ( Expr.preFilter[ type ] ) {
					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );

					if ( !match ) {
						anyFound = found = true;
					} else if ( match === true ) {
						continue;
					}
				}

				if ( match ) {
					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
						if ( item ) {
							found = filter( item, match, i, curLoop );
							var pass = not ^ !!found;

							if ( inplace && found != null ) {
								if ( pass ) {
									anyFound = true;
								} else {
									curLoop[i] = false;
								}
							} else if ( pass ) {
								result.push( item );
								anyFound = true;
							}
						}
					}
				}

				if ( found !== undefined ) {
					if ( !inplace ) {
						curLoop = result;
					}

					expr = expr.replace( Expr.match[ type ], "" );

					if ( !anyFound ) {
						return [];
					}

					break;
				}
			}
		}

		// Improper expression
		if ( expr == old ) {
			if ( anyFound == null ) {
				throw "Syntax error, unrecognized expression: " + expr;
			} else {
				break;
			}
		}

		old = expr;
	}

	return curLoop;
};

var Expr = Sizzle.selectors = {
	order: [ "ID", "NAME", "TAG" ],
	match: {
		ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
		CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
		TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
		PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
	},
	attrMap: {
		"class": "className",
		"for": "htmlFor"
	},
	attrHandle: {
		href: function(elem){
			return elem.getAttribute("href");
		}
	},
	relative: {
		"+": function(checkSet, part, isXML){
			var isPartStr = typeof part === "string",
				isTag = isPartStr && !/\W/.test(part),
				isPartStrNotTag = isPartStr && !isTag;

			if ( isTag && !isXML ) {
				part = part.toUpperCase();
			}

			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
				if ( (elem = checkSet[i]) ) {
					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}

					checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
						elem || false :
						elem === part;
				}
			}

			if ( isPartStrNotTag ) {
				Sizzle.filter( part, checkSet, true );
			}
		},
		">": function(checkSet, part, isXML){
			var isPartStr = typeof part === "string";

			if ( isPartStr && !/\W/.test(part) ) {
				part = isXML ? part : part.toUpperCase();

				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
					var elem = checkSet[i];
					if ( elem ) {
						var parent = elem.parentNode;
						checkSet[i] = parent.nodeName === part ? parent : false;
					}
				}
			} else {
				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
					var elem = checkSet[i];
					if ( elem ) {
						checkSet[i] = isPartStr ?
							elem.parentNode :
							elem.parentNode === part;
					}
				}

				if ( isPartStr ) {
					Sizzle.filter( part, checkSet, true );
				}
			}
		},
		"": function(checkSet, part, isXML){
			var doneName = done++, checkFn = dirCheck;

			if ( !part.match(/\W/) ) {
				var nodeCheck = part = isXML ? part : part.toUpperCase();
				checkFn = dirNodeCheck;
			}

			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
		},
		"~": function(checkSet, part, isXML){
			var doneName = done++, checkFn = dirCheck;

			if ( typeof part === "string" && !part.match(/\W/) ) {
				var nodeCheck = part = isXML ? part : part.toUpperCase();
				checkFn = dirNodeCheck;
			}

			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
		}
	},
	find: {
		ID: function(match, context, isXML){
			if ( typeof context.getElementById !== "undefined" && !isXML ) {
				var m = context.getElementById(match[1]);
				return m ? [m] : [];
			}
		},
		NAME: function(match, context, isXML){
			if ( typeof context.getElementsByName !== "undefined" ) {
				var ret = [], results = context.getElementsByName(match[1]);

				for ( var i = 0, l = results.length; i < l; i++ ) {
					if ( results[i].getAttribute("name") === match[1] ) {
						ret.push( results[i] );
					}
				}

				return ret.length === 0 ? null : ret;
			}
		},
		TAG: function(match, context){
			return context.getElementsByTagName(match[1]);
		}
	},
	preFilter: {
		CLASS: function(match, curLoop, inplace, result, not, isXML){
			match = " " + match[1].replace(/\\/g, "") + " ";

			if ( isXML ) {
				return match;
			}

			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
				if ( elem ) {
					if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
						if ( !inplace )
							result.push( elem );
					} else if ( inplace ) {
						curLoop[i] = false;
					}
				}
			}

			return false;
		},
		ID: function(match){
			return match[1].replace(/\\/g, "");
		},
		TAG: function(match, curLoop){
			for ( var i = 0; curLoop[i] === false; i++ ){}
			return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
		},
		CHILD: function(match){
			if ( match[1] == "nth" ) {
				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);

				// calculate the numbers (first)n+(last) including if they are negative
				match[2] = (test[1] + (test[2] || 1)) - 0;
				match[3] = test[3] - 0;
			}

			// TODO: Move to normal caching system
			match[0] = done++;

			return match;
		},
		ATTR: function(match, curLoop, inplace, result, not, isXML){
			var name = match[1].replace(/\\/g, "");
			
			if ( !isXML && Expr.attrMap[name] ) {
				match[1] = Expr.attrMap[name];
			}

			if ( match[2] === "~=" ) {
				match[4] = " " + match[4] + " ";
			}

			return match;
		},
		PSEUDO: function(match, curLoop, inplace, result, not){
			if ( match[1] === "not" ) {
				// If we're dealing with a complex expression, or a simple one
				if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
					match[3] = Sizzle(match[3], null, null, curLoop);
				} else {
					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
					if ( !inplace ) {
						result.push.apply( result, ret );
					}
					return false;
				}
			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
				return true;
			}
			
			return match;
		},
		POS: function(match){
			match.unshift( true );
			return match;
		}
	},
	filters: {
		enabled: function(elem){
			return elem.disabled === false && elem.type !== "hidden";
		},
		disabled: function(elem){
			return elem.disabled === true;
		},
		checked: function(elem){
			return elem.checked === true;
		},
		selected: function(elem){
			// Accessing this property makes selected-by-default
			// options in Safari work properly
			elem.parentNode.selectedIndex;
			return elem.selected === true;
		},
		parent: function(elem){
			return !!elem.firstChild;
		},
		empty: function(elem){
			return !elem.firstChild;
		},
		has: function(elem, i, match){
			return !!Sizzle( match[3], elem ).length;
		},
		header: function(elem){
			return /h\d/i.test( elem.nodeName );
		},
		text: function(elem){
			return "text" === elem.type;
		},
		radio: function(elem){
			return "radio" === elem.type;
		},
		checkbox: function(elem){
			return "checkbox" === elem.type;
		},
		file: function(elem){
			return "file" === elem.type;
		},
		password: function(elem){
			return "password" === elem.type;
		},
		submit: function(elem){
			return "submit" === elem.type;
		},
		image: function(elem){
			return "image" === elem.type;
		},
		reset: function(elem){
			return "reset" === elem.type;
		},
		button: function(elem){
			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
		},
		input: function(elem){
			return /input|select|textarea|button/i.test(elem.nodeName);
		}
	},
	setFilters: {
		first: function(elem, i){
			return i === 0;
		},
		last: function(elem, i, match, array){
			return i === array.length - 1;
		},
		even: function(elem, i){
			return i % 2 === 0;
		},
		odd: function(elem, i){
			return i % 2 === 1;
		},
		lt: function(elem, i, match){
			return i < match[3] - 0;
		},
		gt: function(elem, i, match){
			return i > match[3] - 0;
		},
		nth: function(elem, i, match){
			return match[3] - 0 == i;
		},
		eq: function(elem, i, match){
			return match[3] - 0 == i;
		}
	},
	filter: {
		PSEUDO: function(elem, match, i, array){
			var name = match[1], filter = Expr.filters[ name ];

			if ( filter ) {
				return filter( elem, i, match, array );
			} else if ( name === "contains" ) {
				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
			} else if ( name === "not" ) {
				var not = match[3];

				for ( var i = 0, l = not.length; i < l; i++ ) {
					if ( not[i] === elem ) {
						return false;
					}
				}

				return true;
			}
		},
		CHILD: function(elem, match){
			var type = match[1], node = elem;
			switch (type) {
				case 'only':
				case 'first':
					while (node = node.previousSibling)  {
						if ( node.nodeType === 1 ) return false;
					}
					if ( type == 'first') return true;
					node = elem;
				case 'last':
					while (node = node.nextSibling)  {
						if ( node.nodeType === 1 ) return false;
					}
					return true;
				case 'nth':
					var first = match[2], last = match[3];

					if ( first == 1 && last == 0 ) {
						return true;
					}
					
					var doneName = match[0],
						parent = elem.parentNode;
	
					if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
						var count = 0;
						for ( node = parent.firstChild; node; node = node.nextSibling ) {
							if ( node.nodeType === 1 ) {
								node.nodeIndex = ++count;
							}
						} 
						parent.sizcache = doneName;
					}
					
					var diff = elem.nodeIndex - last;
					if ( first == 0 ) {
						return diff == 0;
					} else {
						return ( diff % first == 0 && diff / first >= 0 );
					}
			}
		},
		ID: function(elem, match){
			return elem.nodeType === 1 && elem.getAttribute("id") === match;
		},
		TAG: function(elem, match){
			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
		},
		CLASS: function(elem, match){
			return (" " + (elem.className || elem.getAttribute("class")) + " ")
				.indexOf( match ) > -1;
		},
		ATTR: function(elem, match){
			var name = match[1],
				result = Expr.attrHandle[ name ] ?
					Expr.attrHandle[ name ]( elem ) :
					elem[ name ] != null ?
						elem[ name ] :
						elem.getAttribute( name ),
				value = result + "",
				type = match[2],
				check = match[4];

			return result == null ?
				type === "!=" :
				type === "=" ?
				value === check :
				type === "*=" ?
				value.indexOf(check) >= 0 :
				type === "~=" ?
				(" " + value + " ").indexOf(check) >= 0 :
				!check ?
				value && result !== false :
				type === "!=" ?
				value != check :
				type === "^=" ?
				value.indexOf(check) === 0 :
				type === "$=" ?
				value.substr(value.length - check.length) === check :
				type === "|=" ?
				value === check || value.substr(0, check.length + 1) === check + "-" :
				false;
		},
		POS: function(elem, match, i, array){
			var name = match[2], filter = Expr.setFilters[ name ];

			if ( filter ) {
				return filter( elem, i, match, array );
			}
		}
	}
};

var origPOS = Expr.match.POS;

for ( var type in Expr.match ) {
	Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
}

var makeArray = function(array, results) {
	array = Array.prototype.slice.call( array );

	if ( results ) {
		results.push.apply( results, array );
		return results;
	}
	
	return array;
};

// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
try {
	Array.prototype.slice.call( document.documentElement.childNodes );

// Provide a fallback method if it does not work
} catch(e){
	makeArray = function(array, results) {
		var ret = results || [];

		if ( toString.call(array) === "[object Array]" ) {
			Array.prototype.push.apply( ret, array );
		} else {
			if ( typeof array.length === "number" ) {
				for ( var i = 0, l = array.length; i < l; i++ ) {
					ret.push( array[i] );
				}
			} else {
				for ( var i = 0; array[i]; i++ ) {
					ret.push( array[i] );
				}
			}
		}

		return ret;
	};
}

var sortOrder;

if ( document.documentElement.compareDocumentPosition ) {
	sortOrder = function( a, b ) {
		var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
		if ( ret === 0 ) {
			hasDuplicate = true;
		}
		return ret;
	};
} else if ( "sourceIndex" in document.documentElement ) {
	sortOrder = function( a, b ) {
		var ret = a.sourceIndex - b.sourceIndex;
		if ( ret === 0 ) {
			hasDuplicate = true;
		}
		return ret;
	};
} else if ( document.createRange ) {
	sortOrder = function( a, b ) {
		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
		aRange.selectNode(a);
		aRange.collapse(true);
		bRange.selectNode(b);
		bRange.collapse(true);
		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
		if ( ret === 0 ) {
			hasDuplicate = true;
		}
		return ret;
	};
}

// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
	// We're going to inject a fake input element with a specified name
	var form = document.createElement("form"),
		id = "script" + (new Date).getTime();
	form.innerHTML = "<input name='" + id + "'/>";

	// Inject it into the root element, check its status, and remove it quickly
	var root = document.documentElement;
	root.insertBefore( form, root.firstChild );

	// The workaround has to do additional checks after a getElementById
	// Which slows things down for other browsers (hence the branching)
	if ( !!document.getElementById( id ) ) {
		Expr.find.ID = function(match, context, isXML){
			if ( typeof context.getElementById !== "undefined" && !isXML ) {
				var m = context.getElementById(match[1]);
				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
			}
		};

		Expr.filter.ID = function(elem, match){
			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
			return elem.nodeType === 1 && node && node.nodeValue === match;
		};
	}

	root.removeChild( form );
})();

(function(){
	// Check to see if the browser returns only elements
	// when doing getElementsByTagName("*")

	// Create a fake element
	var div = document.createElement("div");
	div.appendChild( document.createComment("") );

	// Make sure no comments are found
	if ( div.getElementsByTagName("*").length > 0 ) {
		Expr.find.TAG = function(match, context){
			var results = context.getElementsByTagName(match[1]);

			// Filter out possible comments
			if ( match[1] === "*" ) {
				var tmp = [];

				for ( var i = 0; results[i]; i++ ) {
					if ( results[i].nodeType === 1 ) {
						tmp.push( results[i] );
					}
				}

				results = tmp;
			}

			return results;
		};
	}

	// Check to see if an attribute returns normalized href attributes
	div.innerHTML = "<a href='#'></a>";
	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
			div.firstChild.getAttribute("href") !== "#" ) {
		Expr.attrHandle.href = function(elem){
			return elem.getAttribute("href", 2);
		};
	}
})();

if ( document.querySelectorAll ) (function(){
	var oldSizzle = Sizzle, div = document.createElement("div");
	div.innerHTML = "<p class='TEST'></p>";

	// Safari can't handle uppercase or unicode characters when
	// in quirks mode.
	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
		return;
	}
	
	Sizzle = function(query, context, extra, seed){
		context = context || document;

		// Only use querySelectorAll on non-XML documents
		// (ID selectors don't work in non-HTML documents)
		if ( !seed && context.nodeType === 9 && !isXML(context) ) {
			try {
				return makeArray( context.querySelectorAll(query), extra );
			} catch(e){}
		}
		
		return oldSizzle(query, context, extra, seed);
	};

	Sizzle.find = oldSizzle.find;
	Sizzle.filter = oldSizzle.filter;
	Sizzle.selectors = oldSizzle.selectors;
	Sizzle.matches = oldSizzle.matches;
})();

if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
	var div = document.createElement("div");
	div.innerHTML = "<div class='test e'></div><div class='test'></div>";

	// Opera can't find a second classname (in 9.6)
	if ( div.getElementsByClassName("e").length === 0 )
		return;

	// Safari caches class attributes, doesn't catch changes (in 3.2)
	div.lastChild.className = "e";

	if ( div.getElementsByClassName("e").length === 1 )
		return;

	Expr.order.splice(1, 0, "CLASS");
	Expr.find.CLASS = function(match, context, isXML) {
		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
			return context.getElementsByClassName(match[1]);
		}
	};
})();

function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
	var sibDir = dir == "previousSibling" && !isXML;
	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
		var elem = checkSet[i];
		if ( elem ) {
			if ( sibDir && elem.nodeType === 1 ){
				elem.sizcache = doneName;
				elem.sizset = i;
			}
			elem = elem[dir];
			var match = false;

			while ( elem ) {
				if ( elem.sizcache === doneName ) {
					match = checkSet[elem.sizset];
					break;
				}

				if ( elem.nodeType === 1 && !isXML ){
					elem.sizcache = doneName;
					elem.sizset = i;
				}

				if ( elem.nodeName === cur ) {
					match = elem;
					break;
				}

				elem = elem[dir];
			}

			checkSet[i] = match;
		}
	}
}

function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
	var sibDir = dir == "previousSibling" && !isXML;
	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
		var elem = checkSet[i];
		if ( elem ) {
			if ( sibDir && elem.nodeType === 1 ) {
				elem.sizcache = doneName;
				elem.sizset = i;
			}
			elem = elem[dir];
			var match = false;

			while ( elem ) {
				if ( elem.sizcache === doneName ) {
					match = checkSet[elem.sizset];
					break;
				}

				if ( elem.nodeType === 1 ) {
					if ( !isXML ) {
						elem.sizcache = doneName;
						elem.sizset = i;
					}
					if ( typeof cur !== "string" ) {
						if ( elem === cur ) {
							match = true;
							break;
						}

					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
						match = elem;
						break;
					}
				}

				elem = elem[dir];
			}

			checkSet[i] = match;
		}
	}
}

var contains = document.compareDocumentPosition ?  function(a, b){
	return a.compareDocumentPosition(b) & 16;
} : function(a, b){
	return a !== b && (a.contains ? a.contains(b) : true);
};

var isXML = function(elem){
	return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
		!!elem.ownerDocument && isXML( elem.ownerDocument );
};

var posProcess = function(selector, context){
	var tmpSet = [], later = "", match,
		root = context.nodeType ? [context] : context;

	// Position selectors must be done after the filter
	// And so must :not(positional) so we move all PSEUDOs to the end
	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
		later += match[0];
		selector = selector.replace( Expr.match.PSEUDO, "" );
	}

	selector = Expr.relative[selector] ? selector + "*" : selector;

	for ( var i = 0, l = root.length; i < l; i++ ) {
		Sizzle( selector, root[i], tmpSet );
	}

	return Sizzle.filter( later, tmpSet );
};

// EXPOSE
jQuery.find = Sizzle;
jQuery.filter = Sizzle.filter;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;

Sizzle.selectors.filters.hidden = function(elem){
	return elem.offsetWidth === 0 || elem.offsetHeight === 0;
};

Sizzle.selectors.filters.visible = function(elem){
	return elem.offsetWidth > 0 || elem.offsetHeight > 0;
};

Sizzle.selectors.filters.animated = function(elem){
	return jQuery.grep(jQuery.timers, function(fn){
		return elem === fn.elem;
	}).length;
};

jQuery.multiFilter = function( expr, elems, not ) {
	if ( not ) {
		expr = ":not(" + expr + ")";
	}

	return Sizzle.matches(expr, elems);
};

jQuery.dir = function( elem, dir ){
	var matched = [], cur = elem[dir];
	while ( cur && cur != document ) {
		if ( cur.nodeType == 1 )
			matched.push( cur );
		cur = cur[dir];
	}
	return matched;
};

jQuery.nth = function(cur, result, dir, elem){
	result = result || 1;
	var num = 0;

	for ( ; cur; cur = cur[dir] )
		if ( cur.nodeType == 1 && ++num == result )
			break;

	return cur;
};

jQuery.sibling = function(n, elem){
	var r = [];

	for ( ; n; n = n.nextSibling ) {
		if ( n.nodeType == 1 && n != elem )
			r.push( n );
	}

	return r;
};

return;

window.Sizzle = Sizzle;

})();
/*
 * A number of helper functions used for managing events.
 * Many of the ideas behind this code originated from
 * Dean Edwards' addEvent library.
 */
jQuery.event = {

	// Bind an event to an element
	// Original by Dean Edwards
	add: function(elem, types, handler, data) {
		if ( elem.nodeType == 3 || elem.nodeType == 8 )
			return;

		// For whatever reason, IE has trouble passing the window object
		// around, causing it to be cloned in the process
		if ( elem.setInterval && elem != window )
			elem = window;

		// Make sure that the function being executed has a unique ID
		if ( !handler.guid )
			handler.guid = this.guid++;

		// if data is passed, bind to handler
		if ( data !== undefined ) {
			// Create temporary function pointer to original handler
			var fn = handler;

			// Create unique handler function, wrapped around original handler
			handler = this.proxy( fn );

			// Store data in unique handler
			handler.data = data;
		}

		// Init the element's event structure
		var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
				// Handle the second event of a trigger and when
				// an event is called after a page has unloaded
				return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
					jQuery.event.handle.apply(arguments.callee.elem, arguments) :
					undefined;
			});
		// Add elem as a property of the handle function
		// This is to prevent a memory leak with non-native
		// event in IE.
		handle.elem = elem;

		// Handle multiple events separated by a space
		// jQuery(...).bind("mouseover mouseout", fn);
		jQuery.each(types.split(/\s+/), function(index, type) {
			// Namespaced event handlers
			var namespaces = type.split(".");
			type = namespaces.shift();
			handler.type = namespaces.slice().sort().join(".");

			// Get the current list of functions bound to this event
			var handlers = events[type];
			
			if ( jQuery.event.specialAll[type] )
				jQuery.event.specialAll[type].setup.call(elem, data, namespaces);

			// Init the event handler queue
			if (!handlers) {
				handlers = events[type] = {};

				// Check for a special event handler
				// Only use addEventListener/attachEvent if the special
				// events handler returns false
				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
					// Bind the global event handler to the element
					if (elem.addEventListener)
						elem.addEventListener(type, handle, false);
					else if (elem.attachEvent)
						elem.attachEvent("on" + type, handle);
				}
			}

			// Add the function to the element's handler list
			handlers[handler.guid] = handler;

			// Keep track of which events have been used, for global triggering
			jQuery.event.global[type] = true;
		});

		// Nullify elem to prevent memory leaks in IE
		elem = null;
	},

	guid: 1,
	global: {},

	// Detach an event or set of events from an element
	remove: function(elem, types, handler) {
		// don't do events on text and comment nodes
		if ( elem.nodeType == 3 || elem.nodeType == 8 )
			return;

		var events = jQuery.data(elem, "events"), ret, index;

		if ( events ) {
			// Unbind all events for the element
			if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
				for ( var type in events )
					this.remove( elem, type + (types || "") );
			else {
				// types is actually an event object here
				if ( types.type ) {
					handler = types.handler;
					types = types.type;
				}

				// Handle multiple events seperated by a space
				// jQuery(...).unbind("mouseover mouseout", fn);
				jQuery.each(types.split(/\s+/), function(index, type){
					// Namespaced event handlers
					var namespaces = type.split(".");
					type = namespaces.shift();
					var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");

					if ( events[type] ) {
						// remove the given handler for the given type
						if ( handler )
							delete events[type][handler.guid];

						// remove all handlers for the given type
						else
							for ( var handle in events[type] )
								// Handle the removal of namespaced events
								if ( namespace.test(events[type][handle].type) )
									delete events[type][handle];
									
						if ( jQuery.event.specialAll[type] )
							jQuery.event.specialAll[type].teardown.call(elem, namespaces);

						// remove generic event handler if no more handlers exist
						for ( ret in events[type] ) break;
						if ( !ret ) {
							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
								if (elem.removeEventListener)
									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
								else if (elem.detachEvent)
									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
							}
							ret = null;
							delete events[type];
						}
					}
				});
			}

			// Remove the expando if it's no longer used
			for ( ret in events ) break;
			if ( !ret ) {
				var handle = jQuery.data( elem, "handle" );
				if ( handle ) handle.elem = null;
				jQuery.removeData( elem, "events" );
				jQuery.removeData( elem, "handle" );
			}
		}
	},

	// bubbling is internal
	trigger: function( event, data, elem, bubbling ) {
		// Event object or event type
		var type = event.type || event;

		if( !bubbling ){
			event = typeof event === "object" ?
				// jQuery.Event object
				event[expando] ? event :
				// Object literal
				jQuery.extend( jQuery.Event(type), event ) :
				// Just the event type (string)
				jQuery.Event(type);

			if ( type.indexOf("!") >= 0 ) {
				event.type = type = type.slice(0, -1);
				event.exclusive = true;
			}

			// Handle a global trigger
			if ( !elem ) {
				// Don't bubble custom events when global (to avoid too much overhead)
				event.stopPropagation();
				// Only trigger if we've ever bound an event for it
				if ( this.global[type] )
					jQuery.each( jQuery.cache, function(){
						if ( this.events && this.events[type] )
							jQuery.event.trigger( event, data, this.handle.elem );
					});
			}

			// Handle triggering a single element

			// don't do events on text and comment nodes
			if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
				return undefined;
			
			// Clean up in case it is reused
			event.result = undefined;
			event.target = elem;
			
			// Clone the incoming data, if any
			data = jQuery.makeArray(data);
			data.unshift( event );
		}

		event.currentTarget = elem;

		// Trigger the event, it is assumed that "handle" is a function
		var handle = jQuery.data(elem, "handle");
		if ( handle )
			handle.apply( elem, data );

		// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
		if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
			event.result = false;

		// Trigger the native events (except for clicks on links)
		if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
			this.triggered = true;
			try {
				elem[ type ]();
			// prevent IE from throwing an error for some hidden elements
			} catch (e) {}
		}

		this.triggered = false;

		if ( !event.isPropagationStopped() ) {
			var parent = elem.parentNode || elem.ownerDocument;
			if ( parent )
				jQuery.event.trigger(event, data, parent, true);
		}
	},

	handle: function(event) {
		// returned undefined or false
		var all, handlers;

		event = arguments[0] = jQuery.event.fix( event || window.event );
		event.currentTarget = this;
		
		// Namespaced event handlers
		var namespaces = event.type.split(".");
		event.type = namespaces.shift();

		// Cache this now, all = true means, any handler
		all = !namespaces.length && !event.exclusive;
		
		var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");

		handlers = ( jQuery.data(this, "events") || {} )[event.type];

		for ( var j in handlers ) {
			var handler = handlers[j];

			// Filter the functions by class
			if ( all || namespace.test(handler.type) ) {
				// Pass in a reference to the handler function itself
				// So that we can later remove it
				event.handler = handler;
				event.data = handler.data;

				var ret = handler.apply(this, arguments);

				if( ret !== undefined ){
					event.result = ret;
					if ( ret === false ) {
						event.preventDefault();
						event.stopPropagation();
					}
				}

				if( event.isImmediatePropagationStopped() )
					break;

			}
		}
	},

	props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),

	fix: function(event) {
		if ( event[expando] )
			return event;

		// store a copy of the original event object
		// and "clone" to set read-only properties
		var originalEvent = event;
		event = jQuery.Event( originalEvent );

		for ( var i = this.props.length, prop; i; ){
			prop = this.props[ --i ];
			event[ prop ] = originalEvent[ prop ];
		}

		// Fix target property, if necessary
		if ( !event.target )
			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either

		// check if target is a textnode (safari)
		if ( event.target.nodeType == 3 )
			event.target = event.target.parentNode;

		// Add relatedTarget, if necessary
		if ( !event.relatedTarget && event.fromElement )
			event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;

		// Calculate pageX/Y if missing and clientX/Y available
		if ( event.pageX == null && event.clientX != null ) {
			var doc = document.documentElement, body = document.body;
			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
			event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
		}

		// Add which for key events
		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
			event.which = event.charCode || event.keyCode;

		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
		if ( !event.metaKey && event.ctrlKey )
			event.metaKey = event.ctrlKey;

		// Add which for click: 1 == left; 2 == middle; 3 == right
		// Note: button is not normalized, so don't use it
		if ( !event.which && event.button )
			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));

		return event;
	},

	proxy: function( fn, proxy ){
		proxy = proxy || function(){ return fn.apply(this, arguments); };
		// Set the guid of unique handler to the same of original handler, so it can be removed
		proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
		// So proxy can be declared as an argument
		return proxy;
	},

	special: {
		ready: {
			// Make sure the ready event is setup
			setup: bindReady,
			teardown: function() {}
		}
	},
	
	specialAll: {
		live: {
			setup: function( selector, namespaces ){
				jQuery.event.add( this, namespaces[0], liveHandler );
			},
			teardown:  function( namespaces ){
				if ( namespaces.length ) {
					var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
					
					jQuery.each( (jQuery.data(this, "events").live || {}), function(){
						if ( name.test(this.type) )
							remove++;
					});
					
					if ( remove < 1 )
						jQuery.event.remove( this, namespaces[0], liveHandler );
				}
			}
		}
	}
};

jQuery.Event = function( src ){
	// Allow instantiation without the 'new' keyword
	if( !this.preventDefault )
		return new jQuery.Event(src);
	
	// Event object
	if( src && src.type ){
		this.originalEvent = src;
		this.type = src.type;
	// Event type
	}else
		this.type = src;

	// timeStamp is buggy for some events on Firefox(#3843)
	// So we won't rely on the native value
	this.timeStamp = now();
	
	// Mark it as fixed
	this[expando] = true;
};

function returnFalse(){
	return false;
}
function returnTrue(){
	return true;
}

// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
jQuery.Event.prototype = {
	preventDefault: function() {
		this.isDefaultPrevented = returnTrue;

		var e = this.originalEvent;
		if( !e )
			return;
		// if preventDefault exists run it on the original event
		if (e.preventDefault)
			e.preventDefault();
		// otherwise set the returnValue property of the original event to false (IE)
		e.returnValue = false;
	},
	stopPropagation: function() {
		this.isPropagationStopped = returnTrue;

		var e = this.originalEvent;
		if( !e )
			return;
		// if stopPropagation exists run it on the original event
		if (e.stopPropagation)
			e.stopPropagation();
		// otherwise set the cancelBubble property of the original event to true (IE)
		e.cancelBubble = true;
	},
	stopImmediatePropagation:function(){
		this.isImmediatePropagationStopped = returnTrue;
		this.stopPropagation();
	},
	isDefaultPrevented: returnFalse,
	isPropagationStopped: returnFalse,
	isImmediatePropagationStopped: returnFalse
};
// Checks if an event happened on an element within another element
// Used in jQuery.event.special.mouseenter and mouseleave handlers
var withinElement = function(event) {
	// Check if mouse(over|out) are still within the same parent element
	var parent = event.relatedTarget;
	// Traverse up the tree
	while ( parent && parent != this )
		try { parent = parent.parentNode; }
		catch(e) { parent = this; }
	
	if( parent != this ){
		// set the correct event type
		event.type = event.data;
		// handle event if we actually just moused on to a non sub-element
		jQuery.event.handle.apply( this, arguments );
	}
};
	
jQuery.each({ 
	mouseover: 'mouseenter', 
	mouseout: 'mouseleave'
}, function( orig, fix ){
	jQuery.event.special[ fix ] = {
		setup: function(){
			jQuery.event.add( this, orig, withinElement, fix );
		},
		teardown: function(){
			jQuery.event.remove( this, orig, withinElement );
		}
	};			   
});

jQuery.fn.extend({
	bind: function( type, data, fn ) {
		return type == "unload" ? this.one(type, data, fn) : this.each(function(){
			jQuery.event.add( this, type, fn || data, fn && data );
		});
	},

	one: function( type, data, fn ) {
		var one = jQuery.event.proxy( fn || data, function(event) {
			jQuery(this).unbind(event, one);
			return (fn || data).apply( this, arguments );
		});
		return this.each(function(){
			jQuery.event.add( this, type, one, fn && data);
		});
	},

	unbind: function( type, fn ) {
		return this.each(function(){
			jQuery.event.remove( this, type, fn );
		});
	},

	trigger: function( type, data ) {
		return this.each(function(){
			jQuery.event.trigger( type, data, this );
		});
	},

	triggerHandler: function( type, data ) {
		if( this[0] ){
			var event = jQuery.Event(type);
			event.preventDefault();
			event.stopPropagation();
			jQuery.event.trigger( event, data, this[0] );
			return event.result;
		}		
	},

	toggle: function( fn ) {
		// Save reference to arguments for access in closure
		var args = arguments, i = 1;

		// link all the functions, so any of them can unbind this click handler
		while( i < args.length )
			jQuery.event.proxy( fn, args[i++] );

		return this.click( jQuery.event.proxy( fn, function(event) {
			// Figure out which function to execute
			this.lastToggle = ( this.lastToggle || 0 ) % i;

			// Make sure that clicks stop
			event.preventDefault();

			// and execute the function
			return args[ this.lastToggle++ ].apply( this, arguments ) || false;
		}));
	},

	hover: function(fnOver, fnOut) {
		return this.mouseenter(fnOver).mouseleave(fnOut);
	},

	ready: function(fn) {
		// Attach the listeners
		bindReady();

		// If the DOM is already ready
		if ( jQuery.isReady )
			// Execute the function immediately
			fn.call( document, jQuery );

		// Otherwise, remember the function for later
		else
			// Add the function to the wait list
			jQuery.readyList.push( fn );

		return this;
	},
	
	live: function( type, fn ){
		var proxy = jQuery.event.proxy( fn );
		proxy.guid += this.selector + type;

		jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );

		return this;
	},
	
	die: function( type, fn ){
		jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
		return this;
	}
});

function liveHandler( event ){
	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
		stop = true,
		elems = [];

	jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
		if ( check.test(fn.type) ) {
			var elem = jQuery(event.target).closest(fn.data)[0];
			if ( elem )
				elems.push({ elem: elem, fn: fn });
		}
	});

	elems.sort(function(a,b) {
		return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
	});
	
	jQuery.each(elems, function(){
		if ( this.fn.call(this.elem, event, this.fn.data) === false )
			return (stop = false);
	});

	return stop;
}

function liveConvert(type, selector){
	return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
}

jQuery.extend({
	isReady: false,
	readyList: [],
	// Handle when the DOM is ready
	ready: function() {
		// Make sure that the DOM is not already loaded
		if ( !jQuery.isReady ) {
			// Remember that the DOM is ready
			jQuery.isReady = true;

			// If there are functions bound, to execute
			if ( jQuery.readyList ) {
				// Execute all of them
				jQuery.each( jQuery.readyList, function(){
					this.call( document, jQuery );
				});

				// Reset the list of functions
				jQuery.readyList = null;
			}

			// Trigger any bound ready events
			jQuery(document).triggerHandler("ready");
		}
	}
});

var readyBound = false;

function bindReady(){
	if ( readyBound ) return;
	readyBound = true;

	// Mozilla, Opera and webkit nightlies currently support this event
	if ( document.addEventListener ) {
		// Use the handy event callback
		document.addEventListener( "DOMContentLoaded", function(){
			document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
			jQuery.ready();
		}, false );

	// If IE event model is used
	} else if ( document.attachEvent ) {
		// ensure firing before onload,
		// maybe late but safe also for iframes
		document.attachEvent("onreadystatechange", function(){
			if ( document.readyState === "complete" ) {
				document.detachEvent( "onreadystatechange", arguments.callee );
				jQuery.ready();
			}
		});

		// If IE and not an iframe
		// continually check to see if the document is ready
		if ( document.documentElement.doScroll && window == window.top ) (function(){
			if ( jQuery.isReady ) return;

			try {
				// If IE is used, use the trick by Diego Perini
				// http://javascript.nwbox.com/IEContentLoaded/
				document.documentElement.doScroll("left");
			} catch( error ) {
				setTimeout( arguments.callee, 0 );
				return;
			}

			// and execute any waiting functions
			jQuery.ready();
		})();
	}

	// A fallback to window.onload, that will always work
	jQuery.event.add( window, "load", jQuery.ready );
}

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
	"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
	"change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

	// Handle event binding
	jQuery.fn[name] = function(fn){
		return fn ? this.bind(name, fn) : this.trigger(name);
	};
});

// Prevent memory leaks in IE
// And prevent errors on refresh with events like mouseover in other browsers
// Window isn't included so as not to unbind existing unload events
jQuery( window ).bind( 'unload', function(){ 
	for ( var id in jQuery.cache )
		// Skip the window
		if ( id != 1 && jQuery.cache[ id ].handle )
			jQuery.event.remove( jQuery.cache[ id ].handle.elem );
}); 
(function(){

	jQuery.support = {};

	var root = document.documentElement,
		script = document.createElement("script"),
		div = document.createElement("div"),
		id = "script" + (new Date).getTime();

	div.style.display = "none";
	div.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';

	var all = div.getElementsByTagName("*"),
		a = div.getElementsByTagName("a")[0];

	// Can't get basic test support
	if ( !all || !all.length || !a ) {
		return;
	}

	jQuery.support = {
		// IE strips leading whitespace when .innerHTML is used
		leadingWhitespace: div.firstChild.nodeType == 3,
		
		// Make sure that tbody elements aren't automatically inserted
		// IE will insert them into empty tables
		tbody: !div.getElementsByTagName("tbody").length,
		
		// Make sure that you can get all elements in an <object> element
		// IE 7 always returns no results
		objectAll: !!div.getElementsByTagName("object")[0]
			.getElementsByTagName("*").length,
		
		// Make sure that link elements get serialized correctly by innerHTML
		// This requires a wrapper element in IE
		htmlSerialize: !!div.getElementsByTagName("link").length,
		
		// Get the style information from getAttribute
		// (IE uses .cssText insted)
		style: /red/.test( a.getAttribute("style") ),
		
		// Make sure that URLs aren't manipulated
		// (IE normalizes it by default)
		hrefNormalized: a.getAttribute("href") === "/a",
		
		// Make sure that element opacity exists
		// (IE uses filter instead)
		opacity: a.style.opacity === "0.5",
		
		// Verify style float existence
		// (IE uses styleFloat instead of cssFloat)
		cssFloat: !!a.style.cssFloat,

		// Will be defined later
		scriptEval: false,
		noCloneEvent: true,
		boxModel: null
	};
	
	script.type = "text/javascript";
	try {
		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
	} catch(e){}

	root.insertBefore( script, root.firstChild );
	
	// Make sure that the execution of code works by injecting a script
	// tag with appendChild/createTextNode
	// (IE doesn't support this, fails, and uses .text instead)
	if ( window[ id ] ) {
		jQuery.support.scriptEval = true;
		delete window[ id ];
	}

	root.removeChild( script );

	if ( div.attachEvent && div.fireEvent ) {
		div.attachEvent("onclick", function(){
			// Cloning a node shouldn't copy over any
			// bound event handlers (IE does this)
			jQuery.support.noCloneEvent = false;
			div.detachEvent("onclick", arguments.callee);
		});
		div.cloneNode(true).fireEvent("onclick");
	}

	// Figure out if the W3C box model works as expected
	// document.body must exist before we can do this
	jQuery(function(){
		var div = document.createElement("div");
		div.style.width = div.style.paddingLeft = "1px";

		document.body.appendChild( div );
		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
		document.body.removeChild( div ).style.display = 'none';
	});
})();

var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";

jQuery.props = {
	"for": "htmlFor",
	"class": "className",
	"float": styleFloat,
	cssFloat: styleFloat,
	styleFloat: styleFloat,
	readonly: "readOnly",
	maxlength: "maxLength",
	cellspacing: "cellSpacing",
	rowspan: "rowSpan",
	tabindex: "tabIndex"
};
jQuery.fn.extend({
	// Keep a copy of the old load
	_load: jQuery.fn.load,

	load: function( url, params, callback ) {
		if ( typeof url !== "string" )
			return this._load( url );

		var off = url.indexOf(" ");
		if ( off >= 0 ) {
			var selector = url.slice(off, url.length);
			url = url.slice(0, off);
		}

		// Default to a GET request
		var type = "GET";

		// If the second parameter was provided
		if ( params )
			// If it's a function
			if ( jQuery.isFunction( params ) ) {
				// We assume that it's the callback
				callback = params;
				params = null;

			// Otherwise, build a param string
			} else if( typeof params === "object" ) {
				params = jQuery.param( params );
				type = "POST";
			}

		var self = this;

		// Request the remote document
		jQuery.ajax({
			url: url,
			type: type,
			dataType: "html",
			data: params,
			complete: function(res, status){
				// If successful, inject the HTML into all the matched elements
				if ( status == "success" || status == "notmodified" )
					// See if a selector was specified
					self.html( selector ?
						// Create a dummy div to hold the results
						jQuery("<div/>")
							// inject the contents of the document in, removing the scripts
							// to avoid any 'Permission Denied' errors in IE
							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))

							// Locate the specified elements
							.find(selector) :

						// If not, just inject the full result
						res.responseText );

				if( callback )
					self.each( callback, [res.responseText, status, res] );
			}
		});
		return this;
	},

	serialize: function() {
		return jQuery.param(this.serializeArray());
	},
	serializeArray: function() {
		return this.map(function(){
			return this.elements ? jQuery.makeArray(this.elements) : this;
		})
		.filter(function(){
			return this.name && !this.disabled &&
				(this.checked || /select|textarea/i.test(this.nodeName) ||
					/text|hidden|password|search/i.test(this.type));
		})
		.map(function(i, elem){
			var val = jQuery(this).val();
			return val == null ? null :
				jQuery.isArray(val) ?
					jQuery.map( val, function(val, i){
						return {name: elem.name, value: val};
					}) :
					{name: elem.name, value: val};
		}).get();
	}
});

// Attach a bunch of functions for handling common AJAX events
jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
	jQuery.fn[o] = function(f){
		return this.bind(o, f);
	};
});

var jsc = now();

jQuery.extend({
  
	get: function( url, data, callback, type ) {
		// shift arguments if data argument was ommited
		if ( jQuery.isFunction( data ) ) {
			callback = data;
			data = null;
		}

		return jQuery.ajax({
			type: "GET",
			url: url,
			data: data,
			success: callback,
			dataType: type
		});
	},

	getScript: function( url, callback ) {
		return jQuery.get(url, null, callback, "script");
	},

	getJSON: function( url, data, callback ) {
		return jQuery.get(url, data, callback, "json");
	},

	post: function( url, data, callback, type ) {
		if ( jQuery.isFunction( data ) ) {
			callback = data;
			data = {};
		}

		return jQuery.ajax({
			type: "POST",
			url: url,
			data: data,
			success: callback,
			dataType: type
		});
	},

	ajaxSetup: function( settings ) {
		jQuery.extend( jQuery.ajaxSettings, settings );
	},

	ajaxSettings: {
		url: location.href,
		global: true,
		type: "GET",
		contentType: "application/x-www-form-urlencoded",
		processData: true,
		async: true,
		/*
		timeout: 0,
		data: null,
		username: null,
		password: null,
		*/
		// Create the request object; Microsoft failed to properly
		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
		// This function can be overriden by calling jQuery.ajaxSetup
		xhr:function(){
			return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
		},
		accepts: {
			xml: "application/xml, text/xml",
			html: "text/html",
			script: "text/javascript, application/javascript",
			json: "application/json, text/javascript",
			text: "text/plain",
			_default: "*/*"
		}
	},

	// Last-Modified header cache for next request
	lastModified: {},

	ajax: function( s ) {
		// Extend the settings, but re-extend 's' so that it can be
		// checked again later (in the test suite, specifically)
		s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));

		var jsonp, jsre = /=\?(&|$)/g, status, data,
			type = s.type.toUpperCase();

		// convert data if not already a string
		if ( s.data && s.processData && typeof s.data !== "string" )
			s.data = jQuery.param(s.data);

		// Handle JSONP Parameter Callbacks
		if ( s.dataType == "jsonp" ) {
			if ( type == "GET" ) {
				if ( !s.url.match(jsre) )
					s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
			} else if ( !s.data || !s.data.match(jsre) )
				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
			s.dataType = "json";
		}

		// Build temporary JSONP function
		if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
			jsonp = "jsonp" + jsc++;

			// Replace the =? sequence both in the query string and the data
			if ( s.data )
				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
			s.url = s.url.replace(jsre, "=" + jsonp + "$1");

			// We need to make sure
			// that a JSONP style response is executed properly
			s.dataType = "script";

			// Handle JSONP-style loading
			window[ jsonp ] = function(tmp){
				data = tmp;
				success();
				complete();
				// Garbage collect
				window[ jsonp ] = undefined;
				try{ delete window[ jsonp ]; } catch(e){}
				if ( head )
					head.removeChild( script );
			};
		}

		if ( s.dataType == "script" && s.cache == null )
			s.cache = false;

		if ( s.cache === false && type == "GET" ) {
			var ts = now();
			// try replacing _= if it is there
			var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
			// if nothing was replaced, add timestamp to the end
			s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
		}

		// If data is available, append data to url for get requests
		if ( s.data && type == "GET" ) {
			s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;

			// IE likes to send both get and post data, prevent this
			s.data = null;
		}

		// Watch for a new set of requests
		if ( s.global && ! jQuery.active++ )
			jQuery.event.trigger( "ajaxStart" );

		// Matches an absolute URL, and saves the domain
		var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );

		// If we're requesting a remote document
		// and trying to load JSON or Script with a GET
		if ( s.dataType == "script" && type == "GET" && parts
			&& ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){

			var head = document.getElementsByTagName("head")[0];
			var script = document.createElement("script");
			script.src = s.url;
			if (s.scriptCharset)
				script.charset = s.scriptCharset;

			// Handle Script loading
			if ( !jsonp ) {
				var done = false;

				// Attach handlers for all browsers
				script.onload = script.onreadystatechange = function(){
					if ( !done && (!this.readyState ||
							this.readyState == "loaded" || this.readyState == "complete") ) {
						done = true;
						success();
						complete();

						// Handle memory leak in IE
						script.onload = script.onreadystatechange = null;
						head.removeChild( script );
					}
				};
			}

			head.appendChild(script);

			// We handle everything using the script element injection
			return undefined;
		}

		var requestDone = false;

		// Create the request object
		var xhr = s.xhr();

		// Open the socket
		// Passing null username, generates a login popup on Opera (#2865)
		if( s.username )
			xhr.open(type, s.url, s.async, s.username, s.password);
		else
			xhr.open(type, s.url, s.async);

		// Need an extra try/catch for cross domain requests in Firefox 3
		try {
			// Set the correct header, if data is being sent
			if ( s.data )
				xhr.setRequestHeader("Content-Type", s.contentType);

			// Set the If-Modified-Since header, if ifModified mode.
			if ( s.ifModified )
				xhr.setRequestHeader("If-Modified-Since",
					jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );

			// Set header so the called script knows that it's an XMLHttpRequest
			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

			// Set the Accepts header for the server, depending on the dataType
			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
				s.accepts[ s.dataType ] + ", */*" :
				s.accepts._default );
		} catch(e){}

		// Allow custom headers/mimetypes and early abort
		if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
			// Handle the global AJAX counter
			if ( s.global && ! --jQuery.active )
				jQuery.event.trigger( "ajaxStop" );
			// close opended socket
			xhr.abort();
			return false;
		}

		if ( s.global )
			jQuery.event.trigger("ajaxSend", [xhr, s]);

		// Wait for a response to come back
		var onreadystatechange = function(isTimeout){
			// The request was aborted, clear the interval and decrement jQuery.active
			if (xhr.readyState == 0) {
				if (ival) {
					// clear poll interval
					clearInterval(ival);
					ival = null;
					// Handle the global AJAX counter
					if ( s.global && ! --jQuery.active )
						jQuery.event.trigger( "ajaxStop" );
				}
			// The transfer is complete and the data is available, or the request timed out
			} else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
				requestDone = true;

				// clear poll interval
				if (ival) {
					clearInterval(ival);
					ival = null;
				}

				status = isTimeout == "timeout" ? "timeout" :
					!jQuery.httpSuccess( xhr ) ? "error" :
					s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
					"success";

				if ( status == "success" ) {
					// Watch for, and catch, XML document parse errors
					try {
						// process the data (runs the xml through httpData regardless of callback)
						data = jQuery.httpData( xhr, s.dataType, s );
					} catch(e) {
						status = "parsererror";
					}
				}

				// Make sure that the request was successful or notmodified
				if ( status == "success" ) {
					// Cache Last-Modified header, if ifModified mode.
					var modRes;
					try {
						modRes = xhr.getResponseHeader("Last-Modified");
					} catch(e) {} // swallow exception thrown by FF if header is not available

					if ( s.ifModified && modRes )
						jQuery.lastModified[s.url] = modRes;

					// JSONP handles its own success callback
					if ( !jsonp )
						success();
				} else
					jQuery.handleError(s, xhr, status);

				// Fire the complete handlers
				complete();

				if ( isTimeout )
					xhr.abort();

				// Stop memory leaks
				if ( s.async )
					xhr = null;
			}
		};

		if ( s.async ) {
			// don't attach the handler to the request, just poll it instead
			var ival = setInterval(onreadystatechange, 13);

			// Timeout checker
			if ( s.timeout > 0 )
				setTimeout(function(){
					// Check to see if the request is still happening
					if ( xhr && !requestDone )
						onreadystatechange( "timeout" );
				}, s.timeout);
		}

		// Send the data
		try {
			xhr.send(s.data);
		} catch(e) {
			jQuery.handleError(s, xhr, null, e);
		}

		// firefox 1.5 doesn't fire statechange for sync requests
		if ( !s.async )
			onreadystatechange();

		function success(){
			// If a local callback was specified, fire it and pass it the data
			if ( s.success )
				s.success( data, status );

			// Fire the global callback
			if ( s.global )
				jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
		}

		function complete(){
			// Process result
			if ( s.complete )
				s.complete(xhr, status);

			// The request was completed
			if ( s.global )
				jQuery.event.trigger( "ajaxComplete", [xhr, s] );

			// Handle the global AJAX counter
			if ( s.global && ! --jQuery.active )
				jQuery.event.trigger( "ajaxStop" );
		}

		// return XMLHttpRequest to allow aborting the request etc.
		return xhr;
	},

	handleError: function( s, xhr, status, e ) {
		// If a local callback was specified, fire it
		if ( s.error ) s.error( xhr, status, e );

		// Fire the global callback
		if ( s.global )
			jQuery.event.trigger( "ajaxError", [xhr, s, e] );
	},

	// Counter for holding the number of active queries
	active: 0,

	// Determines if an XMLHttpRequest was successful or not
	httpSuccess: function( xhr ) {
		try {
			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
			return !xhr.status && location.protocol == "file:" ||
				( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
		} catch(e){}
		return false;
	},

	// Determines if an XMLHttpRequest returns NotModified
	httpNotModified: function( xhr, url ) {
		try {
			var xhrRes = xhr.getResponseHeader("Last-Modified");

			// Firefox always returns 200. check Last-Modified date
			return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
		} catch(e){}
		return false;
	},

	httpData: function( xhr, type, s ) {
		var ct = xhr.getResponseHeader("content-type"),
			xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
			data = xml ? xhr.responseXML : xhr.responseText;

		if ( xml && data.documentElement.tagName == "parsererror" )
			throw "parsererror";
			
		// Allow a pre-filtering function to sanitize the response
		// s != null is checked to keep backwards compatibility
		if( s && s.dataFilter )
			data = s.dataFilter( data, type );

		// The filter can actually parse the response
		if( typeof data === "string" ){

			// If the type is "script", eval it in global context
			if ( type == "script" )
				jQuery.globalEval( data );

			// Get the JavaScript object, if JSON is used.
			if ( type == "json" )
				data = window["eval"]("(" + data + ")");
		}
		
		return data;
	},

	// Serialize an array of form elements or a set of
	// key/values into a query string
	param: function( a ) {
		var s = [ ];

		function add( key, value ){
			s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
		};

		// If an array was passed in, assume that it is an array
		// of form elements
		if ( jQuery.isArray(a) || a.jquery )
			// Serialize the form elements
			jQuery.each( a, function(){
				add( this.name, this.value );
			});

		// Otherwise, assume that it's an object of key/value pairs
		else
			// Serialize the key/values
			for ( var j in a )
				// If the value is an array then the key names need to be repeated
				if ( jQuery.isArray(a[j]) )
					jQuery.each( a[j], function(){
						add( j, this );
					});
				else
					add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );

		// Return the resulting serialization
		return s.join("&").replace(/%20/g, "+");
	}

});
var elemdisplay = {},
	timerId,
	fxAttrs = [
		// height animations
		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
		// width animations
		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
		// opacity animations
		[ "opacity" ]
	];

function genFx( type, num ){
	var obj = {};
	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
		obj[ this ] = type;
	});
	return obj;
}

jQuery.fn.extend({
	show: function(speed,callback){
		if ( speed ) {
			return this.animate( genFx("show", 3), speed, callback);
		} else {
			for ( var i = 0, l = this.length; i < l; i++ ){
				var old = jQuery.data(this[i], "olddisplay");
				
				this[i].style.display = old || "";
				
				if ( jQuery.css(this[i], "display") === "none" ) {
					var tagName = this[i].tagName, display;
					
					if ( elemdisplay[ tagName ] ) {
						display = elemdisplay[ tagName ];
					} else {
						var elem = jQuery("<" + tagName + " />").appendTo("body");
						
						display = elem.css("display");
						if ( display === "none" )
							display = "block";
						
						elem.remove();
						
						elemdisplay[ tagName ] = display;
					}
					
					jQuery.data(this[i], "olddisplay", display);
				}
			}

			// Set the display of the elements in a second loop
			// to avoid the constant reflow
			for ( var i = 0, l = this.length; i < l; i++ ){
				this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
			}
			
			return this;
		}
	},

	hide: function(speed,callback){
		if ( speed ) {
			return this.animate( genFx("hide", 3), speed, callback);
		} else {
			for ( var i = 0, l = this.length; i < l; i++ ){
				var old = jQuery.data(this[i], "olddisplay");
				if ( !old && old !== "none" )
					jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
			}

			// Set the display of the elements in a second loop
			// to avoid the constant reflow
			for ( var i = 0, l = this.length; i < l; i++ ){
				this[i].style.display = "none";
			}

			return this;
		}
	},

	// Save the old toggle function
	_toggle: jQuery.fn.toggle,

	toggle: function( fn, fn2 ){
		var bool = typeof fn === "boolean";

		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
			this._toggle.apply( this, arguments ) :
			fn == null || bool ?
				this.each(function(){
					var state = bool ? fn : jQuery(this).is(":hidden");
					jQuery(this)[ state ? "show" : "hide" ]();
				}) :
				this.animate(genFx("toggle", 3), fn, fn2);
	},

	fadeTo: function(speed,to,callback){
		return this.animate({opacity: to}, speed, callback);
	},

	animate: function( prop, speed, easing, callback ) {
		var optall = jQuery.speed(speed, easing, callback);

		return this[ optall.queue === false ? "each" : "queue" ](function(){
		
			var opt = jQuery.extend({}, optall), p,
				hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
				self = this;
	
			for ( p in prop ) {
				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
					return opt.complete.call(this);

				if ( ( p == "height" || p == "width" ) && this.style ) {
					// Store display property
					opt.display = jQuery.css(this, "display");

					// Make sure that nothing sneaks out
					opt.overflow = this.style.overflow;
				}
			}

			if ( opt.overflow != null )
				this.style.overflow = "hidden";

			opt.curAnim = jQuery.extend({}, prop);

			jQuery.each( prop, function(name, val){
				var e = new jQuery.fx( self, opt, name );

				if ( /toggle|show|hide/.test(val) )
					e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
				else {
					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
						start = e.cur(true) || 0;

					if ( parts ) {
						var end = parseFloat(parts[2]),
							unit = parts[3] || "px";

						// We need to compute starting value
						if ( unit != "px" ) {
							self.style[ name ] = (end || 1) + unit;
							start = ((end || 1) / e.cur(true)) * start;
							self.style[ name ] = start + unit;
						}

						// If a +=/-= token was provided, we're doing a relative animation
						if ( parts[1] )
							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;

						e.custom( start, end, unit );
					} else
						e.custom( start, val, "" );
				}
			});

			// For JS strict compliance
			return true;
		});
	},

	stop: function(clearQueue, gotoEnd){
		var timers = jQuery.timers;

		if (clearQueue)
			this.queue([]);

		this.each(function(){
			// go in reverse order so anything added to the queue during the loop is ignored
			for ( var i = timers.length - 1; i >= 0; i-- )
				if ( timers[i].elem == this ) {
					if (gotoEnd)
						// force the next step to be the last
						timers[i](true);
					timers.splice(i, 1);
				}
		});

		// start the next in the queue if the last step wasn't forced
		if (!gotoEnd)
			this.dequeue();

		return this;
	}

});

// Generate shortcuts for custom animations
jQuery.each({
	slideDown: genFx("show", 1),
	slideUp: genFx("hide", 1),
	slideToggle: genFx("toggle", 1),
	fadeIn: { opacity: "show" },
	fadeOut: { opacity: "hide" }
}, function( name, props ){
	jQuery.fn[ name ] = function( speed, callback ){
		return this.animate( props, speed, callback );
	};
});

jQuery.extend({

	speed: function(speed, easing, fn) {
		var opt = typeof speed === "object" ? speed : {
			complete: fn || !fn && easing ||
				jQuery.isFunction( speed ) && speed,
			duration: speed,
			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
		};

		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
			jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;

		// Queueing
		opt.old = opt.complete;
		opt.complete = function(){
			if ( opt.queue !== false )
				jQuery(this).dequeue();
			if ( jQuery.isFunction( opt.old ) )
				opt.old.call( this );
		};

		return opt;
	},

	easing: {
		linear: function( p, n, firstNum, diff ) {
			return firstNum + diff * p;
		},
		swing: function( p, n, firstNum, diff ) {
			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
		}
	},

	timers: [],

	fx: function( elem, options, prop ){
		this.options = options;
		this.elem = elem;
		this.prop = prop;

		if ( !options.orig )
			options.orig = {};
	}

});

jQuery.fx.prototype = {

	// Simple function for setting a style value
	update: function(){
		if ( this.options.step )
			this.options.step.call( this.elem, this.now, this );

		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );

		// Set display property to block for height/width animations
		if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
			this.elem.style.display = "block";
	},

	// Get the current size
	cur: function(force){
		if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
			return this.elem[ this.prop ];

		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
	},

	// Start an animation from one number to another
	custom: function(from, to, unit){
		this.startTime = now();
		this.start = from;
		this.end = to;
		this.unit = unit || this.unit || "px";
		this.now = this.start;
		this.pos = this.state = 0;

		var self = this;
		function t(gotoEnd){
			return self.step(gotoEnd);
		}

		t.elem = this.elem;

		if ( t() && jQuery.timers.push(t) && !timerId ) {
			timerId = setInterval(function(){
				var timers = jQuery.timers;

				for ( var i = 0; i < timers.length; i++ )
					if ( !timers[i]() )
						timers.splice(i--, 1);

				if ( !timers.length ) {
					clearInterval( timerId );
					timerId = undefined;
				}
			}, 13);
		}
	},

	// Simple 'show' function
	show: function(){
		// Remember where we started, so that we can go back to it later
		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
		this.options.show = true;

		// Begin the animation
		// Make sure that we start at a small width/height to avoid any
		// flash of content
		this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());

		// Start by showing the element
		jQuery(this.elem).show();
	},

	// Simple 'hide' function
	hide: function(){
		// Remember where we started, so that we can go back to it later
		this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
		this.options.hide = true;

		// Begin the animation
		this.custom(this.cur(), 0);
	},

	// Each step of an animation
	step: function(gotoEnd){
		var t = now();

		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
			this.now = this.end;
			this.pos = this.state = 1;
			this.update();

			this.options.curAnim[ this.prop ] = true;

			var done = true;
			for ( var i in this.options.curAnim )
				if ( this.options.curAnim[i] !== true )
					done = false;

			if ( done ) {
				if ( this.options.display != null ) {
					// Reset the overflow
					this.elem.style.overflow = this.options.overflow;

					// Reset the display
					this.elem.style.display = this.options.display;
					if ( jQuery.css(this.elem, "display") == "none" )
						this.elem.style.display = "block";
				}

				// Hide the element if the "hide" operation was done
				if ( this.options.hide )
					jQuery(this.elem).hide();

				// Reset the properties, if the item has been hidden or shown
				if ( this.options.hide || this.options.show )
					for ( var p in this.options.curAnim )
						jQuery.attr(this.elem.style, p, this.options.orig[p]);
					
				// Execute the complete function
				this.options.complete.call( this.elem );
			}

			return false;
		} else {
			var n = t - this.startTime;
			this.state = n / this.options.duration;

			// Perform the easing function, defaults to swing
			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
			this.now = this.start + ((this.end - this.start) * this.pos);

			// Perform the next step of the animation
			this.update();
		}

		return true;
	}

};

jQuery.extend( jQuery.fx, {
	speeds:{
		slow: 600,
 		fast: 200,
 		// Default speed
 		_default: 400
	},
	step: {

		opacity: function(fx){
			jQuery.attr(fx.elem.style, "opacity", fx.now);
		},

		_default: function(fx){
			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
			else
				fx.elem[ fx.prop ] = fx.now;
		}
	}
});
if ( document.documentElement["getBoundingClientRect"] )
	jQuery.fn.offset = function() {
    // Bugfix http://bugs.jquery.com/ticket/5418: added -> '|| !this[0].ownerDocument'
		if ( !this[0] || !this[0].ownerDocument ) return { top: 0, left: 0 };
		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
		var box  = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
			clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
			top  = box.top  + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
			left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
		return { top: top, left: left };
	};
else 
	jQuery.fn.offset = function() {
    // Bugfix http://bugs.jquery.com/ticket/5418: added -> '|| !this[0].ownerDocument'
		if ( !this[0] || !this[0].ownerDocument ) return { top: 0, left: 0 };
		if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
		jQuery.offset.initialized || jQuery.offset.initialize();

		var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
			doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
			body = doc.body, defaultView = doc.defaultView,
			prevComputedStyle = defaultView.getComputedStyle(elem, null),
			top = elem.offsetTop, left = elem.offsetLeft;

		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
			computedStyle = defaultView.getComputedStyle(elem, null);
			top -= elem.scrollTop, left -= elem.scrollLeft;
			if ( elem === offsetParent ) {
				top += elem.offsetTop, left += elem.offsetLeft;
				if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
					top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
					left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
				prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
			}
			if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
				top  += parseInt( computedStyle.borderTopWidth,  10) || 0,
				left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
			prevComputedStyle = computedStyle;
		}

		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
			top  += body.offsetTop,
			left += body.offsetLeft;

		if ( prevComputedStyle.position === "fixed" )
			top  += Math.max(docElem.scrollTop, body.scrollTop),
			left += Math.max(docElem.scrollLeft, body.scrollLeft);

		return { top: top, left: left };
	};

jQuery.offset = {
	initialize: function() {
		if ( this.initialized ) return;
		var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
			html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';

		rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
		for ( prop in rules ) container.style[prop] = rules[prop];

		container.innerHTML = html;
		body.insertBefore(container, body.firstChild);
		innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;

		this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
		this.doesAddBorderForTableAndCells = (td.offsetTop === 5);

		innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
		this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);

		body.style.marginTop = '1px';
		this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
		body.style.marginTop = bodyMarginTop;

		body.removeChild(container);
		this.initialized = true;
	},

	bodyOffset: function(body) {
		jQuery.offset.initialized || jQuery.offset.initialize();
		var top = body.offsetTop, left = body.offsetLeft;
		if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
			top  += parseInt( jQuery.curCSS(body, 'marginTop',  true), 10 ) || 0,
			left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
		return { top: top, left: left };
	}
};


jQuery.fn.extend({
	position: function() {
		var left = 0, top = 0, results;

		if ( this[0] ) {
			// Get *real* offsetParent
			var offsetParent = this.offsetParent(),

			// Get correct offsets
			offset       = this.offset(),
			parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();

			// Subtract element margins
			// note: when an element has margin: auto the offsetLeft and marginLeft 
			// are the same in Safari causing offset.left to incorrectly be 0
			offset.top  -= num( this, 'marginTop'  );
			offset.left -= num( this, 'marginLeft' );

			// Add offsetParent borders
			parentOffset.top  += num( offsetParent, 'borderTopWidth'  );
			parentOffset.left += num( offsetParent, 'borderLeftWidth' );

			// Subtract the two offsets
			results = {
				top:  offset.top  - parentOffset.top,
				left: offset.left - parentOffset.left
			};
		}

		return results;
	},

	offsetParent: function() {
		var offsetParent = this[0].offsetParent || document.body;
		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
			offsetParent = offsetParent.offsetParent;
		return jQuery(offsetParent);
	}
});


// Create scrollLeft and scrollTop methods
jQuery.each( ['Left', 'Top'], function(i, name) {
	var method = 'scroll' + name;
	
	jQuery.fn[ method ] = function(val) {
		if (!this[0]) return null;

		return val !== undefined ?

			// Set the scroll offset
			this.each(function() {
				this == window || this == document ?
					window.scrollTo(
						!i ? val : jQuery(window).scrollLeft(),
						 i ? val : jQuery(window).scrollTop()
					) :
					this[ method ] = val;
			}) :

			// Return the scroll offset
			this[0] == window || this[0] == document ?
				self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
					jQuery.boxModel && document.documentElement[ method ] ||
					document.body[ method ] :
				this[0][ method ];
	};
});
// Create innerHeight, innerWidth, outerHeight and outerWidth methods
jQuery.each([ "Height", "Width" ], function(i, name){

	var tl = i ? "Left"  : "Top",  // top or left
		br = i ? "Right" : "Bottom", // bottom or right
		lower = name.toLowerCase();

	// innerHeight and innerWidth
	jQuery.fn["inner" + name] = function(){
		return this[0] ?
			jQuery.css( this[0], lower, false, "padding" ) :
			null;
	};

	// outerHeight and outerWidth
	jQuery.fn["outer" + name] = function(margin) {
		return this[0] ?
			jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
			null;
	};
	
	var type = name.toLowerCase();

	jQuery.fn[ type ] = function( size ) {
		// Get window width or height
		return this[0] == window ?
			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
			document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
			document.body[ "client" + name ] :

			// Get document width or height
			this[0] == document ?
				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
				Math.max(
					document.documentElement["client" + name],
					document.body["scroll" + name], document.documentElement["scroll" + name],
					document.body["offset" + name], document.documentElement["offset" + name]
				) :

				// Get or set width or height on the element
				size === undefined ?
					// Get width or height on the element
					(this.length ? jQuery.css( this[0], type ) : null) :

					// Set the width or height on the element (default to pixels if value is unitless)
					this.css( type, typeof size === "string" ? size : size + "px" );
	};

});
})();

}catch(e){console.log('Error in jquery-1.3.2: ' + e.description);}

// ---- m_url_fix ----
try{ function MiniUrlFix(){

	this.urlConfig =
		[
		 {
			 urlPattern: /^\/_common\/.*/gi,
			 depth: 0
		 },
		 {
			 urlPattern: /^\/_data\/.*/gi,
			 depth: 1
		 },
		 {
			 urlPattern: /^\/_imagepool\/.*/gi,
			 depth: 1
		 }
		 ];

	this.defaultDepth = 2;
	this.isMultiLanguageNSC = false;

	function getStages(){
		var maxDepth = 2;

		var p = window.location.pathname;

		var stages = [];

		var start = 0;
		var end = start;
		for(var i = 0; i <= maxDepth; ++i){
			end = p.indexOf('/', end + 1);

			var s = p.slice(start, end);
			stages.push(s);
			console.log('URL fix stage ' + i + ' is ' + s);
		}

		return stages;
	}

	this.isPreview = (window.location.hostname === 'wcms20.bmwgroup.com');

	if(this.isPreview){
		this.stages = getStages();
		this.fixedUrlPattern = '^(' + this.stages[0] + ')|(/liveEdit/)';
		this.ieUrlClipPattern =
			window.location.protocol + '//'
			+ window.location.host;
		this.bgImageUrlPattern = /url[(]['"](.*)["'][)]/;

		console.log('MINI URL fix is required');
	}
	else{
		console.log('MINI URL fix is not required');
	}

	/**
	 * Determines wether the specified URL requires URL fixing.
	 */
	this._isUrlFixRequired = function(url){
		return ((url !== null)
			&& (url.length !== 0)
			&& (url.charAt(0) === '/')
			&& (url.match(miniUrlFix.fixedUrlPattern) === null));
	};

	this._normalizeUrl = function(url){
		if(url === null) return null;

		var newUrl = url.replace(miniUrlFix.ieUrlClipPattern, '');

		return newUrl;
	};
	// Returns the language prefix if this is a multi language NSC
	this.getLanguagePrefix = function(){
		var langPrefix = '';
		if(miniUrlFix.isMultiLanguageNSC && typeof topicLanguage !== 'undefined')
			langPrefix = '/'+topicLanguage;
			
		return langPrefix;
	};

	this._fixAbsoluteUrl = function(url){
		
		if (url.indexOf("/mini-root-reserved/") == 0){  // starts with "/mini-root-reserved/" 
			url = url.substring("/mini-root-reserved/".length-1);
		}
		
		var depth = miniUrlFix.defaultDepth;
		for(var i = 0; i < miniUrlFix.urlConfig.length; ++i){
			var c = miniUrlFix.urlConfig[i];

			if(!url.match(c.urlPattern)) continue;

			depth = c.depth;

			break;
		}

		var newUrl = miniUrlFix.stages[depth] + url;

		return newUrl;
	};

	/**
	 * <p>Convertes an absolute URL into a environment specific absolute
	 * URL.</p>
	 *
	 * <p>
	 * URLs in the WCMS EDIT preview will be modified as followed:
	 * <ul>
	 * <li>/my/path.png -> /mini2010_edit/_master/en/my/path.png</li>
	 * <li>/_common/my/path.png -> /mini2010_edit/_common/my/path.png</li>
	 * </ul>
	 * </p>
	 * 
	 * <p>URLs in the BMW production and BMW integration environment will
	 * not be modified.</p>
	 */
	this.fixAbsoluteUrl = function(url){
		if(!miniUrlFix.isPreview){
			return url;
		}

		if (url.indexOf("/mini-root-reserved/") == 0){  // starts with "/mini-root-reserved/" 
			url = url.substring("/mini-root-reserved/".length-1);
		}
			
		url = miniUrlFix._normalizeUrl(url);

		if(!miniUrlFix._isUrlFixRequired(url)) return url;

		return miniUrlFix._fixAbsoluteUrl(url);
	};

	this._fixUrlAttribute = function(e, attrName){
		var url = e.getAttribute(attrName);

		url = miniUrlFix._normalizeUrl(url);

		if(!miniUrlFix._isUrlFixRequired(url)) return;

		var newUrl = miniUrlFix._fixAbsoluteUrl(url);

		e.setAttribute(attrName, newUrl, 0);
	};

	this.fixUrlAttribute = function(e, attrName){
		if(!miniUrlFix.isPreview){
			return;
		}

		miniUrlFix._fixUrlAttribute(e, attrName);
	};

	this._fixBackgroundImageStyle = function(element){
		var e = jQuery(element);

		var bgUrl = e.css('background-image');
		if(bgUrl === null) return;

		var m = bgUrl.match(miniUrlFix.bgImageUrlPattern);
		if(!m){
			console.log('Can\'t match BG image URL: ' + bgUrl);
			return;
		}

		var url = miniUrlFix._normalizeUrl(m[1]);

		if(!miniUrlFix._isUrlFixRequired(url)) return;

		var newUrl = miniUrlFix._fixAbsoluteUrl(url);

		console.log('BG image ' + url + ' -> ' + newUrl);

		e.css('background-image', 'url("' + newUrl + '")');
	};

	this.fixBackgroundImageStyle = function(e){
		if(!miniUrlFix.isPreview){
			return;
		}

		miniUrlFix._fixBackgroundImageStyle(e);
	};

	this.doPartialFix = function(selector){
		if(!miniUrlFix.isPreview){
			return;
		}

		var aElements = jQuery(selector + ' a');
		//console.log('Applying URL fix to ' + aElements.length + ' anchors');
		aElements.each(function(e){
				miniUrlFix.fixUrlAttribute(this, 'href');
			});

		var imgElements = jQuery(selector + ' img');
		//console.log('Applying URL fix to ' + imgElements.length + ' images');
		imgElements.each(function(e){
				miniUrlFix.fixUrlAttribute(this, 'src');
			});

		var urlFixElements = jQuery(selector + ' .url_fix');
		//console.log('Applying URL fix to ' + urlFixElements.length + ' url fix classes');
		urlFixElements.each(function(e){
				miniUrlFix.fixBackgroundImageStyle(this);
			});
	};

	this.doGlobalFix = function(){
		miniUrlFix.doPartialFix('');
	};
}

miniUrlFix = new MiniUrlFix();

jQuery(document).ready(function(){
		// Update model navigation big image
		var src = miniUrlFix.getLanguagePrefix() + $('#model_selection_toggler>img').attr('src');
		$('#model_selection_toggler>img').attr('src', src);
		
		// Update module navigation big image
		src = miniUrlFix.getLanguagePrefix() + $('#module_navigation_toggler>img').attr('src');
		$('#module_navigation_toggler>img').attr('src', src);

		miniUrlFix.doGlobalFix();		
});

}catch(e){console.log('Error in m_url_fix: ' + e.description);}

// ---- jquery.cookie ----
try{ /**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};


}catch(e){console.log('Error in jquery.cookie: ' + e.description);}

// ---- jquery.cycle.lite.1.0 ----
try{ /*
 * jQuery Cycle Lite Plugin
 * http://malsup.com/jquery/cycle/lite/
 * Copyright (c) 2008 M. Alsup
 * Version: 1.0 (06/08/2008)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.3 or later
 */
;(function($) {

var ver = 'Lite-1.0';

$.fn.cycle = function(options) {
    return this.each(function() {
        options = options || {};
        
        if (this.cycleTimeout) clearTimeout(this.cycleTimeout);
        this.cycleTimeout = 0;
        this.cyclePause = 0;
        
        var $cont = $(this);
        var $slides = options.slideExpr ? $(options.slideExpr, this) : $cont.children();
        var els = $slides.get();
        if (els.length < 2) {
            if (window.console && window.console.log)
                window.console.log('terminating; too few slides: ' + els.length);
            return; // don't bother
        }

        // support metadata plugin (v1.0 and v2.0)
        var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
            
        opts.before = opts.before ? [opts.before] : [];
        opts.after = opts.after ? [opts.after] : [];
        opts.after.unshift(function(){ opts.busy=0; });
            
        // allow shorthand overrides of width, height and timeout
        var cls = this.className;
        opts.width = parseInt((cls.match(/w:(\d+)/)||[])[1]) || opts.width;
        opts.height = parseInt((cls.match(/h:(\d+)/)||[])[1]) || opts.height;
        opts.timeout = parseInt((cls.match(/t:(\d+)/)||[])[1]) || opts.timeout;

        if ($cont.css('position') == 'static') 
            $cont.css('position', 'relative');
        if (opts.width) 
            $cont.width(opts.width);
        if (opts.height && opts.height != 'auto') 
            $cont.height(opts.height);

        var first = 0;
        $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) { 
            $(this).css('z-index', els.length-i) 
        });
        
        $(els[first]).css('opacity',1).show(); // opacity bit needed to handle reinit case
        if ($.browser.msie) els[first].style.removeAttribute('filter');

        if (opts.fit && opts.width) 
            $slides.width(opts.width);
        if (opts.fit && opts.height && opts.height != 'auto') 
            $slides.height(opts.height);
        if (opts.pause) 
            $cont.hover(function(){this.cyclePause=1;}, function(){this.cyclePause=0;});

        $.fn.cycle.transitions.fade($cont, $slides, opts);
        
        $slides.each(function() {
            var $el = $(this);
            this.cycleH = (opts.fit && opts.height) ? opts.height : $el.height();
            this.cycleW = (opts.fit && opts.width) ? opts.width : $el.width();
        });

        $slides.not(':eq('+first+')').css({opacity:0});
        if (opts.cssFirst)
            $($slides[first]).css(opts.cssFirst);

        if (opts.timeout) {
            // ensure that timeout and speed settings are sane
            if (opts.speed.constructor == String)
                opts.speed = {slow: 600, fast: 200}[opts.speed] || 400;
            if (!opts.sync)
                opts.speed = opts.speed / 2;
            while((opts.timeout - opts.speed) < 250)
                opts.timeout += opts.speed;
        }
        opts.speedIn = opts.speed;
        opts.speedOut = opts.speed;

 		opts.slideCount = els.length;
        opts.currSlide = first;
        opts.nextSlide = 1;

        // fire artificial events
        var e0 = $slides[first];
        if (opts.before.length)
            opts.before[0].apply(e0, [e0, e0, opts, true]);
        if (opts.after.length > 1)
            opts.after[1].apply(e0, [e0, e0, opts, true]);
        
        if (opts.click && !opts.next)
            opts.next = opts.click;
        if (opts.next)
            $(opts.next).bind('click', function(){return advance(els,opts,opts.rev?-1:1)});
        if (opts.prev)
            $(opts.prev).bind('click', function(){return advance(els,opts,opts.rev?1:-1)});

        if (opts.timeout)
            this.cycleTimeout = setTimeout(function() {
                go(els,opts,0,!opts.rev)
            }, opts.timeout + (opts.delay||0));
    });
};

function go(els, opts, manual, fwd) {
    if (opts.busy) return;
    var p = els[0].parentNode, curr = els[opts.currSlide], next = els[opts.nextSlide];
    if (p.cycleTimeout === 0 && !manual) 
        return;

    if (manual || !p.cyclePause) {
        if (opts.before.length)
            $.each(opts.before, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
        var after = function() {
            if ($.browser.msie)
                this.style.removeAttribute('filter');
            $.each(opts.after, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
        };

        if (opts.nextSlide != opts.currSlide) {
            opts.busy = 1;
            $.fn.cycle.custom(curr, next, opts, after);
        }
        var roll = (opts.nextSlide + 1) == els.length;
        opts.nextSlide = roll ? 0 : opts.nextSlide+1;
        opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
    }
    if (opts.timeout)
        p.cycleTimeout = setTimeout(function() { go(els,opts,0,!opts.rev) }, opts.timeout);
};

// advance slide forward or back
function advance(els, opts, val) {
    var p = els[0].parentNode, timeout = p.cycleTimeout;
    if (timeout) {
        clearTimeout(timeout);
        p.cycleTimeout = 0;
    }
    opts.nextSlide = opts.currSlide + val;
    if (opts.nextSlide < 0) {
        opts.nextSlide = els.length - 1;
    }
    else if (opts.nextSlide >= els.length) {
        opts.nextSlide = 0;
    }
    go(els, opts, 1, val>=0);
    return false;
};

$.fn.cycle.custom = function(curr, next, opts, cb) {
    var $l = $(curr), $n = $(next);
    $n.css({opacity:0});
    var fn = function() {$n.animate({opacity:1}, opts.speedIn, opts.easeIn, cb)};
    $l.animate({opacity:0}, opts.speedOut, opts.easeOut, function() {
        $l.css({display:'none'});
        if (!opts.sync) fn();
    });
    if (opts.sync) fn();
};

$.fn.cycle.transitions = {
    fade: function($cont, $slides, opts) {
        $slides.not(':eq(0)').css('opacity',0);
        opts.before.push(function() { $(this).show() });
    }
};

$.fn.cycle.ver = function() { return ver; };

// @see: http://malsup.com/jquery/cycle/lite/
$.fn.cycle.defaults = {
    timeout:       4000, 
    speed:         1000, 
    next:          null, 
    prev:          null, 
    before:        null, 
    after:         null, 
    height:       'auto',
    sync:          1,    
    fit:           0,    
    pause:         0,    
    delay:         0,    
    slideExpr:     null  
};

})(jQuery);

}catch(e){console.log('Error in jquery.cycle.lite.1.0: ' + e.description);}

// ---- jquery.jsonp-2.1.4-min ----
try{ // jquery.jsonp 2.1.4 (c)2010 Julian Aubourg | MIT License
// http://code.google.com/p/jquery-jsonp/
(function(e,b){function d(){}function t(C){c=[C]}function m(C){f.insertBefore(C,f.firstChild)}function l(E,C,D){return E&&E.apply(C.context||C,D)}function k(C){return/\?/.test(C)?"&":"?"}var n="async",s="charset",q="",A="error",r="_jqjsp",w="on",o=w+"click",p=w+A,a=w+"load",i=w+"readystatechange",z="removeChild",g="<script/>",v="success",y="timeout",x=e.browser,f=e("head")[0]||document.documentElement,u={},j=0,c,h={callback:r,url:location.href};function B(C){C=e.extend({},h,C);var Q=C.complete,E=C.dataFilter,M=C.callbackParameter,R=C.callback,G=C.cache,J=C.pageCache,I=C.charset,D=C.url,L=C.data,P=C.timeout,O,K=0,H=d;C.abort=function(){!K++&&H()};if(l(C.beforeSend,C,[C])===false||K){return C}D=D||q;L=L?((typeof L)=="string"?L:e.param(L,C.traditional)):q;D+=L?(k(D)+L):q;M&&(D+=k(D)+encodeURIComponent(M)+"=?");!G&&!J&&(D+=k(D)+"_"+(new Date()).getTime()+"=");D=D.replace(/=\?(&|$)/,"="+R+"$1");function N(S){!K++&&b(function(){H();J&&(u[D]={s:[S]});E&&(S=E.apply(C,[S]));l(C.success,C,[S,v]);l(Q,C,[C,v])},0)}function F(S){!K++&&b(function(){H();J&&S!=y&&(u[D]=S);l(C.error,C,[C,S]);l(Q,C,[C,S])},0)}J&&(O=u[D])?(O.s?N(O.s[0]):F(O)):b(function(T,S,U){if(!K){U=P>0&&b(function(){F(y)},P);H=function(){U&&clearTimeout(U);T[i]=T[o]=T[a]=T[p]=null;f[z](T);S&&f[z](S)};window[R]=t;T=e(g)[0];T.id=r+j++;if(I){T[s]=I}function V(W){(T[o]||d)();W=c;c=undefined;W?N(W[0]):F(A)}if(x.msie){T.event=o;T.htmlFor=T.id;T[i]=function(){/loaded|complete/.test(T.readyState)&&V()}}else{T[p]=T[a]=V;x.opera?((S=e(g)[0]).text="jQuery('#"+T.id+"')[0]."+p+"()"):T[n]=n}T.src=D;m(T);S&&m(S)}},0);return C}B.setup=function(C){e.extend(h,C)};e.jsonp=B})(jQuery,setTimeout);
}catch(e){console.log('Error in jquery.jsonp-2.1.4-min: ' + e.description);}

// ---- customInput.jquery ----
try{ /*-------------------------------------------------------------------- 
 * jQuery plugin: customInput()
 * by Maggie Wachs and Scott Jehl, http://www.filamentgroup.com
 * Copyright (c) 2009 Filament Group
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 * Article: http://www.filamentgroup.com/lab/accessible_custom_designed_checkbox_radio_button_inputs_styled_css_jquery/  
 * Usage example below (see comment "Run the script...").
--------------------------------------------------------------------*/


jQuery.fn.customInput = function(){
	$(this).each(function(i){	
		if($(this).is('[type=checkbox],[type=radio]')){
			var input = $(this);
			
			// get the associated label using the input's id
			var label = $('label[for='+input.attr('id')+']');
			
			if(label.length==0){
				// Append label if not existing
				label = $('<label/>').attr('for', input.attr('id')).insertAfter(input);
			}
			
			//get type, for classname suffix 
			var inputType = (input.is('[type=checkbox]')) ? 'checkbox' : 'radio';
			
			// wrap the input + label in a div 
			$('<div class="custom-'+ inputType +'"></div>').insertBefore(input).append(input, label);
			
			// find all inputs in this set using the shared name attribute
			var allInputs = $('input[name='+input.attr('name')+']');
			
			// necessary for browsers that don't support the :hover pseudo class on labels
			/* NJUNANG - DISABLE HOVER - NOT NEEDED
			label.hover(
				function(){ 
					$(this).addClass('hover'); 
					if(inputType == 'checkbox' && input.is(':checked')){ 
						$(this).addClass('checkedHover'); 
					} 
				},
				function(){ $(this).removeClass('hover checkedHover'); }
			);
			*/
			
			//bind custom event, trigger it, bind click,focus,blur events					
			input.bind('updateState', function(){
				if (input.is(':checked')) {
					if (input.is(':radio')) {				
						allInputs.each(function(){
							$('label[for='+$(this).attr('id')+']').removeClass('checked');
						});		
					};
					label.addClass('checked');
				}
				else { label.removeClass('checked'); }
										
			})
			.trigger('updateState')
			.click(function(){ 
				$(this).trigger('updateState');
			});
			
			
			
			/*
			.focus(function(){ 
				label.addClass('focus'); 
				if(inputType == 'checkbox' && input.is(':checked')){ 
					$(this).addClass('checkedFocus'); 
				} 
			})
			.blur(function(){ label.removeClass('focus checkedFocus'); });
			*/
			
			// Set input width and height to 0
			input.css({width:0, height:0, opacity:0});
			
		}
	});
};

	
	

}catch(e){console.log('Error in customInput.jquery: ' + e.description);}

// ---- jquery.dimensions ----
try{ /* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-12-20 08:46:55 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4259 $
 *
 * Version: 1.2
 *
 * Requires: jQuery 1.2+
 */

(function($){
	
$.dimensions = {
	version: '1.2'
};

// Create innerHeight, innerWidth, outerHeight and outerWidth methods
$.each( [ 'Height', 'Width' ], function(i, name){
	
	// innerHeight and innerWidth
	$.fn[ 'inner' + name ] = function() {
		if (!this[0]) return;
		
		var torl = name == 'Height' ? 'Top'    : 'Left',  // top or left
		    borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right
		
		return this.is(':visible') ? this[0]['client' + name] : num( this, name.toLowerCase() ) + num(this, 'padding' + torl) + num(this, 'padding' + borr);
	};
	
	// outerHeight and outerWidth
	$.fn[ 'outer' + name ] = function(options) {
		if (!this[0]) return;
		
		var torl = name == 'Height' ? 'Top'    : 'Left',  // top or left
		    borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right
		
		options = $.extend({ margin: false }, options || {});
		
		var val = this.is(':visible') ? 
				this[0]['offset' + name] : 
				num( this, name.toLowerCase() )
					+ num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width')
					+ num(this, 'padding' + torl) + num(this, 'padding' + borr);
		
		return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0);
	};
});

// Create scrollLeft and scrollTop methods
$.each( ['Left', 'Top'], function(i, name) {
	$.fn[ 'scroll' + name ] = function(val) {
		if (!this[0]) return;
		
		return val != undefined ?
		
			// Set the scroll offset
			this.each(function() {
				this == window || this == document ?
					window.scrollTo( 
						name == 'Left' ? val : $(window)[ 'scrollLeft' ](),
						name == 'Top'  ? val : $(window)[ 'scrollTop'  ]()
					) :
					this[ 'scroll' + name ] = val;
			}) :
			
			// Return the scroll offset
			this[0] == window || this[0] == document ?
				self[ (name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] ||
					$.boxModel && document.documentElement[ 'scroll' + name ] ||
					document.body[ 'scroll' + name ] :
				this[0][ 'scroll' + name ];
	};
});

$.fn.extend({
	position: function() {
		var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results;
		
		if (elem) {
			// Get *real* offsetParent
			offsetParent = this.offsetParent();
			
			// Get correct offsets
			offset       = this.offset();
			parentOffset = offsetParent.offset();
			
			// Subtract element margins
			offset.top  -= num(elem, 'marginTop');
			offset.left -= num(elem, 'marginLeft');
			
			// Add offsetParent borders
			parentOffset.top  += num(offsetParent, 'borderTopWidth');
			parentOffset.left += num(offsetParent, 'borderLeftWidth');
			
			// Subtract the two offsets
			results = {
				top:  offset.top  - parentOffset.top,
				left: offset.left - parentOffset.left
			};
		}
		
		return results;
	},
	
	offsetParent: function() {
		var offsetParent = this[0].offsetParent;
		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static') )
			offsetParent = offsetParent.offsetParent;
		return $(offsetParent);
	}
});

function num(el, prop) {
	return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};

})(jQuery);
}catch(e){console.log('Error in jquery.dimensions: ' + e.description);}

// ---- ui.core ----
try{ /*
 * jQuery UI 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
;jQuery.ui || (function($) {

var _remove = $.fn.remove,
	isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);

//Helper functions and ui object
$.ui = {
	version: "1.7.2",

	// $.ui.plugin is deprecated.  Use the proxy pattern instead.
	plugin: {
		add: function(module, option, set) {
			var proto = $.ui[module].prototype;
			for(var i in set) {
				proto.plugins[i] = proto.plugins[i] || [];
				proto.plugins[i].push([option, set[i]]);
			}
		},
		call: function(instance, name, args) {
			var set = instance.plugins[name];
			if(!set || !instance.element[0].parentNode) { return; }

			for (var i = 0; i < set.length; i++) {
				if (instance.options[set[i][0]]) {
					set[i][1].apply(instance.element, args);
				}
			}
		}
	},

	contains: function(a, b) {
		return document.compareDocumentPosition
			? a.compareDocumentPosition(b) & 16
			: a !== b && a.contains(b);
	},

	hasScroll: function(el, a) {

		//If overflow is hidden, the element might have extra content, but the user wants to hide it
		if ($(el).css('overflow') == 'hidden') { return false; }

		var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
			has = false;

		if (el[scroll] > 0) { return true; }

		// TODO: determine which cases actually cause this to happen
		// if the element doesn't have the scroll set, see if it's possible to
		// set the scroll
		el[scroll] = 1;
		has = (el[scroll] > 0);
		el[scroll] = 0;
		return has;
	},

	isOverAxis: function(x, reference, size) {
		//Determines when x coordinate is over "b" element axis
		return (x > reference) && (x < (reference + size));
	},

	isOver: function(y, x, top, left, height, width) {
		//Determines when x, y coordinates is over "b" element
		return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
	},

	keyCode: {
		BACKSPACE: 8,
		CAPS_LOCK: 20,
		COMMA: 188,
		CONTROL: 17,
		DELETE: 46,
		DOWN: 40,
		END: 35,
		ENTER: 13,
		ESCAPE: 27,
		HOME: 36,
		INSERT: 45,
		LEFT: 37,
		NUMPAD_ADD: 107,
		NUMPAD_DECIMAL: 110,
		NUMPAD_DIVIDE: 111,
		NUMPAD_ENTER: 108,
		NUMPAD_MULTIPLY: 106,
		NUMPAD_SUBTRACT: 109,
		PAGE_DOWN: 34,
		PAGE_UP: 33,
		PERIOD: 190,
		RIGHT: 39,
		SHIFT: 16,
		SPACE: 32,
		TAB: 9,
		UP: 38
	}
};

// WAI-ARIA normalization
if (isFF2) {
	var attr = $.attr,
		removeAttr = $.fn.removeAttr,
		ariaNS = "http://www.w3.org/2005/07/aaa",
		ariaState = /^aria-/,
		ariaRole = /^wairole:/;

	$.attr = function(elem, name, value) {
		var set = value !== undefined;

		return (name == 'role'
			? (set
				? attr.call(this, elem, name, "wairole:" + value)
				: (attr.apply(this, arguments) || "").replace(ariaRole, ""))
			: (ariaState.test(name)
				? (set
					? elem.setAttributeNS(ariaNS,
						name.replace(ariaState, "aaa:"), value)
					: attr.call(this, elem, name.replace(ariaState, "aaa:")))
				: attr.apply(this, arguments)));
	};

	$.fn.removeAttr = function(name) {
		return (ariaState.test(name)
			? this.each(function() {
				this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
			}) : removeAttr.call(this, name));
	};
}

//jQuery plugins
$.fn.extend({
	remove: function() {
		// Safari has a native remove event which actually removes DOM elements,
		// so we have to use triggerHandler instead of trigger (#3037).
		$("*", this).add(this).each(function() {
			$(this).triggerHandler("remove");
		});
		return _remove.apply(this, arguments );
	},

	enableSelection: function() {
		return this
			.attr('unselectable', 'off')
			.css('MozUserSelect', '')
			.unbind('selectstart.ui');
	},

	disableSelection: function() {
		return this
			.attr('unselectable', 'on')
			.css('MozUserSelect', 'none')
			.bind('selectstart.ui', function() { return false; });
	},

	scrollParent: function() {
		var scrollParent;
		if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
			scrollParent = this.parents().filter(function() {
				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		} else {
			scrollParent = this.parents().filter(function() {
				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
			}).eq(0);
		}

		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
	}
});


//Additional selectors
$.extend($.expr[':'], {
	data: function(elem, i, match) {
		return !!$.data(elem, match[3]);
	},

	focusable: function(element) {
		var nodeName = element.nodeName.toLowerCase(),
			tabIndex = $.attr(element, 'tabindex');
		return (/input|select|textarea|button|object/.test(nodeName)
			? !element.disabled
			: 'a' == nodeName || 'area' == nodeName
				? element.href || !isNaN(tabIndex)
				: !isNaN(tabIndex))
			// the element and all of its ancestors must be visible
			// the browser may report that the area is hidden
			&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
	},

	tabbable: function(element) {
		var tabIndex = $.attr(element, 'tabindex');
		return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
	}
});


// $.widget is a factory to create jQuery plugins
// taking some boilerplate code out of the plugin code
function getter(namespace, plugin, method, args) {
	function getMethods(type) {
		var methods = $[namespace][plugin][type] || [];
		return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
	}

	var methods = getMethods('getter');
	if (args.length == 1 && typeof args[0] == 'string') {
		methods = methods.concat(getMethods('getterSetter'));
	}
	return ($.inArray(method, methods) != -1);
}

$.widget = function(name, prototype) {
	var namespace = name.split(".")[0];
	name = name.split(".")[1];

	// create plugin method
	$.fn[name] = function(options) {
		var isMethodCall = (typeof options == 'string'),
			args = Array.prototype.slice.call(arguments, 1);

		// prevent calls to internal methods
		if (isMethodCall && options.substring(0, 1) == '_') {
			return this;
		}

		// handle getter methods
		if (isMethodCall && getter(namespace, name, options, args)) {
			var instance = $.data(this[0], name);
			return (instance ? instance[options].apply(instance, args)
				: undefined);
		}

		// handle initialization and non-getter methods
		return this.each(function() {
			var instance = $.data(this, name);

			// constructor
			(!instance && !isMethodCall &&
				$.data(this, name, new $[namespace][name](this, options))._init());

			// method call
			(instance && isMethodCall && $.isFunction(instance[options]) &&
				instance[options].apply(instance, args));
		});
	};

	// create widget constructor
	$[namespace] = $[namespace] || {};
	$[namespace][name] = function(element, options) {
		var self = this;

		this.namespace = namespace;
		this.widgetName = name;
		this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
		this.widgetBaseClass = namespace + '-' + name;

		this.options = $.extend({},
			$.widget.defaults,
			$[namespace][name].defaults,
			$.metadata && $.metadata.get(element)[name],
			options);

		this.element = $(element)
			.bind('setData.' + name, function(event, key, value) {
				if (event.target == element) {
					return self._setData(key, value);
				}
			})
			.bind('getData.' + name, function(event, key) {
				if (event.target == element) {
					return self._getData(key);
				}
			})
			.bind('remove', function() {
				return self.destroy();
			});
	};

	// add widget prototype
	$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);

	// TODO: merge getter and getterSetter properties from widget prototype
	// and plugin prototype
	$[namespace][name].getterSetter = 'option';
};

$.widget.prototype = {
	_init: function() {},
	destroy: function() {
		this.element.removeData(this.widgetName)
			.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')
			.removeAttr('aria-disabled');
	},

	option: function(key, value) {
		var options = key,
			self = this;

		if (typeof key == "string") {
			if (value === undefined) {
				return this._getData(key);
			}
			options = {};
			options[key] = value;
		}

		$.each(options, function(key, value) {
			self._setData(key, value);
		});
	},
	_getData: function(key) {
		return this.options[key];
	},
	_setData: function(key, value) {
		this.options[key] = value;

		if (key == 'disabled') {
			this.element
				[value ? 'addClass' : 'removeClass'](
					this.widgetBaseClass + '-disabled' + ' ' +
					this.namespace + '-state-disabled')
				.attr("aria-disabled", value);
		}
	},

	enable: function() {
		this._setData('disabled', false);
	},
	disable: function() {
		this._setData('disabled', true);
	},

	_trigger: function(type, event, data) {
		var callback = this.options[type],
			eventName = (type == this.widgetEventPrefix
				? type : this.widgetEventPrefix + type);

		event = $.Event(event);
		event.type = eventName;

		// copy original event properties over to the new event
		// this would happen if we could call $.event.fix instead of $.Event
		// but we don't have a way to force an event to be fixed multiple times
		if (event.originalEvent) {
			for (var i = $.event.props.length, prop; i;) {
				prop = $.event.props[--i];
				event[prop] = event.originalEvent[prop];
			}
		}

		this.element.trigger(event, data);

		return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
			|| event.isDefaultPrevented());
	}
};

$.widget.defaults = {
	disabled: false
};


/** Mouse Interaction Plugin **/

$.ui.mouse = {
	_mouseInit: function() {
		var self = this;

		this.element
			.bind('mousedown.'+this.widgetName, function(event) {
				return self._mouseDown(event);
			})
			.bind('click.'+this.widgetName, function(event) {
				if(self._preventClickEvent) {
					self._preventClickEvent = false;
					event.stopImmediatePropagation();
					return false;
				}
			});

		// Prevent text selection in IE
		if ($.browser.msie) {
			this._mouseUnselectable = this.element.attr('unselectable');
			this.element.attr('unselectable', 'on');
		}

		this.started = false;
	},

	// TODO: make sure destroying one instance of mouse doesn't mess with
	// other instances of mouse
	_mouseDestroy: function() {
		this.element.unbind('.'+this.widgetName);

		// Restore text selection in IE
		($.browser.msie
			&& this.element.attr('unselectable', this._mouseUnselectable));
	},

	_mouseDown: function(event) {
		// don't let more than one widget handle mouseStart
		// TODO: figure out why we have to use originalEvent
		event.originalEvent = event.originalEvent || {};
		if (event.originalEvent.mouseHandled) { return; }

		// we may have missed mouseup (out of window)
		(this._mouseStarted && this._mouseUp(event));

		this._mouseDownEvent = event;

		var self = this,
			btnIsLeft = (event.which == 1),
			elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
			return true;
		}

		this.mouseDelayMet = !this.options.delay;
		if (!this.mouseDelayMet) {
			this._mouseDelayTimer = setTimeout(function() {
				self.mouseDelayMet = true;
			}, this.options.delay);
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted = (this._mouseStart(event) !== false);
			if (!this._mouseStarted) {
				event.preventDefault();
				return true;
			}
		}

		// these delegates are required to keep context
		this._mouseMoveDelegate = function(event) {
			return self._mouseMove(event);
		};
		this._mouseUpDelegate = function(event) {
			return self._mouseUp(event);
		};
		$(document)
			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		// preventDefault() is used to prevent the selection of text here -
		// however, in Safari, this causes select boxes not to be selectable
		// anymore, so this fix is needed
		($.browser.safari || event.preventDefault());

		event.originalEvent.mouseHandled = true;
		return true;
	},

	_mouseMove: function(event) {
		// IE mouseup check - mouseup happened when mouse was out of window
		if ($.browser.msie && !event.button) {
			return this._mouseUp(event);
		}

		if (this._mouseStarted) {
			this._mouseDrag(event);
			return event.preventDefault();
		}

		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
			this._mouseStarted =
				(this._mouseStart(this._mouseDownEvent, event) !== false);
			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
		}

		return !this._mouseStarted;
	},

	_mouseUp: function(event) {
		$(document)
			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);

		if (this._mouseStarted) {
			this._mouseStarted = false;
			this._preventClickEvent = (event.target == this._mouseDownEvent.target);
			this._mouseStop(event);
		}

		return false;
	},

	_mouseDistanceMet: function(event) {
		return (Math.max(
				Math.abs(this._mouseDownEvent.pageX - event.pageX),
				Math.abs(this._mouseDownEvent.pageY - event.pageY)
			) >= this.options.distance
		);
	},

	_mouseDelayMet: function(event) {
		return this.mouseDelayMet;
	},

	// These are placeholder methods, to be overriden by extending plugin
	_mouseStart: function(event) {},
	_mouseDrag: function(event) {},
	_mouseStop: function(event) {},
	_mouseCapture: function(event) { return true; }
};

$.ui.mouse.defaults = {
	cancel: null,
	distance: 1,
	delay: 0
};

})(jQuery);

}catch(e){console.log('Error in ui.core: ' + e.description);}

// ---- ui.slider ----
try{ /*
 * jQuery UI Slider 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI/Slider
 *
 * Depends:
 *	ui.core.js
 */

(function($) {

$.widget("ui.slider", $.extend({}, $.ui.mouse, {

	_init: function() {

		var self = this, o = this.options;
		this._keySliding = false;
		this._handleIndex = null;
		this._detectOrientation();
		this._mouseInit();

		this.element
			.addClass("ui-slider"
				+ " ui-slider-" + this.orientation
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all");

		this.range = $([]);

		if (o.range) {

			if (o.range === true) {
				this.range = $('<div></div>');
				if (!o.values) o.values = [this._valueMin(), this._valueMin()];
				if (o.values.length && o.values.length != 2) {
					o.values = [o.values[0], o.values[0]];
				}
			} else {
				this.range = $('<div></div>');
			}

			this.range
				.appendTo(this.element)
				.addClass("ui-slider-range");

			if (o.range == "min" || o.range == "max") {
				this.range.addClass("ui-slider-range-" + o.range);
			}

			// note: this isn't the most fittingly semantic framework class for this element,
			// but worked best visually with a variety of themes
			this.range.addClass("ui-widget-header");

		}

		if ($(".ui-slider-handle", this.element).length == 0)
			$('<a href="#"></a>')
				.appendTo(this.element)
				.addClass("ui-slider-handle");

		if (o.values && o.values.length) {
			while ($(".ui-slider-handle", this.element).length < o.values.length)
				$('<a href="#"></a>')
					.appendTo(this.element)
					.addClass("ui-slider-handle");
		}

		this.handles = $(".ui-slider-handle", this.element)
			.addClass("ui-state-default"
				+ " ui-corner-all");

		this.handle = this.handles.eq(0);

		this.handles.add(this.range).filter("a")
			.click(function(event) {
				event.preventDefault();
			})
			.hover(function() {
				if (!o.disabled) {
					$(this).addClass('ui-state-hover');
				}
			}, function() {
				$(this).removeClass('ui-state-hover');
			})
			.focus(function() {
				if (!o.disabled) {
					$(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus');
				} else {
					$(this).blur();
				}
			})
			.blur(function() {
				$(this).removeClass('ui-state-focus');
			});

		this.handles.each(function(i) {
			$(this).data("index.ui-slider-handle", i);
		});

		this.handles.keydown(function(event) {

			var ret = true;

			var index = $(this).data("index.ui-slider-handle");

			if (self.options.disabled)
				return;

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
				case $.ui.keyCode.END:
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					ret = false;
					if (!self._keySliding) {
						self._keySliding = true;
						$(this).addClass("ui-state-active");
						self._start(event, index);
					}
					break;
			}

			var curVal, newVal, step = self._step();
			if (self.options.values && self.options.values.length) {
				curVal = newVal = self.values(index);
			} else {
				curVal = newVal = self.value();
			}

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
					newVal = self._valueMin();
					break;
				case $.ui.keyCode.END:
					newVal = self._valueMax();
					break;
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
					if(curVal == self._valueMax()) return;
					newVal = curVal + step;
					break;
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					if(curVal == self._valueMin()) return;
					newVal = curVal - step;
					break;
			}

			self._slide(event, index, newVal);

			return ret;

		}).keyup(function(event) {

			var index = $(this).data("index.ui-slider-handle");

			if (self._keySliding) {
				self._stop(event, index);
				self._change(event, index);
				self._keySliding = false;
				$(this).removeClass("ui-state-active");
			}

		});

		this._refreshValue();

	},

	destroy: function() {

		this.handles.remove();
		this.range.remove();

		this.element
			.removeClass("ui-slider"
				+ " ui-slider-horizontal"
				+ " ui-slider-vertical"
				+ " ui-slider-disabled"
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all")
			.removeData("slider")
			.unbind(".slider");

		this._mouseDestroy();

	},

	_mouseCapture: function(event) {

		var o = this.options;

		if (o.disabled)
			return false;

		this.elementSize = {
			width: this.element.outerWidth(),
			height: this.element.outerHeight()
		};
		this.elementOffset = this.element.offset();

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);

		var distance = this._valueMax() - this._valueMin() + 1, closestHandle;
		var self = this, index;
		this.handles.each(function(i) {
			var thisDistance = Math.abs(normValue - self.values(i));
			if (distance > thisDistance) {
				distance = thisDistance;
				closestHandle = $(this);
				index = i;
			}
		});

		// workaround for bug #3736 (if both handles of a range are at 0,
		// the first is always used as the one with least distance,
		// and moving it is obviously prevented by preventing negative ranges)
		if(o.range == true && this.values(1) == o.min) {
			closestHandle = $(this.handles[++index]);
		}

		this._start(event, index);

		self._handleIndex = index;

		closestHandle
			.addClass("ui-state-active")
			.focus();
		
		var offset = closestHandle.offset();
		var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle');
		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
			left: event.pageX - offset.left - (closestHandle.width() / 2),
			top: event.pageY - offset.top
				- (closestHandle.height() / 2)
				- (parseInt(closestHandle.css('borderTopWidth'),10) || 0)
				- (parseInt(closestHandle.css('borderBottomWidth'),10) || 0)
				+ (parseInt(closestHandle.css('marginTop'),10) || 0)
		};

		normValue = this._normValueFromMouse(position);
		this._slide(event, index, normValue);
		return true;

	},

	_mouseStart: function(event) {
		return true;
	},

	_mouseDrag: function(event) {

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);
		
		this._slide(event, this._handleIndex, normValue);

		return false;

	},

	_mouseStop: function(event) {

		this.handles.removeClass("ui-state-active");
		this._stop(event, this._handleIndex);
		this._change(event, this._handleIndex);
		this._handleIndex = null;
		this._clickOffset = null;

		return false;

	},
	
	_detectOrientation: function() {
		this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal';
	},

	_normValueFromMouse: function(position) {

		var pixelTotal, pixelMouse;
		if ('horizontal' == this.orientation) {
			pixelTotal = this.elementSize.width;
			pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);
		} else {
			pixelTotal = this.elementSize.height;
			pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);
		}

		var percentMouse = (pixelMouse / pixelTotal);
		if (percentMouse > 1) percentMouse = 1;
		if (percentMouse < 0) percentMouse = 0;
		if ('vertical' == this.orientation)
			percentMouse = 1 - percentMouse;

		var valueTotal = this._valueMax() - this._valueMin(),
			valueMouse = percentMouse * valueTotal,
			valueMouseModStep = valueMouse % this.options.step,
			normValue = this._valueMin() + valueMouse - valueMouseModStep;

		if (valueMouseModStep > (this.options.step / 2))
			normValue += this.options.step;

		// Since JavaScript has problems with large floats, round
		// the final value to 5 digits after the decimal point (see #4124)
		return parseFloat(normValue.toFixed(5));

	},

	_start: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("start", event, uiHash);
	},

	_slide: function(event, index, newVal) {

		var handle = this.handles[index];

		if (this.options.values && this.options.values.length) {

			var otherVal = this.values(index ? 0 : 1);

			if ((this.options.values.length == 2 && this.options.range === true) && 
				((index == 0 && newVal > otherVal) || (index == 1 && newVal < otherVal))){
 				newVal = otherVal;
			}

			if (newVal != this.values(index)) {
				var newValues = this.values();
				newValues[index] = newVal;
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal,
					values: newValues
				});
				var otherVal = this.values(index ? 0 : 1);
				if (allowed !== false) {
					this.values(index, newVal, ( event.type == 'mousedown' && this.options.animate ), true);
				}
			}

		} else {

			if (newVal != this.value()) {
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal
				});
				if (allowed !== false) {
					this._setData('value', newVal, ( event.type == 'mousedown' && this.options.animate ));
				}
					
			}

		}

	},

	_stop: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("stop", event, uiHash);
	},

	_change: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index);
			uiHash.values = this.values();
		}
		this._trigger("change", event, uiHash);
	},

	value: function(newValue) {

		if (arguments.length) {
			this._setData("value", newValue);
			this._change(null, 0);
		}

		return this._value();

	},

	values: function(index, newValue, animated, noPropagation) {

		if (arguments.length > 1) {
			this.options.values[index] = newValue;
			this._refreshValue(animated);
			if(!noPropagation) this._change(null, index);
		}

		if (arguments.length) {
			if (this.options.values && this.options.values.length) {
				return this._values(index);
			} else {
				return this.value();
			}
		} else {
			return this._values();
		}

	},

	_setData: function(key, value, animated) {

		$.widget.prototype._setData.apply(this, arguments);

		switch (key) {
			case 'disabled':
				if (value) {
					this.handles.filter(".ui-state-focus").blur();
					this.handles.removeClass("ui-state-hover");
					this.handles.attr("disabled", "disabled");
				} else {
					this.handles.removeAttr("disabled");
				}
			case 'orientation':

				this._detectOrientation();
				
				this.element
					.removeClass("ui-slider-horizontal ui-slider-vertical")
					.addClass("ui-slider-" + this.orientation);
				this._refreshValue(animated);
				break;
			case 'value':
				this._refreshValue(animated);
				break;
		}

	},

	_step: function() {
		var step = this.options.step;
		return step;
	},

	_value: function() {

		var val = this.options.value;
		if (val < this._valueMin()) val = this._valueMin();
		if (val > this._valueMax()) val = this._valueMax();

		return val;

	},

	_values: function(index) {

		if (arguments.length) {
			var val = this.options.values[index];
			if (val < this._valueMin()) val = this._valueMin();
			if (val > this._valueMax()) val = this._valueMax();

			return val;
		} else {
			return this.options.values;
		}

	},

	_valueMin: function() {
		var valueMin = this.options.min;
		return valueMin;
	},

	_valueMax: function() {
		var valueMax = this.options.max;
		return valueMax;
	},

	_refreshValue: function(animate) {

		var oRange = this.options.range, o = this.options, self = this;

		if (this.options.values && this.options.values.length) {
			var vp0, vp1;
			this.handles.each(function(i, j) {
				var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100;
				var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
				$(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);
				if (self.options.range === true) {
					if (self.orientation == 'horizontal') {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					} else {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					}
				}
				lastValPercent = valPercent;
			});
		} else {
			var value = this.value(),
				valueMin = this._valueMin(),
				valueMax = this._valueMax(),
				valPercent = valueMax != valueMin
					? (value - valueMin) / (valueMax - valueMin) * 100
					: 0;
			var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
			this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);

			(oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
			(oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
		}

	}
	
}));

$.extend($.ui.slider, {
	getter: "value values",
	version: "1.7.2",
	eventPrefix: "slide",
	defaults: {
		animate: false,
		delay: 0,
		distance: 0,
		max: 100,
		min: 0,
		orientation: 'horizontal',
		range: false,
		step: 1,
		value: 0,
		values: null
	}
});

})(jQuery);

}catch(e){console.log('Error in ui.slider: ' + e.description);}

// ---- jquery.tooltip ----
try{ /*
 * jQuery Tooltip plugin 1.3
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
 * http://docs.jquery.com/Plugins/Tooltip
 *
 * Copyright (c) 2006 - 2008 JÃ¶rn Zaefferer
 *
 * $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
 
;(function($) {
	
		// the tooltip element
	var helper = {},
		// the current tooltipped element
		current,
		// the title of the current element, used for restoring
		title,
		// timeout id for delayed tooltips
		tID,
		// IE 5.5 or 6
		IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent),
		// flag for mouse tracking
		track = false;
	
	$.tooltip = {
		blocked: false,
		defaults: {
			delay: 200,
			fade: false,
			showURL: true,
			extraClass: "",
			top: 15,
			left: 15,
			id: "tooltip"
		},
		block: function() {
			$.tooltip.blocked = !$.tooltip.blocked;
		}
	};
	
	$.fn.extend({
		tooltip: function(settings) {
			settings = $.extend({}, $.tooltip.defaults, settings);
			createHelper(settings);
			return this.each(function() {
					$.data(this, "tooltip", settings);
					this.tOpacity = helper.parent.css("opacity");
					// copy tooltip into its own expando and remove the title
					this.tooltipText = this.title;
					$(this).removeAttr("title");
					// also remove alt attribute to prevent default tooltip in IE
					this.alt = "";
				})
				.mouseover(save)
				.mouseout(hide)
				.click(hide);
		},
		fixPNG: IE ? function() {
			return this.each(function () {
				var image = $(this).css('backgroundImage');
				if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
					image = RegExp.$1;
					$(this).css({
						'backgroundImage': 'none',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
					}).each(function () {
						var position = $(this).css('position');
						if (position != 'absolute' && position != 'relative')
							$(this).css('position', 'relative');
					});
				}
			});
		} : function() { return this; },
		unfixPNG: IE ? function() {
			return this.each(function () {
				$(this).css({'filter': '', backgroundImage: ''});
			});
		} : function() { return this; },
		hideWhenEmpty: function() {
			return this.each(function() {
				$(this)[ $(this).html() ? "show" : "hide" ]();
			});
		},
		url: function() {
			return this.attr('href') || this.attr('src');
		}
	});
	
	function createHelper(settings) {
		// there can be only one tooltip helper
		if( helper.parent )
			return;
		// create the helper, h3 for title, div for url
		helper.parent = $('<div id="' + settings.id + '"><h3></h3><div class="body"></div><div class="url"></div></div>')
			// add to document
			.appendTo(document.body)
			// hide it at first
			.hide();
			
		// apply bgiframe if available
		if ( $.fn.bgiframe )
			helper.parent.bgiframe();
		
		// save references to title and url elements
		helper.title = $('h3', helper.parent);
		helper.body = $('div.body', helper.parent);
		helper.url = $('div.url', helper.parent);
	}
	
	function settings(element) {
		return $.data(element, "tooltip");
	}
	
	// main event handler to start showing tooltips
	function handle(event) {
		// show helper, either with timeout or on instant
		if( settings(this).delay )
			tID = setTimeout(show, settings(this).delay);
		else
			show();
		
		// if selected, update the helper position when the mouse moves
		track = !!settings(this).track;
		$(document.body).bind('mousemove', update);
			
		// update at least once
		update(event);
	}
	
	// save elements title before the tooltip is displayed
	function save() {
		// if this is the current source, or it has no title (occurs with click event), stop
		if ( $.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler) )
			return;

		// save current
		current = this;
		title = this.tooltipText;
		
		if ( settings(this).bodyHandler ) {
			helper.title.hide();
			var bodyContent = settings(this).bodyHandler.call(this);
			if (bodyContent.nodeType || bodyContent.jquery) {
				helper.body.empty().append(bodyContent)
			} else {
				helper.body.html( bodyContent );
			}
			helper.body.show();
		} else if ( settings(this).showBody ) {
			var parts = title.split(settings(this).showBody);
			helper.title.html(parts.shift()).show();
			helper.body.empty();
			for(var i = 0, part; (part = parts[i]); i++) {
				if(i > 0)
					helper.body.append("<br/>");
				helper.body.append(part);
			}
			helper.body.hideWhenEmpty();
		} else {
			helper.title.html(title).show();
			helper.body.hide();
		}
		
		// if element has href or src, add and show it, otherwise hide it
		if( settings(this).showURL && $(this).url() )
			helper.url.html( $(this).url().replace('http://', '') ).show();
		else 
			helper.url.hide();
		
		// add an optional class for this tip
		helper.parent.addClass(settings(this).extraClass);

		// fix PNG background for IE
		if (settings(this).fixPNG )
			helper.parent.fixPNG();
			
		handle.apply(this, arguments);
	}
	
	// delete timeout and show helper
	function show() {
		tID = null;
		if ((!IE || !$.fn.bgiframe) && settings(current).fade) {
			if (helper.parent.is(":animated"))
				helper.parent.stop().show().fadeTo(settings(current).fade, current.tOpacity);
			else
				helper.parent.is(':visible') ? helper.parent.fadeTo(settings(current).fade, current.tOpacity) : helper.parent.fadeIn(settings(current).fade);
		} else {
			helper.parent.show();
		}
		update();
	}
	
	/**
	 * callback for mousemove
	 * updates the helper position
	 * removes itself when no current element
	 */
	function update(event)	{
		if($.tooltip.blocked)
			return;
		
		if (event && event.target.tagName == "OPTION") {
			return;
		}
		
		// stop updating when tracking is disabled and the tooltip is visible
		if ( !track && helper.parent.is(":visible")) {
			$(document.body).unbind('mousemove', update)
		}
		
		// if no current element is available, remove this listener
		if( current == null ) {
			$(document.body).unbind('mousemove', update);
			return;	
		}
		
		// remove position helper classes
		helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");
		
		var left = helper.parent[0].offsetLeft;
		var top = helper.parent[0].offsetTop;
		if (event) {
			// position the helper 15 pixel to bottom right, starting from mouse position
			left = event.pageX + settings(current).left;
			top = event.pageY + settings(current).top;
			var right='auto';
			if (settings(current).positionLeft) {
				right = $(window).width() - left;
				left = 'auto';
			}
			helper.parent.css({
				left: left,
				right: right,
				top: top
			});
		}
		
		var v = viewport(),
			h = helper.parent[0];
		// check horizontal position
		if (v.x + v.cx < h.offsetLeft + h.offsetWidth) {
			left -= h.offsetWidth + 20 + settings(current).left;
			helper.parent.css({left: left + 'px'}).addClass("viewport-right");
		}
		// check vertical position
		if (v.y + v.cy < h.offsetTop + h.offsetHeight) {
			top -= h.offsetHeight + 20 + settings(current).top;
			helper.parent.css({top: top + 'px'}).addClass("viewport-bottom");
		}
	}
	
	function viewport() {
		return {
			x: $(window).scrollLeft(),
			y: $(window).scrollTop(),
			cx: $(window).width(),
			cy: $(window).height()
		};
	}
	
	// hide helper and restore added classes and the title
	function hide(event) {
		if($.tooltip.blocked)
			return;
		// clear timeout if possible
		if(tID)
			clearTimeout(tID);
		// no more current element
		current = null;
		
		var tsettings = settings(this);
		function complete() {
			helper.parent.removeClass( tsettings.extraClass ).hide().css("opacity", "");
		}
		if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
			if (helper.parent.is(':animated'))
				helper.parent.stop().fadeTo(tsettings.fade, 0, complete);
			else
				helper.parent.stop().fadeOut(tsettings.fade, complete);
		} else
			complete();
		
		if( settings(this).fixPNG )
			helper.parent.unfixPNG();
	}
	
})(jQuery);

}catch(e){console.log('Error in jquery.tooltip: ' + e.description);}

// ---- jquery.combobox.patch.pack ----
try{ /*
 jquery.combobox
 version 0.1.2.7
 
 Copyright Â© 2007,2008 Minel Pather|Ahura Mazda|jquery.sanchezsalvador.com
 Dual licensed under MIT and GPL licences:
 * www.opensource.org/licenses/mit-license.php
 * www.gnu.org/licenses/gpl.html
 
 !!!!!!!!!!!!!!!!!!!!!! NOTICE !!!!!!!!!!!!!!!!!!!!!!
 This file has peen patched to match the mini requirements.
 1- background-position for drop down image on line 394 has been disabled and is done through css comboboxDropDownButtonClass
 2- @dataType has been replaced with dataType since it is no longer supported by jquery >= 1.3.2
 3- Dropdown elements have been position absolute (relative) to parent container to match the requirements from the mosaic component
 4- Implementation to close the dropdown when clicked outsided from it
 */
/*
 jquery.combobox
 version 0.1.2.7
 
 Copyright Â© 2007,2008 Minel Pather|Ahura Mazda|jquery.sanchezsalvador.com
 Dual licensed under MIT and GPL licences:
 * www.opensource.org/licenses/mit-license.php
 * www.gnu.org/licenses/gpl.html
 */
 var allReplacedBoxes = [];
 
 
jQuery.fn.combobox = function (U, V) {
	if(this.attr('data-cb_replaced') === '1')
		return;
		
    var W = this;
    this.combobox = new Function();
    var X = {
        comboboxContainerClass: null,
        comboboxValueContentContainerClass: null,
        comboboxValueContentClass: null,
        comboboxDropDownButtonClass: null,
        comboboxDropDownClass: null,
        comboboxDropDownItemClass: null,
        comboboxDropDownItemHoverClass: null,
        comboboxDropDownGroupItemHeaderClass: null,
        comboboxDropDownGroupItemContainerClass: null
    };
    var Y = {
        animationType: "slide",
        animationSpeed: "fast",
        width: 120
    };
    if (U) {
        jQuery.extend(X, U)
    }
    if (V) {
        jQuery.extend(Y, V)
    }
    this.combobox.onChange = null;

    function getInstance(a) {
        return a[0].internalCombobox
    }
    function makeRemoveFunction(a) {
        return function () {
            getInstance(a).remove()
        }
    }
	function makeClose(a) {
        return function () {
            getInstance(a).close()
        }
    }
    function makeUpdateFunction(a) {
        return function () {
            getInstance(a).update()
        }
    }
    function makeUpdateSelectionFunction(a) {
        return function () {
            getInstance(a).updateSelection()
        }
    }
    function makeAddRangeFunction(b) {
        return function (a) {
            getInstance(b).addRange(a)
        }
    }
    jQuery.fn.extend(this.combobox, {
        addRange: makeAddRangeFunction(W),
        remove: makeRemoveFunction(W),
        update: makeUpdateFunction(W),
        updateSelection: makeUpdateSelectionFunction(W),
		close: makeClose(W)
    });
    var result = this.each(function () {
        this.internalCombobox = new ComboboxClass(this);
        this.internalCombobox.initialise();

        function ComboboxClass(k) {
            var l = jQuery(k);
            var m = null;
            var n = "background-color:#fff;border-left: solid 2px #777;border-top: solid 2px #777;border-right: solid 1px #ccc;border-bottom: solid 1px #ccc;";
            var o = "padding:0;";
            var p = null;
            var q = "list-style-type:none;min-height:15px;padding-top:0;margin:0;overflow:auto";
            var r = "cursor:default;padding:2px;background:#fff;border-right:solid 1px #000;border-bottom:solid 1px #000;border-left:solid 1px #aaa;border-top:solid 1px #aaa;";
            var s = "display:block;";
            var t = "cursor:default;padding-left:2px;font-weight:normal;font-style:normal;";
            var u = "list-style-type:none;";
            var v = "padding-left:10px;margin-left:0;";
            var w = "";
            var x = "font-style:italic;font-weight:bold;";
            var y = 300;
            var z = null;
            var A = "position:relative;overflow:hidden;";
            var B = null;
            var C = "float:left;position:absolute;cursor:default;overflow:hidden;";
            var D = "padding-left:3px;";
            var E = null;
            var F = "overflow:hidden;width:16px;height:18px;color:#000;background:#D6D3CE;font-family:arial;font-size:8px;cursor:default;text-align:center;vertical-align:middle;";
            var G = "background-repeat:no-repeat;float:right;";
            var H = "padding-left:0px;padding-top:1px;width:12px;height:13px;border-right:solid 2px #404040;border-bottom:solid 2px #404040;border-left:solid 2px #f0f0f0;border-top:solid 2px #f0f0f0";
            var I = "padding-left:1px;padding-top:3px;width:12px;height:13px;border:solid 1px #808080";
            var J = "&#9660;";
            var K = null;
            var L = null;
            var M = null;
            var N = false;
            var O = 0;
            var P = null;
            var Q = 0;
            var R = null;
            var S = null;
            var T = null;
            String.format = function () {
                var a = null;
                if (arguments.length != 0) {
                    a = arguments[0];
                    for (var b = 1; b < arguments.length; b++) {
                        var c = new RegExp('\\{' + (b - 1) + '\\}', 'gm');
                        a = a.replace(c, arguments[b])
                    }
                }
                return a
            };

            function getPixelValue(a) {
                var b = null;
                if (a) {
                    if (a.substr(-2, 2) == "px") {
                        b = a.substr(0, (a.length - 2))
                    }
                }
                return b
            }
            function setInnerWidth(a, b) {
                var c = (a.outerWidth() - a.width());
                a.width(b - c)
            }
            function setInnerHeight(a, b) {
                var c = (a.outerHeight() - a.height());
                a.height(b - c)
            }
            function applyMultipleStyles(a, b) {
                var c = b.split(";");
                if (c.length > 0) {
                    for (var d = 0; d < c.length; d++) {
                        var e = c[d];
                        var f = e.split(":");
                        a.css(f[0], f[1])
                    }
                }
            }
            function getImageDimension(a) {
                var b = new Object();
                b.width = 0;
                b.height = 0;
                sizingImageJQuery = jQuery("<img style='border:none;margin:0;padding:0;'></img>");
                sizingImageJQuery.attr("src", a);
                m.append(sizingImageJQuery);
                b.width = sizingImageJQuery.width();
                b.height = sizingImageJQuery.height();
                sizingImageJQuery.remove();
                return b
            }
            function calculateIndividualImageDimension(a) {
                var b = null;
                var c = a.css("background-image");
                c = c.replace("url(", "", "gi");
                c = c.replace('"', '', "gi");
                c = c.replace('\"', '', "gi");
                c = c.replace(")", "", "gi");
                if (c != "none") {
                    b = getImageDimension(c)
                }
                return b
            }
            function calculateImageDimensions() {
                R = calculateIndividualImageDimension(E);
                S = calculateIndividualImageDimension(z)
            }
            function setValueContentContainerState(a) {
                if (X.comboboxValueContentContainerClass) {
                    if (S != null) {
                        var b = z.height();
                        var c = (a * b);
                        if (S.height > c) {
                            var d = String.format("0px -{0}px", c);
                            z.css("background-position", d)
                        }
                    }
                }
            }
            function setDropDownButtonState(a) {
                if (X.comboboxDropDownButtonClass) {
                    if (R != null) {
                        var b = E.width();
                        var c = (a * b);
                        if (R.width > c) {
                            var d = String.format("-{0}px 0px", c)
                        }
                    }
                } else {
                    var e = H;
                    if (a == 1) {
                        e = I
                    }
                    applyMultipleStyles(E, e)
                }
            }
            function setControlVisualState(a) {
                setValueContentContainerState(a);
                setDropDownButtonState(a)
            }
            function buildValueContent() {
                var a = "";
                if (X.comboboxValueContentContainerClass) {
                    a = String.format("<div class='{0}' style='{1}'></div>", X.comboboxValueContentContainerClass, A)
                } else {
                    a = String.format("<div style='{0}'></div>", A)
                }
                var b = "";
                if (X.comboboxValueContentClass) {
                    b = String.format("<div class='{0}' style='{1}'></div>", X.comboboxValueContentClass, C)
                } else {
                    b = String.format("<div style='{0}'></div>", C + D)
                }
                var c = "";
                if (X.comboboxDropDownButtonClass) {
                    c = String.format("<div class='{1}' style='{0}'></div>", G, X.comboboxDropDownButtonClass)
                } else {
                    c = String.format("<div style='{0}'>{1}</div>", (G + F), J)
                }
                B = jQuery(b);
                E = jQuery(c);
                z = jQuery(a);
                z.appendTo(m);
                B.appendTo(z);
                E.appendTo(z);
                //calculateImageDimensions(); //auskommentiert von m.pfaehler am 9.12.2010, da dies im IE das 1 item remaining dropdown_icon.png verursacht hat
                T = getPixelValue(B.css("max-height"));
                setControlVisualState(0)
            }
            function buildDropDownItem(a) {
                var b = "";
                var c = null;
                var d = "";
                var e = "";
                var f = null;
                var g = "";
                var h = "option";
                var i = a[0];
                if (i.title) {
                    if (i.title != "") {
                        e = i.title
                    }
                }
                if (a.is('option')) {
                    if (i.dataText) {
                        d = i.dataText
                    } else {
                        d = a.text()
                    }
                    f = a.val();
                    if (X.comboboxDropDownItemClass) {
                        c = X.comboboxDropDownItemClass;
                        g = s
                    } else {
                        g = (s + t)
                    }
                    if (c) {
                        b = String.format("<li style='{0}' class='{1}'>{2}</li>", g, c, d)
                    } else {
                        b = String.format("<li style='{0}'>{1}</li>", g, d)
                    }
                } else {
                    if (a[0].dataText) {
                        d = a[0].dataText
                    } else {
                        d = a.attr('label')
                    }
                    f = a.attr('class');
                    h = "optgroup";
                    if (X.comboboxDropDownGroupItemHeaderClass) {
                        c = X.comboboxDropDownGroupItemHeaderClass;
                        g = w
                    } else {
                        g = (w + x)
                    }
                    if (c) {
                        b = String.format("<li><span style='{0}' class='{1}'>{2}</span></li>", g, c, d)
                    } else {
                        b = String.format("<li><span style='{0}'>{1}</span></li>", g, d)
                    }
                }
                var j = jQuery(b);
                j.css("display", "inline");
                j[0].dataText = d;
                j[0].dataValue = f;
                j[0].dataType = h;
                if (e == "") {
                    e = d
                }
                j[0].title = e;
                return j
            }
            function recursivelyBuildList(g, h) {
                h.each(function () {
                    var a = jQuery(this);
                    var b = buildDropDownItem(a);
                    g.append(b);
                    var c = b.offset().left;
                    c -= P.left;
                    if (c < 0) {
                        c = 0
                    }
                    var d = (c + b.outerWidth());
                    if (d > O) {
                        O = d
                    }
                    applyMultipleStyles(b, s);
                    if (a.is('optgroup')) {
                        var e = "";
                        if (X.comboboxDropDownGroupItemContainerClass) {
                            e = String.format("<ul style='{0}' class='{1}'></ul>", u, X.comboboxDropDownGroupItemContainerClass)
                        } else {
                            e = String.format("<ul style='{0}'></ul>", (u + v))
                        }
                        var f = jQuery(e);
                        b.append(f);
                        recursivelyBuildList(f, a.children())
                    }
                })
            }
            function buildDropDownList() {
                var a = l.children();
                K = null;
                M = null;
                if (p) {
                    p.empty()
                } else {
                    var b = "";
                    if (X.comboboxDropDownClass) {
                        b = String.format("<ul class='{0}' style='{1}'></ul>", X.comboboxDropDownClass, q)
                    } else {
                        b = String.format("<ul style='{0}'></ul>", (q + r))
                    }
                    p = jQuery(b);
                    p.appendTo(m);
                    p.attr("tabIndex", 0)
                }
                if (a.length > 0) {
                    O = 0;
                    P = p.offset();
                    recursivelyBuildList(p, a)
                }
                var c = getPixelValue(p.css("max-height"));
                if (c) {
                    y = c
                }
                var d = p.height();
                if (d > y) {
                    p.height(y)
                }
                Q = p.height()
            }
            function updateDropDownListWidth() {
                var a = m.outerWidth();
                if (a < O) {
                    a = O
                }
                p.width(a)
            }
			
            function positionDisplayValue() {
                B.height("auto");
                var a = B.outerHeight();
                var b = z.height();
                
                /** NOTE: The following if-branch was removed by m.pfaehler as it caused bug #1285 (opera drop downs)
                  * The if statement is also not present within the current jquery combobox implementation 0.1.2 alpha 
                  * therefore the removal should not cause any harm.
                  *
                if (T) {
                    if (T < a) {
                        a = T;
                        B.height(a)
                    }
                }
                */
                var c = ((b - a) / 2);
                if (c < 0) {
                    c = 0
                }
                B.css("top", c)
            }
            function applyLayout() {
                m.width(Y.width);
                var a = m.width();
                setInnerWidth(z, a);
                var b = (z.width() - E.outerWidth());
                setInnerWidth(B, b);
                var c = E.outerHeight();
                setInnerHeight(z, c);
                p.css("position", "absolute");
                p.css("z-index", "20000");
                updateDropDownListWidth();
                var d = p.offset().left;
                var e = (d - (m.outerWidth() - m.width()));
                p.css("left", p.parent().position().left + 1);
                p.hide()
            }
            function setContentDisplay() {
                var a = false;
                var b = l[0];
                var c;
                if (b.length > 0) {
                    var d = jQuery("li[dataValue='" + l.val() + "']", p);
                    B.html(d[0].dataText);
                    B.attr("title", d[0].title);
                    positionDisplayValue();
                    if (M) {
                        if (M != l.val()) {
                            a = true
                        }
                    }
                    M = l.val();
                    if (a) {
                        if (W.combobox.onChange) {
                            W.combobox.onChange()
                        }
                    }
                    if (K) {
                        toggleItemHighlight(K, false)
                    }
                    K = d;
                    toggleItemHighlight(K, true)
                }
            }
            function scrollDropDownListItemIntoView(a) {
                if (a) {
                    if (Q >= y) {
                        var b = a.offset();
                        if ((b.top > Q) || (b.top <= a.outerHeight())) {
                            a[0].scrollIntoView()
                        }
                    }
                }
            }
            function toggleItemHighlight(a, b) {
                if (a) {
                    if (X.comboboxDropDownItemHoverClass) {
                        if (b) {
                            a.addClass(X.comboboxDropDownItemHoverClass)
                        } else {
                            a.removeClass(X.comboboxDropDownItemHoverClass)
                        }
                    } else {
                        if (b) {
                            a.css("background", "#000");
                            a.css("color", "#fff")
                        } else {
                            a.css("background", "");
                            a.css("color", "")
                        }
                    }
                }
            }
            function buildContainer() {
                var a = "";
                if (X.comboboxContainerClass) {
                    a = String.format("<div class='{0}' style='{1}'></div>", X.comboboxContainerClass, o)
                } else {
                    a = String.format("<div style='{0}' style='{1}'></div>", n, o)
                }
                m = jQuery(a);
                l.before(m);
                m.append(l);
                l.hide();
                m.attr("tabIndex", 0)
            }
            this.initialise = function () {
                buildContainer();
                buildValueContent();
                buildDropDownList();
                applyLayout();
                bindEvents();
                setContentDisplay()
            };
			
			this.close = function() {
				toggleDropDownList(false);
			}

            function postDropDownListShown() {
                p.focus();
                scrollDropDownListItemIntoView(K)
            }
            function setAndBindContainerFocus() {
                m.focus();
                bindContainerClickEvent()
            }
            function slideUp(a) {
                p.animate({
                    height: "toggle",
                    top: a
                }, Y.animationSpeed, postDropDownListShown)
            }
            function slideDown(a) {
                p.animate({
                    height: "toggle",
                    opacity: "toggle",
                    top: a
                }, Y.animationSpeed, setAndBindContainerFocus)
            }
            function slideToggle(a) {
                p.animate({
                    height: "toggle",
                    opacity: "toggle"
                }, Y.animationSpeed, a)
            }
            function getDropDownListTop() {
                var a = m.position().top;
                var b = p.outerHeight();
                var c = (a + m.outerHeight());
                var d = jQuery(window).scrollTop();
                var e = jQuery(window).height();
                var f = (e - (c - d));
                var g;
                g = c;
                N = false;
                if (f < b) {
                    if ((a - d) > b) {
                        g = (a - b);
                        N = true
                    }
                }
                return g
            }
            function toggleDropDownList(a) {
                if (a) {
                    if (p.is(":hidden")) {
                        unbindContainerClickEvent();
                        toggleItemHighlight(L, false);
                        toggleItemHighlight(K, true);
                        setControlVisualState(1);
                        var b = getDropDownListTop();
                        ("top", b);
                        p.css("left", p.parent().position().left);
                        switch (Y.animationType) {
                        case "slide":
                            if (N) {
                                var c = m.position().top;
                                var d = m.outerHeight();
                                p.css("top", (c - d));
                                slideUp(b)
                            } else {
                                slideToggle(postDropDownListShown)
                            }
                            break;
                        case "fade":
                        	if (typeof(hideComboBox) !== "undefined" && hideComboBox) {
								//terrible hack for mini challenge ticketing
								$("#ticketBooking").css({visibility: "hidden"});
								$(".contact_headline").css({visibility: "hidden"});
							}
                            p.fadeIn(Y.animationSpeed, postDropDownListShown);
                            break;
                        default:
                            p.show(1, postDropDownListShown)
                        }
                    }
                } else {
                    if (p.is(":visible")) {
                        setControlVisualState(0);
                        switch (Y.animationType) {
                        case "slide":
                            if (N) {
                                c = m.position().top;
                                dropdownListHeight = p.height();
                                slideDown(c - m.outerHeight())
                            } else {
                                slideToggle(setAndBindContainerFocus)
                            }
                            break;
                        case "fade":
                            if (typeof(hideComboBox) !== "undefined" && hideComboBox) {
								$("#ticketBooking").css({visibility: "visible"});
								$(".contact_headline").css({visibility: "visible"});
							}
                            p.fadeOut(Y.animationSpeed, setAndBindContainerFocus);
                            break;
                        default:
                            p.hide();
                            setAndBindContainerFocus()
                        }
                    }
                }
            }
            function setOriginalSelectItem(a, b) {
                var c = l[0];
                if (b == null) {
                    c.selectedIndex = a
                } else {
                    c.value = b
                }
                
				setContentDisplay()
				
				if (c.onchange) {
                    c.onchange()
                }
            }
            function selectValue(a) {
                var b = l[0];
                var c = b.selectedIndex;
                var d = -1;
                var e = b.length - 1;
                switch (a) {
                case ":next":
                    d = c + 1;
                    if (d > e) {
                        d = e
                    }
                    break;
                case ":previous":
                    d = c - 1;
                    if (d < 0) {
                        d = 0
                    }
                    break;
                case ":first":
                    d = 0;
                    break;
                case ":last":
                    d = e;
                    break
                }
                setOriginalSelectItem(d, null);
                scrollDropDownListItemIntoView(K)
            }
            function isDropDownVisible() {
                return p.is(":visible")
            }
            function bindItemEvents() {
                jQuery("li", p).not("ul").not("span").not("[dataType='optgroup']").each(function () {
                    var b = jQuery(this);
                    b.click(function (a) {
                        a.stopPropagation();
                        dropdownList_onItemClick(b)
                    });
                    b.mouseover(function () {
                        dropdownList_onItemMouseOver(b)
                    });
                    b.mouseout(function () {
                        dropdownList_onItemMouseOut(b)
                    })
                })
            }
            function bindBlurEvent() {
                p.blur(function (a) {
                    a.stopPropagation();
                    dropdownList_onBlur()
                })
            }
            function bindContainerClickEvent() {
                m.click(function () {
                    container_onClick()
                })
            }
            function unbindContainerClickEvent() {
                m.unbind("click")
            }
            function bindEvents() {
                m.keydown(function (a) {
                    a.preventDefault();
                    container_onKeyDown(a)
                });
                bindContainerClickEvent();
                bindBlurEvent();
                bindItemEvents()
            }
            function container_onClick() {
                if (p.is(":hidden")) {
                    toggleDropDownList(true)
                } else {
                    toggleDropDownList(false)
                }
            }
            function dropdownList_onBlur() {
                if (p.is(":visible")) {
                    toggleDropDownList(false)
                }
            }
            function dropdownList_onItemClick(a) {
                setOriginalSelectItem(null, a[0].dataValue);
                toggleDropDownList(false)
            }
            function dropdownList_onItemMouseOver(a) {
                toggleItemHighlight(K, false);
                toggleItemHighlight(L, false);
                toggleItemHighlight(a, true)
            }
            function dropdownList_onItemMouseOut(a) {
                L = a
            }
            function container_onKeyDown(a) {
                switch (a.which) {
                case 33:
                case 36:
                    selectValue(":first");
                    break;
                case 34:
                case 35:
                    selectValue(":last");
                    break;
                case 37:
                    selectValue(":previous");
                    break;
                case 38:
                    if (a.altKey) {
                        toggleDropDownList(!(isDropDownVisible()))
                    } else {
                        selectValue(":previous")
                    }
                    break;
                case 39:
                    selectValue(":next");
                    break;
                case 40:
                    if (a.altKey) {
                        toggleDropDownList(!(isDropDownVisible()))
                    } else {
                        selectValue(":next")
                    }
                    break;
                case 27:
                case 13:
                    toggleDropDownList(false);
                    break;
                case 9:
                    p.blur();
                    jQuery(window)[0].focus();
                    break
                }
            }
            this.updateSelection = function () {
                setContentDisplay()
            };
            this.update = function () {
                buildDropDownList();
                updateDropDownListWidth();
                bindItemEvents();
                setContentDisplay()
            };
            this.remove = function () {
                m.before(l);
                m.remove();
                l[0].internalCombobox = null;
                l.show()
            };
            this.addRange = function (a) {
                if (a) {
                    var b = l[0].options;
                    var c = b.length;
                    for (optionIndex in a) {
                        var d = a[optionIndex];
                        var e = document.createElement("option");
                        e.value = d.value;
                        e.text = d.text;
                        e.dataText = d.text;
                        if (d.title) {
                            e.title = d.title
                        }
                        b[c + optionIndex] = e
                    }
                    l.combobox.update()
                }
            }
        }
    });
	
	allReplacedBoxes.push(result);
	
	this.attr('data-cb_replaced','1');
	
	return result;
}
}catch(e){console.log('Error in jquery.combobox.patch.pack: ' + e.description);}

// ---- cufon-yui-patched ----
try{ /*!
 * Copyright (c) 2010 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version ${Version}
 * 
 * Patched 2010/02/26 to allow vertical alignment of text with different font sizes. 
 * - added new option parameters: leftOffset, topOffset to position the cufon canvas
 * Patched 2010/06/04 to allow line-height lower than 1.2em
 * - added fix for line-height lower than 1.2em
 */

var Cufon = (function() {

	var api = function() {
		return api.replace.apply(null, arguments);
	};

	var DOM = api.DOM = {

		ready: (function() {

			var complete = false, readyStatus = { loaded: 1, complete: 1 };

			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};

			// Gecko, Opera, WebKit r26101+

			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}

			// Old WebKit, Internet Explorer

			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();

			// Internet Explorer

			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();

			addEvent(window, 'load', perform); // Fallback

			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};

		})(),

		root: function() {
			return document.documentElement || document.body;
		}

	};

	var CSS = api.CSS = {

		Size: function(value, base) {

			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';

			this.convert = function(value) {
				return value / base * this.value;
			};

			this.convertFrom = function(value) {
				return value / this.value * base;
			};

			this.toString = function() {
				return this.value + this.unit;
			};

		},

		addClass: function(el, className) {
			var current = el.className;
			el.className = current + (current && ' ') + className;
			return el;
		},

		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),

		// has no direct CSS equivalent.
		// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx
		fontStretch: cached(function(value) {
			if (typeof value == 'number') return value;
			if (/%$/.test(value)) return parseFloat(value) / 100;
			return {
				'ultra-condensed': 0.5,
				'extra-condensed': 0.625,
				condensed: 0.75,
				'semi-condensed': 0.875,
				'semi-expanded': 1.125,
				expanded: 1.25,
				'extra-expanded': 1.5,
				'ultra-expanded': 2
			}[value] || 1;
		}),

		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},

		gradient: cached(function(value) {
			var gradient = {
				id: value,
				type: value.match(/^-([a-z]+)-gradient\(/)[1],
				stops: []
			}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for (var i = 0, l = colors.length, stop; i < l; ++i) {
				stop = colors[i].split('=', 2).reverse();
				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
			}
			return gradient;
		}),

		quotedList: cached(function(value) {
			// doesn't work properly with empty quoted strings (""), but
			// it's not worth the extra code.
			var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
			while (match = re.exec(value)) list.push(match[3] || match[1]);
			return list;
		}),

		recognizesMedia: cached(function(media) {
			var el = document.createElement('style'), sheet, container, supported;
			el.type = 'text/css';
			el.media = media;
			try { // this is cached anyway
				el.appendChild(document.createTextNode('/**/'));
			} catch (e) {}
			container = elementsByTagName('head')[0];
			container.insertBefore(el, container.firstChild);
			sheet = (el.sheet || el.styleSheet);
			supported = sheet && !sheet.disabled;
			container.removeChild(el);
			return supported;
		}),

		removeClass: function(el, className) {
			var re = RegExp('(?:^|\\s+)' + className +  '(?=\\s|$)', 'g');
			el.className = el.className.replace(re, '');
			return el;
		},

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},

		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},

		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {};
					offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),

		textTransform: (function() {
			var map = {
				uppercase: function(s) {
					return s.toUpperCase();
				},
				lowercase: function(s) {
					return s.toLowerCase();
				},
				capitalize: function(s) {
					return s.replace(/\b./g, function($0) {
						return $0.toUpperCase();
					});
				}
			};
			return function(text, style) {
				var transform = map[style.get('textTransform')];
				return transform ? transform(text) : text;
			};
		})(),

		whiteSpace: (function() {
			var ignore = {
				inline: 1,
				'inline-block': 1,
				'run-in': 1
			};
			var wsStart = /^\s+/, wsEnd = /\s+$/;
			return function(text, style, node, previousElement) {
				if (previousElement) {
					if (previousElement.nodeName.toLowerCase() == 'br') {
						text = text.replace(wsStart, '');
					}
				}
				if (ignore[style.get('display')]) return text;
				if (!node.previousSibling) text = text.replace(wsStart, '');
				if (!node.nextSibling) text = text.replace(wsEnd, '');
				return text;
			};
		})()

	};

	CSS.ready = (function() {

		// don't do anything in Safari 2 (it doesn't recognize any media type)
		var complete = !CSS.recognizesMedia('all'), hasLayout = false;

		var queue = [], perform = function() {
			complete = true;
			for (var fn; fn = queue.shift(); fn());
		};

		var links = elementsByTagName('link'), styles = elementsByTagName('style');

		function isContainerReady(el) {
			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
		}

		function isSheetReady(sheet, media) {
			// in Opera sheet.disabled is true when it's still loading,
			// even though link.disabled is false. they stay in sync if
			// set manually.
			if (!CSS.recognizesMedia(media || 'all')) return true;
			if (!sheet || sheet.disabled) return false;
			try {
				var rules = sheet.cssRules, rule;
				if (rules) {
					// needed for Safari 3 and Chrome 1.0.
					// in standards-conforming browsers cssRules contains @-rules.
					// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
					// returns the last rule, so a for loop is the only option.
					search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
						switch (rule.type) {
							case 2: // @charset
								break;
							case 3: // @import
								if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
								break;
							default:
								// only @charset can precede @import
								break search;
						}
					}
				}
			}
			catch (e) {} // probably a style sheet from another domain
			return true;
		}

		function allStylesLoaded() {
			// Internet Explorer's style sheet model, there's no need to do anything
			if (document.createStyleSheet) return true;
			// standards-compliant browsers
			var el, i;
			for (i = 0; el = links[i]; ++i) {
				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
			}
			for (i = 0; el = styles[i]; ++i) {
				if (!isContainerReady(el)) return false;
			}
			return true;
		}

		DOM.ready(function() {
			// getComputedStyle returns null in Gecko if used in an iframe with display: none
			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
			if (complete || (hasLayout && allStylesLoaded())) perform();
			else setTimeout(arguments.callee, 10);
		});

		return function(listener) {
			if (complete) listener();
			else queue.push(listener);
		};

	})();

	function Font(data) {

		var face = this.face = data.face, wordSeparators = {
			'\u0020': 1,
			'\u00a0': 1,
			'\u3000': 1
		};

		this.glyphs = data.glyphs;
		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);

		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';

		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			var box = {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				maxX: parseInt(parts[2], 10),
				maxY: parseInt(parts[3], 10)
			};
			box.width = box.maxX - box.minX;
			box.height = box.maxY - box.minY;
			box.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ].join(' ');
			};
			return box;
		})();

		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);

		this.height = -this.ascent + this.descent;

		this.spacing = function(chars, letterSpacing, wordSpacing) {
			var glyphs = this.glyphs, glyph,
				kerning, k,
				jumps = [],
				width = 0, w,
				i = -1, j = -1, chr;
			while (chr = chars[++i]) {
				glyph = glyphs[chr] || this.missingGlyph;
				if (!glyph) continue;
				if (kerning) {
					width -= k = kerning[chr] || 0;
					jumps[j] -= k;
				}
				w = glyph.w;
				if (isNaN(w)) w = +this.w; // may have been a String in old fonts
				if (w > 0) {
					w += letterSpacing;
					if (wordSeparators[chr]) w += wordSpacing;
				}
				width += jumps[++j] = ~~w; // get rid of decimals
				kerning = glyph.k;
			}
			jumps.total = width;
			return jumps;
		};

	}

	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};

		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};

		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				if (!hasOwnProperty(weights, alt)) continue;
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a >= weight && b >= weight) ? a < b : a > b
					: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};

	}

	function HoverHandler() {

		function contains(node, anotherNode) {
			try {
				if (node.contains) return node.contains(anotherNode);
				return node.compareDocumentPosition(anotherNode) & 16;
			}
			catch(e) {} // probably a XUL element such as a scrollbar
			return false;
		}

		function onOverOut(e) {
			var related = e.relatedTarget;
			// there might be no relatedTarget if the element is right next
			// to the window frame
			if (related && contains(this, related)) return;
			trigger(this, e.type == 'mouseover');
		}

		function onEnterLeave(e) {
			trigger(this, e.type == 'mouseenter');
		}

		function trigger(el, hoverState) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				var options = sharedStorage.get(el).options;
				api.replace(el, hoverState ? merge(options, options.hover) : options, true);
			}, 10);
		}

		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};

	}

	function ReplaceHistory() {

		var list = [], map = {};

		function filter(keys) {
			var values = [], key;
			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
			return values;
		}

		this.add = function(key, args) {
			map[key] = list.push(args) - 1;
		};

		this.repeat = function() {
			var snapshot = arguments.length ? filter(arguments) : list, args;
			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
		};

	}

	function Storage() {

		var map = {}, at = 0;

		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}

		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};

	}

	function Style(style) {

		var custom = {}, sizes = {};

		this.extend = function(styles) {
			for (var property in styles) {
				if (hasOwnProperty(styles, property)) custom[property] = styles[property];
			}
			return this;
		};

		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};

		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};

		this.isUsable = function() {
			return !!style;
		};

	}

	function ReplaceQueue() {
		var queue = [];
		var running = false;

		function startQueueWorker(){
			running = true;
			window.setTimeout('Cufon.replaceQueue.work();', 0);
		}

		this.add = function(el, options){
			queue.push({el: el, options: options});

			if(running === false){
				startQueueWorker();
			}
		}

		this.work = function(){
			var e = queue.shift();

			try{
				var name = e.el.nodeName.toLowerCase();
				if (e.options.ignore[name]) return;
				var replace = !e.options.textless[name];
				var style = CSS.getStyle(attach(e.el, e.options)).extend(e.options);
				// may cause issues if the element contains other elements
				// with larger fontSize, however such cases are rare and can
				// be fixed by using a more specific selector
				if (parseFloat(style.get('fontSize')) === 0) return;
				var font = getFont(e.el, style), node, type, next, anchor, text, lastElement;
				if (!font) return;
				for (node = e.el.firstChild; node; node = next) {
					type = node.nodeType;
					next = node.nextSibling;
					if (replace && type == 3) {
						// Node.normalize() is broken in IE 6, 7, 8
						if (anchor) {
							anchor.appendData(node.data);
							e.el.removeChild(node);
						}
						else anchor = node;
						if (next) continue;
					}
					if (anchor) {
						e.el.replaceChild(process(font,
							CSS.whiteSpace(anchor.data, style, anchor, lastElement),
							style, e.options, node, e.el), anchor);
						anchor = null;
					}
					if (type == 1) {
						if (node.firstChild) {
							if (node.nodeName.toLowerCase() == 'cufon') {
								engines[e.options.engine](font, null, style, e.options, node, e.el);
							}
							else arguments.callee(node, e.options);
						}
						lastElement = node;
					}
				}
				
				// Cufon replacement was done --> Apply fix for line-height lower than 1.2em
				fixLineHeightByDOM(e.el, e.options);
				
				if(typeof e.el.getAttribute('aftercufonreplace') !== 'undefined'){
					// Notify after cufon replacement
					eval(e.el.getAttribute('aftercufonreplace'));
				}
			}
			catch(err){
				// can't cufonize something... too bad
			}

			if(queue.length > 0){
				window.setTimeout('Cufon.replaceQueue.work();', 20);
			}
			else{
				running = false;
				correctBackground();
			}
		}
	}

        api.replaceQueue = new ReplaceQueue();

	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			el.attachEvent('on' + type, function() {
				return listener.call(el, window.event);
			});
		}
	}

	function attach(el, options) {
		var storage = sharedStorage.get(el);
		if (storage.options) return el;
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}

	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};
	}

	function getFont(el, style) {
		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
		for (var i = 0; family = families[i]; ++i) {
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}

	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}

	function hasOwnProperty(obj, property) {
		return obj.hasOwnProperty(property);
	}

	function merge() {
		var merged = {}, arg, key;
		for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {
			for (key in arg) {
				if (hasOwnProperty(arg, key)) merged[key] = arg[key];
			}
		}
		return merged;
	}

	function process(font, text, style, options, node, el) {
		var fragment = document.createDocumentFragment(), processed;
		if (text === '') return fragment;
		var separate = options.separate;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}

	function replaceElementQueue(el, options) {
		api.replaceQueue.add(el, options);
	}

	function replaceElement(el, options) {
		var name = el.nodeName.toLowerCase();
		if (options.ignore[name]) return;
		var replace = !options.textless[name];
		var style = CSS.getStyle(attach(el, options)).extend(options);
		// may cause issues if the element contains other elements
		// with larger fontSize, however such cases are rare and can
		// be fixed by using a more specific selector
		if (parseFloat(style.get('fontSize')) === 0) return;
		var font = getFont(el, style), node, type, next, anchor, text, lastElement;
		if (!font) return;
		for (node = el.firstChild; node; node = next) {
			type = node.nodeType;
			next = node.nextSibling;
			if (replace && type == 3) {
				// Node.normalize() is broken in IE 6, 7, 8
				if (anchor) {
					anchor.appendData(node.data);
					el.removeChild(node);
				}
				else anchor = node;
				if (next) continue;
			}
			if (anchor) {
				el.replaceChild(process(font,
					CSS.whiteSpace(anchor.data, style, anchor, lastElement),
					style, options, node, el), anchor);
				anchor = null;
			}
			if (type == 1) {
				if (node.firstChild) {
					if (node.nodeName.toLowerCase() == 'cufon') {
						engines[options.engine](font, null, style, options, node, el);
					}
					else arguments.callee(node, options);
				}
				lastElement = node;
			}
		}
		
		// Cufon replacement was done --> Apply fix for line-height lower than 1.2em
		fixLineHeightByDOM(el, options);
		if(typeof el.getAttribute('aftercufonreplace') !== 'undefined'){
			// Notify after cufon replacement
			eval(el.getAttribute('aftercufonreplace'));
		}
	}
	
	function fixLineHeightByDOM(e, options){
		if(options.fixLineHeight){
			fixLineHeightByJQuery($(e), $(e).css('line-height'));
		}
	}
				
	var fixIsIe = (navigator.appName == "Microsoft Internet Explorer");
	function fixLineHeightByJQuery($replaced, lineHeight, clearFloat) {
		var clearer = $('<div/>').attr('class','clearing');
		$replaced.each(function(){
			var $current = $(this);
			
			if (clearFloat==null) {
				clearFloat = false;
			}

			var clearFloatClassname = 'fltbox';
			var $cufonWords = $current.children('.cufon')
			var $cufonSiblings = $current.children(':not(.cufon)');

			if ($(this).css('display')=='inline') {
				$cufonWords.css('display','inline-block');
			}
			else {
				$cufonWords.css({'float':'left', 'display':'inline'});// IE floats margin bug
				$cufonSiblings.each(function(){
					$sib = $(this);
					$sibCss = $sib.css('float');
					if (!($sibCss=='left' || $sibCss=='right' || $sib[0].tagName.toLowerCase()=='br') ) {
						$sib.css({'float':'left', 'display':'inline'});// IE floats margin bug
					}
				});

				if (clearFloat && !$current.hasClass(clearFloatClassname)) { //
					$current.addClass(clearFloatClassname);
				}
			}
			
			$current.css({'line-height': lineHeight});
			$cufonWords.css({'height': lineHeight, 'margin': '0px'});
			var cufonClearer = $('<cufon></cufon>');
			cufonClearer.attr('style',"clear:both; line-height:0px !important; height:0px !important; display:block !important");
			
			$current.append(cufonClearer);
			// Insert clearer only if current has no floating
			var currentFloat = $current.css('float');
			
			if(currentFloat !== 'left' && currentFloat !== 'right'){
				clearer.insertAfter($current);
			}
		});
	}

	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;

	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = new ReplaceHistory();
	var initialized = false;

	var engines = {}, fonts = {}, defaultOptions = {
		autoDetect: false,
		engine: null,
		//fontScale: 1,
		//fontScaling: false,
		forceHitArea: false,
		hover: false,
		hoverables: {
			a: true
		},
		ignore: {
			applet: 1,
			canvas: 1,
			col: 1,
			colgroup: 1,
			head: 1,
			iframe: 1,
			map: 1,
			noscript: 1,
			optgroup: 1,
			option: 1,
			script: 1,
			select: 1,
			style: 1,
			textarea: 1,
			title: 1,
			pre: 1
		},
		printable: true,
		//rotation: 0,
		//selectable: false,
		selector: (
				window.Sizzle
			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.glow && glow.dom && glow.dom.get)
			||	(window.Ext && Ext.query)
			||	(window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		textless: {
			dl: 1,
			html: 1,
			ol: 1,
			table: 1,
			tbody: 1,
			thead: 1,
			tfoot: 1,
			tr: 1,
			ul: 1
		},
		textShadow: 'none'
	};

	var separators = {
		// The first pattern may cause unicode characters above
		// code point 255 to be removed in Safari 3.0. Luckily enough
		// Safari 3.0 does not include non-breaking spaces in \s, so
		// we can just use a simple alternative pattern.
		words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/,
		characters: '',
		none: /^/
	};

	api.now = function() {
		DOM.ready();
		return api;
	};

	api.refresh = function() {
		replaceHistory.repeat.apply(replaceHistory, arguments);
		return api;
	};

	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};

	api.registerFont = function(data) {
		if (!data) return api;
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', '"' + family + '"');
	};

	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (!initialized) {
			CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
			CSS.ready(function() {
				// fires before any replace() calls, but it doesn't really matter
				CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');
			});
			initialized = true;
		}
		if (options.hover) options.forceHitArea = true;
		if (options.autoDetect) delete options.fontFamily;
		if (typeof options.textShadow == 'string') {
			options.textShadow = CSS.textShadow(options.textShadow);
		}
		if (typeof options.color == 'string' && /^-/.test(options.color)) {
			options.textGradient = CSS.gradient(options.color);
		}
		else delete options.textGradient;
		if (!ignoreHistory) replaceHistory.add(elements, arguments);
		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
		CSS.ready(function() {
			var isIe = (navigator.appName == "Microsoft Internet Explorer");

			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else{
					if(isIe === true){
						replaceElementQueue(el, options);
					}
					else{
						replaceElement(el, options);
					}
				}
			}
		});
		return api;
	};

	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};

	return api;

})();

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods

	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return;
	check = null;

	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');

	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));

	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode((
		'cufon{text-indent:0;}' +
		'@media screen,projection{' +
			'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: 'font-size:1px;line-height:1px;') +
			'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;text-indent:-10000in;}' +
			(HAS_INLINE_BLOCK
				? 'cufon canvas{position:relative;}'
				: 'cufon canvas{position:absolute;}') +
		'}' +
		'@media print{' +
			'cufon{padding:0;}' + // Firefox 2
			'cufon canvas{display:none;}' +
		'}'
	).replace(/;/g, '!important;')));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var code = [], re = /([mrvxe])([^a-z]*)/g, match;
		generate: for (var i = 0; match = re.exec(path); ++i) {
			var c = match[2].split(',');
			switch (match[1]) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}

	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}

	return function(font, text, style, options, node, el) {

		var redraw = (text === null);

		if (redraw) text = node.getAttribute('alt');

		var viewBox = font.viewBox;

		var size = style.getSize('fontSize', font.baseSize);

		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}

		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),
			~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)
		);

		if (!jumps.length) return null; // there's nothing to render

		var width = jumps.total;

		expandRight += viewBox.width - jumps[jumps.length - 1];
		expandLeft += viewBox.minX;

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.setAttribute('alt', text);

			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var stretchedWidth = width * stretchFactor;

		var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));
		var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));

		canvas.width = canvasWidth;
		canvas.height = canvasHeight;

		// needed for WebKit and full page zoom
		cStyle.width = canvasWidth + 'px';
		cStyle.height = canvasHeight + 'px';

		// minY has no part in canvas.height
		expandTop += viewBox.minY;

		var topOffset = 0;
		var leftOffset = 0;
		
		if (options) {
			if (options.topOffset) {
				topOffset = options.topOffset;
			}
			if (options.leftOffset) {
				leftOffset = options.leftOffset;
			}
		}
		
		cStyle.top = (Math.round(size.convert(expandTop - font.ascent)) + topOffset) + 'px';
		cStyle.left = (Math.round(size.convert(expandLeft)) + leftOffset) + 'px';

		var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';

		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}

		var g = canvas.getContext('2d'), scale = height / viewBox.height;

		// proper horizontal scaling is performed later
		g.scale(scale, scale * roundingFactor);
		g.translate(-expandLeft, -expandTop);
		g.save();

		function renderText() {
			var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;
			g.scale(stretchFactor, 1);
			while (chr = chars[++i]) {
				var glyph = glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				if (glyph.d) {
					g.beginPath();
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
					g.fill();
				}
				g.translate(jumps[++j], 0);
			}
			g.restore();
		}

		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
			}
		}

		var gradient = options.textGradient;
		if (gradient) {
			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
			for (var i = 0, l = stops.length; i < l; ++i) {
				fill.addColorStop.apply(fill, stops[i]);
			}
			g.fillStyle = fill;
		}
		else g.fillStyle = style.get('color');

		renderText();

		return wrapper;

	};

})());

Cufon.registerEngine('vml', (function() {

	var ns = document.namespaces;
	var ie9 = ($.browser.msie && $.browser.version > 8);
	if (!ns || ie9) return;
	ns.add('cvml', 'urn:schemas-microsoft-com:vml');
	ns = null;

	var check = document.createElement('cvml:shape');
	check.style.behavior = 'url(#default#VML)';
	if (!check.coordsize) return; // VML isn't supported
	check = null;

	var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8;

	document.write(('<style type="text/css">' +
		'cufoncanvas{text-indent:0;}' +
		'@media screen{' +
			'cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +
			'cufoncanvas{position:absolute;text-align:left;}' +
			'cufon{display:inline-block;position:relative;vertical-align:' +
			(HAS_BROKEN_LINEHEIGHT
				? 'middle'
				: 'text-bottom') +
			';}' +
			'cufon cufontext{position:absolute;left:-10000in;font-size:1px;}' +
			'a cufon{cursor:pointer}' + // ignore !important here
		'}' +
		'@media print{' +
			'cufon cufoncanvas{display:none;}' +
		'}' +
	'</style>').replace(/;/g, '!important;'));

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);
	}

	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (!isNaN(value) || /px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value.replace('%', 'em');
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}

	function getSpacingValue(el, style, size, property) {
		var key = 'computed' + property, value = style[key];
		if (isNaN(value)) {
			value = style.get(property);
			style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));
		}
		return value;
	}

	var fills = {};

	function gradientFill(gradient) {
		var id = gradient.id;
		if (!fills[id]) {
			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
			fill.type = 'gradient';
			fill.angle = 180;
			fill.focus = '0';
			fill.method = 'none';
			fill.color = stops[0][1];
			for (var j = 1, k = stops.length - 1; j < k; ++j) {
				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
			}
			fill.colors = colors.join(',');
			fill.color2 = stops[k][1];
			fills[id] = fill;
		}
		return fills[id];
	}

	return function(font, text, style, options, node, el, hasNext) {

		var redraw = (text === null);

		if (redraw) text = node.alt;

		var viewBox = font.viewBox;

		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;

			canvas = document.createElement('cufoncanvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}

			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var minX = viewBox.minX, minY = viewBox.minY;

		var topOffset = 0;
		var leftOffset = 0;
		
		if (options) {
			if (options.topOffset) {
				topOffset = options.topOffset;
			}
			if (options.leftOffset) {
				leftOffset = options.leftOffset;
			}
		}
		
		cStyle.height = roundedHeight;
		cStyle.top = Math.round(size.convert(minY - font.ascent)) + topOffset;
		cStyle.left = Math.round(size.convert(minX)) + leftOffset;

		wStyle.height = size.convert(font.height) + 'px';

		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			getSpacingValue(el, style, size, 'letterSpacing'),
			getSpacingValue(el, style, size, 'wordSpacing')
		);

		if (!jumps.length) return null;

		var width = jumps.total;
		var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);

		var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);

		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
		var stretch = 'r' + coordSize + 'ns';

		var fill = options.textGradient && gradientFill(options.textGradient);

		var glyphs = font.glyphs, offsetX = 0;
		var shadows = options.textShadow;
		var i = -1, j = 0, chr;

		while (chr = chars[++i]) {

			var glyph = glyphs[chars[i]] || font.missingGlyph, shape;
			if (!glyph) continue;

			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[j];
				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
			}
			else {
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}

			shape.stroked = 'f';
			shape.coordsize = coordSize;
			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
			shape.fillcolor = color;

			if (fill) shape.appendChild(fill.cloneNode(false));

			// it's important to not set top/left or IE8 will grind to a halt
			var sStyle = shape.style;
			sStyle.width = roundedShapeWidth;
			sStyle.height = roundedHeight;

			if (shadows) {
				// due to the limitations of the VML shadow element there
				// can only be two visible shadows. opacity is shared
				// for all shadows.
				var shadow1 = shadows[0], shadow2 = shadows[1];
				var color1 = Cufon.CSS.color(shadow1.color), color2;
				var shadow = document.createElement('cvml:shadow');
				shadow.on = 't';
				shadow.color = color1.color;
				shadow.offset = shadow1.offX + ',' + shadow1.offY;
				if (shadow2) {
					color2 = Cufon.CSS.color(shadow2.color);
					shadow.type = 'double';
					shadow.color2 = color2.color;
					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
				}
				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
				shape.appendChild(shadow);
			}

			offsetX += jumps[j++];
		}

		// addresses flickering issues on :hover

		var cover = shape.nextSibling, coverFill, vStyle;

		if (options.forceHitArea) {

			if (!cover) {
				cover = document.createElement('cvml:rect');
				cover.stroked = 'f';
				cover.className = 'cufon-vml-cover';
				coverFill = document.createElement('cvml:fill');
				coverFill.opacity = 0;
				cover.appendChild(coverFill);
				canvas.appendChild(cover);
			}

			vStyle = cover.style;

			vStyle.width = roundedShapeWidth;
			vStyle.height = roundedHeight;

		}
		else if (cover) canvas.removeChild(cover);

		wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);

		if (HAS_BROKEN_LINEHEIGHT) {

			var yAdjust = style.computedYAdjust;

			if (yAdjust === undefined) {
				var lineHeight = style.get('lineHeight');
				if (lineHeight == 'normal') lineHeight = '1em';
				else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit
				style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));
			}

			if (yAdjust) {
				wStyle.marginTop = Math.ceil(yAdjust) + 'px';
				wStyle.marginBottom = yAdjust + 'px';
			}

		}

		return wrapper;

	};

})());

}catch(e){console.log('Error in cufon-yui-patched: ' + e.description);}

// ---- jquery.smoothDivScroll-0.9 ----
try{ /**
* jQuery.smoothDivScroll - Smooth div scrolling using jQuery.
* This plugin is for turning a set of HTML elements's into a smooth scrolling area.
*
* Copyright (c) 2009 Thomas Kahn - thomas.kahn(at)karnhuset(dot)net
*
* This plugin is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This plugin is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details. <http://www.gnu.org/licenses/>.
*
* Date: 2009-05-23
* @author Thomas Kahn
* @version 0.8
*
* Changelog
* ---------------------------------------------
* 0.9	- Bugfixes: Problem with multiple autoscrollers on the same page - the intervals
*		  where global which resulted in the wrong autoscroller stopping on mouseOver or
*		  mouseDown.
*		  Error in calculation in autoscrolling mode that made the autoscrolling grind
*		  to a halt after a number of loops.
*
* 0.8   - Major update. New parameter setup. Lots of new autoscrolling capabilities and 
*		  new parameters for controlling the scrolling speed. Made it possible to start 
*		  the scroller at a specific element.
* 
* 0.7   - Added support for autoscrolling after the page has loaded. 
*         Added support for making the hot spots visible at start for X number of seconds
*         or visible all the time.
*
* 0.6   - First version.
*/

(function($) { 
	jQuery.fn.smoothDivScroll = function(options){

		var defaults = {
		scrollingHotSpotLeft: "div.scrollingHotSpotLeft", // The hot spot that triggers scrolling left.
		scrollingHotSpotRight: "div.scrollingHotSpotRight", // The hot spot that triggers scrolling right.
		scrollWrapper: "div.scrollWrapper", // The wrapper element that surrounds the scrollable area
		scrollableArea: "div.scrollableArea", // The actual element that is scrolled left or right
		hiddenOnStart: false, // True or false. Determines whether the element should be visible or hidden on start
		ajaxContentURL: "", // Optional. If supplied, content is fetched through AJAX using the supplied URL
		countOnlyClass: "", // Optional. If supplied, the function that calculates the width of the scrollable area will only count elements of this class
		scrollingSpeed: 25, // A way of controlling the scrolling speed. 1=slowest and 100= fastest.
		mouseDownSpeedBooster: 3, // 1 is normal speed (no speed boost), 2 is twice as fast, 3 is three times as fast, and so on
		autoScroll: "", // Optional. Leave it blank if you don't want any autoscroll. 
						// Otherwise use the values "onstart" or "always". 
						// onstart - the scrolling will start automatically after 
						// the page has loaded and scroll according to the method you've selected 
						// using the autoScrollDirection parameter. When the user moves the mouse 
						// over the left or right hot spot the autoscroll will stop. After that 
						// the scrolling will only be triggered by the host spots.
						// always - the hot spots are disabled alltogether and the scrollable area 
						// will only scroll automatically.
		autoScrollDirection: "right", 	// This parameter controls the direction and behavior of the autoscrolling.	
										// Optional. The values are:
										// right - autoscrolls right and stops when it reaches the end
										// left - autoscrolls left and stops when it reaches the end 
										// (only relevant if you have set the parameter startAtElementId).
										// backandforth - starts autoscrolling right and when it reaches 
										// the end, switches to autoscrolling left and so on. Ping-pong style.
										// endlessloop - continuous scrolling right. An endless loop of elements.
		autoScrollSpeed: 1,	//  1-2 = slow, 3-4 = medium, 5-13 = fast -- anything higher = superfast
		pauseAutoScroll: "", // Optional. Values mousedown and mouseover. Leave blank for no pausing abilities.
		visibleHotSpots: "", 	// Optional. Leave it blank for invisible hot spots. 
								// Otherwise use the values  "onstart" or "always". 
								// onstart - makes the hot spots visible for X-number of seconds 
								// after tha page has loaded and then they become invisible. 
								// always - hot spots are visible all the time.
		hotSpotsVisibleTime: 5, // If you have selected "onstart" as the value for visibleHotSpots, 
								// you set the number of seconds that you want the hot spots to be 
								// visible after the page has loaded. After this time they will fade 
								// away and become invisible again.
		startAtElementId: "",	// Optional. Use this parameter if you want the offset of the 
								// scrollable area to be positioned at a specific element directly 
								// after the page has loaded. First give your element an ID in the 
								// HTML code and then provide this ID as a parameter.
		displacement: 8			// Displacement to add to the width of the scrollArea: $mom
		};

		options = $.extend(defaults, options);

		/* Identify global variables so JSLint won't raise errors when verifying the code */
		/*global autoScrollInterval, autoScroll, clearInterval, doScrollLeft, doScrollRight, hideHotSpotBackgrounds, hideHotSpotBackgroundsInterval, hideLeftHotSpot, hideRightHotSpot, jQuery, makeHotSpotBackgroundsVisible, setHotSpotHeightForIE, setInterval, showHideHotSpots, window, windowIsResized */


		// Iterate and make each matched element a SmoothDivScroll
		return this.each(function() {
		
			// Create a variable for the current "mother element"
			var $mom = $(this);
			
			// Load the content of the scrollable area using the optional URL.
			// If no ajaxContentURL is supplied, we assume that the content of
			// the scrolling area is already in place.
			if(options.ajaxContentURL.length !== 0){
				$mom.scrollableAreaWidth = 0;
				$mom.find(options.scrollableArea).load((options.ajaxContentURL), function(){	
					$mom.find(options.scrollableArea).children((options.countOnlyClass)).each(function() {
						$mom.scrollableAreaWidth = $mom.scrollableAreaWidth + $(this).outerWidth(true);
					});

					// Set the width of the scrollable area
					$mom.find(options.scrollableArea).css("width", ($mom.scrollableAreaWidth + "px"));
					
					if (options.fixed_scrollable_area_width!=undefined)  // Christoph fï¿½r Bildergalerie
						$mom.find(options.scrollableArea).css("width", options.fixed_scrollable_area_width);
					
					// Hide the mother element if it shouldn't be visible on start
					if(options.hiddenOnStart) {
						$mom.hide();
					}
					
					windowIsResized();
					
					setHotSpotHeightForIE();
				});		
			}
			
			// Some variables used for working with the scrolling
			var scrollXpos;
			var booster;
			
			// The left offset of the container on which you place 
			// the scrolling behavior.
			// This offset is used when calculating the mouse x-position 
			// in relation to scroll hot spots
			var motherElementOffset = $mom.offset().left;
			
			// A variable used for storing the current hot spot width.
			// It is used when calculating the scroll speed
			var hotSpotWidth = 0;
			
			// Set the booster value to normal (doesn't change until the user
			// holds down the mouse button over one of the hot spots)
			booster = 1;
			
			var hasExtended = false;
			
			// Stuff to do once on load
			$(document).one("ready",function(){
				// If the content of the scrolling area is not loaded through ajax,
				// we assume it's already there and can run the code to calculate
				// the width of the scrolling area, resize it to that width
				if(options.ajaxContentURL.length === 0) {
					$mom.scrollableAreaWidth = 0;
					$mom.tempStartingPosition = 0;
					
					$mom.find(options.scrollableArea).children((options.countOnlyClass)).each(function() {
						
						// Check to see if the current element in the loop is the one where the scrolling should start
						if( (options.startAtElementId.length !== 0) && (($(this).attr("id")) == options.startAtElementId) ) {
						$mom.tempStartingPosition = $mom.scrollableAreaWidth;
						}

						// Add the width of the current element in the loop to the total width
						$mom.scrollableAreaWidth = $mom.scrollableAreaWidth + $(this).outerWidth(true);
						
					});
					
					var countChildren = $mom.find(options.scrollableArea).children((options.countOnlyClass)).length;
					var thumbWidth = 72;
					var thumbMarginLeft = 12;
					$mom.scrollableAreaWidth = countChildren*thumbWidth - thumbMarginLeft + options.displacement;
					
					// Set the width of the scrollableArea to the accumulated width
					$mom.find(options.scrollableArea).css("width", $mom.scrollableAreaWidth + "px");
					
					if (options.fixed_scrollable_area_width!=undefined)  // Christoph fï¿½r Bildergalerie
						$mom.find(options.scrollableArea).css("width", options.fixed_scrollable_area_width);

					// Check to see if the whole thing should be hidden at start
					if(options.hiddenOnStart) {
						$mom.hide();
					}
				}
				
				// Set the starting position of the scrollable area. If no startAtElementId is set, the starting position
				// will be the default value (zero)
				$mom.find(options.scrollWrapper).scrollLeft($mom.tempStartingPosition);
				
				// If the user has set the option autoScroll, the scollable area will
				// start scrolling automatically
				if(options.autoScroll !== "") {
					$mom.autoScrollInterval = setInterval(autoScroll, 6);
				}

				// If autoScroll is set to always, the hot spots should be disabled
				if(options.autoScroll == "always")
				{
					hideLeftHotSpot();
					hideRightHotSpot();
				}
	
				// If the user wants to have visible hot spots, here is where it's taken care of
				switch(options.visibleHotSpots)
				{
					case "always":
						makeHotSpotBackgroundsVisible();
						break;
					case "onstart":
						makeHotSpotBackgroundsVisible();
						$mom.hideHotSpotBackgroundsInterval = setInterval(hideHotSpotBackgrounds, (options.hotSpotsVisibleTime * 1000));
						break;
					default:
						break;	
				}
				
			});
			
			// If autoScroll is running, here's where it's stopped when the user positions the mouse over one of the hot spots
			$mom.find(options.scrollingHotSpotRight, options.scrollingHotSpotLeft).one('mouseover',function(){
				if(options.autoScroll == "onstart") {
					clearInterval($mom.autoScrollInterval);
				}
			});	

			
			// EVENT - window resize
			$(window).bind("resize",function(){
				//windowIsResized();
			});

			// A function for doing the stuff that needs to be
			// done when the browser window is resized
			function windowIsResized() {
			
				// If the scrollable area is not hidden on start, reset and recalculate the
				// width of the scrollable area
				if(!(options.hiddenOnStart))
				{
					$mom.scrollableAreaWidth = 0;
					$mom.find(options.scrollableArea).children((options.countOnlyClass)).each(function() {
						$mom.scrollableAreaWidth = $mom.scrollableAreaWidth + $(this).outerWidth(true);
					});
					
					$mom.find(options.scrollableArea).css("width", $mom.scrollableAreaWidth + 'px');
				}

				// Reset the left offset of the scroll wrapper
				$mom.find(options.scrollWrapper).scrollLeft("0");
				
				// Get the width of the page (body)
				var bodyWidth = $("body").innerWidth();
				
				// If the scrollable area is shorter than the current
				// window width, both scroll hot spots should be hidden.
				// Otherwise, check which hot spots should be shown.
				if(options.autoScroll !== "always")
				{
					if($mom.scrollableAreaWidth < bodyWidth)
					{	
						hideLeftHotSpot();
						hideRightHotSpot();
					}
					else
					{
						showHideHotSpots();
					}
				}
			}
			
			// HELPER FUNCTIONS FOR SHOWING AND HIDING HOT SPOTS
			function hideLeftHotSpot(){
				$mom.find(options.scrollingHotSpotLeft).hide();
			}
			
			function hideRightHotSpot(){
				$mom.find(options.scrollingHotSpotRight).hide();
			}
			
			function showLeftHotSpot(){
				$mom.find(options.scrollingHotSpotLeft).show();
				// Recalculate the hot spot width. Do it here because you can
				// be sure that the hot spot is visible and has a width
				if(hotSpotWidth <= 0) {
					hotSpotWidth = $mom.find(options.scrollingHotSpotLeft).width();
				}
			}
			
			function showRightHotSpot(){
				$mom.find(options.scrollingHotSpotRight).show();
				// Recalculate the hot spot width. Do it here because you can
				// be sure that the hot spot is visible and has a width
				if(hotSpotWidth <= 0) {
					hotSpotWidth = $mom.find(options.scrollingHotSpotRight).width();
				}
			}
			
			function setHotSpotHeightForIE()
			{
				// Some bugfixing for IE 6
				jQuery.each(jQuery.browser, function(i, val) {
					if(i=="msie" && jQuery.browser.version.substr(0,1)=="6")
					{
						$mom.find(options.scrollingHotSpotLeft).css("height", ($mom.find(options.scrollableArea).innerHeight()));
						$mom.find(options.scrollingHotSpotRight).css("height", ($mom.find(options.scrollableArea).innerHeight()));				
					}
				});
			}
			// **************************************************
			// EVENTS - scroll right
			// **************************************************
			
			// Check the mouse X position and calculate the relative X position inside the right hot spot
			$mom.find(options.scrollingHotSpotRight).bind('mousemove',function(e){
			    // QC 2045: the scrolling speed should be constant in the hot spot area
				/*
				var x = e.pageX - (this.offsetLeft + motherElementOffset);
				scrollXpos = Math.round((x/hotSpotWidth) * options.scrollingSpeed);
				if(scrollXpos === Infinity) {
					scrollXpos = 0;
				}
				*/
				scrollXpos = options.scrollingSpeed;

			});

			// mouseover right hot spot
			$mom.find(options.scrollingHotSpotRight).bind('mouseover',function(){
				if(options.autoScroll == "onstart") {
					clearInterval($mom.autoScrollInterval);
				}
				$mom.rightScrollInterval = setInterval(doScrollRight, 6);
			});	
			
			// mouseout right hot spot
			$mom.find(options.scrollingHotSpotRight).bind('mouseout',function(){
				clearInterval($mom.rightScrollInterval);
				scrollXpos = 0;
			});
			
			// scrolling speed booster right
			$mom.find(options.scrollingHotSpotRight).bind('mousedown',function(){
				booster = options.mouseDownSpeedBooster;
			});
			
			// stop boosting the scrolling speed
			$("*").bind('mouseup',function(){
				booster = 1;
			});
	
			
			// The function that does the actual scrolling right
			var doScrollRight = function()
			{	
				if(scrollXpos > 0) {
					$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() + (scrollXpos*booster));
				}
				showHideHotSpots();
			};
			
			// **************************************************
			// Autoscrolling
			// **************************************************

			if(options.pauseAutoScroll == "mousedown" && options.autoScroll == "always")
			{
				$mom.find(options.scrollWrapper).bind('mousedown',function(){
					clearInterval($mom.autoScrollInterval);
				});
				
				$mom.find(options.scrollWrapper).bind('mouseup',function(){
					$mom.autoScrollInterval = setInterval(autoScroll, 6);
				});
			}
			else if(options.pauseAutoScroll == "mouseover" && options.autoScroll == "always")
			{
				$mom.find(options.scrollWrapper).bind('mouseover',function(){
					clearInterval($mom.autoScrollInterval);
				});
				
				$mom.find(options.scrollWrapper).bind('mouseout',function(){
					$mom.autoScrollInterval = setInterval(autoScroll, 6);
				});
			}
			
			$mom.previousScrollLeft = 0;
			$mom.pingPongDirection = "right";
			$mom.swapAt;
			$mom.getNextElementWidth = true;
			// The autoScroll function
			var autoScroll = function()
			{	
				if (options.autoScroll == "onstart") {
					showHideHotSpots();
				}
				
				switch(options.autoScrollDirection)
				{
					case "right":
						$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() + options.autoScrollSpeed);
						break;
						
					case "left":
						$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() - options.autoScrollSpeed);
						break;
						
					case "backandforth":
						// Store the old scrollLeft value to see if the scrolling has reached the end
						$mom.previousScrollLeft = $mom.find(options.scrollWrapper).scrollLeft();
						
						if($mom.pingPongDirection == "right") {
							$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() + options.autoScrollSpeed);
						}
						else {
							$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() - options.autoScrollSpeed);
						}
						
						// If the scrollLeft hasnt't changed it means that the scrolling has reached
						// the end and the direction should be switched
						if($mom.previousScrollLeft === $mom.find(options.scrollWrapper).scrollLeft())
						{
							if($mom.pingPongDirection == "right") {
								$mom.pingPongDirection = "left";
							}
							else {
								$mom.pingPongDirection = "right";
							}
						}
						break;
		
					case "endlessloop":
						// Get the width of the first element. When it has scrolled out of view,
						// the element swapping should be executed. A true/false variable is used
						// as a flag variable so the swapAt value doesn't have to be recalculated
						// in each loop.
						if($mom.getNextElementWidth)
						{
							if(options.startAtElementId !== "") {
								$mom.swapAt = $("#" + options.startAtElementId).outerWidth();
							}
							else {
								$mom.swapAt = $mom.find(options.scrollableArea).children(":first-child").outerWidth();
							}
							
							$mom.getNextElementWidth = false;
						}
						
						// Do the autoscrolling
						$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() + options.autoScrollSpeed);
						
						// Check to see if the swap should be done
						if(($mom.swapAt <= $mom.find(options.scrollWrapper).scrollLeft()))
						{ 
							// Clone the first element and append it last in the scrollableArea
							$mom.find(options.scrollableArea).append($mom.find(options.scrollableArea).children(":first-child").clone());

							// Compensate for the removal of the first element by
							$mom.find(options.scrollWrapper).scrollLeft(($mom.find(options.scrollWrapper).scrollLeft() - $mom.find(options.scrollableArea).children(":first-child").outerWidth()));
							
							// Remove it from its original position as the first element
							$mom.find(options.scrollableArea).children(":first-child").remove();
							
							$mom.getNextElementWidth = true;
						}
						break;
					default:
						break;
						
				}

			};
			
			
			// **************************************************
			// EVENTS - scroll left
			// **************************************************
		
			// Check the mouse X position and calculate the relative X position inside the left hot spot
			$mom.find(options.scrollingHotSpotLeft).bind('mousemove',function(e){
			    // QC 2045: the scrolling speed should be constant in the hot spot area
				/*				
				var x = $mom.find(options.scrollingHotSpotLeft).innerWidth() - (e.pageX - motherElementOffset);
				scrollXpos = Math.round((x/hotSpotWidth) * options.scrollingSpeed);
				if(scrollXpos === Infinity)
				{
					scrollXpos = 0;
				}
				*/				
				scrollXpos = options.scrollingSpeed;
			});
			
			// mouseover left hot spot
			$mom.find(options.scrollingHotSpotLeft).bind('mouseover',function(){
				if(options.autoScroll == "onstart") {
					clearInterval($mom.autoScrollInterval);
				}
				
				$mom.leftScrollInterval = setInterval(doScrollLeft, 6);
			});	
			
			// mouseout left hot spot
			$mom.find(options.scrollingHotSpotLeft).bind('mouseout',function(){
				clearInterval($mom.leftScrollInterval);
				scrollXpos = 0;
			});
			
			// scrolling speed booster left
			$mom.find(options.scrollingHotSpotLeft).bind('mousedown',function(){
				booster = options.mouseDownSpeedBooster;
			});
			
			// The function that does the actual scrolling left
			var doScrollLeft = function()
			{	
				if(scrollXpos > 0) {
					$mom.find(options.scrollWrapper).scrollLeft($mom.find(options.scrollWrapper).scrollLeft() - (scrollXpos*booster));
				}
				showHideHotSpots();
			};
			
			// **************************************************
			// Hot spot functions
			// **************************************************
			
			// Function for showing and hiding hot spots depending on the
			// offset of the scrolling
			function showHideHotSpots()
			{
				//Patch for scrollableAreaWidth
				if (options.fixed_scrollable_area_width!=undefined) {
					$mom.scrollableAreaWidth = options.fixed_scrollable_area_width;  // Christoph fuer Bildergalerie
					$mom.scrollableAreaWidth = $mom.scrollableAreaWidth.substring(0,$mom.scrollableAreaWidth.length-2);
				}
				
				// When you can't scroll further left
				// the left scroll hot spot should be hidden
				// and the right hot spot visible
				if($mom.find(options.scrollWrapper).scrollLeft() === 0)
				{
					hideLeftHotSpot();
					showRightHotSpot();
				}
				// When you can't scroll further right
				// the right scroll hot spot should be hidden
				// and the left hot spot visible
				else if(($mom.scrollableAreaWidth) <= ($mom.find(options.scrollWrapper).innerWidth() + $mom.find(options.scrollWrapper).scrollLeft()))
				{
					hideRightHotSpot();
					showLeftHotSpot();
				}
				// If you are somewhere in the middle of your
				// scrolling, both hot spots should be visible
				else
				{
					showRightHotSpot();
					showLeftHotSpot();
				}

			}
			
			// Function for making the hot spot background visible
			function makeHotSpotBackgroundsVisible()
			{
				// Alter the CSS (SmoothDivScroll.css) if you want to customize
				// the look'n'feel of the visible hot spots
				
				// The left hot spot
				$mom.find(options.scrollingHotSpotLeft).addClass("scrollingHotSpotLeftVisible");

				// The right hot spot
				$mom.find(options.scrollingHotSpotRight).addClass("scrollingHotSpotRightVisible");
			}
			
			// Hide the hot spot backgrounds.
			function hideHotSpotBackgrounds()
			{
				clearInterval($mom.hideHotSpotBackgroundsInterval);
				
				// Fade out the left hot spot
				$mom.find(options.scrollingHotSpotLeft).fadeTo("slow", 0.0, function(){
					$mom.find(options.scrollingHotSpotLeft).removeClass("scrollingHotSpotLeftVisible");
				});

				// Fade out the right hot spot
				$mom.find(options.scrollingHotSpotRight).fadeTo("slow", 0.0, function(){
					$mom.find(options.scrollingHotSpotRight).removeClass("scrollingHotSpotRightVisible");
				});
			}
			
	});
};

})(jQuery);


}catch(e){console.log('Error in jquery.smoothDivScroll-0.9: ' + e.description);}

// ---- MiniGlobal_Pro_Headline_400.font ----
try{ /*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * (URW)++,Copyright 2007 by (URW)++ Design & Development
 */
Cufon.registerFont({"w":360,"face":{"font-family":"MINI Type Global Pro Headline","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"5","bbox":"-87 -344 516 118","underline-thickness":"17.9297","underline-position":"-45.3516","unicode-range":"U+0020-U+2300"},"glyphs":{" ":{"w":98,"k":{"\u0105":11,"\u0104":11,"\u0103":11,"\u0102":11,"\u0101":11,"\u0100":11,"\u00e6":12,"\u00e5":11,"\u00e4":11,"\u00e3":11,"\u00e2":11,"\u00e1":11,"\u00e0":11,"\u00c6":12,"\u00c5":11,"\u00c4":11,"\u00c3":11,"\u00c2":11,"\u00c1":11,"\u00c0":11,"z":13,"y":21,"x":14,"v":10,"t":10,"j":13,"a":11,"Z":13,"Y":21,"X":14,"V":10,"T":10,"J":13,"A":11}},"!":{"d":"19,-32v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,19,-18,37,-38,37v-20,0,-39,-19,-38,-37xm57,-259v65,6,21,110,21,163r-42,0r-14,-128v-1,-20,15,-36,35,-35","w":113},"\"":{"d":"52,-259v58,5,21,94,20,142r-41,0v0,-49,-40,-135,21,-142xm143,-259v59,6,20,94,19,142r-40,0v0,-49,-40,-135,21,-142","w":193,"k":{"q":7,"o":7,"j":38,"g":4,"c":4,"a":31,"Q":7,"O":7,"J":38,"G":4,"C":4,"A":31}},"#":{"d":"44,0r12,-50r-42,0r10,-40r42,0r19,-74r-41,0r9,-40r41,0r13,-50r43,0r-12,50r59,0r13,-50r43,0r-13,50r41,0r-10,40r-40,0r-19,74r41,0r-10,40r-41,0r-12,50r-44,0r13,-50r-59,0r-13,50r-43,0xm110,-90r58,0r19,-74r-59,0","w":298,"k":{"4":21,"1":-4}},"$":{"d":"35,-134v-45,-40,-16,-117,43,-120r0,-25r39,0r0,24v20,1,38,3,54,7r0,41v-46,-11,-104,-19,-109,20v7,40,81,38,102,65v34,43,18,117,-47,121r0,27r-39,0r0,-25v-24,-1,-45,-4,-62,-9r0,-44v43,19,134,23,111,-35v-13,-18,-76,-33,-92,-47","w":192,"k":{"9":7,"2":-5}},"%":{"d":"232,-75v0,-50,26,-80,73,-80v46,0,73,32,73,81v0,47,-27,79,-74,79v-48,0,-72,-31,-72,-80xm337,-76v0,-28,-8,-49,-33,-49v-23,0,-33,23,-32,50v0,33,10,50,32,50v22,0,33,-17,33,-51xm104,0r144,-254r44,0r-144,254r-44,0xm19,-179v0,-49,27,-80,74,-80v46,0,72,32,72,81v0,48,-26,78,-74,79v-46,0,-72,-32,-72,-80xm125,-180v0,-28,-8,-49,-34,-49v-24,1,-32,24,-32,50v0,27,9,49,33,50v22,0,33,-17,33,-51","w":396},"&":{"d":"68,-158v-33,-51,3,-101,67,-101v18,0,37,3,58,10r0,39v-28,-13,-87,-22,-88,15v11,38,63,76,87,107v9,-20,15,-43,18,-69r45,0v-2,38,-12,74,-31,104r49,53r-63,0r-18,-20v-57,46,-181,30,-181,-59v0,-36,19,-62,57,-79xm91,-128v-50,22,-36,93,24,93v18,0,34,-5,48,-16","w":273,"k":{"\u0178":18,"\u0165":16,"\u0164":16,"\u0163":16,"\u0162":16,"\u00ff":18,"\u00fd":18,"\u00e6":17,"\u00dd":18,"\u00c6":17,"z":10,"y":18,"w":6,"v":8,"t":16,"Z":10,"Y":18,"W":6,"V":8,"T":16}},"'":{"d":"52,-259v58,5,21,94,20,142r-41,0v0,-49,-40,-135,21,-142","w":103,"k":{"q":7,"o":7,"j":38,"g":4,"c":4,"a":31,"Q":7,"O":7,"J":38,"G":4,"C":4,"A":31}},"(":{"d":"112,4v-100,-6,-126,-171,-57,-235v17,-15,36,-25,57,-27r0,41v-31,10,-47,41,-47,91v0,50,16,80,47,90r0,40","w":119,"k":{"4":12,"3":-12,"2":-7,"1":-7}},")":{"d":"8,-258v100,8,128,179,52,239v-15,13,-32,21,-52,23r0,-40v61,-11,64,-167,0,-181r0,-41","w":119},"*":{"d":"59,-99r-28,-21r32,-45r-52,-17r11,-34r52,18r0,-56r35,0r0,56r53,-18r11,34r-53,17r33,45r-29,21r-33,-45","w":183},"+":{"d":"96,-31r0,-74r-69,0r0,-43r69,0r0,-73r46,0r0,73r68,0r0,43r-68,0r0,74r-46,0","w":237},",":{"d":"57,-70v73,9,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-40,38,-37","w":113,"k":{"2":-10,"1":23}},"-":{"d":"14,-107r0,-48r120,0r0,48r-120,0","w":148,"k":{"\u0443":11,"\u0442":18,"\u0423":11,"\u0422":18,"\u0410":2,"\u03d2":14,"\u03a5":14,"\u03a4":18,"\u039b":1,"\u0391":2,"\u0178":22,"\u0165":21,"\u0164":21,"\u0163":21,"\u0162":21,"\u0105":13,"\u0104":13,"\u0103":13,"\u0102":13,"\u0101":13,"\u0100":13,"\u00ff":22,"\u00fd":22,"\u00e5":13,"\u00e4":13,"\u00e3":13,"\u00e2":13,"\u00e1":13,"\u00e0":13,"\u00dd":22,"\u00c5":13,"\u00c4":13,"\u00c3":13,"\u00c2":13,"\u00c1":13,"\u00c0":13,"z":20,"y":22,"x":21,"w":4,"v":13,"t":21,"j":23,"a":13,"Z":20,"Y":22,"X":21,"W":4,"V":13,"T":21,"J":23,"A":13,"7":23,"4":-2,"2":7}},".":{"d":"19,-32v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,19,-18,37,-38,37v-20,0,-39,-19,-38,-37","w":113,"k":{"2":-10,"1":23}},"\/":{"d":"0,0r72,-254r43,0r-72,254r-43,0","w":115,"k":{"\u0105":13,"\u0104":13,"\u0103":13,"\u0102":13,"\u0101":13,"\u0100":13,"\u00e6":33,"\u00e5":13,"\u00e4":13,"\u00e3":13,"\u00e2":13,"\u00e1":13,"\u00e0":13,"\u00c6":33,"\u00c5":13,"\u00c4":13,"\u00c3":13,"\u00c2":13,"\u00c1":13,"\u00c0":13,"t":-12,"j":23,"a":13,"T":-12,"J":23,"A":13,"7":-10,"4":24,"3":-5,"1":-9}},"0":{"d":"16,-127v0,-78,30,-132,103,-132v71,0,102,54,102,132v0,79,-30,132,-103,132v-74,0,-102,-54,-102,-132xm118,-220v-33,0,-49,31,-49,93v0,62,16,93,49,93v33,0,50,-31,50,-94v0,-61,-16,-92,-50,-92","w":237,"k":{"7":7,"6":-4,"4":3,"1":5}},"1":{"d":"67,0r0,-206r-60,13r0,-37v34,-11,61,-29,111,-24r0,254r-51,0","w":156,"k":{"\u00b0":17,"\u00a2":14,"9":10,"8":10,"7":8,"6":8,"5":-4,"4":17,"3":2,"2":4,"0":12,".":7,",":7,"'":16,"%":18,"\"":16}},"2":{"d":"179,-183v-3,59,-53,106,-96,140r101,0r0,43r-177,0r0,-37v40,-32,68,-58,87,-78v22,-23,32,-44,32,-63v0,-52,-67,-44,-109,-24r0,-43v64,-26,166,-21,162,62","w":193,"k":{"\u00a2":4,"8":5,"6":7,"4":14,"3":-5,"2":-5}},"3":{"d":"189,-78v0,79,-100,94,-177,77r0,-40v41,9,125,15,125,-34v0,-39,-52,-43,-92,-37r0,-33r71,-67r-104,0r0,-42r166,0r0,37r-68,67v53,4,79,28,79,72","w":200,"k":{"\u00b0":9,"\u00a2":2,"}":7,"9":9,"7":6,"6":3,"2":2,"1":3,"\/":7,"-":2,"'":7,"%":16,"\"":7}},"4":{"d":"129,0r0,-54r-117,0r0,-45r119,-155r47,0r0,160r27,0r0,40r-27,0r0,54r-49,0xm54,-94r75,0r0,-98","w":217,"k":{"\u00b0":6,"\\":5,"9":6,"7":3,"4":3,"2":-5,"1":3,"-":5,"'":7,"%":14,"\"":7}},"5":{"d":"189,-83v0,80,-88,100,-174,83r0,-42v50,13,119,13,122,-39v2,-47,-66,-49,-116,-37r6,-136r148,0r0,43r-106,0r-2,49v69,-6,122,14,122,79","w":206,"k":{"\u00b0":9,"\u00a2":2,"}":7,"\\":9,"9":6,"7":6,"5":5,"4":3,"2":3,"1":5,"0":2,"\/":9,"'":9,"%":10,"\"":9}},"6":{"d":"14,-109v0,-101,65,-165,174,-148r0,39v-62,-7,-106,13,-115,65v54,-35,141,-7,136,67v-4,59,-37,92,-98,91v-65,0,-97,-47,-97,-114xm112,-129v-25,0,-45,15,-45,43v0,31,16,52,45,52v30,1,46,-20,45,-50v0,-28,-14,-46,-45,-45","w":222,"k":{"\u00b0":9,"9":5,"7":7,"1":8,"'":3,"%":7,"\"":4}},"7":{"d":"23,0r107,-210r-128,0r0,-44r179,0r0,40r-106,214r-52,0","w":188,"k":{"\u00b7":9,"\u00a2":10,"\\":-5,"8":4,"7":-12,"6":11,"4":24,"1":-9,"0":7,"\/":21,".":43,"-":4,",":43,"'":-7,"#":19,"\"":-7}},"8":{"d":"118,5v-58,0,-99,-26,-99,-78v0,-28,13,-48,39,-62v-22,-12,-33,-30,-33,-55v0,-47,41,-70,95,-69v52,1,91,20,92,70v0,25,-10,43,-32,54v26,14,38,34,38,62v1,54,-43,78,-100,78xm167,-75v0,-27,-20,-40,-50,-40v-28,0,-47,14,-47,41v0,28,20,42,48,42v29,0,50,-13,49,-43xm164,-188v0,-24,-20,-35,-47,-35v-26,0,-44,12,-44,36v0,24,19,35,45,35v30,0,46,-12,46,-36","w":237,"k":{"\u00b0":3,"\u00a2":6,"9":2,"8":-2,"7":3,"4":3,"1":3,"%":10}},"9":{"d":"208,-145v-1,100,-61,165,-171,149r0,-40v61,7,103,-12,112,-65v-52,37,-135,8,-135,-66v0,-57,37,-93,95,-92v66,1,100,45,99,114xm65,-170v-3,51,74,59,88,23v14,-34,-7,-74,-42,-73v-29,1,-44,20,-46,50","w":222,"k":{"8":-2,"7":3,"6":-2,"4":4,"2":3,"0":-4}},":":{"d":"19,-32v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,19,-18,37,-38,37v-20,0,-39,-19,-38,-37xm19,-159v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,18,-17,37,-38,37v-20,0,-39,-19,-38,-37","w":113},";":{"d":"57,-70v73,9,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-40,38,-37xm19,-159v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,18,-17,37,-38,37v-20,0,-39,-19,-38,-37","w":113},"<":{"d":"210,-31r-183,-74r0,-43r183,-73r0,43r-127,52r127,51r0,44","w":237},"=":{"d":"27,-63r0,-42r183,0r0,42r-183,0xm27,-148r0,-42r183,0r0,42r-183,0","w":237},">":{"d":"27,-31r0,-44r128,-51r-128,-52r0,-43r183,73r0,43","w":237},"?":{"d":"55,-32v0,-20,18,-38,39,-38v19,0,37,17,37,38v0,18,-17,37,-38,37v-20,0,-38,-19,-38,-37xm22,-248v55,-21,155,-18,155,52v0,29,-29,55,-47,70v-9,8,-11,17,-11,29r-51,0v-7,-51,48,-55,55,-94v-1,-40,-71,-30,-101,-14r0,-43","w":208},"@":{"d":"149,-259v94,0,158,96,119,190r-94,0r-2,-25r-49,0r-14,25r-36,0r81,-137r39,0r14,108r32,0v20,-67,-27,-127,-92,-128v-51,-1,-94,47,-94,99v0,72,73,119,146,94r0,34v-100,21,-181,-33,-183,-128v-2,-71,60,-132,133,-132xm139,-122r30,0r-5,-44","w":296,"k":{"\u00e6":12,"\u00c6":12,"z":11,"y":11,"x":14,"v":5,"t":11,"j":24,"a":14,"Z":11,"Y":11,"X":14,"V":5,"T":11,"J":24,"A":14}},"A":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u0178":28,"\u0173":9,"\u0172":9,"\u0171":9,"\u0170":9,"\u016f":9,"\u016e":9,"\u016b":9,"\u016a":9,"\u0165":26,"\u0164":26,"\u0163":26,"\u0162":26,"\u0151":9,"\u0150":9,"\u014d":9,"\u014c":9,"\u0123":9,"\u0122":9,"\u011f":9,"\u011e":9,"\u010d":9,"\u010c":9,"\u0107":9,"\u0106":9,"\u00ff":28,"\u00fd":28,"\u00fc":9,"\u00fb":9,"\u00fa":9,"\u00f9":9,"\u00f8":9,"\u00f6":9,"\u00f5":9,"\u00f4":9,"\u00f3":9,"\u00f2":9,"\u00e7":9,"\u00dd":28,"\u00dc":9,"\u00db":9,"\u00da":9,"\u00d9":9,"\u00d8":9,"\u00d6":9,"\u00d5":9,"\u00d4":9,"\u00d3":9,"\u00d2":9,"\u00c7":9,"\u00ab":14,"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"@":11,"?":25,"\/":-5,"-":12,"*":29,"'":31,"\"":31,"!":3," ":11}},"B":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u0178":16,"\u0173":6,"\u0172":6,"\u0171":6,"\u0170":6,"\u016f":6,"\u016e":6,"\u016b":6,"\u016a":6,"\u0165":13,"\u0164":13,"\u0163":13,"\u0162":13,"\u0105":5,"\u0104":5,"\u0103":5,"\u0102":5,"\u0101":5,"\u0100":5,"\u00ff":16,"\u00fd":16,"\u00fc":6,"\u00fb":6,"\u00fa":6,"\u00f9":6,"\u00e6":14,"\u00e5":5,"\u00e4":5,"\u00e3":5,"\u00e2":5,"\u00e1":5,"\u00e0":5,"\u00dd":16,"\u00dc":6,"\u00db":6,"\u00da":6,"\u00d9":6,"\u00c6":14,"\u00c5":5,"\u00c4":5,"\u00c3":5,"\u00c2":5,"\u00c1":5,"\u00c0":5,"z":2,"y":16,"x":9,"w":5,"v":8,"u":6,"t":13,"s":2,"r":5,"q":6,"p":5,"o":6,"n":5,"m":5,"l":5,"k":5,"j":7,"i":5,"h":5,"g":6,"f":5,"e":5,"d":5,"c":6,"b":5,"a":5,"\\":5,"Z":2,"Y":16,"X":9,"W":5,"V":8,"U":6,"T":13,"S":2,"R":5,"Q":6,"P":5,"O":6,"N":5,"M":5,"L":5,"K":5,"J":7,"I":5,"H":5,"G":6,"F":5,"E":5,"D":5,"C":6,"B":5,"A":5,"?":9,".":5,"-":6,",":5,"*":9,"'":5,"\"":5}},"C":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125","w":219,"k":{"\u017e":-7,"\u017d":-7,"\u017c":-7,"\u017b":-7,"\u017a":-7,"\u0179":-7,"\u0178":-2,"\u0173":-7,"\u0172":-7,"\u0171":-7,"\u0170":-7,"\u016f":-7,"\u016e":-7,"\u016b":-7,"\u016a":-7,"\u0165":-7,"\u0164":-7,"\u0163":-7,"\u0162":-7,"\u0161":-7,"\u0160":-7,"\u015f":-7,"\u015b":-7,"\u015a":-7,"\u0151":2,"\u0150":2,"\u014d":2,"\u014c":2,"\u0123":2,"\u0122":2,"\u011f":2,"\u011e":2,"\u011b":-7,"\u0119":-7,"\u0117":-7,"\u010d":2,"\u010c":2,"\u0107":2,"\u0106":2,"\u0105":-13,"\u0104":-13,"\u0103":-13,"\u0102":-13,"\u0101":-13,"\u0100":-13,"\u00ff":-2,"\u00fd":-2,"\u00fc":-7,"\u00fb":-7,"\u00fa":-7,"\u00f9":-7,"\u00f8":2,"\u00f6":2,"\u00f5":2,"\u00f4":2,"\u00f3":2,"\u00f2":2,"\u00eb":-7,"\u00ea":-7,"\u00e9":-7,"\u00e8":-7,"\u00e7":2,"\u00e6":-5,"\u00e5":-13,"\u00e4":-13,"\u00e3":-13,"\u00e2":-13,"\u00e1":-13,"\u00e0":-13,"\u00dd":-2,"\u00dc":-7,"\u00db":-7,"\u00da":-7,"\u00d9":-7,"\u00d8":2,"\u00d6":2,"\u00d5":2,"\u00d4":2,"\u00d3":2,"\u00d2":2,"\u00c7":2,"\u00c6":-5,"\u00c5":-13,"\u00c4":-13,"\u00c3":-13,"\u00c2":-13,"\u00c1":-13,"\u00c0":-13,"\u00bb":-11,"\u00ab":7,"}":-26,"z":-7,"y":-2,"x":-12,"w":-5,"v":-5,"u":-7,"t":-7,"s":-7,"r":-7,"q":2,"p":-7,"o":2,"n":-7,"m":-7,"l":-7,"k":-7,"j":-8,"i":-7,"h":-7,"g":2,"f":-7,"e":-7,"d":-7,"c":2,"b":-7,"a":-13,"]":-14,"\\":-7,"Z":-7,"Y":-2,"X":-12,"W":-5,"V":-5,"U":-7,"T":-7,"S":-7,"R":-7,"Q":2,"P":-7,"O":2,"N":-7,"M":-7,"L":-7,"K":-7,"J":-8,"I":-7,"H":-7,"G":2,"F":-7,"E":-7,"D":-7,"C":2,"B":-7,"A":-13,"@":5,"\/":-12,".":-5,"-":12,",":-5,")":-24,"'":-7,"\"":-7}},"D":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-254r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,168v73,8,117,-17,117,-84","w":270,"k":{"\u0178":17,"\u0165":10,"\u0164":10,"\u0163":10,"\u0162":10,"\u0105":9,"\u0104":9,"\u0103":9,"\u0102":9,"\u0101":9,"\u0100":9,"\u00ff":17,"\u00fd":17,"\u00e6":15,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"\u00dd":17,"\u00c6":15,"\u00c5":9,"\u00c4":9,"\u00c3":9,"\u00c2":9,"\u00c1":9,"\u00c0":9,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,"?":8,".":14,",":14}},"E":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u0161":2,"\u015a":2,"\u0150":3,"\u014c":3,"\u0122":3,"\u011e":3,"\u010c":3,"\u0106":3,"\u00d8":3,"\u00d6":3,"\u00d5":3,"\u00d4":3,"\u00d3":3,"\u00d2":3,"\u00c7":3,"s":2,"q":3,"o":3,"g":3,"c":3,"S":2,"Q":3,"O":3,"G":3,"C":3,"@":4,"-":6}},"F":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,64r99,0r0,42r-99,0r0,105r-52,0","w":196,"k":{"\u0105":18,"\u0104":18,"\u0103":18,"\u0102":18,"\u0101":18,"\u0100":18,"\u00e6":18,"\u00e5":18,"\u00e4":18,"\u00e3":18,"\u00e2":18,"\u00e1":18,"\u00e0":18,"\u00c6":36,"\u00c5":18,"\u00c4":18,"\u00c3":18,"\u00c2":18,"\u00c1":18,"\u00c0":18,"z":5,"x":10,"j":43,"a":18,"Z":5,"X":10,"J":43,"A":18,"\/":10,".":30,",":30,"&":5}},"G":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130","w":256,"k":{"\u0178":7,"\u0164":2,"\u0162":2,"\u00ff":7,"\u00fd":7,"\u00dd":7,"y":7,"t":2,"Y":7,"T":2,"?":5,"*":11}},"H":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"I":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"J":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0","w":177,"k":{"\u0105":9,"\u0104":9,"\u0103":9,"\u0102":9,"\u0101":9,"\u0100":9,"\u00e6":9,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"\u00c6":17,"\u00c5":9,"\u00c4":9,"\u00c3":9,"\u00c2":9,"\u00c1":9,"\u00c0":9,"j":12,"a":9,"J":12,"A":9,"?":6,".":12,",":12}},"K":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u0173":9,"\u0172":9,"\u0171":9,"\u0170":9,"\u016f":9,"\u016e":9,"\u016b":9,"\u016a":9,"\u0153":17,"\u0152":17,"\u0151":17,"\u0150":17,"\u014d":17,"\u014c":17,"\u0123":17,"\u0122":17,"\u011f":17,"\u011e":17,"\u010d":17,"\u010c":17,"\u0107":17,"\u0106":17,"\u0105":-13,"\u0104":-13,"\u0103":-13,"\u0102":-13,"\u0101":-13,"\u0100":-13,"\u00fc":9,"\u00fb":9,"\u00fa":9,"\u00f9":9,"\u00f8":17,"\u00f6":17,"\u00f5":17,"\u00f4":17,"\u00f3":17,"\u00f2":17,"\u00e7":17,"\u00e5":-13,"\u00e4":-13,"\u00e3":-13,"\u00e2":-13,"\u00e1":-13,"\u00e0":-13,"\u00dc":9,"\u00db":9,"\u00da":9,"\u00d9":9,"\u00d8":17,"\u00d6":17,"\u00d5":17,"\u00d4":17,"\u00d3":17,"\u00d2":17,"\u00c7":17,"\u00c5":-13,"\u00c4":-13,"\u00c3":-13,"\u00c2":-13,"\u00c1":-13,"\u00c0":-13,"u":9,"q":17,"o":17,"j":-12,"g":17,"c":17,"a":-13,"U":9,"Q":17,"O":17,"J":-12,"G":17,"C":17,"A":-13,"@":23,"?":10,"\/":-2,"-":22,"*":17,"&":9," ":21}},"L":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0","w":194,"k":{"\u0178":47,"\u0173":7,"\u0172":7,"\u0171":7,"\u0170":7,"\u016f":7,"\u016e":7,"\u016b":7,"\u016a":7,"\u0165":43,"\u0164":43,"\u0163":43,"\u0162":43,"\u0153":13,"\u0152":13,"\u0151":13,"\u0150":13,"\u014d":13,"\u014c":13,"\u0123":13,"\u0122":13,"\u011f":13,"\u011e":13,"\u010d":13,"\u010c":13,"\u0107":13,"\u0106":13,"\u0105":-6,"\u0104":-6,"\u0103":-6,"\u0102":-6,"\u0101":-6,"\u0100":-6,"\u00ff":47,"\u00fd":47,"\u00fc":7,"\u00fb":7,"\u00fa":7,"\u00f9":7,"\u00f8":13,"\u00f6":13,"\u00f5":13,"\u00f4":13,"\u00f3":13,"\u00f2":13,"\u00e7":13,"\u00e5":-6,"\u00e4":-6,"\u00e3":-6,"\u00e2":-6,"\u00e1":-6,"\u00e0":-6,"\u00dd":47,"\u00dc":7,"\u00db":7,"\u00da":7,"\u00d9":7,"\u00d8":13,"\u00d6":13,"\u00d5":13,"\u00d4":13,"\u00d3":13,"\u00d2":13,"\u00c7":13,"\u00c5":-6,"\u00c4":-6,"\u00c3":-6,"\u00c2":-6,"\u00c1":-6,"\u00c0":-6,"\u00bb":5,"\u00ab":9,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"Y":47,"W":20,"V":37,"U":7,"T":43,"Q":13,"O":13,"J":-10,"G":13,"C":13,"A":-6,"@":14,"?":28,"\/":-14,".":-5,"-":19,",":-5,"*":33,"'":34,"\"":34,"!":-2," ":22}},"M":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"N":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0","w":271},"O":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u017d":8,"\u017b":8,"\u0179":8,"\u0178":17,"\u0165":10,"\u0164":10,"\u0163":10,"\u0162":10,"\u0105":9,"\u0104":9,"\u0103":9,"\u0102":9,"\u0101":9,"\u0100":9,"\u00ff":17,"\u00fd":17,"\u00e6":15,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"\u00dd":17,"\u00c6":15,"\u00c5":9,"\u00c4":9,"\u00c3":9,"\u00c2":9,"\u00c1":9,"\u00c0":9,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,"?":8,".":12,",":12,"'":7,"\"":7}},"P":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u017d":12,"\u017b":12,"\u0179":12,"\u0178":8,"\u0173":2,"\u0172":2,"\u0171":2,"\u0170":2,"\u016f":2,"\u016e":2,"\u016b":2,"\u016a":2,"\u0159":2,"\u0157":2,"\u0155":2,"\u012f":2,"\u012b":2,"\u011b":2,"\u0119":2,"\u0117":2,"\u0113":2,"\u0105":31,"\u0104":31,"\u0103":31,"\u0102":31,"\u0101":31,"\u0100":31,"\u00ff":8,"\u00fd":8,"\u00fc":2,"\u00fb":2,"\u00fa":2,"\u00f9":2,"\u00ef":2,"\u00ee":2,"\u00ed":2,"\u00ec":2,"\u00eb":2,"\u00ea":2,"\u00e9":2,"\u00e8":2,"\u00e6":31,"\u00e5":31,"\u00e4":31,"\u00e3":31,"\u00e2":31,"\u00e1":31,"\u00e0":31,"\u00dd":8,"\u00dc":2,"\u00db":2,"\u00da":2,"\u00d9":2,"\u00c6":47,"\u00c5":31,"\u00c4":31,"\u00c3":31,"\u00c2":31,"\u00c1":31,"\u00c0":31,"z":12,"y":8,"x":17,"v":5,"u":2,"r":2,"p":2,"n":2,"m":2,"l":2,"k":2,"j":50,"i":2,"h":2,"f":2,"e":2,"d":2,"b":2,"a":31,"Z":12,"Y":8,"X":17,"V":5,"U":2,"R":2,"P":2,"N":2,"M":2,"L":2,"K":2,"J":50,"I":2,"H":2,"F":2,"E":2,"D":2,"B":2,"A":31,"?":6,"\/":10,".":46,"-":7,",":46,"&":9," ":18}},"Q":{"d":"142,-259v129,0,167,180,76,242r60,55r-64,0r-42,-36v-93,17,-156,-41,-156,-129v0,-78,49,-132,126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u0178":17,"\u0165":10,"\u0164":10,"\u0163":10,"\u0162":10,"\u0105":7,"\u0104":7,"\u0103":7,"\u0102":7,"\u0101":7,"\u0100":7,"\u00ff":17,"\u00fd":17,"\u00e6":7,"\u00e5":7,"\u00e4":7,"\u00e3":7,"\u00e2":7,"\u00e1":7,"\u00e0":7,"\u00dd":17,"\u00c6":7,"\u00c5":7,"\u00c4":7,"\u00c3":7,"\u00c2":7,"\u00c1":7,"\u00c0":7,"z":2,"y":17,"x":9,"v":4,"t":10,"a":7,"Z":2,"Y":17,"X":9,"V":4,"T":10,"A":7,"?":8,".":4,",":4,"'":7,"\"":7}},"R":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40","w":228,"k":{"\u0178":15,"\u0173":7,"\u0172":7,"\u0171":7,"\u0170":7,"\u016f":7,"\u016e":7,"\u016b":7,"\u016a":7,"\u0165":6,"\u0164":6,"\u0163":6,"\u0162":6,"\u0153":4,"\u0151":4,"\u0150":4,"\u014d":4,"\u014c":4,"\u0123":4,"\u0122":4,"\u011f":4,"\u011e":4,"\u010d":4,"\u010c":4,"\u0107":4,"\u0106":4,"\u00ff":15,"\u00fd":15,"\u00fc":7,"\u00fb":7,"\u00fa":7,"\u00f9":7,"\u00f8":4,"\u00f6":4,"\u00f5":4,"\u00f4":4,"\u00f3":4,"\u00f2":4,"\u00e7":4,"\u00dd":15,"\u00dc":7,"\u00db":7,"\u00da":7,"\u00d9":7,"\u00d8":4,"\u00d6":4,"\u00d5":4,"\u00d4":4,"\u00d3":4,"\u00d2":4,"\u00c7":4,"y":15,"v":9,"u":7,"t":6,"q":4,"o":4,"g":4,"c":4,"\\":5,"Y":15,"V":9,"U":7,"T":6,"Q":4,"O":4,"G":4,"C":4,"@":14,"?":10,"\/":-7,"-":16,"*":7,"'":5,"&":7,"\"":5,"!":7," ":7}},"S":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96","w":200,"k":{"\u0178":7,"\u0104":2,"\u0102":2,"\u0100":2,"\u00ff":7,"\u00fd":7,"\u00e6":8,"\u00dd":7,"\u00c6":8,"\u00c5":2,"\u00c4":2,"\u00c3":2,"\u00c2":2,"\u00c1":2,"\u00c0":2,"y":7,"j":2,"a":2,"Y":7,"J":2,"A":2,"?":8,"-":2,"*":15,"!":6}},"T":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u0161":-7,"\u0160":-7,"\u015f":-7,"\u015b":-7,"\u015a":-7,"\u0153":10,"\u0152":10,"\u0151":10,"\u0150":10,"\u014d":10,"\u014c":10,"\u0123":10,"\u0122":10,"\u011f":10,"\u011e":10,"\u010d":10,"\u010c":10,"\u0107":10,"\u0106":10,"\u0105":26,"\u0104":26,"\u0103":26,"\u0102":26,"\u0101":26,"\u0100":26,"\u00f8":10,"\u00f6":10,"\u00f5":10,"\u00f4":10,"\u00f3":10,"\u00f2":10,"\u00e7":10,"\u00e6":26,"\u00e5":26,"\u00e4":26,"\u00e3":26,"\u00e2":26,"\u00e1":26,"\u00e0":26,"\u00d8":10,"\u00d6":10,"\u00d5":10,"\u00d4":10,"\u00d3":10,"\u00d2":10,"\u00c7":10,"\u00c6":36,"\u00c5":26,"\u00c4":26,"\u00c3":26,"\u00c2":26,"\u00c1":26,"\u00c0":26,"\u00ab":9,"z":7,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,"\\":-12,"Z":7,"W":-5,"V":-5,"S":-7,"Q":10,"O":10,"J":44,"G":10,"C":10,"A":26,"@":13,";":10,":":10,"\/":14,".":23,"-":21,",":23,"&":7," ":10}},"U":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98","w":271,"k":{"\u017d":2,"\u017b":2,"\u0179":2,"\u0178":4,"\u0105":9,"\u0104":9,"\u0103":9,"\u0102":9,"\u0101":9,"\u0100":9,"\u00e6":14,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"\u00dd":4,"\u00c6":14,"\u00c5":9,"\u00c4":9,"\u00c3":9,"\u00c2":9,"\u00c1":9,"\u00c0":9,"z":2,"y":4,"x":2,"j":14,"a":9,"Z":2,"Y":4,"X":2,"J":14,"A":9,"?":3,"\/":5,".":5,",":5}},"V":{"d":"94,0r-94,-254r54,0r69,202r69,-202r52,0r-94,254r-56,0","w":243,"k":{"\u0165":-5,"\u0164":-5,"\u0163":-5,"\u0162":-5,"\u0153":4,"\u0152":4,"\u0151":4,"\u0150":4,"\u014d":4,"\u014c":4,"\u0123":4,"\u0122":4,"\u011f":4,"\u011e":4,"\u010d":4,"\u010c":4,"\u0107":4,"\u0106":4,"\u0105":21,"\u0104":21,"\u0103":21,"\u0102":21,"\u0101":21,"\u0100":21,"\u00f8":4,"\u00f6":4,"\u00f5":4,"\u00f4":4,"\u00f3":4,"\u00f2":4,"\u00e7":4,"\u00e6":21,"\u00e5":21,"\u00e4":21,"\u00e3":21,"\u00e2":21,"\u00e1":21,"\u00e0":21,"\u00d8":4,"\u00d6":4,"\u00d5":4,"\u00d4":4,"\u00d3":4,"\u00d2":4,"\u00c7":4,"\u00c6":37,"\u00c5":21,"\u00c4":21,"\u00c3":21,"\u00c2":21,"\u00c1":21,"\u00c0":21,"\u00ab":10,"t":-5,"q":4,"o":4,"j":41,"g":4,"c":4,"a":21,"T":-5,"Q":4,"O":4,"J":41,"G":4,"C":4,"A":21,"@":5,";":7,":":7,"\/":8,".":21,"-":13,",":21,"&":10," ":10}},"W":{"d":"70,0r-70,-254r55,0r45,194r50,-194r53,0r50,194r45,-194r53,0r-70,254r-56,0r-50,-185r-49,185r-56,0","w":350,"k":{"\u0165":-5,"\u0164":-5,"\u0163":-5,"\u0162":-5,"\u0105":7,"\u0104":7,"\u0103":7,"\u0102":7,"\u0101":7,"\u0100":7,"\u00e6":7,"\u00e5":7,"\u00e4":7,"\u00e3":7,"\u00e2":7,"\u00e1":7,"\u00e0":7,"\u00c6":21,"\u00c5":7,"\u00c4":7,"\u00c3":7,"\u00c2":7,"\u00c1":7,"\u00c0":7,"t":-5,"j":18,"a":7,"T":-5,"J":18,"A":7,".":6,"-":4,",":6,"&":2}},"X":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u0173":2,"\u0172":2,"\u0171":2,"\u0170":2,"\u016f":2,"\u016e":2,"\u016b":2,"\u016a":2,"\u0153":9,"\u0152":9,"\u0151":9,"\u0150":9,"\u014d":9,"\u014c":9,"\u0123":9,"\u0122":9,"\u011f":9,"\u011e":9,"\u010d":9,"\u010c":9,"\u0107":9,"\u0106":9,"\u00fc":2,"\u00fb":2,"\u00fa":2,"\u00f9":2,"\u00f8":9,"\u00f6":9,"\u00f5":9,"\u00f4":9,"\u00f3":9,"\u00f2":9,"\u00e7":9,"\u00dc":2,"\u00db":2,"\u00da":2,"\u00d9":2,"\u00d8":9,"\u00d6":9,"\u00d5":9,"\u00d4":9,"\u00d3":9,"\u00d2":9,"\u00c7":9,"\u00bb":5,"\u00ab":9,"u":2,"q":9,"o":9,"j":-9,"g":9,"c":9,"U":2,"Q":9,"O":9,"J":-9,"G":9,"C":9,"@":14,"?":6,"-":21,"*":13,"&":2," ":14}},"Y":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u017e":5,"\u017d":5,"\u017c":5,"\u017b":5,"\u017a":5,"\u0179":5,"\u0173":4,"\u0172":4,"\u0171":4,"\u0170":4,"\u016f":4,"\u016e":4,"\u016b":4,"\u016a":4,"\u0153":17,"\u0152":17,"\u0151":17,"\u0150":17,"\u014d":17,"\u014c":17,"\u0123":17,"\u0122":17,"\u011f":17,"\u011e":17,"\u010d":17,"\u010c":17,"\u0107":17,"\u0106":17,"\u0105":28,"\u0104":28,"\u0103":28,"\u0102":28,"\u0101":28,"\u0100":28,"\u00fc":4,"\u00fb":4,"\u00fa":4,"\u00f9":4,"\u00f8":17,"\u00f6":17,"\u00f5":17,"\u00f4":17,"\u00f3":17,"\u00f2":17,"\u00e7":17,"\u00e6":28,"\u00e5":28,"\u00e4":28,"\u00e3":28,"\u00e2":28,"\u00e1":28,"\u00e0":28,"\u00dc":4,"\u00db":4,"\u00da":4,"\u00d9":4,"\u00d8":17,"\u00d6":17,"\u00d5":17,"\u00d4":17,"\u00d3":17,"\u00d2":17,"\u00c7":17,"\u00c6":47,"\u00c5":28,"\u00c4":28,"\u00c3":28,"\u00c2":28,"\u00c1":28,"\u00c0":28,"\u00bb":4,"\u00ab":18,"z":5,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,"Z":5,"U":4,"Q":17,"O":17,"J":49,"G":17,"C":17,"A":28,"@":14,"?":3,";":14,":":14,"\/":19,".":30,"-":22,",":30,"*":11,"&":10," ":21}},"Z":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0","w":236,"k":{"\u0164":-5,"\u0162":-5,"\u0151":8,"\u014d":8,"\u0123":5,"\u011f":5,"\u010d":8,"\u0107":8,"\u0105":2,"\u0104":2,"\u0103":2,"\u0102":2,"\u0101":2,"\u0100":2,"\u00f8":8,"\u00f6":8,"\u00f5":8,"\u00f4":8,"\u00f3":8,"\u00f2":8,"\u00e7":8,"\u00e5":2,"\u00e4":2,"\u00e3":2,"\u00e2":2,"\u00e1":2,"\u00e0":2,"\u00c5":2,"\u00c4":2,"\u00c3":2,"\u00c2":2,"\u00c1":2,"\u00c0":2,"\u00ab":8,"t":-5,"q":4,"o":8,"g":5,"c":8,"a":2,"T":-5,"Q":4,"O":8,"G":5,"C":8,"A":2,"@":11,"?":5,"-":20,"*":15,"&":10," ":13}},"[":{"d":"29,0r0,-254r80,0r0,38r-37,0r0,178r37,0r0,38r-80,0","w":115,"k":{"7":-5,"4":13,"3":-12,"2":-7,"1":-10}},"\\":{"d":"72,0r-72,-254r43,0r72,254r-43,0","w":115,"k":{"\u0178":19,"\u0165":14,"\u0164":14,"\u0163":14,"\u0162":14,"\u00ff":19,"\u00fd":19,"\u00dd":19,"y":19,"v":8,"u":5,"t":14,"j":-12,"Y":19,"V":8,"U":5,"T":14,"J":-12,"3":-5,"2":-12,"&":18}},"]":{"d":"7,0r0,-38r37,0r0,-178r-37,0r0,-38r80,0r0,254r-80,0","w":115},"^":{"d":"11,-65r66,-132r40,0r67,132r-44,0r-44,-91r-44,91r-41,0","w":194},"_":{"d":"0,62r0,-24r180,0r0,24r-180,0","w":180},"`":{"d":"69,-278r-65,-49r67,0r49,49r-51,0","w":180},"a":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u0173":9,"\u0171":9,"\u016f":9,"\u016b":9,"\u0165":26,"\u0163":26,"\u0151":9,"\u014d":9,"\u0123":9,"\u011f":9,"\u010d":9,"\u0107":9,"\u00ff":28,"\u00fd":28,"\u00fc":9,"\u00fb":9,"\u00fa":9,"\u00f9":9,"\u00f8":9,"\u00f6":9,"\u00f5":9,"\u00f4":9,"\u00f3":9,"\u00f2":9,"\u00e7":9,"\u00ab":14,"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"@":11,"?":25,"\/":-5,"-":12,"*":29,"'":31,"\"":31,"!":3," ":11}},"b":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u0173":6,"\u0171":6,"\u016f":6,"\u016b":6,"\u0165":13,"\u0163":13,"\u0105":5,"\u0103":5,"\u0101":5,"\u00ff":16,"\u00fd":16,"\u00fc":6,"\u00fb":6,"\u00fa":6,"\u00f9":6,"\u00e6":14,"\u00e5":5,"\u00e4":5,"\u00e3":5,"\u00e2":5,"\u00e1":5,"\u00e0":5,"z":2,"y":16,"x":9,"w":5,"v":8,"u":6,"t":13,"s":2,"r":5,"q":6,"p":5,"o":6,"n":5,"m":5,"l":5,"k":5,"j":7,"i":5,"h":5,"g":6,"f":5,"e":5,"d":5,"c":6,"b":5,"a":5,"\\":5,"?":9,".":5,"-":6,",":5,"*":9,"'":5,"\"":5}},"c":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125","w":219,"k":{"\u017e":-7,"\u017c":-7,"\u017a":-7,"\u0165":-7,"\u0163":-7,"\u0160":-7,"\u015f":-7,"\u015b":-7,"\u0151":2,"\u014d":2,"\u0123":2,"\u011f":2,"\u011b":-7,"\u0119":-7,"\u0117":-7,"\u0113":-7,"\u010d":2,"\u0107":2,"\u0105":-13,"\u0103":-13,"\u0101":-13,"\u00ff":-2,"\u00fd":-2,"\u00f8":2,"\u00f6":2,"\u00f5":2,"\u00f4":2,"\u00f3":2,"\u00f2":2,"\u00eb":-7,"\u00ea":-7,"\u00e9":-7,"\u00e8":-7,"\u00e7":2,"\u00e6":-5,"\u00e5":-13,"\u00e4":-13,"\u00e3":-13,"\u00e2":-13,"\u00e1":-13,"\u00e0":-13,"\u00bb":-11,"\u00ab":7,"}":-26,"z":-7,"y":-2,"x":-12,"w":-5,"v":-5,"u":-7,"t":-7,"s":-7,"r":-7,"q":2,"p":-7,"o":2,"n":-7,"m":-7,"l":-7,"k":-7,"j":-8,"i":-7,"h":-7,"g":2,"f":-7,"e":-7,"d":-7,"c":2,"b":-7,"a":-13,"]":-14,"\\":-7,"@":5,"\/":-12,".":-5,"-":12,",":-5,")":-24,"'":-7,"\"":-7}},"d":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-254r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,168v73,8,117,-17,117,-84","w":270,"k":{"\u0165":10,"\u0163":10,"\u0105":9,"\u0103":9,"\u0101":9,"\u00ff":17,"\u00fd":17,"\u00e6":15,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"?":8,".":14,",":14}},"e":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u0160":2,"\u015f":2,"\u015b":2,"\u0151":3,"\u014d":3,"\u0123":3,"\u011f":3,"\u010d":3,"\u0107":3,"\u00f8":3,"\u00f6":3,"\u00f5":3,"\u00f4":3,"\u00f3":3,"\u00f2":3,"\u00e7":3,"s":2,"q":3,"o":3,"g":3,"c":3,"@":4,"-":6}},"f":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,64r99,0r0,42r-99,0r0,105r-52,0","w":196,"k":{"\u017e":5,"\u017c":5,"\u017a":5,"\u0105":18,"\u0103":18,"\u0101":18,"\u00e6":18,"\u00e5":18,"\u00e4":18,"\u00e3":18,"\u00e2":18,"\u00e1":18,"\u00e0":18,"z":5,"x":10,"j":43,"a":18,"\/":10,".":30,",":30,"&":5}},"g":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130","w":256,"k":{"\u0165":2,"\u0163":2,"\u00ff":7,"\u00fd":7,"y":7,"t":2,"?":5,"*":11}},"h":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"i":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"j":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0","w":177,"k":{"\u0105":9,"\u0103":9,"\u0101":9,"\u00e6":17,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"j":12,"a":9,"?":6,".":12,",":12}},"k":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u0173":9,"\u0171":9,"\u016f":9,"\u016b":9,"\u0153":17,"\u0151":17,"\u014d":17,"\u0123":17,"\u011f":17,"\u010d":17,"\u0107":17,"\u0105":-13,"\u0103":-13,"\u0101":-13,"\u00fc":9,"\u00fb":9,"\u00fa":9,"\u00f9":9,"\u00f8":17,"\u00f6":17,"\u00f5":17,"\u00f4":17,"\u00f3":17,"\u00f2":17,"\u00e7":17,"\u00e6":-13,"\u00e5":-13,"\u00e4":-13,"\u00e3":-13,"\u00e2":-13,"\u00e1":-13,"\u00e0":-13,"u":9,"q":17,"o":17,"j":-12,"g":17,"c":17,"a":-13,"@":23,"?":10,"\/":-2,"-":22,"*":17,"&":9," ":21}},"l":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0","w":194,"k":{"\u0173":7,"\u0171":7,"\u016f":7,"\u016b":7,"\u0165":43,"\u0163":43,"\u0153":13,"\u0151":13,"\u014d":13,"\u0123":13,"\u011f":13,"\u010d":13,"\u0107":13,"\u0105":-6,"\u0103":-6,"\u0101":-6,"\u00ff":47,"\u00fd":47,"\u00fc":7,"\u00fb":7,"\u00fa":7,"\u00f9":7,"\u00f8":13,"\u00f6":13,"\u00f5":13,"\u00f4":13,"\u00f3":13,"\u00f2":13,"\u00e7":13,"\u00e5":-6,"\u00e4":-6,"\u00e3":-6,"\u00e2":-6,"\u00e1":-6,"\u00e0":-6,"\u00bb":5,"\u00ab":9,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"@":14,"?":28,"\/":-14,".":-5,"-":19,",":-5,"*":33,"'":34,"\"":34,"!":-2," ":22}},"m":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"n":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0","w":271},"o":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u017e":8,"\u017c":8,"\u017a":8,"\u0165":10,"\u0163":10,"\u0105":9,"\u0103":9,"\u0101":9,"\u00ff":17,"\u00fd":17,"\u00e6":15,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"?":8,".":12,",":12,"'":7,"\"":7}},"p":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u0173":2,"\u0171":2,"\u016f":2,"\u016b":2,"\u0159":2,"\u0157":2,"\u0155":2,"\u011b":2,"\u0119":2,"\u0117":2,"\u0113":2,"\u0105":31,"\u0103":31,"\u0101":31,"\u00ff":8,"\u00fd":8,"\u00fc":2,"\u00fb":2,"\u00fa":2,"\u00f9":2,"\u00eb":2,"\u00ea":2,"\u00e9":2,"\u00e8":2,"\u00e6":31,"\u00e5":31,"\u00e4":31,"\u00e3":31,"\u00e2":31,"\u00e1":31,"\u00e0":31,"z":12,"y":8,"x":17,"v":5,"u":2,"r":2,"p":2,"n":2,"m":2,"l":2,"k":2,"j":50,"i":2,"h":2,"f":2,"e":2,"d":2,"b":2,"a":31,"?":6,"\/":10,".":46,"-":7,",":46,"&":9," ":18}},"q":{"d":"142,-259v129,0,167,180,76,242r60,55r-64,0r-42,-36v-93,17,-156,-41,-156,-129v0,-78,49,-132,126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u0165":10,"\u0163":10,"\u0105":7,"\u0103":7,"\u0101":7,"\u00ff":17,"\u00fd":17,"\u00e6":7,"\u00e5":7,"\u00e4":7,"\u00e3":7,"\u00e2":7,"\u00e1":7,"\u00e0":7,"z":2,"y":17,"x":9,"v":4,"t":10,"a":7,"?":8,".":4,",":4,"'":7,"\"":7}},"r":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40","w":228,"k":{"\u0173":7,"\u0171":7,"\u016f":7,"\u016b":7,"\u0165":6,"\u0163":6,"\u0153":4,"\u0151":4,"\u014d":4,"\u0123":4,"\u011f":4,"\u010d":4,"\u0107":4,"\u00ff":15,"\u00fd":15,"\u00fc":7,"\u00fb":7,"\u00fa":7,"\u00f9":7,"\u00f8":4,"\u00f6":4,"\u00f5":4,"\u00f4":4,"\u00f3":4,"\u00f2":4,"\u00e7":4,"y":15,"v":9,"u":7,"t":6,"q":4,"o":4,"g":4,"c":4,"\\":5,"@":14,"?":10,"\/":-7,"-":16,"*":7,"'":5,"&":7,"\"":5,"!":7," ":7}},"s":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96","w":200,"k":{"\u00ff":7,"\u00fd":7,"\u00e6":8,"y":7,"j":2,"a":2,"?":8,"-":2,"*":15,"!":6}},"t":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u0160":-7,"\u015f":-7,"\u015b":-7,"\u0153":10,"\u0151":10,"\u014d":10,"\u0123":10,"\u011f":10,"\u010d":10,"\u0107":10,"\u0105":26,"\u0103":26,"\u0101":26,"\u00f8":10,"\u00f6":10,"\u00f5":10,"\u00f4":10,"\u00f3":10,"\u00f2":10,"\u00e7":10,"\u00e6":26,"\u00e5":26,"\u00e4":26,"\u00e3":26,"\u00e2":26,"\u00e1":26,"\u00e0":26,"\u00ab":9,"z":7,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,"\\":-12,"@":13,";":10,":":10,"\/":14,".":23,"-":21,",":23,"&":7," ":10}},"u":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98","w":271,"k":{"\u0105":9,"\u0103":9,"\u0101":9,"\u00ff":4,"\u00fd":4,"\u00e6":14,"\u00e5":9,"\u00e4":9,"\u00e3":9,"\u00e2":9,"\u00e1":9,"\u00e0":9,"z":2,"y":4,"x":2,"j":14,"a":9,"?":3,"\/":5,".":5,",":5}},"v":{"d":"94,0r-94,-254r54,0r69,202r69,-202r52,0r-94,254r-56,0","w":243,"k":{"\u0165":-5,"\u0163":-5,"\u0153":4,"\u0151":4,"\u014d":4,"\u0123":4,"\u011f":4,"\u010d":4,"\u0107":4,"\u0105":21,"\u0103":21,"\u0101":21,"\u00f8":4,"\u00f6":4,"\u00f5":4,"\u00f4":4,"\u00f3":4,"\u00f2":4,"\u00e7":4,"\u00e6":21,"\u00e5":21,"\u00e4":21,"\u00e3":21,"\u00e2":21,"\u00e1":21,"\u00e0":21,"\u00ab":10,"t":-5,"q":4,"o":4,"j":41,"g":4,"c":4,"a":21,"@":5,";":7,":":7,"\/":8,".":21,"-":13,",":21,"&":10," ":10}},"w":{"d":"70,0r-70,-254r55,0r45,194r50,-194r53,0r50,194r45,-194r53,0r-70,254r-56,0r-50,-185r-49,185r-56,0","w":350,"k":{"\u0165":-5,"\u0163":-5,"\u0105":7,"\u0103":7,"\u0101":7,"\u00e6":7,"\u00e5":7,"\u00e4":7,"\u00e3":7,"\u00e2":7,"\u00e1":7,"\u00e0":7,"t":-5,"j":18,"a":7,".":6,"-":4,",":6,"&":2}},"x":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u0173":2,"\u0171":2,"\u016f":2,"\u016b":2,"\u0153":9,"\u0151":9,"\u014d":9,"\u0123":9,"\u011f":9,"\u010d":9,"\u0107":9,"\u00fc":2,"\u00fb":2,"\u00fa":2,"\u00f9":2,"\u00f8":9,"\u00f6":9,"\u00f5":9,"\u00f4":9,"\u00f3":9,"\u00f2":9,"\u00e7":9,"\u00bb":5,"\u00ab":9,"u":2,"q":9,"o":9,"j":-9,"g":9,"c":9,"@":14,"?":6,"-":21,"*":13,"&":2," ":14}},"y":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u0173":4,"\u0171":4,"\u016f":4,"\u016b":4,"\u0153":17,"\u0151":17,"\u014d":17,"\u0123":17,"\u011f":17,"\u010d":17,"\u0107":17,"\u0105":28,"\u0103":28,"\u0101":28,"\u00fc":4,"\u00fb":4,"\u00fa":4,"\u00f9":4,"\u00f8":17,"\u00f6":17,"\u00f5":17,"\u00f4":17,"\u00f3":17,"\u00f2":17,"\u00e7":17,"\u00e6":28,"\u00e5":28,"\u00e4":28,"\u00e3":28,"\u00e2":28,"\u00e1":28,"\u00e0":28,"\u00bb":4,"\u00ab":18,"z":5,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,"@":14,"?":3,";":14,":":14,"\/":19,".":30,"-":22,",":30,"*":11,"&":10," ":21}},"z":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0","w":236,"k":{"\u0151":8,"\u014d":8,"\u0105":2,"\u0103":2,"\u0101":2,"\u00f8":8,"\u00f6":8,"\u00f5":8,"\u00f4":8,"\u00f3":8,"\u00f2":8,"\u00e5":2,"\u00e4":2,"\u00e3":2,"\u00e2":2,"\u00e1":2,"\u00e0":2,"\u00ab":8,"t":-5,"q":4,"o":8,"g":5,"c":8,"a":2,"@":11,"?":5,"-":20,"*":15,"&":10," ":13}},"{":{"d":"33,-53v0,-27,4,-58,-26,-54r0,-40v29,2,26,-26,26,-54v0,-44,32,-57,80,-53r0,38v-63,-17,-14,80,-59,89v47,1,-11,102,59,89r0,38v-48,4,-81,-9,-80,-53","w":120,"k":{"7":-5,"4":15,"2":-3}},"|":{"d":"29,0r0,-254r43,0r0,254r-43,0","w":100},"}":{"d":"87,-81v0,60,-18,89,-80,81r0,-38v63,18,14,-81,60,-89v-48,-1,10,-102,-60,-89r0,-38v60,-6,80,18,80,81v0,19,7,25,26,26r0,40v-18,0,-26,8,-26,26","w":120},"~":{"d":"218,-161v4,59,-46,80,-93,54v-22,-12,-66,-45,-69,7r-36,0v-4,-60,46,-81,93,-54v22,12,66,45,69,-7r36,0","w":237},"\u00a0":{"w":98},"\u00a1":{"d":"57,65v-33,-1,-37,-27,-33,-66r11,-97r43,0r14,128v0,19,-15,36,-35,35xm19,-162v0,-19,18,-38,39,-38v19,0,37,20,37,39v1,20,-17,37,-38,37v-20,0,-39,-17,-38,-38","w":113},"\u00a2":{"d":"60,-127v0,52,52,61,97,48r0,39v-10,2,-23,4,-38,5r0,35r-37,0r0,-37v-44,-9,-69,-39,-69,-90v0,-50,26,-80,69,-90r0,-37r37,0r0,35v13,1,25,2,36,4r0,40v-45,-13,-95,-2,-95,48","w":166},"\u00a3":{"d":"7,0r0,-39v25,-4,36,-36,38,-70r-33,0r0,-24r38,-12v6,-64,22,-116,93,-114v14,0,29,2,44,5r0,39v-43,-12,-87,-4,-86,45r-3,25r58,0r0,36r-64,0v-2,27,-10,52,-26,66r126,0r0,43r-185,0","w":205,"k":{"9":9,"8":7,"6":7,"4":15,"2":-7,"0":2}},"\u00a4":{"d":"46,-31r-30,-30r23,-23v-14,-25,-13,-54,0,-78r-23,-22r30,-30r23,22v24,-12,54,-12,77,1r23,-23r30,30r-23,23v14,23,13,53,0,77r23,23r-30,30r-23,-24v-22,14,-54,15,-77,1xm150,-123v0,-23,-19,-44,-43,-44v-22,0,-41,20,-41,44v0,23,19,44,41,44v23,-1,43,-20,43,-44","w":215},"\u00a5":{"d":"241,-254r-69,114r33,0r0,32r-53,0v-5,7,-5,19,-5,31r58,0r0,32r-58,0r0,45r-53,0r0,-45r-58,0r0,-24v18,-4,34,-10,58,-8v1,-13,0,-25,-6,-31r-52,0r0,-23r33,-9r-69,-114r57,0r64,111r65,-111r55,0","w":240,"k":{"8":2,"7":-10,"4":22,"3":-5,"1":-5}},"\u00a6":{"d":"29,0r0,-92r43,0r0,92r-43,0xm29,-162r0,-92r43,0r0,92r-43,0","w":100},"\u00a7":{"d":"206,-47v1,66,-114,56,-170,42r0,-38v28,8,109,25,122,-2v-26,-38,-140,-19,-138,-80v0,-20,11,-33,34,-40v-21,-9,-32,-23,-32,-43v1,-64,108,-54,165,-43r0,37v-31,-6,-56,-10,-76,-10v-28,0,-56,14,-32,27v38,22,126,14,127,68v0,19,-11,31,-33,38v19,9,32,20,33,44xm159,-120v-9,-25,-23,-16,-71,-32v-25,-1,-29,26,-9,33v5,3,36,10,61,17v12,-2,19,-9,19,-18","w":226},"\u00a8":{"d":"15,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm107,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-29,-12,-29,-30","w":180},"\u00a9":{"d":"81,-127v0,-59,52,-86,112,-71r0,30v-37,-9,-75,1,-75,41v0,40,41,52,76,40r0,31v-59,15,-113,-10,-113,-71xm16,-127v-2,-71,60,-134,133,-132v75,2,129,56,131,132v2,70,-60,134,-132,132v-73,-1,-130,-55,-132,-132xm247,-127v2,-53,-46,-104,-100,-102v-57,1,-95,45,-97,102v-1,54,45,103,98,102v55,-1,98,-44,99,-102","w":296},"\u00aa":{"d":"4,-102r60,-152r47,0r60,152r-40,0r-11,-29r-68,0r-12,29r-36,0xm64,-162r44,0r-22,-62","w":174},"\u00ab":{"d":"59,-55r-52,-72r52,-72r53,0r-51,72r51,72r-53,0xm154,-55r-52,-72r52,-72r53,0r-52,72r52,72r-53,0","w":213,"k":{"\u0447":-1,"\u0443":3,"\u0442":24,"\u043b":-1,"\u042f":2,"\u0427":-1,"\u0423":3,"\u0422":14,"\u041b":-1,"\u0410":-1,"\u03d2":4,"\u03c4":24,"\u03a5":4,"\u03a4":14,"\u039b":-2,"\u0391":-1,"\u038a":-3,"\u0389":-3,"\u0386":2,"\u0178":4,"\u00ff":4,"\u00fd":4,"\u00dd":4,"y":4,"x":5,"Y":4,"X":5,".":-4}},"\u00ac":{"d":"165,-68r0,-70r-138,0r0,-43r183,0r0,113r-45,0","w":237},"\u00ad":{"d":"14,-107r0,-48r120,0r0,48r-120,0","w":148},"\u00ae":{"d":"91,-202v51,-1,109,-6,107,46v0,17,-8,30,-22,38r35,60r-38,0r-26,-50r-24,0r0,50r-32,0r0,-144xm163,-155v0,-20,-18,-24,-40,-22r0,44v22,1,40,-1,40,-22xm16,-127v0,-71,60,-134,132,-132v75,3,128,56,130,132v2,69,-60,132,-131,132v-72,0,-131,-62,-131,-132xm244,-127v0,-54,-44,-104,-98,-102v-57,2,-95,44,-96,102v-2,54,44,102,97,102v53,0,97,-48,97,-102","w":293},"\u00af":{"d":"14,-275r0,-38r137,0r0,38r-137,0","w":165},"\u00b0":{"d":"18,-189v0,-38,31,-70,71,-70v36,0,69,34,69,70v0,36,-33,69,-70,69v-38,0,-70,-33,-70,-69xm123,-190v0,-19,-15,-36,-36,-36v-18,0,-34,17,-34,37v0,20,16,36,35,36v19,0,35,-17,35,-37","w":175},"\u00b1":{"d":"27,0r0,-43r69,0r0,-74r-69,0r0,-42r69,0r0,-74r46,0r0,74r68,0r0,42r-68,0r0,74r68,0r0,43r-183,0","w":237},"\u00b2":{"d":"142,-210v-5,35,-27,55,-62,78r66,0r0,29r-127,0r0,-25v33,-24,76,-45,83,-79v-9,-32,-40,-22,-77,-9r0,-31v50,-19,113,-18,117,37","w":164},"\u00b3":{"d":"146,-150v-1,51,-74,59,-126,45r0,-28v30,8,83,12,85,-15v1,-20,-38,-21,-63,-17r0,-23r52,-37r-74,0r0,-29r118,0r0,28r-47,33v28,1,55,13,55,43","w":164},"\u00b4":{"d":"60,-278r49,-49r67,0r-65,49r-51,0","w":180},"\u00b5":{"d":"25,72r0,-259r52,0r0,116v1,44,52,35,66,4r0,-120r51,0r0,187r-41,0r-7,-20v-16,23,-47,32,-69,16r0,76r-52,0","w":219},"\u00b6":{"d":"99,-98v-52,-2,-89,-27,-88,-78v0,-52,33,-78,100,-78r78,0r0,259r-29,0r0,-232r-32,0r0,232r-29,0r0,-103","w":216},"\u00b7":{"d":"19,-127v0,-20,17,-38,38,-38v19,0,38,18,38,38v0,20,-18,38,-38,38v-19,0,-38,-17,-38,-38","w":113,"k":{"7":19}},"\u00b8":{"d":"44,65r0,-32v16,5,41,2,41,-13v0,-9,-8,-16,-22,-20r44,0v15,6,23,18,23,33v0,30,-45,39,-86,32","w":180},"\u00b9":{"d":"53,-103r0,-118r-42,10r0,-26v25,-8,45,-20,81,-17r0,151r-39,0","w":140},"\u00ba":{"d":"14,-178v0,-48,32,-80,80,-80v47,-1,79,32,79,81v0,47,-32,79,-80,79v-48,0,-79,-33,-79,-80xm133,-179v1,-27,-14,-49,-41,-48v-25,0,-38,22,-38,49v0,28,13,50,39,50v27,0,40,-22,40,-51","w":187},"\u00bb":{"d":"7,-55r52,-72r-52,-72r53,0r52,72r-52,72r-53,0xm102,-55r51,-72r-51,-72r53,0r52,72r-52,72r-53,0","w":213,"k":{"\u00e6":12,"\u00c6":12,"z":8,"y":18,"x":9,"v":10,"t":9,"j":10,"a":14,"Z":8,"Y":18,"X":9,"V":10,"T":9,"J":10,"A":14}},"\u00bc":{"d":"50,0r144,-254r43,0r-144,254r-43,0xm239,0r0,-29r-81,0r0,-29r83,-93r36,0r0,95r18,0r0,27r-18,0r0,29r-38,0xm191,-56r48,0r0,-55xm46,-103r0,-118r-42,10r0,-26v25,-8,45,-20,81,-17r0,151r-39,0","w":319},"\u00bd":{"d":"50,0r144,-254r43,0r-144,254r-43,0xm314,-108v-8,43,-26,53,-62,78r65,0r0,30r-127,0r0,-25v50,-37,70,-40,83,-80v-9,-32,-43,-21,-76,-8r0,-31v51,-20,113,-16,117,36xm46,-103r0,-118r-42,10r0,-26v25,-8,45,-20,81,-17r0,151r-39,0","w":335},"\u00be":{"d":"95,0r144,-254r44,0r-144,254r-44,0xm281,0r0,-29r-81,0r0,-29r83,-93r36,0r0,95r19,0r0,27r-19,0r0,29r-38,0xm233,-56r48,0r0,-55xm145,-150v0,51,-74,59,-126,45r0,-28v30,8,84,12,86,-15v1,-20,-39,-21,-64,-17r0,-23r52,-37r-74,0r0,-29r118,0r0,28r-46,33v28,1,55,13,54,43","w":355},"\u00bf":{"d":"187,53v-56,22,-155,18,-155,-51v0,-45,55,-56,58,-100r51,0v6,53,-47,54,-55,94v1,39,71,30,101,14r0,43xm78,-162v0,-20,18,-38,38,-38v18,-1,37,17,37,38v0,20,-17,37,-38,37v-20,0,-37,-18,-37,-37","w":208},"\u00c0":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm102,-278r-65,-49r67,0r49,49r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c1":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm103,-278r49,-49r67,0r-65,49r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c2":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm49,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c3":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm157,-279v-22,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c4":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm52,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-14,28,-29,29v-16,0,-30,-13,-29,-30xm144,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c5":{"d":"128,-336v51,-6,74,67,31,89r98,247r-55,0r-22,-58r-107,0r-22,58r-51,0r97,-246v-44,-22,-23,-96,31,-90xm164,-101r-37,-103r-37,103r74,0xm149,-288v-1,-9,-10,-18,-22,-18v-12,0,-21,7,-21,19v0,12,9,19,22,19v11,1,21,-10,21,-20","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00c6":{"d":"184,-58r-102,0r-34,58r-53,0r152,-254r192,0r0,43r-103,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0r0,-58xm184,-100r0,-111r-11,0r-66,111r77,0","w":359,"k":{"s":2,"q":3,"o":3,"g":3,"c":3,"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u00c7":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-21,4,-39,6,-55,6v33,26,6,63,-42,63v-17,0,-32,-2,-44,-5r0,-32v34,19,83,-17,34,-30v-56,-14,-93,-60,-93,-127","w":219,"k":{"\u00e6":-5,"\u00c6":-5,"z":-7,"y":-2,"u":-7,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,"\\":-7,"Z":-7,"Y":-2,"W":-5,"V":-5,"U":-7,"T":-7,"S":-7,"Q":2,"O":2,"J":-8,"G":2,"C":2,"A":-13,"\/":-12,"-":12}},"\u00c8":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm99,-278r-65,-49r67,0r50,49r-52,0","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u00c9":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm71,-278r49,-49r67,0r-65,49r-51,0","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u00ca":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm29,-278r53,-49r55,0r51,49r-51,0r-28,-28r-29,28r-51,0","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u00cb":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm32,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm124,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u00cc":{"d":"29,0r0,-254r52,0r0,254r-52,0xm39,-278r-66,-49r67,0r50,49r-51,0","w":110},"\u00cd":{"d":"29,0r0,-254r52,0r0,254r-52,0xm20,-278r50,-49r67,0r-66,49r-51,0","w":110},"\u00ce":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-24,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":110},"\u00cf":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110,"k":{"\u00ce":-26,"\u00cc":-21}},"\u00d0":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-111r-29,0r0,-38r29,0r0,-105r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,62r56,0r0,38r-56,0r0,68v72,7,117,-17,117,-84","w":270,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,"?":8,".":14,",":14}},"\u00d1":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm170,-279v-21,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":271},"\u00d2":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm133,-278r-66,-49r67,0r50,49r-51,0","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d3":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm103,-278r50,-49r67,0r-66,49r-51,0","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d4":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm63,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d5":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm172,-279v-22,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d6":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm67,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm159,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d7":{"d":"170,-45r-51,-52r-51,52r-30,-30r51,-51r-51,-51r30,-30r51,51r51,-51r30,30r-52,51r52,51","w":237},"\u00d8":{"d":"268,-127v0,102,-96,161,-188,118r-24,33r-31,-20r25,-35v-23,-24,-34,-56,-34,-96v0,-102,96,-161,188,-118r25,-33r31,21r-25,34v22,24,33,57,33,96xm106,-45v77,43,133,-55,97,-134xm178,-209v-58,-29,-106,15,-106,82v0,20,3,37,9,52","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u00d9":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm121,-278r-65,-49r67,0r50,49r-52,0","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u00da":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm99,-278r50,-49r67,0r-66,49r-51,0","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u00db":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm56,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u00dc":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm60,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-13,29,-29,29v-16,0,-30,-13,-29,-30xm152,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u00dd":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm84,-278r49,-49r68,0r-66,49r-51,0","w":240,"k":{"\u0153":17,"\u0152":17,"\u00e6":28,"\u00c6":47,"\u00bb":4,"z":5,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,"Z":5,"U":4,"Q":17,"O":17,"J":49,"G":17,"C":17,"A":28,";":14,":":14,"\/":19,".":30,"-":22,",":30,"&":10," ":21}},"\u00de":{"d":"29,0r0,-254r50,0r0,45v76,-5,129,14,129,81v0,67,-52,88,-129,82r0,46r-50,0xm156,-128v0,-41,-35,-46,-77,-43r0,86v42,2,77,0,77,-43","w":223},"\u00df":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm384,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96","w":400},"\u00e0":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm102,-278r-65,-49r67,0r49,49r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e1":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm103,-278r49,-49r67,0r-65,49r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e2":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm49,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e3":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm157,-279v-22,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e4":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm52,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-14,28,-29,29v-16,0,-30,-13,-29,-30xm144,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e5":{"d":"128,-336v51,-6,74,67,31,89r98,247r-55,0r-22,-58r-107,0r-22,58r-51,0r97,-246v-44,-22,-23,-96,31,-90xm164,-101r-37,-103r-37,103r74,0xm149,-288v-1,-9,-10,-18,-22,-18v-12,0,-21,7,-21,19v0,12,9,19,22,19v11,1,21,-10,21,-20","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u00e6":{"d":"184,-58r-102,0r-34,58r-53,0r152,-254r192,0r0,43r-103,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0r0,-58xm184,-100r0,-111r-11,0r-66,111r77,0","w":359,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u00e7":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-21,4,-39,6,-55,6v33,26,6,63,-42,63v-17,0,-32,-2,-44,-5r0,-32v34,19,83,-17,34,-30v-56,-14,-93,-60,-93,-127","w":219,"k":{"\u00e6":-5,"z":-7,"y":-2,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,".":-5,"-":12,",":-5}},"\u00e8":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm99,-278r-65,-49r67,0r50,49r-52,0","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u00e9":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm71,-278r49,-49r67,0r-65,49r-51,0","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u00ea":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm29,-278r53,-49r55,0r51,49r-51,0r-28,-28r-29,28r-51,0","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u00eb":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm32,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm124,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u00ec":{"d":"29,0r0,-254r52,0r0,254r-52,0xm39,-278r-66,-49r67,0r50,49r-51,0","w":110},"\u00ed":{"d":"29,0r0,-254r52,0r0,254r-52,0xm20,-278r50,-49r67,0r-66,49r-51,0","w":110},"\u00ee":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-24,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":110},"\u00ef":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110,"k":{"\u00ee":-26,"\u00ec":-21}},"\u00f0":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-111r-29,0r0,-38r29,0r0,-105r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,62r56,0r0,38r-56,0r0,68v72,7,117,-17,117,-84","w":270},"\u00f1":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm170,-279v-21,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":271},"\u00f2":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm133,-278r-66,-49r67,0r50,49r-51,0","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f3":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm103,-278r50,-49r67,0r-66,49r-51,0","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f4":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm63,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f5":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm172,-279v-22,5,-59,-32,-69,-2r-36,0v3,-57,62,-47,104,-31v7,0,10,-4,12,-12r37,0v-4,30,-20,45,-48,45","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f6":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm67,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm159,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f7":{"d":"88,-55v0,-16,14,-31,32,-31v16,0,30,16,30,31v0,15,-15,32,-31,31v-17,0,-31,-15,-31,-31xm27,-105r0,-43r183,0r0,43r-183,0xm88,-198v0,-16,15,-31,32,-31v15,-1,30,17,30,32v0,15,-15,30,-31,30v-18,0,-31,-15,-31,-31","w":237},"\u00f8":{"d":"268,-127v0,102,-96,161,-188,118r-24,33r-31,-20r25,-35v-23,-24,-34,-56,-34,-96v0,-102,96,-161,188,-118r25,-33r31,21r-25,34v22,24,33,57,33,96xm106,-45v77,43,133,-55,97,-134xm178,-209v-58,-29,-106,15,-106,82v0,20,3,37,9,52","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u00f9":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm121,-278r-65,-49r67,0r50,49r-52,0","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u00fa":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm99,-278r50,-49r67,0r-66,49r-51,0","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u00fb":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm56,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u00fc":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm60,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-13,29,-29,29v-16,0,-30,-13,-29,-30xm152,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u00fd":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm84,-278r49,-49r68,0r-66,49r-51,0","w":240,"k":{"\u0153":17,"\u00e6":47,"\u00bb":4,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,";":14,":":14,"\/":19,".":30,"-":22,",":30,"&":10," ":21}},"\u00fe":{"d":"29,0r0,-254r50,0r0,45v76,-5,129,14,129,81v0,67,-52,88,-129,82r0,46r-50,0xm156,-128v0,-41,-35,-46,-77,-43r0,86v42,2,77,0,77,-43","w":223},"\u00ff":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":240,"k":{"\u0153":17,"\u00e6":47,"\u00bb":4,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,";":14,":":14,"\/":19,".":30,"-":22,",":30,"&":10," ":21}},"\u0100":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm59,-283r0,-38r137,0r0,38r-137,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0101":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm59,-283r0,-38r137,0r0,38r-137,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0102":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm60,-327r35,0v7,24,63,24,70,0r35,0v-5,31,-28,47,-70,47v-42,0,-65,-16,-70,-47","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0103":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm60,-327r35,0v7,24,63,24,70,0r35,0v-5,31,-28,47,-70,47v-42,0,-65,-16,-70,-47","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0104":{"d":"225,67v-52,0,-57,-59,-16,-67r-7,0r-22,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254v-20,-1,-32,14,-32,23v1,15,27,13,39,4r0,30v-12,7,-25,10,-39,10xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"Y":28,"W":7,"V":21,"U":9,"T":26,"Q":9,"O":9,"J":-8,"G":9,"C":9,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0105":{"d":"225,67v-52,0,-57,-59,-16,-67r-7,0r-22,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254v-20,-1,-32,14,-32,23v1,15,27,13,39,4r0,30v-12,7,-25,10,-39,10xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"y":28,"w":7,"v":21,"u":9,"t":26,"q":9,"o":9,"j":-8,"g":9,"c":9,"\\":13,"?":25,"-":12,"*":29,"'":31,"\"":31," ":11}},"\u0106":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm92,-278r50,-49r67,0r-66,49r-51,0","w":219,"k":{"\u00e6":-5,"\u00c6":-5,"z":-7,"y":-2,"u":-7,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,"\\":-7,"Z":-7,"Y":-2,"W":-5,"V":-5,"U":-7,"T":-7,"S":-7,"Q":2,"O":2,"J":-8,"G":2,"C":2,"A":-13,"\/":-12,"-":12}},"\u0107":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm92,-278r50,-49r67,0r-66,49r-51,0","w":219,"k":{"\u00e6":-5,"z":-7,"y":-2,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,".":-5,"-":12,",":-5}},"\u0108":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm55,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":219},"\u0109":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm55,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":219},"\u010a":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm112,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-14,-29,-30","w":219},"\u010b":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm112,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-14,-29,-30","w":219},"\u010c":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm114,-278r-52,-49r51,0r28,29r29,-29r51,0r-51,49r-56,0","w":219,"k":{"\u00e6":-5,"\u00c6":-5,"z":-7,"y":-2,"u":-7,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,"\\":-7,"Z":-7,"Y":-2,"W":-5,"V":-5,"U":-7,"T":-7,"S":-7,"Q":2,"O":2,"J":-8,"G":2,"C":2,"A":-13,"\/":-12,"-":12}},"\u010d":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125xm114,-278r-52,-49r51,0r28,29r29,-29r51,0r-51,49r-56,0","w":219,"k":{"\u00e6":-5,"z":-7,"y":-2,"t":-7,"s":-7,"q":2,"o":2,"j":-8,"g":2,"e":-7,"c":2,"a":-13,".":-5,"-":12,",":-5}},"\u010e":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-254r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,168v73,8,117,-17,117,-84xm88,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":270,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,"?":8,".":14,",":14}},"\u010f":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-254r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,168v73,8,117,-17,117,-84xm88,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":270,"k":{"\u00e6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"?":8}},"\u0110":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-111r-29,0r0,-38r29,0r0,-105r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,62r56,0r0,38r-56,0r0,68v72,7,117,-17,117,-84","w":270},"\u0111":{"d":"254,-127v0,80,-47,128,-127,127r-98,0r0,-111r-29,0r0,-38r29,0r0,-105r98,0v79,0,127,48,127,127xm198,-127v0,-66,-44,-92,-117,-84r0,62r56,0r0,38r-56,0r0,68v72,7,117,-17,117,-84","w":270,"k":{"\u00e6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"?":8}},"\u0112":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm36,-283r0,-38r137,0r0,38r-137,0","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u0113":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm36,-283r0,-38r137,0r0,38r-137,0","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u0114":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm36,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-28,47,-70,47v-42,0,-64,-16,-69,-47","w":204},"\u0116":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm83,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-13,28,-29,29v-16,0,-30,-13,-29,-30","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u0117":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm83,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-13,28,-29,29v-16,0,-30,-13,-29,-30","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u0118":{"d":"155,67v-54,0,-58,-59,-16,-67r-110,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43v-20,-2,-34,13,-33,23v1,15,27,13,39,4r0,30v-12,7,-25,10,-39,10","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u0119":{"d":"155,67v-54,0,-58,-59,-16,-67r-110,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43v-20,-2,-34,13,-33,23v1,15,27,13,39,4r0,30v-12,7,-25,10,-39,10","w":204,"k":{"s":2,"q":3,"o":3,"g":3,"c":3}},"\u011a":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm82,-278r-53,-49r51,0r29,29r28,-29r51,0r-50,49r-56,0","w":204,"k":{"S":2,"Q":3,"O":3,"G":3,"C":3}},"\u011b":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm82,-278r-53,-49r51,0r29,29r28,-29r51,0r-50,49r-56,0","w":204,"k":{"s":2,"q":3}},"\u011c":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm62,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":256},"\u011d":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm62,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":256},"\u011e":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm72,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":256,"k":{"y":7,"Y":7,"T":2}},"\u011f":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm72,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":256,"k":{"y":7,"t":2}},"\u0120":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm119,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30","w":256},"\u0121":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm119,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30","w":256},"\u0122":{"d":"16,-127v0,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-20,2,-41,4,-65,4v35,26,15,70,-45,64v-6,0,-14,0,-24,-2r0,-32v16,5,43,2,41,-13v0,-8,-7,-14,-20,-19v-66,-10,-106,-55,-106,-128","w":256,"k":{"y":7,"Y":7,"T":2}},"\u0123":{"d":"16,-127v0,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-20,2,-41,4,-65,4v35,26,15,70,-45,64v-6,0,-14,0,-24,-2r0,-32v16,5,43,2,41,-13v0,-8,-7,-14,-20,-19v-66,-10,-106,-55,-106,-128","w":256,"k":{"y":7,"t":2}},"\u0124":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0xm60,-278r53,-49r55,0r51,49r-51,0r-28,-28r-29,28r-51,0","w":279},"\u0125":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0xm60,-278r53,-49r55,0r51,49r-51,0r-28,-28r-29,28r-51,0","w":279},"\u0126":{"d":"29,0r0,-190r-20,0r0,-37r20,0r0,-27r52,0r0,27r117,0r0,-27r52,0r0,27r20,0r0,37r-20,0r0,190r-52,0r0,-109r-117,0r0,109r-52,0xm81,-156r117,0r0,-34r-117,0r0,34","w":279},"\u0127":{"d":"29,0r0,-190r-20,0r0,-37r20,0r0,-27r52,0r0,27r117,0r0,-27r52,0r0,27r20,0r0,37r-20,0r0,190r-52,0r0,-109r-117,0r0,109r-52,0xm81,-156r117,0r0,-34r-117,0r0,34","w":279},"\u012a":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-7,-283r0,-38r122,0r0,38r-122,0","w":110},"\u012b":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-7,-283r0,-38r122,0r0,38r-122,0","w":110},"\u012c":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-15,-327r36,0v6,24,62,24,69,0r35,0v-5,31,-28,47,-70,47v-42,0,-65,-16,-70,-47","w":110},"\u012d":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-15,-327r36,0v6,24,62,24,69,0r35,0v-5,31,-28,47,-70,47v-42,0,-65,-16,-70,-47","w":110},"\u012e":{"d":"59,67v-53,0,-59,-59,-17,-67r-13,0r0,-254r52,0r0,254v-16,1,-37,33,-6,34v7,0,14,-2,23,-7r0,30v-12,7,-25,10,-39,10","w":110},"\u012f":{"d":"59,67v-53,0,-59,-59,-17,-67r-13,0r0,-254r52,0r0,254v-16,1,-37,33,-6,34v7,0,14,-2,23,-7r0,30v-12,7,-25,10,-39,10","w":110},"\u0130":{"d":"29,0r0,-254r52,0r0,254r-52,0xm26,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30","w":110},"\u0131":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u0134":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0xm34,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":177},"\u0135":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0xm34,-278r53,-49r56,0r51,49r-51,0r-29,-28r-28,28r-52,0","w":177},"\u0136":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0xm82,65r0,-32v16,5,43,2,41,-13v0,-9,-8,-16,-22,-20r44,0v15,6,23,18,23,33v0,30,-45,39,-86,32","w":250,"k":{"u":9,"q":17,"o":17,"g":17,"c":17,"a":-13,"U":9,"Q":17,"O":17,"G":17,"C":17,"A":-13,"\/":-2}},"\u0137":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0xm82,65r0,-32v16,5,43,2,41,-13v0,-9,-8,-16,-22,-20r44,0v15,6,23,18,23,33v0,30,-45,39,-86,32","w":250,"k":{"u":9,"q":17,"o":17,"g":17,"c":17,"a":-13}},"\u0139":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0xm32,-278r49,-49r67,0r-65,49r-51,0","w":194,"k":{"\u0153":13,"\u0152":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"Y":47,"W":20,"V":37,"U":7,"T":43,"Q":13,"O":13,"J":-10,"G":13,"C":13,"A":-6,"?":28,"\/":-14,"*":33," ":22}},"\u013a":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0xm32,-278r49,-49r67,0r-65,49r-51,0","w":194,"k":{"\u0153":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"?":28,"*":33," ":22}},"\u013b":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-69,0v41,25,26,72,-39,67v-6,0,-15,0,-25,-2r0,-32v16,5,41,2,41,-13v0,-24,-44,-20,-71,-20","w":194,"k":{"\u0153":13,"\u0152":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"Y":47,"W":20,"V":37,"U":7,"T":43,"Q":13,"O":13,"J":-10,"G":13,"C":13,"A":-6,"?":28,"\/":-14,"*":33," ":22}},"\u013c":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-69,0v41,25,26,72,-39,67v-6,0,-15,0,-25,-2r0,-32v16,5,41,2,41,-13v0,-24,-44,-20,-71,-20","w":194,"k":{"\u0153":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"?":28,"*":33," ":22}},"\u013d":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0xm123,-179r0,-75r46,0r-15,75r-31,0","w":194,"k":{"\u0153":13,"\u0152":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"Y":47,"W":20,"V":37,"U":7,"T":43,"Q":13,"O":13,"J":-10,"G":13,"C":13,"A":-6,"?":28,"\/":-14,"*":33," ":22}},"\u013e":{"d":"29,0r0,-254r52,0r0,211r111,0r0,43r-163,0xm123,-179r0,-75r46,0r-15,75r-31,0","w":194,"k":{"\u0153":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"?":28,"*":33," ":22}},"\u0141":{"d":"29,0r0,-88r-29,21r0,-46r29,-22r0,-119r52,0r0,81r44,-32r0,46r-44,32r0,84r111,0r0,43r-163,0","w":194,"k":{"\u0153":13,"\u0152":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"Y":47,"W":20,"V":37,"U":7,"T":43,"Q":13,"O":13,"J":-10,"G":13,"C":13,"A":-6,"?":28,"\/":-14,"*":33," ":22}},"\u0142":{"d":"29,0r0,-88r-29,21r0,-46r29,-22r0,-119r52,0r0,81r44,-32r0,46r-44,32r0,84r111,0r0,43r-163,0","w":194,"k":{"\u0153":13,"\u00bb":5,"y":47,"w":20,"v":37,"u":7,"t":43,"q":13,"o":13,"j":-10,"g":13,"c":13,"a":-6,"\\":22,"?":28,"*":33," ":22}},"\u0143":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm103,-278r49,-49r68,0r-66,49r-51,0","w":271},"\u0144":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm103,-278r49,-49r68,0r-66,49r-51,0","w":271},"\u0145":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm89,65r0,-32v16,5,41,2,41,-13v0,-9,-7,-16,-21,-20r44,0v41,25,26,72,-40,67v-6,0,-14,0,-24,-2","w":271},"\u0146":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm89,65r0,-32v16,5,41,2,41,-13v0,-9,-7,-16,-21,-20r44,0v41,25,26,72,-40,67v-6,0,-14,0,-24,-2","w":271},"\u0147":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm111,-278r-53,-49r52,0r28,29r28,-29r52,0r-51,49r-56,0","w":271},"\u0148":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm111,-278r-53,-49r52,0r28,29r28,-29r52,0r-51,49r-56,0","w":271},"\u014c":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm73,-283r0,-38r137,0r0,38r-137,0","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u014d":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm73,-283r0,-38r137,0r0,38r-137,0","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u0150":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm78,-278r31,-49r58,0r-46,49r-43,0xm161,-278r31,-49r58,0r-47,49r-42,0","w":284,"k":{"\u00e6":15,"\u00c6":15,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,"Z":8,"Y":17,"X":9,"V":4,"T":10,"J":17,"A":9,".":12,",":12}},"\u0151":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92xm78,-278r31,-49r58,0r-46,49r-43,0xm161,-278r31,-49r58,0r-47,49r-42,0","w":284,"k":{"\u00e6":15,"z":8,"y":17,"x":9,"v":4,"t":10,"j":17,"a":9,".":12,",":12}},"\u0152":{"d":"16,-127v0,-79,48,-127,127,-127r200,0r0,43r-103,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-204,0v-80,1,-127,-48,-127,-127xm71,-127v0,67,44,92,117,84r0,-168v-72,-7,-117,17,-117,84","w":362},"\u0153":{"d":"16,-127v0,-79,48,-127,127,-127r200,0r0,43r-103,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-204,0v-80,1,-127,-48,-127,-127xm71,-127v0,67,44,92,117,84r0,-168v-72,-7,-117,17,-117,84","w":362},"\u0154":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm70,-278r49,-49r67,0r-65,49r-51,0","w":228,"k":{"y":15,"t":6,"o":4,"g":4,"c":4,"Y":15,"T":6,"O":4,"G":4,"C":4}},"\u0155":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm70,-278r49,-49r67,0r-65,49r-51,0","w":228,"k":{"y":15,"v":9,"t":6,"q":4,"o":4,"g":4,"c":4,"\\":5,"\/":-7}},"\u0156":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm74,65r0,-32v16,5,41,2,41,-13v0,-10,-7,-16,-21,-20r44,0v41,25,26,72,-40,67v-6,0,-14,0,-24,-2","w":228,"k":{"y":15,"t":6,"o":4,"g":4,"c":4,"Y":15,"T":6,"O":4,"G":4,"C":4}},"\u0157":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm74,65r0,-32v16,5,41,2,41,-13v0,-10,-7,-16,-21,-20r44,0v41,25,26,72,-40,67v-6,0,-14,0,-24,-2","w":228,"k":{"y":15,"v":9,"t":6,"q":4,"o":4,"g":4,"c":4,"\\":5,"\/":-7}},"\u0158":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm77,-278r-53,-49r51,0r29,29r28,-29r51,0r-50,49r-56,0","w":228,"k":{"y":15,"t":6,"o":4,"g":4,"c":4,"Y":15,"T":6,"O":4,"G":4,"C":4}},"\u0159":{"d":"200,-176v0,36,-16,56,-41,68r67,108r-60,0r-57,-98r-30,0r0,98r-50,0r0,-254r80,0v61,0,91,26,91,78xm148,-176v0,-34,-31,-44,-69,-40r0,80v39,2,69,-3,69,-40xm77,-278r-53,-49r51,0r29,29r28,-29r51,0r-50,49r-56,0","w":228,"k":{"y":15,"v":9,"t":6,"q":4,"o":4,"g":4,"c":4,"\\":5,"\/":-7}},"\u015a":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm64,-278r50,-49r67,0r-66,49r-51,0","w":200,"k":{"y":7,"Y":7,"J":2,"A":2}},"\u015b":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm64,-278r50,-49r67,0r-66,49r-51,0","w":200,"k":{"y":7,"j":2}},"\u015c":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm24,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":200},"\u015d":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm24,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":200},"\u015e":{"d":"123,1v39,26,13,66,-38,66v-15,0,-28,-2,-39,-5r0,-32v17,8,50,8,50,-10v0,-7,-4,-12,-11,-16v-25,0,-48,-3,-68,-9r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96v0,39,-22,62,-61,73","w":200},"\u015f":{"d":"123,1v39,26,13,66,-38,66v-15,0,-28,-2,-39,-5r0,-32v17,8,50,8,50,-10v0,-7,-4,-12,-11,-16v-25,0,-48,-3,-68,-9r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96v0,39,-22,62,-61,73","w":200,"k":{"y":7,"j":2}},"\u0160":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm78,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":200,"k":{"y":7,"j":2}},"\u0161":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96xm78,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":200,"k":{"y":7,"Y":7,"J":2,"A":2}},"\u0162":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-8,0v41,25,26,72,-40,67v-6,0,-13,0,-23,-2r0,-32v16,5,43,2,41,-13v0,-9,-8,-16,-22,-20","w":210,"k":{"\u0153":10,"\u0152":10,"\u00e6":36,"\u00c6":36,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,"\\":-12,"W":-5,"V":-5,"S":-7,"Q":10,"O":10,"J":44,"G":10,"C":10,"A":26,";":10,":":10,"\/":14,".":23,"-":21,",":23,"&":7}},"\u0163":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-8,0v41,25,26,72,-40,67v-6,0,-13,0,-23,-2r0,-32v16,5,43,2,41,-13v0,-9,-8,-16,-22,-20","w":210,"k":{"\u0153":10,"\u00e6":36,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,";":10,":":10,"\/":14,".":23,"-":21,",":23}},"\u0164":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0xm78,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":210,"k":{"\u0153":10,"\u0152":10,"\u00e6":36,"\u00c6":36,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,"\\":-12,"W":-5,"V":-5,"S":-7,"Q":10,"O":10,"J":44,"G":10,"C":10,"A":26,";":10,":":10,"\/":14,".":23,"-":21,",":23,"&":7}},"\u0165":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0xm78,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":210,"k":{"\u0153":10,"\u00e6":36,"w":-5,"v":-5,"s":-7,"q":10,"o":10,"j":44,"g":10,"c":10,"a":26,";":10,":":10,"\/":14,".":23,"-":21,",":23}},"\u016a":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm67,-283r0,-38r137,0r0,38r-137,0","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u016b":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm67,-283r0,-38r137,0r0,38r-137,0","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u016c":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm66,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":271},"\u016d":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm66,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":271},"\u016e":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm82,-287v0,-30,22,-49,55,-49v30,0,53,19,53,49v0,29,-23,49,-54,49v-30,0,-55,-19,-54,-49xm158,-288v-1,-25,-44,-23,-44,1v1,11,10,19,23,19v11,1,21,-10,21,-20","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u016f":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm82,-287v0,-30,22,-49,55,-49v30,0,53,19,53,49v0,29,-23,49,-54,49v-30,0,-55,-19,-54,-49xm158,-288v-1,-25,-44,-23,-44,1v1,11,10,19,23,19v11,1,21,-10,21,-20","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u0170":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm65,-278r32,-49r57,0r-46,49r-43,0xm148,-278r31,-49r58,0r-46,49r-43,0","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u0171":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm65,-278r32,-49r57,0r-46,49r-43,0xm148,-278r31,-49r58,0r-46,49r-43,0","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u0172":{"d":"185,57v-27,17,-83,15,-84,-21v0,-13,6,-23,18,-31v-62,-5,-92,-38,-92,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,57,-28,89,-84,97v-17,7,-23,30,2,30v7,0,14,-2,22,-7r0,30","w":271,"k":{"\u00e6":14,"\u00c6":14,"a":9,"Z":2,"Y":4,"A":9,".":5,",":5}},"\u0173":{"d":"185,57v-27,17,-83,15,-84,-21v0,-13,6,-23,18,-31v-62,-5,-92,-38,-92,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,57,-28,89,-84,97v-17,7,-23,30,2,30v7,0,14,-2,22,-7r0,30","w":271,"k":{"\u00e6":14,"y":4,"a":9}},"\u0174":{"d":"70,0r-70,-254r55,0r45,194r50,-194r53,0r50,194r45,-194r53,0r-70,254r-56,0r-50,-185r-49,185r-56,0xm96,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":350},"\u0176":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm41,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":240},"\u0177":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm41,-278r52,-49r56,0r51,49r-51,0r-29,-28r-28,28r-51,0","w":240},"\u0178":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":240,"k":{"\u0153":17,"\u0152":17,"\u00e6":28,"\u00c6":47,"\u00bb":4,"z":5,"u":4,"q":17,"o":17,"j":49,"g":17,"c":17,"a":28,"Z":5,"U":4,"Q":17,"O":17,"J":49,"G":17,"C":17,"A":28,";":14,":":14,"\/":19,".":30,"-":22,",":30,"&":10," ":21}},"\u0179":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm85,-278r49,-49r67,0r-65,49r-51,0","w":236,"k":{"q":4,"o":8,"g":5,"c":8,"a":2,"T":-5,"A":2}},"\u017a":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm85,-278r49,-49r67,0r-65,49r-51,0","w":236,"k":{"q":4,"o":8,"a":2}},"\u017b":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm99,-303v0,-15,13,-29,30,-29v15,0,29,15,29,30v1,15,-15,29,-30,29v-16,0,-30,-13,-29,-30","w":236,"k":{"q":4,"o":8,"g":5,"c":8,"a":2,"T":-5,"A":2}},"\u017c":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm99,-303v0,-15,13,-29,30,-29v15,0,29,15,29,30v1,15,-15,29,-30,29v-16,0,-30,-13,-29,-30","w":236,"k":{"q":4,"o":8,"a":2}},"\u017d":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm95,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":236,"k":{"q":4,"o":8,"g":5,"c":8,"a":2,"T":-5,"A":2}},"\u017e":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0xm95,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":236,"k":{"q":4,"o":8,"a":2}},"\u0192":{"d":"-9,64r0,-38v38,9,59,-2,63,-41r11,-101r-32,0r0,-24r35,-12v4,-76,35,-122,119,-104r0,37v-55,-14,-74,14,-75,67r48,0r0,36r-52,0v-12,87,5,206,-117,180","w":196},"\u01cd":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm101,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":256},"\u01ce":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0xm101,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":256},"\u01d3":{"d":"136,5v-70,0,-108,-32,-109,-98r0,-161r53,0r0,159v0,37,19,56,56,56v38,0,56,-19,56,-56r0,-159r53,0r0,161v0,66,-36,98,-109,98xm109,-278r-53,-49r51,0r29,29r28,-29r51,0r-50,49r-56,0","w":271},"\u01e6":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm107,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":256},"\u01e7":{"d":"16,-127v-2,-106,96,-150,207,-125r0,43v-81,-16,-152,0,-152,82v0,66,46,96,116,87r0,-58r-39,0r0,-39r87,0r0,136v-25,2,-51,4,-78,4v-88,1,-140,-46,-141,-130xm107,-278r-53,-49r51,0r29,29r28,-29r51,0r-51,49r-55,0","w":256},"\u0219":{"d":"123,1v39,26,13,66,-38,66v-15,0,-28,-2,-39,-5r0,-32v17,8,50,8,50,-10v0,-7,-4,-12,-11,-16v-25,0,-48,-3,-68,-9r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96v0,39,-22,62,-61,73","w":200},"\u02c6":{"d":"10,-278r53,-49r56,0r51,49r-52,0r-28,-28r-28,28r-52,0","w":180},"\u02c7":{"d":"63,-278r-53,-49r52,0r28,29r28,-29r52,0r-51,49r-56,0","w":180},"\u02c9":{"d":"21,-283r0,-38r138,0r0,38r-138,0","w":180},"\u02d8":{"d":"20,-327r35,0v7,24,63,24,70,0r35,0v-5,31,-28,47,-70,47v-42,0,-65,-16,-70,-47","w":180},"\u02d9":{"d":"61,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-14,28,-29,29v-16,0,-30,-13,-29,-30","w":180},"\u02da":{"d":"126,-287v0,-30,22,-49,55,-49v30,0,53,19,53,49v0,29,-23,49,-54,49v-30,0,-55,-19,-54,-49xm201,-288v0,-10,-9,-18,-22,-18v-12,0,-21,8,-21,19v0,12,10,19,23,19v11,1,21,-9,20,-20"},"\u02db":{"d":"98,67v-53,0,-59,-59,-17,-67r39,0v-15,6,-23,14,-23,23v1,15,28,13,39,4r0,30v-12,7,-24,10,-38,10","w":180},"\u02dc":{"d":"119,-279v-22,5,-59,-32,-69,-2r-36,0v3,-56,61,-48,103,-31v7,0,11,-4,13,-12r36,0v-4,30,-19,45,-47,45","w":180},"\u02dd":{"d":"27,-278r31,-49r58,0r-47,49r-42,0xm110,-278r31,-49r58,0r-47,49r-42,0","w":180},"\u037e":{"d":"57,-70v73,9,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-40,38,-37xm19,-159v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,18,-17,37,-38,37v-20,0,-39,-19,-38,-37","w":113},"\u0384":{"d":"60,-284v42,-1,18,53,13,80r-25,0v-3,-27,-30,-79,12,-80","w":121},"\u0385":{"d":"46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,15,-13,28,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-29,-12,-29,-30","w":240},"\u0386":{"d":"187,-58r-107,0r-22,58r-51,0r101,-254r56,0r100,254r-54,0xm171,-101r-37,-103r-37,103r74,0xm36,-284v43,-1,17,52,13,80r-25,0v-5,-26,-30,-79,12,-80","w":263,"k":{"\u03c6":10,"\u03c3":-11,"\u03bd":-1,"\u03b3":-1}},"\u0387":{"d":"19,-127v0,-20,17,-38,38,-38v19,0,38,18,38,38v0,20,-18,38,-38,38v-19,0,-38,-17,-38,-38","w":113},"\u0388":{"d":"64,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":239},"\u0389":{"d":"64,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":314},"\u038a":{"d":"64,0r0,-254r52,0r0,254r-52,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":145},"\u038c":{"d":"30,-127v0,-79,49,-132,126,-132v77,0,126,54,126,132v0,79,-50,132,-127,132v-78,0,-125,-54,-125,-132xm226,-127v0,-53,-20,-91,-72,-91v-46,0,-69,40,-69,91v0,52,24,92,70,92v50,0,71,-39,71,-92xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":297,"k":{"\u03bb":9}},"\u038e":{"d":"145,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm17,-284v43,-1,17,52,13,80r-25,0v-5,-26,-30,-79,12,-80","w":291,"k":{"\u03c3":-7,";":47,":":47,".":62,",":62}},"\u038f":{"d":"158,-218v-85,0,-93,150,-23,168r0,50r-102,0r0,-42r43,0v-28,-22,-43,-55,-43,-97v0,-73,51,-120,125,-120v75,0,128,47,127,120v0,41,-16,74,-45,97r45,0r0,42r-103,0r0,-50v69,-19,63,-168,-24,-168xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":301},"\u0390":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110},"\u0391":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u03d2":27,"\u03cd":25,"\u03c6":10,"\u03c5":27,"\u03c3":-11,"\u03c2":-11,"\u03bd":-1,"\u03b3":-1,"\u03a8":15,"\u03a6":10,"\u03a5":27,"\u03a4":23,"\u039f":10,"\u0398":10,"\u00bb":-1,".":-10,"-":2,",":-10}},"\u0392":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u03bb":4,"\u0391":4}},"\u0393":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0","w":194,"k":{"\u03cd":-18,"\u03c5":-14,"\u03bf":4,"\u03b1":27,"\u03ad":-15,"\u03ac":-8,"\u039f":4,"\u039b":25,"\u0391":27,"o":4,".":38,",":38}},"\u0394":{"d":"257,0r-257,0r100,-254r57,0xm187,-43r-60,-161r-60,161r120,0","w":256},"\u0395":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u03c4":-4,"\u03b4":-8,"\u03a6":2,"\u039f":4,"\u0398":4}},"\u0396":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0","w":236,"k":{"\u03bf":12,"\u03b5":5,"\u039f":12}},"\u0397":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"\u0398":{"d":"100,-105r0,-42r85,0r0,42r-85,0xm16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u03d2":14,"\u03a5":14,"\u039b":9,"\u0391":10}},"\u0399":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u039a":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u03cd":-14,"\u03cc":-12,"\u03c9":-9,"\u03c5":-11,"\u03bf":17,"\u03ad":-12,"\u03ac":-13,"\u03a6":19,"\u039f":15,";":-2,":":-1,".":-5,",":-5}},"\u039b":{"d":"0,0r94,-254r56,0r94,254r-55,0r-68,-202r-69,202r-52,0","w":243,"k":{"\u03d2":25,"\u03cc":11,"\u03c5":25,"\u03bf":9,"\u03b5":-1,"\u03ad":16,"\u03ac":-12,"\u03a5":25,"\u03a4":23,"\u039f":9,"\u0398":9,"\u00bb":-2,".":-11,"-":1,",":-11}},"\u039c":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"\u039d":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0","w":271,"k":{"\u03cc":-2,"\u03c9":-2,"\u03ad":-2,"\u0391":-1}},"\u039e":{"d":"12,-43r196,0r0,43r-196,0r0,-43xm20,-151r180,0r0,43r-180,0r0,-43xm15,-254r189,0r0,43r-189,0r0,-43","w":220,"k":{"\u03cd":-11,"\u03b1":-10,"\u03ac":-7}},"\u039f":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u03d2":13,"\u03bb":9,"\u03a8":2,"\u03a7":10,"\u03a5":13,"\u03a4":4,"\u039b":9,"\u0396":14,"\u0391":10}},"\u03a0":{"d":"29,0r0,-254r221,0r0,254r-52,0r0,-210r-117,0r0,210r-52,0","w":279,"k":{"\u03bb":-1,"\u03ad":-2}},"\u03a1":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u03d2":6,"\u03ce":-1,"\u03cc":-1,"\u03bf":1,"\u03b5":6,"\u03b1":21,"\u03ad":-1,"\u03a6":-1,"\u03a5":6,"\u03a4":-2,"\u039f":1,"\u039b":19,"\u0398":1,"\u0391":21,":":-8,".":27,",":27}},"\u03a3":{"d":"10,0r0,-39r87,-89r-79,-87r0,-39r194,0r0,43r-125,0r72,83r-85,86r142,0r0,42r-206,0","w":222,"k":{"\u03c7":-12,"\u03c4":-9,"\u03bf":8,"\u039f":8,"\u0398":9}},"\u03a4":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u03d2":-14,"\u03ce":-15,"\u03cd":-17,"\u03cc":-14,"\u03c5":-14,"\u03c3":-5,"\u03bf":4,"\u03b6":-1,"\u03b1":23,"\u03ad":-15,"\u03ac":-8,"\u03a6":12,"\u03a5":-14,"\u03a4":-12,"\u039f":4,"\u039b":24,"\u0391":23,"\u00bb":15,";":5,":":7,".":22,"-":18,",":20}},"\u03a5":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u03cc":-16,"\u03c0":-1,"\u03a6":17,"\u03a4":-14,"\u039f":13,"\u0398":14,"\u0391":27,"\u0386":-10,"\u00bb":5,"A":27,";":47,":":47,".":62,"-":14,",":62}},"\u03a6":{"d":"313,-127v0,68,-53,105,-126,107r0,20r-50,0r0,-20v-69,-3,-125,-37,-125,-107v0,-69,54,-104,125,-107r0,-20r50,0r0,20v70,3,126,36,126,107xm137,-195v-40,2,-72,24,-72,67v0,44,30,67,72,70r0,-137xm187,-58v70,7,99,-93,43,-125v-12,-7,-27,-11,-43,-12r0,137","w":324,"k":{"\u03d2":17,"\u03ce":6,"\u03cc":5,"\u03c9":-1,"\u03bf":-2,"\u03bb":9,"\u03a5":17,"\u03a4":12,"\u039b":9,"\u0391":10}},"\u03a7":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u03cc":-12,"\u03c9":-7,"\u03c4":-9,"\u03bf":11,"\u03b1":-15,"\u03ad":-12,"\u03ac":-12,"\u039f":11,"\u0398":11}},"\u03a8":{"d":"270,-158v0,64,-36,99,-99,100r0,58r-53,0r0,-58v-63,-2,-98,-36,-99,-100r0,-96r53,0v5,61,-22,148,46,153r0,-153r53,0r0,153v65,-2,43,-89,47,-153r52,0r0,96","w":289,"k":{"\u039f":2,"\u0391":17}},"\u03a9":{"d":"142,-218v-86,0,-92,150,-22,168r0,50r-103,0r0,-42r44,0v-28,-22,-45,-55,-44,-97v-1,-73,52,-120,126,-120v74,0,127,47,126,120v0,41,-15,74,-44,97r44,0r0,42r-103,0r0,-50v31,-11,47,-39,47,-84v1,-50,-23,-84,-71,-84","w":285},"\u03aa":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110},"\u03ab":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":240,"k":{":":47,".":62,",":62}},"\u03ac":{"d":"187,-58r-107,0r-22,58r-51,0r101,-254r56,0r100,254r-54,0xm171,-101r-37,-103r-37,103r74,0xm36,-284v43,-1,17,52,13,80r-25,0v-5,-26,-30,-79,12,-80","w":263,"k":{"\u03c9":-7,"\u03c3":-11,"\u03c2":-11,"\u03bf":10,"\u03be":-10,"\u03b8":10,"\u03b6":-7,"\u03b5":-1,"\u03b4":-16,"\u03b3":-1,"\u00bb":-1,";":-14,":":-14,".":-10,",":-10}},"\u03ad":{"d":"64,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":239,"k":{"\u03c9":1,"\u03c6":2,"\u03c4":-4,"\u03c2":-3,"\u03bf":4,"\u03bb":-7,"\u03b8":4,"\u03b6":1,"\u03b4":-8,"\u03b1":-8,";":-12}},"\u03ae":{"d":"64,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":314},"\u03af":{"d":"64,0r0,-254r52,0r0,254r-52,0xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":145,"k":{"\u03b4":-1}},"\u03b0":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":240},"\u03b1":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u03cd":25,"\u03cc":13,"\u03cb":27,"\u03c6":10,"\u03c4":23,"\u03c3":-11,"\u03c2":-11,"\u03c0":-1,"\u03bf":10,"\u03be":-10,"\u03b8":10,"\u03b6":-7,"\u03b5":-1,"\u03b4":-16,"\u03b3":-1,"\u00bb":-1,";":-14,":":-14,".":-10,",":-10,"!":-2}},"\u03b2":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u03bb":4,"\u03b3":2}},"\u03b3":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0","w":194,"k":{"\u03ce":-15,"\u03cd":-18,"\u03cc":-15,"\u03c9":4,"\u03bf":4,"\u03be":-7,"\u03bb":25,"\u03b4":27,"\u03b1":27,"\u03ad":-15,"\u03ac":-8,";":25,":":25,".":38,",":38}},"\u03b4":{"d":"257,0r-257,0r100,-254r57,0xm187,-43r-60,-161r-60,161r120,0","w":256,"k":{"\u03bd":-1}},"\u03b5":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u03ce":-7,"\u03cd":-9,"\u03cc":-7,"\u03c7":-7,"\u03c6":2,"\u03c5":-5,"\u03c4":-4,"\u03c3":-3,"\u03c2":-3,"\u03bf":4,"\u03be":-2,"\u03bb":-8,"\u03b8":4,"\u03b5":2,"\u03b4":-8,"\u03b1":-8,"\u03ad":-7,"\u03ac":-4}},"\u03b6":{"d":"17,0r0,-39r139,-172r-130,0r0,-43r193,0r0,39r-140,172r144,0r0,43r-206,0","w":236,"k":{"\u03ce":-8,"\u03cd":-10,"\u03cc":-7,"\u03c5":-7,"\u03bf":12,"\u03b5":5,"\u03b1":-9,"\u03ad":-8,"\u03ac":-5}},"\u03b7":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"\u03b8":{"d":"100,-105r0,-42r85,0r0,42r-85,0xm16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284},"\u03b9":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u03ba":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u03ce":-12,"\u03cd":-14,"\u03cc":-12,"\u03c9":-9,"\u03c6":22,"\u03c3":-12,"\u03bf":17,"\u03b8":17,"\u03b5":-2,"\u03b4":-17,"\u03b1":-17,"\u03ad":-12,"\u03ac":-13,"\u00bb":10,".":-5,",":-5}},"\u03bb":{"d":"0,0r94,-254r56,0r94,254r-55,0r-68,-202r-69,202r-52,0","w":243,"k":{"\u03cd":23,"\u03cc":11,"\u03c9":-7,"\u03c6":9,"\u03c5":25,"\u03c4":23,"\u03c3":-11,"\u03c2":-11,"\u03bf":9,"\u03be":-10,"\u03bd":-1,"\u03b5":-1,"\u03b3":-1,"\u03ad":16,"\u03ac":-12,"\u00bb":-2,".":-11,",":-11}},"\u03bc":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"\u03bd":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0","w":271,"k":{"\u03ce":-2,"\u03cd":-5,"\u03cc":-2,"\u03c9":-2,"\u03c6":3,"\u03c3":2,"\u03c2":2,"\u03bb":-1,"\u03b4":-1,"\u03b1":-1,"\u03ad":-2,"\u03ac":2,";":-19,":":-18,".":-3,",":-3}},"\u03be":{"d":"12,-43r196,0r0,43r-196,0r0,-43xm20,-151r180,0r0,43r-180,0r0,-43xm15,-254r189,0r0,43r-189,0r0,-43","w":220,"k":{"\u03ce":-9,"\u03cd":-11,"\u03cc":-9,"\u03bf":2,"\u03b1":-10,"\u03ad":-9,"\u03ac":-7}},"\u03bf":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u03c7":12,"\u03c5":13,"\u03c4":4,"\u03bb":9,"\u03b1":10}},"\u03c0":{"d":"29,0r0,-254r221,0r0,254r-52,0r0,-210r-117,0r0,210r-52,0","w":279,"k":{"\u03ce":-2,"\u03cd":-5,"\u03cc":-2,"\u03bb":-1,"\u03ac":2}},"\u03c1":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u03c7":13,"\u03c4":-2,"\u03c2":5,"\u03c0":6,"\u03bd":6,"\u03bb":19,"\u03b3":6,"\u00bb":-3,"!":5}},"\u03c2":{"d":"10,0r0,-39r87,-89r-79,-87r0,-39r194,0r0,43r-125,0r72,83r-85,86r142,0r0,42r-206,0","w":222},"\u03c3":{"d":"10,0r0,-39r87,-89r-79,-87r0,-39r194,0r0,43r-125,0r72,83r-85,86r142,0r0,42r-206,0","w":222,"k":{"\u03bb":-12}},"\u03c4":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u03ce":-15,"\u03cd":-17,"\u03cc":-14,"\u03c9":4,"\u03c6":12,"\u03c4":-12,"\u03c3":-5,"\u03c2":-5,"\u03bf":4,"\u03bb":24,"\u03b1":23,"\u03af":-15,"\u03ad":-15,"\u03ac":-8,"\u00bb":24,"o":4,";":7,":":7,".":22,",":20}},"\u03c5":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u03c7":-10,"\u03c4":-14,"\u03bb":25,"\u03b3":-1,";":47,":":47,".":62,",":62}},"\u03c6":{"d":"313,-127v0,68,-53,105,-126,107r0,20r-50,0r0,-20v-69,-3,-125,-37,-125,-107v0,-69,54,-104,125,-107r0,-20r50,0r0,20v70,3,126,36,126,107xm137,-195v-40,2,-72,24,-72,67v0,44,30,67,72,70r0,-137xm187,-58v70,7,99,-93,43,-125v-12,-7,-27,-11,-43,-12r0,137","w":324,"k":{"\u03c4":12}},"\u03c7":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u03ce":-12,"\u03cd":-14,"\u03cc":-12,"\u03c9":-7,"\u03bf":11,"\u03b8":11,"\u03b5":-1,"\u03b1":-15,"\u03ad":-12,"\u03ac":-12}},"\u03c8":{"d":"270,-158v0,64,-36,99,-99,100r0,58r-53,0r0,-58v-63,-2,-98,-36,-99,-100r0,-96r53,0v5,61,-22,148,46,153r0,-153r53,0r0,153v65,-2,43,-89,47,-153r52,0r0,96","w":289},"\u03c9":{"d":"142,-218v-86,0,-92,150,-22,168r0,50r-103,0r0,-42r44,0v-28,-22,-45,-55,-44,-97v-1,-73,52,-120,126,-120v74,0,127,47,126,120v0,41,-15,74,-44,97r44,0r0,42r-103,0r0,-50v31,-11,47,-39,47,-84v1,-50,-23,-84,-71,-84","w":285,"k":{"\u03c7":-7,"\u03c4":4,"\u03c0":-2,"\u03bd":-2,"\u03bb":-7,"\u03b3":-2}},"\u03ca":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110},"\u03cb":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm46,-303v0,-16,12,-29,29,-29v15,-1,29,14,29,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm138,-303v0,-16,12,-29,29,-29v15,0,29,14,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":240,"k":{"\u03bd":-1,";":47,":":47,".":62,",":62}},"\u03cc":{"d":"30,-127v0,-79,49,-132,126,-132v77,0,126,54,126,132v0,79,-50,132,-127,132v-78,0,-125,-54,-125,-132xm226,-127v0,-53,-20,-91,-72,-91v-46,0,-69,40,-69,91v0,52,24,92,70,92v50,0,71,-39,71,-92xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":297,"k":{"\u03c7":12,"\u03c4":5}},"\u03cd":{"d":"145,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0xm17,-284v43,-1,17,52,13,80r-25,0v-5,-26,-30,-79,12,-80","w":291,"k":{"\u03c7":-10,"\u03c4":-14,"\u03c0":-1,"\u03bd":-1,"\u03bb":25,"\u03b3":-1,";":47,":":47,".":62,",":62}},"\u03ce":{"d":"158,-218v-85,0,-93,150,-23,168r0,50r-102,0r0,-42r43,0v-28,-22,-43,-55,-43,-97v0,-73,51,-120,125,-120v75,0,128,47,127,120v0,41,-16,74,-45,97r45,0r0,42r-103,0r0,-50v69,-19,63,-168,-24,-168xm22,-284v43,0,17,52,13,80r-26,0v-4,-26,-29,-79,13,-80","w":301,"k":{"\u03c7":-7,"\u03c4":4,"\u03c0":-2,"\u03bd":-2,"\u03bb":-7,"\u03b3":-2}},"\u03d1":{"d":"100,-105r0,-42r85,0r0,42r-85,0xm16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284},"\u03d2":{"d":"238,-219v-73,39,-102,106,-94,219r-52,0v10,-110,-25,-181,-94,-219r34,-38v42,25,76,69,86,122v9,-54,43,-97,86,-122","w":236,"k":{"\u03cc":-16,"\u03c0":-1,"\u03a6":17,"\u03a4":-14,"\u039f":13,"\u0398":14,"\u0391":27,"\u0386":-10,"\u00bb":5,"A":27,".":29,"-":14,",":29}},"\u03d5":{"d":"313,-127v0,68,-53,105,-126,107r0,20r-50,0r0,-20v-69,-3,-125,-37,-125,-107v0,-69,54,-104,125,-107r0,-20r50,0r0,20v70,3,126,36,126,107xm137,-195v-40,2,-72,24,-72,67v0,44,30,67,72,70r0,-137xm187,-58v70,7,99,-93,43,-125v-12,-7,-27,-11,-43,-12r0,137","w":324},"\u0401":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm32,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm124,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":204},"\u0402":{"d":"215,-56v0,-42,-12,-70,-50,-71v-18,0,-34,5,-49,15r0,112r-53,0r0,-211r-61,0r0,-43r204,0r0,43r-90,0r0,57v78,-40,155,8,155,98v0,80,-43,126,-126,116r0,-41v51,10,70,-24,70,-75","w":277},"\u0403":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0xm75,-278r49,-49r67,0r-65,49r-51,0","w":194,"k":{"\u045e":-14,"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-14,"\u0447":-4,"\u0445":-9,"\u0444":12,"\u0443":-14,"\u0442":-13,"\u0441":5,"\u043e":4,"\u043b":11,"\u0437":-10,"\u0436":-5,"\u0434":11,"\u0430":27,"\u042a":-9,"\u0427":-4,"\u0424":12,"\u0423":-14,"\u0422":-13,"\u0421":5,"\u041e":4,"\u041b":11,"\u0414":11,"\u040e":-14,"\u040b":-13,"\u0409":11,"\u0404":6,";":24,":":24,".":37,",":37}},"\u0404":{"d":"14,-127v0,-104,93,-151,197,-124r0,44v-63,-18,-132,-7,-140,56r105,0r0,43r-106,0v6,66,78,79,144,61r0,45v-109,24,-200,-17,-200,-125","w":219},"\u0405":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96","w":200},"\u0406":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u0407":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110},"\u0408":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0","w":177},"\u0409":{"d":"187,-210r-83,0v-5,104,4,218,-104,212r0,-42v46,-3,46,-48,49,-107r5,-107r183,0r0,91v75,-5,125,16,125,82v0,54,-31,81,-93,81r-82,0r0,-210xm310,-81v0,-39,-32,-47,-73,-44r0,87v41,3,73,-5,73,-43","w":370,"k":{"\u044a":17,"\u042a":17,"\u0427":5,"\u0423":20,"\u0422":23,"\u040e":20,"\u040b":17}},"\u040a":{"d":"29,0r0,-254r52,0r0,97r112,0r0,-97r51,0r0,97v72,-5,124,14,124,76v0,54,-31,81,-93,81r-82,0r0,-119r-112,0r0,119r-52,0xm316,-81v0,-37,-34,-40,-72,-38r0,81v40,3,72,-5,72,-43","w":376,"k":{"\u044a":18,"\u042a":18,"\u0427":7,"\u0423":22,"\u0422":25,"\u040e":22,"\u040b":19}},"\u040b":{"d":"215,0v-3,-54,18,-127,-44,-127v-23,0,-41,5,-55,15r0,112r-53,0r0,-211r-61,0r0,-43r204,0r0,43r-90,0r0,57v64,-29,151,-17,151,68r0,86r-52,0","w":286},"\u040c":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0xm95,-278r49,-49r67,0r-65,49r-51,0","w":250,"k":{"\u045e":-11,"\u0454":16,"\u0447":-1,"\u0444":22,"\u0443":-11,"\u0442":-10,"\u0441":16,"\u043e":17,"\u0437":-14,"\u0435":-2,"\u0431":-2,"\u0430":-17,"\u0424":19,"\u0421":16,"\u041e":15,"\u0417":-14,"\u0404":16}},"\u040e":{"d":"55,0r39,-74r-94,-180r57,0r64,134r65,-134r55,0r-134,254r-52,0xm51,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-28,47,-70,47v-42,0,-64,-16,-69,-47","w":238,"k":{"\u0459":9,"\u0454":12,"\u044f":10,"\u044e":-3,"\u0447":-7,"\u0446":-3,"\u0445":-12,"\u0444":14,"\u0442":-15,"\u0441":12,"\u0440":-3,"\u043f":-3,"\u043e":11,"\u043d":-3,"\u043c":-3,"\u043b":9,"\u043a":-3,"\u0438":-3,"\u0437":-13,"\u0436":-8,"\u0435":-3,"\u0434":9,"\u0431":-3,"\u0430":28,"\u042f":10,"\u042a":-13,"\u0427":-7,"\u0424":14,"\u0422":-15,"\u0421":12,"\u041e":11,"\u041b":9,"\u0417":-13,"\u0414":9,"\u0410":28,"\u040e":-17,"\u040b":-16,"\u0409":9,"\u0404":12,";":43,":":43,".":68,",":68}},"\u040f":{"d":"29,0r0,-254r52,0r0,210r117,0r0,-210r52,0r0,254r-85,0r0,51r-51,0r0,-51r-85,0","w":279},"\u0410":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u045e":12,"\u0459":-16,"\u044a":15,"\u0447":22,"\u0444":10,"\u0443":12,"\u0442":23,"\u0441":8,"\u043e":10,"\u043b":-16,"\u0437":-13,"\u042a":15,"\u0427":20,"\u0424":10,"\u0423":12,"\u0422":23,"\u0421":8,"\u041e":10,"\u041b":-16,"\u0417":-13,"\u040e":12,"\u040b":16,"\u0409":-16,"\u0404":8,"\u00bb":-1,";":-14,":":-14,".":-10,"-":2,",":-10}},"\u0411":{"d":"29,0r0,-254r163,0r0,43r-113,0r0,48v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43","w":223,"k":{"\u0459":-5,"\u0442":1,"\u0436":7,"\u0427":9,"\u0422":1,"\u0416":7,"\u0410":3,"\u040b":1}},"\u0412":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u045e":12,"\u0459":-4,"\u044a":3,"\u0447":11,"\u0443":12,"\u0442":4,"\u0436":8,"\u0428":1,"\u0427":11,"\u0423":12,"\u0422":4,"\u0416":8,"\u0410":4,"\u040e":12,"\u040b":4}},"\u0413":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0","w":194,"k":{"\u045e":-14,"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-14,"\u0447":-4,"\u0445":-9,"\u0444":12,"\u0443":-14,"\u0442":-13,"\u0441":5,"\u043e":4,"\u043b":11,"\u0437":-10,"\u0436":-5,"\u0434":11,"\u0430":27,"\u042a":-11,"\u0427":-4,"\u0424":12,"\u0423":-14,"\u0422":-13,"\u0421":5,"\u041e":4,"\u041b":11,"\u0414":11,"\u040e":-14,"\u040b":-13,"\u0409":11,"\u0404":6,";":18,":":18,".":38,"-":30,",":38}},"\u0414":{"d":"222,0r-174,0r0,51r-50,0r0,-95v40,-1,44,-34,48,-81r8,-129r188,0r0,210r31,0r0,95r-51,0r0,-51xm190,-44r0,-166r-86,0v-8,57,4,141,-32,166r118,0","w":273},"\u0415":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u0424":2}},"\u0416":{"d":"299,0r-72,-109r-21,0r0,109r-50,0r0,-109r-22,0r-72,109r-64,0r99,-138r-80,-116r60,0r61,98r18,0r0,-98r50,0r0,98r17,0r61,-98r60,0r-79,116r99,138r-65,0","w":361,"k":{"\u045e":-7,"\u0454":13,"\u0447":3,"\u0444":19,"\u0443":-7,"\u0442":-5,"\u0441":13,"\u043e":13,"\u0437":-14,"\u0435":-2,"\u0431":-2,"\u0430":-17,"\u0424":15,"\u0421":12,"\u041e":13,"\u0417":-14,"\u0404":12}},"\u0417":{"d":"137,-80v1,-37,-55,-26,-94,-28r0,-43v38,-1,92,7,89,-29v-3,-43,-81,-39,-123,-27r0,-44v71,-15,179,-11,179,65v0,24,-12,47,-32,54v25,10,37,28,37,54v-1,77,-104,94,-187,76r0,-45v45,11,130,16,131,-33","w":204,"k":{"\u045e":5,"\u0459":-6,"\u044f":1,"\u0447":3,"\u0445":7,"\u0443":5,"\u0442":-2,"\u043b":-6,"\u042f":1,"\u0427":3,"\u0425":7,"\u0423":5,"\u0422":-2,"\u041b":-6,"\u0417":-4,"\u0416":7,"\u0414":-7,"\u0410":2,"\u040e":5,"\u040b":-3,"\u0409":-6}},"\u0418":{"d":"29,0r0,-254r50,0r0,183r101,-183r62,0r0,254r-50,0r0,-184r-101,184r-62,0","w":271},"\u0419":{"d":"29,0r0,-254r50,0r0,183r101,-183r62,0r0,254r-50,0r0,-184r-101,184r-62,0xm66,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":271},"\u041a":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u045e":-11,"\u0454":16,"\u0447":-1,"\u0444":22,"\u0443":-11,"\u0442":-10,"\u0441":16,"\u043e":17,"\u0437":-14,"\u0435":-2,"\u0431":-2,"\u0430":-17,"\u0424":19,"\u0421":16,"\u041e":15,"\u0417":-14,"\u0404":16}},"\u041b":{"d":"192,-210r-88,0v-5,104,4,219,-104,212r0,-42v46,-3,46,-48,49,-107r5,-107r190,0r0,254r-52,0r0,-210","w":273},"\u041c":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"\u041d":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"\u041e":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u0459":4,"\u043b":4,"\u042f":6,"\u042a":3,"\u0427":3,"\u0425":10,"\u0423":12,"\u0422":4,"\u041b":4,"\u0416":12,"\u0414":2,"\u0410":10,"\u040e":12,"\u040b":4,"\u0409":4}},"\u041f":{"d":"29,0r0,-254r221,0r0,254r-52,0r0,-210r-117,0r0,210r-52,0","w":279},"\u0420":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u0459":14,"\u0444":-1,"\u043e":1,"\u043b":14,"\u0437":-1,"\u0435":6,"\u0434":13,"\u0433":6,"\u0432":6,"\u0430":21,"\u042f":6,"\u0427":2,"\u041b":14,"\u0414":13,"\u0410":21,"\u0409":14,";":-8,":":-8,".":27,"-":-8,",":27}},"\u0421":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125","w":219,"k":{"\u045e":-11,"\u0459":-13,"\u0447":-1,"\u0443":-10,"\u0442":-10,"\u042f":-10,"\u0425":-11,"\u0424":5,"\u0423":-10,"\u0422":-10,"\u0421":2,"\u041e":2,"\u041b":-13,"\u0417":-10,"\u0416":-13,"\u0410":-12,"\u040e":-11,"\u040b":-10,"\u0409":-13}},"\u0422":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u045e":-14,"\u0459":12,"\u0454":6,"\u044f":4,"\u044a":-14,"\u0447":-3,"\u0445":-9,"\u0444":12,"\u0443":-14,"\u0442":-12,"\u0441":6,"\u043e":4,"\u043b":12,"\u0437":-10,"\u0436":-5,"\u0434":12,"\u0430":23,"\u042f":4,"\u042a":-7,"\u0424":12,"\u0423":-14,"\u0422":-12,"\u0421":6,"\u041e":4,"\u041b":12,"\u0417":-10,"\u0414":12,"\u0410":23,"\u040e":-14,"\u040b":-13,"\u0409":12,"\u0404":6,"\u00bb":15,";":5,":":7,".":22,"-":18,",":20}},"\u0423":{"d":"55,0r39,-74r-94,-180r57,0r64,134r65,-134r55,0r-134,254r-52,0","w":238,"k":{"\u045e":-17,"\u0459":9,"\u0454":12,"\u044f":10,"\u044e":-3,"\u0447":-7,"\u0446":-3,"\u0445":-12,"\u0444":14,"\u0443":-17,"\u0442":-15,"\u0441":12,"\u0440":-3,"\u043f":-3,"\u043e":11,"\u043d":-3,"\u043c":-3,"\u043b":9,"\u043a":-3,"\u0438":-3,"\u0437":-13,"\u0436":-8,"\u0435":-3,"\u0434":9,"\u0431":-3,"\u0430":28,"\u042f":10,"\u042a":-11,"\u0427":-7,"\u0424":14,"\u0423":-17,"\u0422":-15,"\u0421":12,"\u041e":11,"\u041b":9,"\u0417":-13,"\u0414":9,"\u0410":28,"\u040b":-16,"\u0409":9,"\u0404":12,"\u00bb":2,";":43,":":43,".":68,"-":10,",":68}},"\u0424":{"d":"313,-127v0,68,-53,105,-126,107r0,20r-50,0r0,-20v-69,-3,-125,-37,-125,-107v0,-69,54,-104,125,-107r0,-20r50,0r0,20v70,3,126,36,126,107xm137,-195v-40,2,-72,24,-72,67v0,44,30,67,72,70r0,-137xm187,-58v70,7,99,-93,43,-125v-12,-7,-27,-11,-43,-12r0,137","w":324,"k":{"\u0459":7,"\u043b":8,"\u0434":7,"\u042f":7,"\u042a":11,"\u0427":2,"\u0425":15,"\u0423":15,"\u041b":8,"\u0416":15,"\u0414":7,"\u0410":10,"\u040e":15,"\u0409":7}},"\u0425":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u0454":11,"\u0444":17,"\u0443":-10,"\u0442":-9,"\u0441":11,"\u043e":11,"\u0437":-13,"\u0435":-1,"\u0430":-15,"\u0424":13,"\u0421":10,"\u041e":11,"\u0417":-13,"\u0404":10}},"\u0426":{"d":"29,0r0,-254r52,0r0,210r117,0r0,-210r52,0r0,210r31,0r0,95r-51,0r0,-51r-201,0","w":281},"\u0427":{"d":"74,-254v4,53,-19,128,44,128v22,0,41,-6,55,-16r0,-112r52,0r0,254r-52,0r0,-100v-66,28,-159,19,-151,-68r0,-86r52,0","w":254},"\u0428":{"d":"29,0r0,-254r52,0r0,210r79,0r0,-210r52,0r0,210r78,0r0,-210r53,0r0,254r-314,0","w":371},"\u0429":{"d":"29,0r0,-254r52,0r0,210r79,0r0,-210r52,0r0,210r78,0r0,-210r53,0r0,210r30,0r0,95r-51,0r0,-51r-293,0","w":374},"\u042a":{"d":"62,0r0,-211r-61,0r0,-43r112,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-87,0xm190,-81v0,-41,-34,-47,-77,-44r0,87v42,3,77,-3,77,-43","w":257,"k":{"\u044a":22,"\u042a":20,"\u0427":9,"\u0423":23,"\u0422":27,"\u040e":23,"\u040b":21}},"\u042b":{"d":"29,0r0,-254r50,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43xm233,0r0,-254r53,0r0,254r-53,0","w":314},"\u042c":{"d":"29,0r0,-254r50,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43","w":216,"k":{"\u044a":18,"\u042a":17,"\u0427":6,"\u0423":20,"\u0422":23,"\u040e":20,"\u040b":17}},"\u042d":{"d":"206,-127v0,107,-89,150,-200,125r0,-45v63,17,140,7,143,-61r-106,0r0,-43r106,0v-9,-62,-77,-75,-140,-56r0,-44v103,-27,197,20,197,124","w":219,"k":{"\u0459":2,"\u042f":5,"\u042a":5,"\u0427":2,"\u0423":13,"\u0422":6,"\u041b":2,"\u0414":1,"\u0410":9,"\u040e":13,"\u040b":5,"\u0409":2}},"\u042e":{"d":"239,5v-71,0,-119,-46,-124,-114r-34,0r0,109r-52,0r0,-254r52,0r0,98r35,0v9,-61,56,-103,123,-103v77,0,127,53,127,132v0,79,-50,132,-127,132xm310,-127v0,-53,-20,-91,-72,-91v-46,0,-69,40,-69,91v0,52,24,92,70,92v50,0,71,-39,71,-92","w":381,"k":{"\u0459":4,"\u043b":4,"\u042f":6,"\u042a":4,"\u0427":4,"\u0425":10,"\u0423":13,"\u0422":5,"\u041b":4,"\u0416":12,"\u0414":2,"\u0410":10,"\u040e":13,"\u040b":4,"\u0409":4}},"\u042f":{"d":"70,-108v-25,-12,-41,-31,-41,-68v0,-52,30,-78,91,-78r80,0r0,254r-51,0r0,-98r-29,0r-58,98r-59,0xm81,-176v0,38,30,42,68,40r0,-80v-38,-3,-68,5,-68,40","w":228},"\u0430":{"d":"180,-58r-107,0r-22,58r-51,0r100,-254r57,0r100,254r-55,0xm164,-101r-37,-103r-37,103r74,0","w":256,"k":{"\u045e":12,"\u0459":-16,"\u0447":22,"\u0443":12,"\u0442":23}},"\u0431":{"d":"29,0r0,-254r163,0r0,43r-113,0r0,48v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43","w":223,"k":{"\u044f":8,"\u0447":9,"\u0445":5,"\u0442":1,"\u0437":-3,"\u0436":7}},"\u0432":{"d":"29,-254v78,0,172,-11,170,66v0,23,-10,41,-30,53v28,11,43,32,43,62v0,82,-99,75,-183,73r0,-254xm159,-75v0,-39,-41,-37,-80,-36r0,73v40,2,80,1,80,-37xm147,-182v0,-33,-32,-37,-68,-34r0,67v35,2,68,0,68,-33","w":231,"k":{"\u045e":12,"\u044f":8,"\u0447":11,"\u0445":9,"\u0443":12,"\u0442":4,"\u0437":-1,"\u0436":8}},"\u0433":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0","w":194,"k":{"\u045e":-14,"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-11,"\u0444":12,"\u0441":5,"\u043e":4,"\u043b":11,"\u0434":11,";":24,":":24,".":38,"-":33,",":38}},"\u0434":{"d":"222,0r-174,0r0,51r-50,0r0,-95v40,-1,44,-34,48,-81r8,-129r188,0r0,210r31,0r0,95r-51,0r0,-51xm190,-44r0,-166r-86,0v-8,57,4,141,-32,166r118,0","w":273},"\u0435":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0","w":204,"k":{"\u045e":-5,"\u044f":-7,"\u0447":5,"\u0445":-7,"\u0443":-5,"\u043b":-8,"\u0437":-5,"\u0436":-9}},"\u0436":{"d":"299,0r-72,-109r-21,0r0,109r-50,0r0,-109r-22,0r-72,109r-64,0r99,-138r-80,-116r60,0r61,98r18,0r0,-98r50,0r0,98r17,0r61,-98r60,0r-79,116r99,138r-65,0","w":361,"k":{"\u045e":-7,"\u0454":13,"\u0444":19,"\u0441":13,"\u043e":13,"\u0437":-14,"\u0435":-2,"\u0431":-2}},"\u0437":{"d":"137,-80v1,-37,-55,-26,-94,-28r0,-43v38,-1,92,7,89,-29v-3,-43,-81,-39,-123,-27r0,-44v71,-15,179,-11,179,65v0,24,-12,47,-32,54v25,10,37,28,37,54v-1,77,-104,94,-187,76r0,-45v45,11,130,16,131,-33","w":204,"k":{"\u045e":5,"\u0459":-6,"\u044f":3,"\u0447":3,"\u0445":7,"\u0443":5,"\u0442":-2,"\u043b":-6,"\u0436":7}},"\u0438":{"d":"29,0r0,-254r50,0r0,183r101,-183r62,0r0,254r-50,0r0,-184r-101,184r-62,0","w":271},"\u0439":{"d":"29,0r0,-254r50,0r0,183r101,-183r62,0r0,254r-50,0r0,-184r-101,184r-62,0xm66,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-27,47,-69,47v-42,0,-65,-16,-70,-47","w":271,"k":{"\u0459":-1}},"\u043a":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0","w":250,"k":{"\u045e":-11,"\u0454":16,"\u0444":22,"\u0441":16,"\u043e":17,"\u0437":-14,"\u0435":-2,"\u0431":-2,"\u0430":-17}},"\u043b":{"d":"192,-210r-88,0v-5,104,4,219,-104,212r0,-42v46,-3,46,-48,49,-107r5,-107r190,0r0,254r-52,0r0,-210","w":273},"\u043c":{"d":"29,0r0,-254r74,0r64,203r65,-203r73,0r0,254r-51,0r0,-188r-59,188r-56,0r-61,-189r0,189r-49,0","w":334},"\u043d":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,254r-52,0r0,-109r-117,0r0,109r-52,0","w":279},"\u043e":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-127v0,-53,-21,-90,-72,-91v-46,0,-69,39,-69,91v0,53,24,92,70,92v49,0,71,-40,71,-92","w":284,"k":{"\u045e":12,"\u0459":4,"\u044a":3,"\u0445":12,"\u0443":12,"\u0442":4,"\u043b":4,"\u0437":4,"\u0436":14}},"\u043f":{"d":"29,0r0,-254r221,0r0,254r-52,0r0,-210r-117,0r0,210r-52,0","w":279},"\u0440":{"d":"29,0r0,-254r86,0v62,0,93,28,93,82v0,67,-52,87,-129,81r0,91r-50,0xm156,-173v0,-41,-35,-46,-77,-43r0,87v43,3,77,-1,77,-44","w":223,"k":{"\u045e":5,"\u044f":6,"\u0447":2,"\u0445":13,"\u0443":5,"\u0442":-2,"\u043b":16,"\u0437":-1,"\u0436":17,";":-1,".":48,"-":-7,",":47}},"\u0441":{"d":"14,-127v0,-104,92,-151,197,-124r0,44v-72,-23,-142,2,-142,80v0,80,73,100,145,80r0,45v-109,24,-200,-17,-200,-125","w":219,"k":{"\u0459":-13,"\u044f":-10,"\u0447":-1,"\u0445":-11,"\u0444":10,"\u0443":-10,"\u0442":-10,"\u043e":5,"\u043b":-13,"\u0437":-10,"\u0436":-12,"\u0430":-12,"\u040e":-11}},"\u0442":{"d":"79,0r0,-211r-75,0r0,-43r203,0r0,43r-76,0r0,211r-52,0","w":210,"k":{"\u045e":-14,"\u0459":12,"\u0454":6,"\u044f":4,"\u044a":-7,"\u0447":-3,"\u0444":12,"\u0443":-14,"\u0442":-12,"\u0441":6,"\u043e":4,"\u043b":12,"\u0437":-10,"\u0434":12,"\u0430":23,"\u00bb":24,";":7,":":7,".":22,"-":18,",":20}},"\u0443":{"d":"55,0r39,-74r-94,-180r57,0r64,134r65,-134r55,0r-134,254r-52,0","w":238,"k":{"\u0459":9,"\u0454":12,"\u044f":10,"\u044a":-11,"\u0447":-7,"\u0444":14,"\u0442":-15,"\u0441":12,"\u043e":11,"\u043b":9,"\u0437":-13,"\u0435":-3,"\u0434":9,"\u0430":28,"\u00bb":2,";":43,":":43,".":68,"-":10,",":68}},"\u0444":{"d":"313,-127v0,68,-53,105,-126,107r0,20r-50,0r0,-20v-69,-3,-125,-37,-125,-107v0,-69,54,-104,125,-107r0,-20r50,0r0,20v70,3,126,36,126,107xm137,-195v-40,2,-72,24,-72,67v0,44,30,67,72,70r0,-137xm187,-58v70,7,99,-93,43,-125v-12,-7,-27,-11,-43,-12r0,137","w":324,"k":{"\u045e":15,"\u0459":10,"\u044f":7,"\u044a":11,"\u0447":2,"\u0445":17,"\u0443":15,"\u0442":12,"\u043b":11,"\u0437":8,"\u0436":19,"\u0434":10,"\u0433":3}},"\u0445":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r91,135r-60,0r-61,-93r-62,93r-57,0","w":239,"k":{"\u045e":-10,"\u0454":11,"\u0444":17,"\u0441":11,"\u043e":11,"\u0437":-13,"\u0435":-1,"\u0430":-15}},"\u0446":{"d":"29,0r0,-254r52,0r0,210r117,0r0,-210r52,0r0,210r31,0r0,95r-51,0r0,-51r-201,0","w":281},"\u0447":{"d":"74,-254v4,53,-19,128,44,128v22,0,41,-6,55,-16r0,-112r52,0r0,254r-52,0r0,-100v-66,28,-159,19,-151,-68r0,-86r52,0","w":254},"\u0448":{"d":"29,0r0,-254r52,0r0,210r79,0r0,-210r52,0r0,210r78,0r0,-210r53,0r0,254r-314,0","w":371},"\u0449":{"d":"29,0r0,-254r52,0r0,210r79,0r0,-210r52,0r0,210r78,0r0,-210r53,0r0,210r30,0r0,95r-51,0r0,-51r-293,0","w":374},"\u044a":{"d":"62,0r0,-211r-61,0r0,-43r112,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-87,0xm190,-81v0,-41,-34,-47,-77,-44r0,87v42,3,77,-3,77,-43","w":257,"k":{"\u045e":23,"\u044a":22,"\u0447":9,"\u0443":23,"\u0442":28,"\u0435":6}},"\u044b":{"d":"29,0r0,-254r50,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43xm233,0r0,-254r53,0r0,254r-53,0","w":314},"\u044c":{"d":"29,0r0,-254r50,0r0,91v76,-6,129,15,129,82v0,54,-31,81,-93,81r-86,0xm156,-81v0,-42,-34,-47,-77,-44r0,87v42,3,77,-2,77,-43","w":216,"k":{"\u045e":20,"\u044a":18,"\u0447":6,"\u0443":20,"\u0442":25,"\u0441":-4,"\u0435":2}},"\u044d":{"d":"206,-127v0,107,-89,150,-200,125r0,-45v63,17,140,7,143,-61r-106,0r0,-43r106,0v-9,-62,-77,-75,-140,-56r0,-44v103,-27,197,20,197,124","w":219,"k":{"\u045e":13,"\u0459":2,"\u044f":7,"\u044a":5,"\u0447":2,"\u0443":13,"\u0442":6,"\u043b":2}},"\u044e":{"d":"239,5v-71,0,-119,-46,-124,-114r-34,0r0,109r-52,0r0,-254r52,0r0,98r35,0v9,-61,56,-103,123,-103v77,0,127,53,127,132v0,79,-50,132,-127,132xm310,-127v0,-53,-20,-91,-72,-91v-46,0,-69,40,-69,91v0,52,24,92,70,92v50,0,71,-39,71,-92","w":381,"k":{"\u045e":13,"\u0459":4,"\u044a":4,"\u0447":4,"\u0445":12,"\u0443":13,"\u0442":5,"\u043b":4,"\u0437":4,"\u0436":14}},"\u044f":{"d":"70,-108v-25,-12,-41,-31,-41,-68v0,-52,30,-78,91,-78r80,0r0,254r-51,0r0,-98r-29,0r-58,98r-59,0xm81,-176v0,38,30,42,68,40r0,-80v-38,-3,-68,5,-68,40","w":228},"\u0451":{"d":"29,0r0,-254r156,0r0,43r-104,0r0,60r99,0r0,43r-99,0r0,65r107,0r0,43r-159,0xm32,-303v0,-16,13,-29,30,-29v15,-1,28,14,28,30v0,16,-14,29,-29,29v-16,0,-30,-13,-29,-30xm124,-303v0,-16,12,-29,29,-29v15,0,29,13,29,29v0,15,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":204},"\u0452":{"d":"215,-56v0,-42,-12,-70,-50,-71v-18,0,-34,5,-49,15r0,112r-53,0r0,-211r-61,0r0,-43r204,0r0,43r-90,0r0,57v78,-40,155,8,155,98v0,80,-43,126,-126,116r0,-41v51,10,70,-24,70,-75","w":277},"\u0453":{"d":"29,0r0,-254r163,0r0,43r-111,0r0,211r-52,0xm75,-278r49,-49r67,0r-65,49r-51,0","w":194,"k":{"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-9,"\u0444":12,"\u0441":5,"\u043e":4,"\u043b":11,"\u0434":11,";":29,":":29,".":37,",":37}},"\u0454":{"d":"14,-127v0,-104,93,-151,197,-124r0,44v-63,-18,-132,-7,-140,56r105,0r0,43r-106,0v6,66,78,79,144,61r0,45v-109,24,-200,-17,-200,-125","w":219},"\u0455":{"d":"184,-72v0,79,-99,87,-167,67r0,-43v44,17,134,21,111,-38v-31,-31,-115,-34,-115,-99v0,-69,91,-86,159,-65r0,40v-43,-17,-140,-11,-98,42v40,23,110,32,110,96","w":200},"\u0456":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u0457":{"d":"29,0r0,-254r52,0r0,254r-52,0xm-12,-303v0,-15,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-30,-13,-29,-29xm63,-303v0,-16,13,-29,30,-29v15,0,29,14,29,29v0,15,-13,29,-30,29v-17,0,-29,-13,-29,-29","w":110},"\u0458":{"d":"150,-254v-6,112,35,258,-94,258v-14,0,-32,-1,-51,-4r0,-44v47,12,93,10,93,-49r0,-161r52,0","w":177},"\u0459":{"d":"187,-210r-83,0v-5,104,4,218,-104,212r0,-42v46,-3,46,-48,49,-107r5,-107r183,0r0,91v75,-5,125,16,125,82v0,54,-31,81,-93,81r-82,0r0,-210xm310,-81v0,-39,-32,-47,-73,-44r0,87v41,3,73,-5,73,-43","w":370,"k":{"\u045e":20,"\u044a":18,"\u0447":5,"\u0443":20,"\u0442":25}},"\u045a":{"d":"29,0r0,-254r52,0r0,97r112,0r0,-97r51,0r0,97v72,-5,124,14,124,76v0,54,-31,81,-93,81r-82,0r0,-119r-112,0r0,119r-52,0xm316,-81v0,-37,-34,-40,-72,-38r0,81v40,3,72,-5,72,-43","w":376,"k":{"\u045e":22,"\u0454":-4,"\u044a":19,"\u0447":7,"\u0443":22,"\u0442":27,"\u0441":-4,"\u0435":2}},"\u045b":{"d":"215,0v-3,-54,18,-127,-44,-127v-23,0,-41,5,-55,15r0,112r-53,0r0,-211r-61,0r0,-43r204,0r0,43r-90,0r0,57v64,-29,151,-17,151,68r0,86r-52,0","w":286},"\u045c":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r120,137r-69,0r-104,-120r0,120r-52,0xm95,-278r49,-49r67,0r-65,49r-51,0","w":250,"k":{"\u045e":-11,"\u0454":16,"\u0444":22,"\u0441":16,"\u043e":17,"\u0437":-14,"\u0435":-2,"\u0431":-2,"\u0430":-17}},"\u045e":{"d":"55,0r39,-74r-94,-180r57,0r64,134r65,-134r55,0r-134,254r-52,0xm51,-327r35,0v6,24,62,24,69,0r35,0v-5,31,-28,47,-70,47v-42,0,-64,-16,-69,-47","w":238,"k":{"\u0454":12,"\u044f":10,"\u044a":-13,"\u0447":-7,"\u0444":14,"\u0442":-15,"\u0441":12,"\u043e":11,"\u043b":9,"\u0437":-13,"\u0435":-3,"\u0434":9,"\u0430":28,";":47,":":47,".":68,",":68}},"\u045f":{"d":"29,0r0,-254r52,0r0,210r117,0r0,-210r52,0r0,254r-85,0r0,51r-51,0r0,-51r-85,0","w":279},"\u0490":{"d":"29,0r0,-254r112,0r0,-48r51,0r0,91r-111,0r0,211r-52,0","w":194,"k":{"\u045e":-14,"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-14,"\u0447":-4,"\u0445":-9,"\u0444":12,"\u0443":-14,"\u0442":-13,"\u0441":5,"\u043e":4,"\u043b":11,"\u0437":-10,"\u0436":-5,"\u0434":11,"\u0430":27,"\u042f":3,"\u042a":-9,"\u0427":-4,"\u0424":12,"\u0423":-14,"\u0422":-13,"\u0421":5,"\u041e":4,"\u041b":11,"\u0414":11,"\u040e":-14,"\u040b":-13,"\u0409":11,"\u0404":6,";":24,":":24,".":37,",":37}},"\u0491":{"d":"29,0r0,-254r112,0r0,-48r51,0r0,91r-111,0r0,211r-52,0","w":194,"k":{"\u0459":11,"\u0454":6,"\u044f":3,"\u044a":-9,"\u0444":12,"\u0441":5,"\u043e":4,"\u043b":11,"\u0434":11,";":29,":":29,".":37,",":37}},"\u0492":{"d":"29,0r0,-108r-26,0r0,-37r26,0r0,-109r163,0r0,43r-111,0r0,66r63,0r0,37r-63,0r0,108r-52,0","w":194,"k":{"\u042a":-11,";":25,":":25,".":40,",":40}},"\u0493":{"d":"29,0r0,-108r-26,0r0,-37r26,0r0,-109r163,0r0,43r-111,0r0,66r63,0r0,37r-63,0r0,108r-52,0","w":194,"k":{"\u044a":-11,";":29,":":29,".":40,",":40}},"\u0496":{"d":"299,0r-72,-109r-21,0r0,109r-50,0r0,-109r-22,0r-72,109r-64,0r99,-138r-80,-116r60,0r61,98r18,0r0,-98r50,0r0,98r17,0r61,-98r60,0r-79,116r67,94r32,0r0,95r-51,0r0,-51r-14,0","w":364},"\u0497":{"d":"299,0r-72,-109r-21,0r0,109r-50,0r0,-109r-22,0r-72,109r-64,0r99,-138r-80,-116r60,0r61,98r18,0r0,-98r50,0r0,98r17,0r61,-98r60,0r-79,116r67,94r32,0r0,95r-51,0r0,-51r-14,0","w":364},"\u049a":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r82,93r38,0r0,95r-51,0r0,-51r-18,0r-104,-120r0,120r-52,0","w":255},"\u049b":{"d":"29,0r0,-254r52,0r0,109r100,-109r61,0r-108,117r82,93r38,0r0,95r-51,0r0,-51r-18,0r-104,-120r0,120r-52,0","w":255},"\u049c":{"d":"29,0r0,-254r52,0r0,98r11,0r0,-52r31,0v2,16,-4,40,2,52r65,-98r60,0r-84,116r104,138r-65,0v-28,-35,-51,-76,-82,-109r0,52r-31,0r0,-52r-11,0r0,109r-52,0","w":265},"\u049d":{"d":"29,0r0,-254r52,0r0,98r11,0r0,-52r31,0v2,16,-4,40,2,52r65,-98r60,0r-84,116r104,138r-65,0v-28,-35,-51,-76,-82,-109r0,52r-31,0r0,-52r-11,0r0,109r-52,0","w":265},"\u04a2":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,210r31,0r0,95r-51,0r0,-51r-32,0r0,-109r-117,0r0,109r-52,0","w":281},"\u04a3":{"d":"29,0r0,-254r52,0r0,98r117,0r0,-98r52,0r0,210r31,0r0,95r-51,0r0,-51r-32,0r0,-109r-117,0r0,109r-52,0","w":281},"\u04ae":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u042a":-9,";":40,":":40,".":62,",":62}},"\u04af":{"d":"94,0r0,-90r-94,-164r57,0r64,119r65,-119r55,0r-94,164r0,90r-53,0","w":240,"k":{"\u044a":-9,";":40,":":40,".":62,",":62}},"\u04b0":{"d":"93,0r0,-56r-46,0r0,-37r44,0r-91,-161r57,0r63,119r66,-119r54,0r-93,161r46,0r0,37r-48,0r0,56r-52,0","w":240,"k":{"\u042a":-9,";":32,":":32,".":43,",":43}},"\u04b1":{"d":"93,0r0,-56r-46,0r0,-37r44,0r-91,-161r57,0r63,119r66,-119r54,0r-93,161r46,0r0,37r-48,0r0,56r-52,0","w":240,"k":{"\u044a":-9,";":29,":":29,".":43,",":43}},"\u04b2":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r61,91r30,0r0,95r-51,0r0,-51r-9,0r-61,-93r-62,93r-57,0","w":240},"\u04b3":{"d":"0,0r91,-133r-81,-121r59,0r52,80r54,-80r55,0r-81,119r61,91r30,0r0,95r-51,0r0,-51r-9,0r-61,-93r-62,93r-57,0","w":240},"\u04b8":{"d":"109,-86v-57,-1,-87,-21,-87,-82r0,-86r52,0v5,48,-19,124,35,127r0,-61r31,0r0,59v14,-3,25,-7,33,-13r0,-112r52,0r0,254r-52,0r0,-100v-11,5,-22,8,-33,11r0,52r-31,0r0,-49","w":254},"\u04b9":{"d":"109,-86v-57,-1,-87,-21,-87,-82r0,-86r52,0v5,48,-19,124,35,127r0,-61r31,0r0,59v14,-3,25,-7,33,-13r0,-112r52,0r0,254r-52,0r0,-100v-11,5,-22,8,-33,11r0,52r-31,0r0,-49","w":254},"\u04ba":{"d":"180,0v-4,-53,19,-127,-44,-127v-23,0,-41,5,-55,15r0,112r-52,0r0,-254r52,0r0,100v64,-28,160,-19,151,68r0,86r-52,0","w":254},"\u04bb":{"d":"180,0v-4,-53,19,-127,-44,-127v-23,0,-41,5,-55,15r0,112r-52,0r0,-254r52,0r0,100v64,-28,160,-19,151,68r0,86r-52,0","w":254},"\u04c0":{"d":"29,0r0,-254r52,0r0,254r-52,0","w":110},"\u04d8":{"d":"141,5v-83,0,-134,-63,-124,-152r194,0v-5,-72,-75,-81,-155,-64v1,-13,-2,-31,1,-42v117,-23,211,13,211,126v0,79,-49,132,-127,132xm73,-105v0,63,78,93,118,49v11,-13,18,-29,20,-49r-138,0","w":284},"\u04d9":{"d":"141,5v-83,0,-134,-63,-124,-152r194,0v-5,-72,-75,-81,-155,-64v1,-13,-2,-31,1,-42v117,-23,211,13,211,126v0,79,-49,132,-127,132xm73,-105v0,63,78,93,118,49v11,-13,18,-29,20,-49r-138,0","w":284},"\u04e8":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-147v1,-65,-87,-101,-125,-46v-9,12,-13,27,-16,46r141,0xm72,-105v0,66,86,97,124,45v9,-12,14,-27,16,-45r-140,0","w":284},"\u04e9":{"d":"16,-127v0,-79,50,-132,127,-132v77,0,125,54,125,132v0,78,-49,132,-126,132v-78,0,-126,-54,-126,-132xm213,-147v1,-65,-87,-101,-125,-46v-9,12,-13,27,-16,46r141,0xm72,-105v0,66,86,97,124,45v9,-12,14,-27,16,-45r-140,0","w":284},"\u0591":{"d":"35,68v-1,-21,8,-28,22,-34r0,-21r20,0r0,21v14,5,24,13,23,34r-20,0v1,-8,-7,-12,-13,-13v-6,0,-12,4,-12,13r-20,0","w":134},"\u0592":{"d":"43,-230r0,28r-31,0r0,-28r31,0xm123,-230r0,28r-31,0r0,-28r31,0xm83,-241r0,27r-31,0r0,-27r31,0","w":134},"\u0593":{"d":"96,-215r-55,22r0,-16r14,-5r-11,0r-4,-13r14,-6r-10,0r-4,-13r49,-18r10,11r-16,7r13,0r0,13r-13,5r13,0r0,13","w":139},"\u0594":{"d":"83,-263r0,27r-31,0r0,-27r31,0xm83,-230r0,27r-31,0r0,-27r31,0","w":134},"\u0595":{"d":"58,-204r-20,0r0,-57r20,0r0,57xm99,-262r0,27r-31,0r0,-27r31,0xm99,-229r0,27r-31,0r0,-27r31,0","w":134},"\u0596":{"d":"55,8v1,30,12,40,42,41r0,20v-43,-1,-58,-19,-60,-61r18,0","w":134},"\u0597":{"d":"92,-219r-22,21r-22,-21r22,-23","w":139},"\u0598":{"d":"78,-225v2,7,10,5,11,0v0,-2,-3,-3,-9,-4r0,-20v36,-2,36,49,4,49v-14,0,-24,-8,-24,-24v-3,-5,-10,-7,-12,0v0,2,3,3,9,4r0,20v-18,0,-27,-8,-27,-24v0,-15,10,-25,24,-25v13,0,24,8,24,24","w":134},"\u0599":{"d":"60,-200r-18,0v0,-27,-14,-41,-42,-41r0,-20v42,1,59,20,60,61","w":134},"\u059a":{"d":"134,59r-17,15r-35,-34r35,-33r17,14r-19,19","w":139},"\u059b":{"d":"37,49v28,0,42,-13,42,-41r18,0v-2,41,-19,61,-60,61r0,-20xm66,8r0,27r-31,0r0,-27r31,0","w":134},"\u059c":{"d":"97,-241v-27,0,-42,14,-42,41r-18,0v1,-42,19,-60,60,-61r0,20","w":134},"\u059d":{"d":"134,-241v-28,1,-41,12,-41,41r-18,0v1,-43,18,-59,59,-61r0,20","w":134},"\u059e":{"d":"75,-197v0,-25,8,-38,22,-48v-26,0,-39,13,-40,38r-18,0v2,-40,19,-56,59,-57r0,18v9,-5,21,-9,36,-9r0,20v-27,1,-40,11,-41,38r-18,0","w":134},"\u059f":{"d":"130,-234v0,18,-14,28,-33,24r-14,13r-15,-14v5,-7,17,-10,14,-22v0,-15,10,-26,24,-26v14,1,24,11,24,25xm98,-234v0,3,4,9,9,8v4,1,8,-5,8,-8v0,-4,-5,-9,-9,-8v-4,-1,-8,5,-8,8xm28,-259v17,0,26,13,24,33r14,15r-15,14v-10,-19,-48,-6,-47,-37v0,-15,10,-25,24,-25xm20,-233v0,3,4,9,9,8v4,1,9,-4,8,-8v1,-4,-4,-9,-8,-9v-4,0,-9,5,-9,9","w":134},"\u05a0":{"d":"133,-235v0,17,-15,29,-34,24r-14,13r-15,-14v5,-7,17,-11,14,-23v0,-14,10,-25,24,-25v14,-1,25,11,25,25xm117,-234v1,-4,-3,-10,-8,-9v-4,-1,-9,4,-9,8v0,9,17,13,17,1","w":137},"\u05a1":{"d":"68,-244v16,-4,22,-6,29,-16r24,0v-13,26,-31,33,-65,37r-13,23r-22,0r34,-60r22,0","w":141},"\u05a3":{"d":"84,67r-51,0r0,-23r30,0r0,-29r21,0r0,52","w":134},"\u05a4":{"d":"94,59r-18,15r-34,-34r34,-33r18,14r-19,19","w":140},"\u05a5":{"d":"37,49v27,-1,42,-12,42,-41r18,0v-1,42,-20,59,-60,61r0,-20","w":134},"\u05a6":{"d":"20,44v28,0,41,-9,41,-37r18,0v-1,24,-7,39,-20,47v26,0,38,-11,38,-37r18,0v-1,41,-19,54,-60,56r0,-17v-10,5,-21,7,-35,7r0,-19","w":134},"\u05a7":{"d":"64,25v10,8,31,5,31,25v0,28,-41,25,-53,9r15,-15v7,6,13,11,20,6v-12,-4,-35,-9,-31,-25v-2,-27,43,-24,50,-5r-15,11v-7,-6,-10,-9,-17,-6","w":138},"\u05a8":{"d":"79,-200v0,-29,-14,-41,-42,-41r0,-20v41,1,59,19,60,61r-18,0","w":134},"\u05a9":{"d":"28,-260v17,0,26,13,24,33r14,15r-15,14v-9,-20,-47,-4,-47,-37v0,-15,10,-25,24,-25xm30,-226v9,-2,8,-17,-2,-17v-9,1,-12,19,2,17","w":137},"\u05aa":{"d":"68,28v6,0,13,-5,12,-13r20,0v1,20,-9,30,-23,34r0,21r-20,0r0,-21v-14,-6,-22,-13,-22,-34r20,0v-1,9,6,13,13,13","w":134},"\u05ab":{"d":"94,-214r-18,15r-34,-34r34,-33r18,15r-19,18","w":140},"\u05ac":{"d":"84,-205r-51,0r0,-23r30,0r0,-29r21,0r0,52","w":134},"\u05ad":{"d":"93,8v1,28,14,40,41,41r0,20v-40,-1,-59,-19,-59,-61r18,0","w":134},"\u05ae":{"d":"48,-227v0,10,10,8,12,2v0,-2,-4,-3,-10,-4r0,-20v36,-2,36,49,4,49v-13,0,-23,-10,-24,-22v0,-10,-9,-8,-12,-2v2,2,6,4,10,4r0,20v-37,2,-36,-49,-4,-49v13,0,24,11,24,22","w":134},"\u05af":{"d":"45,-223v0,-14,9,-23,23,-23v13,0,21,10,21,23v0,14,-10,23,-22,23v-12,0,-22,-9,-22,-23xm67,-232v-6,-1,-9,4,-9,9v0,6,4,9,10,9v5,1,9,-4,9,-9v0,-5,-4,-10,-10,-9","w":134},"\u05b0":{"d":"82,41r0,27r-30,0r0,-27r30,0xm82,11r0,27r-30,0r0,-27r30,0","w":134},"\u05b1":{"d":"41,11r0,27r-30,0r0,-27r30,0xm82,11r0,27r-31,0r0,-27r31,0xm62,41r0,27r-31,0r0,-27r31,0xm124,41r0,27r-31,0r0,-27r31,0xm124,11r0,27r-31,0r0,-27r31,0","w":134},"\u05b2":{"d":"77,11r0,27r-57,0r0,-27r57,0xm112,41r0,27r-31,0r0,-27r31,0xm112,11r0,27r-31,0r0,-27r31,0","w":134},"\u05b3":{"d":"60,38r0,19r-24,0r0,-19r-20,0r0,-27r64,0r0,27r-20,0xm114,41r0,27r-30,0r0,-27r30,0xm114,11r0,27r-30,0r0,-27r30,0","w":134},"\u05b4":{"d":"85,12r0,37r-35,0r0,-37r35,0","w":134},"\u05b5":{"d":"60,11r0,27r-30,0r0,-27r30,0xm105,11r0,27r-30,0r0,-27r30,0","w":134},"\u05b6":{"d":"60,11r0,27r-31,0r0,-27r31,0xm105,11r0,27r-31,0r0,-27r31,0xm82,41r0,27r-30,0r0,-27r30,0","w":134},"\u05b7":{"d":"98,11r0,27r-61,0r0,-27r61,0","w":134},"\u05b8":{"d":"79,38r0,25r-25,0r0,-25r-24,0r0,-27r73,0r0,27r-24,0","w":134},"\u05b9":{"d":"85,-239r0,37r-36,0r0,-37r36,0","w":134},"\u05ba":{"d":"50,0r0,-38r35,0r0,38r-35,0","w":134},"\u05bb":{"d":"120,41r0,27r-31,0r0,-27r31,0xm45,11r0,27r-30,0r0,-27r30,0xm83,26r0,27r-31,0r0,-27r31,0","w":134},"\u05bc":{"d":"83,-111r0,27r-31,0r0,-27r31,0","w":134},"\u05bd":{"d":"82,12r0,58r-30,0r0,-58r30,0","w":134},"\u05be":{"d":"117,-192r0,31r-99,0r0,-31r99,0","w":134},"\u05bf":{"d":"93,-205r-51,0r0,-22r51,0r0,22","w":134},"\u05c0":{"d":"60,29r-34,0r0,-248r34,0r0,248","w":85},"\u05c1":{"d":"82,-230r0,27r-31,0r0,-27r31,0","w":134},"\u05c2":{"d":"83,-230r0,28r-31,0r0,-28r31,0","w":134},"\u05c3":{"d":"63,-149r-38,0r0,-42r38,0r0,42xm63,0r-38,0r0,-43r38,0r0,43","w":88},"\u05c4":{"d":"83,-230r0,27r-31,0r0,-27r31,0","w":134},"\u05d0":{"d":"31,0v-1,-61,5,-93,41,-121r-49,-75r47,0r60,92v9,-18,8,-61,8,-92r39,0v1,54,-1,96,-27,123r48,73r-49,0r-60,-93v-20,20,-17,54,-17,93r-41,0","w":205},"\u05d1":{"d":"109,-36v-2,-57,15,-132,-51,-124r-40,0r0,-36v74,-4,131,7,131,75r0,85r28,0r0,36r-163,0r0,-36r95,0","w":187},"\u05d2":{"d":"90,-115v-1,-19,6,-46,-15,-45r-62,0r0,-37v63,-1,117,-7,117,61v0,55,-3,80,8,136r-41,0v-4,-21,-7,-42,-7,-64r-80,71r0,-48","w":155},"\u05d3":{"d":"10,-196r163,0r0,36r-35,0r0,160r-38,0r0,-160r-90,0r0,-36","w":184},"\u05d4":{"d":"137,0v-6,-62,25,-164,-45,-160r-67,0r0,-36v81,-2,151,-6,151,80r0,116r-39,0xm65,-133r0,133r-40,0r0,-119","w":201},"\u05d5":{"d":"9,-196r99,0r0,196r-39,0r0,-160r-60,0r0,-36","w":133},"\u05d6":{"d":"60,0v2,-59,-10,-129,21,-160r-71,0r0,-36r133,0r0,36r-19,0v-38,21,-20,103,-24,160r-40,0","w":151},"\u05d7":{"d":"138,0v-7,-61,25,-163,-44,-160r-27,0r0,160r-40,0r0,-196v81,-2,151,-4,151,80r0,116r-40,0","w":202},"\u05d8":{"d":"98,4v-92,3,-71,-109,-73,-198r40,0v6,61,-21,160,37,160v35,0,42,-30,43,-70v1,-43,-18,-62,-63,-57r2,-36v70,-5,104,22,102,92v-1,70,-21,107,-88,109","w":207},"\u05d9":{"d":"8,-196r100,0r0,104r-40,0r0,-68r-60,0r0,-36","w":132},"\u05da":{"d":"9,-196r148,0r0,251r-39,0r0,-215r-109,0r0,-36","w":182},"\u05db":{"d":"174,-98v0,63,-21,98,-84,98r-74,0r0,-36r66,0v39,0,50,-22,51,-62v0,-40,-12,-62,-50,-62r-67,0r0,-36r75,0v61,0,83,36,83,98","w":194},"\u05dc":{"d":"51,-252r0,53r117,0r0,34r-71,165r-45,0r70,-163r-110,0r0,-89r39,0","w":185},"\u05dd":{"d":"100,-196v114,-15,83,101,87,196r-162,0r0,-196r75,0xm148,-36v-4,-55,19,-132,-48,-124r-35,0r0,124r83,0","w":212},"\u05de":{"d":"150,-93v0,-52,-26,-88,-62,-60v-20,23,-18,106,-22,153r-39,0v5,-84,16,-107,-16,-194r39,0r5,20v12,-20,24,-25,60,-26v59,-1,78,47,76,107v-2,55,-5,91,-54,93r-38,0r0,-35v43,3,51,-13,51,-58","w":214},"\u05df":{"d":"75,-112v2,-43,-24,-51,-66,-49r0,-36v69,-3,106,15,106,81r0,171r-40,0r0,-167","w":139},"\u05e0":{"d":"81,-36v-8,-47,25,-134,-38,-124r-26,0r0,-36v67,-2,104,6,104,75r0,121r-107,0r0,-36r67,0","w":146},"\u05e1":{"d":"97,4v-97,0,-76,-111,-77,-201r88,0v54,1,79,37,78,96v-1,64,-21,105,-89,105xm145,-103v0,-49,-31,-63,-85,-57v2,54,-14,128,42,127v33,0,43,-34,43,-70","w":206},"\u05e2":{"d":"179,-197v1,78,5,151,-53,179r-109,52r0,-41r36,-18r-38,-172r41,0r31,154v32,-13,53,-27,53,-76r0,-78r39,0","w":198},"\u05e3":{"d":"83,-73v-49,3,-67,-9,-67,-57r0,-67r75,0v128,-13,77,147,87,252r-40,0r0,-168v2,-47,-35,-51,-82,-48v1,26,-7,59,27,53r0,35","w":201},"\u05e4":{"d":"89,-74v-49,3,-68,-8,-68,-57r0,-65r83,0v55,-1,75,45,75,100v-1,59,-22,96,-82,96r-76,0r0,-36r67,0v38,0,49,-22,50,-60v1,-49,-23,-71,-77,-64v2,26,-8,59,28,51r0,35","w":198},"\u05e5":{"d":"113,-112v30,-9,26,-45,26,-84r39,0v3,69,-3,107,-59,120r0,131r-40,0v-2,-75,5,-149,-29,-196r-40,-55r52,0v18,24,44,59,51,84","w":199},"\u05e6":{"d":"120,-118v25,-12,24,-39,23,-78r40,0v2,57,-1,87,-38,111r38,50r0,35r-155,0r0,-36r102,0r-120,-160r50,0","w":200},"\u05e7":{"d":"179,-197r0,34r-67,163r-47,0r67,-161r-107,0r0,-36r154,0xm65,-131r0,186r-40,0r0,-173","w":195},"\u05e8":{"d":"123,0v-6,-62,25,-164,-46,-160r-66,0r0,-36v81,-2,152,-6,152,80r0,116r-40,0","w":188},"\u05e9":{"d":"112,-34v88,0,47,-94,56,-162r40,0r0,112v-2,72,-21,88,-92,88v-73,0,-92,-21,-92,-87r0,-113r40,0r0,99v46,8,29,-57,33,-99r39,0v0,71,4,137,-71,130v3,25,18,32,47,32","w":232},"\u05ea":{"d":"146,-113v3,-44,-23,-50,-65,-47v-6,72,30,177,-69,160r0,-35v20,0,29,0,29,-21r0,-104r-29,0r0,-36r108,0v94,-5,59,114,66,196r-40,0r0,-113","w":211},"\u05f0":{"d":"11,-196r73,0r0,196r-39,0r0,-160r-34,0r0,-36xm86,-196r73,0r0,196r-40,0r0,-160r-33,0r0,-36","w":183},"\u05f1":{"d":"11,-196r73,0r0,104r-39,0r0,-68r-34,0r0,-36xm86,-196r73,0r0,196r-40,0r0,-160r-33,0r0,-36","w":183},"\u05f2":{"d":"86,-196r73,0r0,104r-40,0r0,-68r-33,0r0,-36xm11,-196r73,0r0,104r-39,0r0,-68r-34,0r0,-36","w":182},"\u05f3":{"d":"97,-232r-44,91r-35,0r26,-91r53,0","w":94},"\u05f4":{"d":"164,-232r-42,92r-35,0r24,-92r53,0xm93,-232r-42,92r-35,0r24,-92r53,0","w":164},"\u1e84":{"d":"70,0r-70,-254r55,0r45,194r50,-194r53,0r50,194r45,-194r53,0r-70,254r-56,0r-50,-185r-49,185r-56,0xm100,-303v0,-15,13,-29,30,-29v15,0,29,15,29,30v1,15,-15,29,-30,29v-16,0,-30,-13,-29,-30xm192,-303v0,-16,13,-29,30,-29v15,0,28,14,28,29v0,16,-13,30,-29,30v-16,0,-30,-13,-29,-30","w":350},"\u1ffd":{"d":"121,-267r-45,54r-26,0r26,-54r45,0","w":145},"\u1ffe":{"d":"71,-193v-55,-2,-57,-54,-54,-115r54,0r0,52r-31,0v-1,28,9,38,31,43r0,20","w":203},"\u2000":{"w":180},"\u2001":{},"\u2002":{"w":180},"\u2003":{},"\u2004":{"w":120},"\u2005":{"w":90},"\u2006":{"w":59},"\u2007":{"w":100},"\u2008":{"w":100},"\u2009":{"w":1},"\u200a":{"w":0},"\u200b":{"w":200},"\u200c":{"w":166},"\u200d":{"w":200},"\u200e":{"w":120},"\u200f":{"w":120},"\u2010":{"d":"14,-107r0,-48r120,0r0,48r-120,0","w":148},"\u2011":{"d":"14,-107r0,-48r120,0r0,48r-120,0","w":148},"\u2012":{"d":"0,-107r0,-42r180,0r0,42r-180,0","w":180},"\u2013":{"d":"0,-107r0,-42r180,0r0,42r-180,0","w":180},"\u2014":{"d":"0,-107r0,-42r360,0r0,42r-360,0"},"\u2015":{"d":"0,-107r0,-42r360,0r0,42r-360,0"},"\u2016":{"d":"128,-264r30,0r0,270r-30,0r0,-270xm201,-264r31,0r0,270r-31,0r0,-270"},"\u2017":{"d":"208,93r0,25r-216,0r0,-25r216,0xm208,43r0,25r-216,0r0,-25r216,0","w":200},"\u2018":{"d":"57,-123v-74,-8,-15,-98,1,-131r35,0r-27,57v41,6,36,79,-9,74","w":113},"\u2019":{"d":"57,-259v73,9,16,98,-1,131r-35,0r27,-57v-41,-6,-37,-80,9,-74","w":113},"\u201a":{"d":"57,-70v73,9,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-40,38,-37","w":113},"\u201b":{"d":"57,-259v46,0,50,68,9,74r27,57r-35,0v-12,-27,-38,-62,-39,-93v-1,-22,17,-38,38,-38","w":100},"\u201c":{"d":"57,-123v-74,-8,-15,-98,1,-131r35,0r-27,57v41,6,36,79,-9,74xm153,-123v-73,-8,-17,-99,0,-131r36,0r-27,57v39,7,35,79,-9,74","w":209},"\u201d":{"d":"57,-259v73,9,16,98,-1,131r-35,0r27,-57v-41,-6,-37,-80,9,-74xm153,-259v71,8,16,98,-1,131r-35,0r27,-57v-41,-6,-37,-79,9,-74","w":209},"\u201e":{"d":"57,-70v73,9,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-40,38,-37xm153,-70v71,8,16,98,-1,131r-35,0r27,-57v-15,-3,-29,-18,-29,-37v0,-21,16,-39,38,-37","w":209},"\u201f":{"d":"152,-259v45,0,51,68,10,74r27,57r-36,0v-11,-27,-38,-62,-38,-93v0,-21,16,-38,37,-38xm57,-259v46,0,50,68,9,74r27,57r-35,0v-12,-27,-38,-62,-39,-93v-1,-22,17,-38,38,-38","w":180},"\u2020":{"d":"76,0r0,-136r-62,0r0,-43r62,0r0,-75r45,0r0,75r62,0r0,43r-62,0r0,136r-45,0","w":197},"\u2021":{"d":"74,0r0,-54r-60,0r0,-43r60,0r0,-60r-60,0r0,-43r60,0r0,-54r46,0r0,54r59,0r0,43r-59,0r0,60r59,0r0,43r-59,0r0,54r-46,0","w":193},"\u2022":{"d":"12,-130v0,-28,23,-52,52,-52v28,0,51,23,51,53v0,28,-22,51,-52,51v-28,0,-51,-24,-51,-52","w":127},"\u2023":{"d":"18,-169r90,57r-90,58r0,-115","w":126},"\u2025":{"d":"149,-53r0,53r-54,0r0,-53r54,0xm270,-53r0,53r-54,0r0,-53r54,0"},"\u2026":{"d":"22,-32v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,18,-17,37,-38,37v-20,0,-39,-19,-38,-37xm142,-32v0,-20,17,-38,38,-38v20,0,38,17,38,38v0,18,-17,37,-38,37v-20,0,-39,-19,-38,-37xm262,-32v0,-20,17,-38,38,-38v20,0,38,18,38,38v1,18,-17,37,-38,37v-20,0,-38,-18,-38,-37"},"\u2027":{"d":"196,-115r0,52r-54,0r0,-52r54,0"},"\u2028":{"w":100},"\u2029":{"w":100},"\u202a":{"w":100},"\u202b":{"w":100},"\u202c":{"w":100},"\u202d":{"w":100},"\u202e":{"w":100},"\u2030":{"d":"221,-75v0,-47,22,-80,68,-80v44,0,68,34,68,81v0,47,-24,79,-69,79v-45,0,-68,-32,-67,-80xm288,-125v-22,0,-29,24,-29,50v0,33,9,50,29,50v20,0,31,-17,31,-51v0,-32,-10,-49,-31,-49xm380,-75v0,-48,23,-80,69,-80v43,0,67,33,67,81v0,47,-24,79,-68,79v-45,0,-68,-32,-68,-80xm447,-125v-40,1,-40,101,1,100v20,0,30,-17,30,-51v0,-32,-10,-49,-31,-49xm99,0r134,-254r44,0r-134,254r-44,0xm19,-179v0,-48,23,-80,69,-80v44,-1,67,33,67,81v0,46,-24,79,-68,79v-45,0,-68,-32,-68,-80xm86,-229v-41,1,-40,101,1,100v20,0,30,-17,30,-51v0,-32,-10,-49,-31,-49","w":535},"\u2031":{"d":"4,-213v0,-30,27,-53,55,-53v27,0,54,24,53,53v0,29,-25,54,-54,54v-29,0,-54,-25,-54,-54xm83,-212v0,-14,-12,-25,-26,-25v-13,0,-24,12,-24,25v0,14,12,25,25,25v13,0,25,-11,25,-25xm179,-266r24,0r-152,274r-24,0xm116,-45v0,-30,26,-54,55,-54v27,0,53,25,53,54v0,29,-25,53,-54,53v-29,0,-54,-24,-54,-53xm195,-45v0,-14,-12,-25,-26,-25v-14,0,-25,12,-25,25v0,13,12,25,26,25v14,0,25,-11,25,-25xm249,-45v0,-29,25,-54,54,-54v27,0,53,24,53,54v0,30,-25,53,-53,53v-28,0,-54,-24,-54,-53xm328,-45v0,-14,-12,-25,-26,-25v-14,0,-25,12,-25,25v0,13,12,25,26,25v14,0,25,-11,25,-25xm369,-45v0,-30,26,-53,55,-53v27,0,53,24,53,53v0,30,-25,54,-54,54v-29,0,-54,-25,-54,-54xm448,-44v0,-14,-11,-25,-25,-25v-14,0,-25,11,-25,25v0,14,12,25,25,25v13,0,25,-11,25,-25","w":480},"\u2032":{"d":"82,-247r-26,97r-26,0r20,-97r32,0"},"\u2033":{"d":"69,-247r-27,97r-25,0r20,-97r32,0xm117,-247r-27,97r-25,0r20,-97r32,0"},"\u2035":{"d":"188,-247r32,0r20,97r-25,0"},"\u2039":{"d":"59,-55r-52,-72r52,-72r53,0r-51,72r51,72r-53,0","w":119},"\u203a":{"d":"7,-55r52,-72r-52,-72r53,0r52,72r-52,72r-53,0","w":119},"\u203b":{"d":"166,-125r-129,-127r10,-12r131,128r133,-128r11,12r-133,128r130,125r-12,12r-129,-126r-134,126r-12,-11xm148,-36v-1,-16,15,-30,31,-30v16,-1,29,14,29,31v0,16,-14,30,-30,30v-16,1,-30,-15,-30,-31xm236,-124v-1,-16,15,-30,31,-30v16,-1,30,14,30,30v1,17,-14,30,-31,30v-16,0,-30,-14,-30,-30xm148,-215v-1,-16,15,-30,31,-30v16,-1,29,14,29,30v0,16,-14,30,-30,30v-16,1,-30,-14,-30,-30xm56,-124v-1,-16,15,-30,31,-30v16,-1,30,14,30,30v1,17,-14,30,-31,30v-16,0,-30,-14,-30,-30"},"\u203c":{"d":"94,-261v3,70,-7,127,-15,186r-24,0v-8,-59,-18,-116,-15,-186r54,0xm94,-53r0,53r-54,0r0,-53r54,0xm204,-261v3,70,-7,127,-15,186r-24,0v-8,-59,-18,-116,-15,-186r54,0xm204,-53r0,53r-54,0r0,-53r54,0","w":229},"\u203d":{"d":"23,-173v-1,-54,23,-82,65,-93r0,-11r54,0r0,14v35,10,58,40,58,78v0,63,-67,54,-67,113r-45,0v0,-23,3,-31,10,-43v-4,-33,-12,-63,-10,-102v-11,9,-16,24,-16,44r-49,0xm142,-209v1,20,-2,36,-4,53v15,-12,16,-37,4,-53xm139,-53r0,53r-54,0r0,-53r54,0","w":229},"\u203e":{"d":"14,-275r0,-38r137,0r0,38r-137,0","w":165},"\u203f":{"d":"22,-5v47,52,167,53,214,0r18,20v-63,64,-187,64,-250,0","w":257},"\u2040":{"d":"233,-183v-49,-51,-165,-51,-215,0r-17,-19v63,-64,186,-64,249,0","w":257},"\u2041":{"d":"-4,51r80,-162r26,0r-53,107r29,55r-26,0r-16,-28r-14,28r-26,0","w":98},"\u2042":{"d":"35,-48r-35,-12r13,-22r28,24r-6,-37r25,0r-6,37r28,-24r13,22r-35,12r35,13r-13,22r-28,-24r6,37r-25,0r6,-37r-28,24r-13,-22xm173,-48r-36,-12r13,-22r29,24r-7,-37r26,0r-7,37r29,-24r13,22r-35,12r35,13r-13,22r-29,-24r7,37r-26,0r7,-37r-29,24r-13,-22xm104,-166r-35,-13r12,-22r29,24r-7,-37r26,0r-7,37r29,-24r13,22r-36,13r36,12r-13,23r-29,-25r7,37r-26,0r7,-37r-29,25r-12,-23","w":232},"\u2043":{"d":"100,-108r0,49r-90,0r0,-49r90,0","w":109},"\u2044":{"d":"-87,0r144,-254r43,0r-144,254r-43,0","w":13},"\u2045":{"d":"55,-106r37,0r0,26r-37,0r0,130r37,0r0,26r-71,0r0,-338r71,0r0,25r-37,0r0,131","w":100},"\u2046":{"d":"58,-106r0,-131r-37,0r0,-25r71,0r0,338r-71,0r0,-26r37,0r0,-130r-37,0r0,-26r37,0","w":100},"\u206a":{"w":100},"\u206b":{"w":100},"\u206c":{"w":100},"\u206d":{"w":100},"\u206e":{"w":100},"\u206f":{"w":100},"\u2070":{"d":"5,-178v0,-52,14,-80,58,-80v41,0,55,29,55,80v0,52,-14,81,-56,81v-42,0,-58,-30,-57,-81xm62,-125v32,4,22,-74,17,-95v-4,-8,-9,-12,-17,-12v-23,0,-22,22,-22,54v0,34,-1,50,22,53","w":126},"\u2074":{"d":"120,-163r0,27r-17,0r0,34r-34,0r0,-34r-65,0r0,-26r60,-93r39,0r0,92r17,0xm69,-163r0,-59r-38,59r38,0","w":126},"\u2075":{"d":"84,-153v4,-27,-35,-38,-44,-16r-31,0r15,-86r88,0r0,29r-66,0r-5,27v37,-20,77,4,77,46v0,56,-77,74,-105,35v-5,-7,-8,-16,-8,-26r34,0v0,12,7,19,21,19v17,0,25,-11,24,-28","w":126},"\u2076":{"d":"6,-175v0,-49,17,-82,61,-83v29,0,46,13,50,39r-32,0v-17,-27,-50,-7,-44,26v31,-26,78,-3,78,39v0,34,-22,57,-55,57v-42,-2,-59,-29,-58,-78xm86,-152v1,-17,-8,-25,-23,-26v-14,-1,-23,12,-23,27v0,14,9,26,23,26v14,0,23,-12,23,-27","w":126},"\u2077":{"d":"121,-230v-33,39,-52,66,-58,128r-34,0v8,-58,25,-91,55,-124r-79,0r0,-29r116,0r0,25","w":126},"\u2078":{"d":"62,-258v45,-6,72,51,34,73v47,20,19,96,-34,88v-53,7,-81,-68,-33,-88v-39,-22,-13,-78,33,-73xm85,-214v0,-12,-10,-18,-23,-18v-12,0,-22,6,-22,18v0,12,9,19,22,19v14,0,23,-6,23,-19xm86,-149v0,-14,-10,-23,-24,-23v-13,0,-25,9,-24,23v0,15,10,24,24,24v14,0,24,-9,24,-24","w":126},"\u2079":{"d":"61,-258v38,0,57,31,57,76v0,80,-61,107,-102,66v-6,-7,-8,-15,-8,-24r33,0v0,10,6,15,18,15v17,0,25,-13,25,-38v-30,29,-81,2,-79,-41v2,-32,24,-55,56,-54xm84,-204v0,-16,-8,-28,-24,-28v-14,0,-23,11,-22,27v0,16,7,27,22,27v15,0,24,-11,24,-26","w":126},"\u207a":{"d":"63,-209r17,0r0,46r45,0r0,15r-45,0r0,46r-17,0r0,-46r-45,0r0,-15r45,0r0,-46","w":142},"\u207b":{"d":"18,-163r107,0r0,15r-107,0r0,-15","w":142},"\u207c":{"d":"18,-179r107,0r0,15r-107,0r0,-15xm18,-146r107,0r0,16r-107,0r0,-16","w":142},"\u207d":{"d":"75,-258v-32,44,-34,136,0,180r-22,0v-42,-63,-41,-117,0,-180r22,0","w":82},"\u207e":{"d":"22,-78v33,-44,33,-135,0,-180r21,0v42,62,43,118,0,180r-21,0","w":82},"\u207f":{"d":"74,-186v-37,-1,-22,55,-25,90r-35,0r0,-115r35,0r0,14v23,-30,79,-21,79,29r0,72r-35,0v-5,-31,14,-89,-19,-90","w":140},"\u2080":{"d":"5,-76v0,-52,14,-80,58,-80v40,0,55,29,55,80v0,52,-14,81,-56,81v-42,0,-58,-30,-57,-81xm62,-23v33,4,22,-74,17,-95v-4,-8,-9,-12,-17,-12v-23,0,-22,22,-22,54v0,34,-1,50,22,53","w":126},"\u2081":{"d":"53,-104r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104","w":126},"\u2082":{"d":"118,-108v1,44,-50,53,-68,79r67,0r0,29r-111,0v-4,-62,73,-59,78,-107v2,-14,-8,-23,-22,-23v-16,0,-22,13,-21,32r-33,0v-2,-38,17,-59,56,-58v35,0,53,15,54,48","w":126},"\u2083":{"d":"62,-23v13,1,22,-10,22,-22v0,-17,-15,-26,-36,-22r0,-23v36,8,41,-40,12,-40v-16,0,-20,8,-20,27r-32,0v1,-36,18,-50,53,-53v47,-4,71,50,34,74v45,22,20,87,-34,87v-35,0,-55,-18,-56,-52r34,0v1,16,8,24,23,24","w":126},"\u2084":{"d":"120,-60r0,27r-17,0r0,33r-34,0r0,-33r-65,0r0,-27r60,-93r39,0r0,93r17,0xm69,-60r0,-60r-38,60r38,0","w":126},"\u2085":{"d":"84,-50v4,-26,-34,-38,-44,-17r-31,0r15,-86r88,0r0,29r-66,0r-5,28v36,-22,77,4,77,45v0,56,-77,74,-105,36v-5,-7,-8,-17,-8,-27r34,0v0,12,7,19,21,19v16,0,25,-10,24,-27","w":126},"\u2086":{"d":"6,-73v0,-49,17,-82,61,-83v29,0,45,13,50,40r-32,0v-16,-28,-49,-8,-44,25v31,-26,78,-3,78,39v0,34,-22,57,-55,57v-42,-1,-59,-30,-58,-78xm86,-50v1,-16,-8,-26,-23,-26v-13,0,-23,12,-23,27v0,14,9,26,23,26v14,0,23,-12,23,-27","w":126},"\u2087":{"d":"121,-128v-33,39,-52,67,-58,128r-34,0v8,-58,25,-90,55,-124r-79,0r0,-29r116,0r0,25","w":126},"\u2088":{"d":"62,-156v45,-6,72,51,34,73v47,21,19,96,-34,88v-53,6,-80,-67,-33,-88v-39,-22,-13,-78,33,-73xm85,-111v0,-13,-9,-19,-23,-19v-12,0,-23,7,-22,19v0,11,9,18,22,18v13,0,23,-6,23,-18xm86,-46v0,-15,-10,-24,-24,-24v-13,0,-25,9,-24,24v0,15,10,23,24,23v14,0,24,-8,24,-23","w":126},"\u2089":{"d":"61,-156v38,0,57,31,57,76v0,80,-61,107,-102,66v-6,-7,-8,-15,-8,-24r33,0v0,10,6,15,18,15v17,0,25,-12,25,-37v-31,28,-81,1,-79,-42v2,-32,24,-55,56,-54xm84,-102v0,-16,-8,-28,-24,-28v-14,0,-23,12,-22,28v0,16,7,26,22,26v16,0,24,-10,24,-26","w":126},"\u208a":{"d":"63,-107r17,0r0,46r45,0r0,15r-45,0r0,46r-17,0r0,-46r-45,0r0,-15r45,0r0,-46","w":142},"\u208b":{"d":"125,-61r0,15r-107,0r0,-15r107,0","w":142},"\u208c":{"d":"18,-77r107,0r0,16r-107,0r0,-16xm18,-44r107,0r0,16r-107,0r0,-16","w":142},"\u208d":{"d":"75,-156v-32,44,-34,136,0,180r-22,0v-42,-63,-41,-117,0,-180r22,0","w":82},"\u208e":{"d":"22,24v33,-44,33,-135,0,-180r21,0v42,62,43,118,0,180r-21,0","w":82},"\u20a0":{"d":"95,-242v-61,-4,-68,103,-29,129v7,5,16,7,26,9r0,-75r127,0r0,24r-100,0r0,51r97,0r0,25r-97,0r0,55r105,0r0,24r-132,0r0,-79v-51,-4,-77,-40,-78,-93v-1,-53,30,-95,84,-95v42,-1,65,23,71,62r-28,0v-5,-25,-17,-35,-46,-37","w":240},"\u20a1":{"d":"41,-37v-61,-94,-8,-265,128,-226r18,-30r20,11r-16,27v3,2,8,3,12,6r24,-44r21,11r-27,48v15,17,23,31,25,60r-52,0r-2,-9r-80,142v40,13,82,-7,82,-49r53,0v0,77,-82,116,-159,90r-10,18r-21,-11r11,-18v-3,-2,-8,-5,-11,-8r-20,37r-20,-11xm178,-206v-3,-3,-6,-6,-10,-8r-84,148v2,4,6,8,9,12xm145,-220v-65,-8,-83,61,-72,126","w":259},"\u20a2":{"d":"138,-221v-82,-7,-85,139,-38,173r0,-101r51,0r0,39v9,-24,31,-45,60,-41r0,51v-43,-10,-66,14,-60,62v6,-1,13,-6,24,-12r37,32v-29,17,-36,26,-76,26v-77,1,-120,-57,-120,-137v0,-103,88,-168,176,-124r0,65v-16,-23,-25,-30,-54,-33","w":259},"\u20a3":{"d":"149,-120v10,-23,29,-43,60,-41r0,51v-36,-5,-60,7,-60,43r0,67r-50,0r0,-113r-40,0r0,113r-54,0r0,-262r184,0r0,45r-130,0r0,59r90,0r0,38","w":194},"\u20a4":{"d":"199,-15v-41,58,-115,-18,-170,22r-23,-30v17,-14,38,-32,45,-53r-46,0r0,-28r45,0v-4,-13,-30,-5,-45,-7r0,-29r25,0v-41,-54,9,-126,75,-123v53,2,88,32,84,90r-41,0v0,-34,-12,-53,-44,-53v-25,-1,-47,14,-46,40v0,20,11,30,19,46r60,0r0,29r-48,0v1,2,1,5,2,7r46,0r0,28r-47,0v-4,11,-12,23,-23,36v40,-16,78,26,112,-5","w":200},"\u20a5":{"d":"72,-170v19,-37,90,-36,106,1v6,-8,13,-14,20,-19r19,-35r20,11r-8,15v39,-5,69,21,68,59r0,138r-51,0r0,-129v1,-23,-21,-31,-41,-23r-21,37r0,115r-50,0r0,-24r-32,59r-21,-11r53,-96v-2,-34,10,-85,-27,-83v-59,3,-27,100,-35,155r-50,0r0,-194r50,0r0,24","w":320},"\u20a6":{"d":"127,-97r-49,0r0,97r-54,0r0,-97r-41,0r0,-23r41,0r0,-23r-41,0r0,-23r41,0r0,-96r56,0r56,96r48,0r0,-96r54,0r0,96r46,0r0,23r-46,0r0,23r46,0r0,23r-46,0r0,97r-54,0xm114,-120r-13,-23r-23,0r0,23r36,0xm87,-166r-9,-15r0,15r9,0xm149,-143r14,23r21,0r0,-23r-35,0xm176,-97r8,13r0,-13r-8,0","w":259},"\u20a7":{"d":"228,-173v-2,47,-33,80,-79,79r-68,0r0,94r-54,0r0,-173r-25,0r0,-23r25,0r0,-66r116,0v54,2,76,23,84,66r22,0r0,23r-21,0xm174,-173r-93,0r0,34v41,-1,93,9,93,-34xm171,-196v-8,-28,-54,-20,-90,-21r0,21r90,0","w":240},"\u20a8":{"d":"186,0v-21,-30,13,-104,-42,-104r-61,0r0,104r-54,0r0,-163r-27,3r-2,-24r29,-2r0,-76r140,0v47,0,63,22,70,58r26,-2r1,23r-26,3v-4,26,-18,43,-44,53v38,15,36,40,36,96v0,18,14,14,12,31r-58,0xm186,-184v0,-48,-61,-29,-103,-33r0,68v43,-3,103,16,103,-35xm265,-73v-38,-28,-8,-86,42,-81v36,4,57,13,57,50r-30,0v0,-18,-10,-24,-28,-24v-26,-2,-37,18,-23,32v31,15,88,10,88,56v0,56,-106,65,-123,21v-3,-7,-6,-15,-6,-27r30,0v-4,35,65,37,69,8v-2,-28,-59,-23,-76,-35","w":371},"\u20a9":{"d":"191,-110r-41,0r-23,110r-48,0r-31,-110r-50,0r0,-22r43,0r-7,-25r-36,0r0,-22r30,0r-23,-83r57,0r17,83r47,0r17,-83r54,0r17,83r48,0r16,-83r57,0r-22,83r29,0r0,22r-36,0r-6,25r42,0r0,22r-49,0r-30,110r-49,0xm186,-132r-5,-25r-21,0r-5,25r31,0xm176,-179r-6,-26r-5,26r11,0xm84,-157r5,25r27,0r5,-25r-37,0xm94,-110r9,44r9,-44r-18,0xm219,-157r5,25r28,0r5,-25r-38,0xm229,-110r10,45r9,-45r-19,0","w":339},"\u20aa":{"d":"187,8v-49,1,-88,-27,-88,-72r0,-143r41,0v8,69,-29,187,48,186v29,-1,46,-18,46,-48r0,-172r41,0r0,177v-2,49,-36,71,-88,72xm121,-241v-30,-1,-48,20,-48,49r0,200r-41,0r0,-206v1,-50,37,-71,88,-73v49,-2,88,27,88,73r0,143r-41,0r0,-147v-5,-26,-18,-39,-46,-39","w":301},"\u20ab":{"d":"10,-94v-1,-52,31,-105,82,-104v23,0,42,10,54,29r0,-46r-48,0r0,-24r48,0r0,-23r50,0r0,23r22,0r0,24r-22,0r0,215r-50,0r0,-20v-12,19,-31,28,-54,28v-53,-2,-81,-47,-82,-102xm146,-94v0,-32,-14,-61,-43,-61v-28,0,-42,31,-42,61v0,29,14,60,42,60v29,0,43,-29,43,-60xm187,22r0,23r-145,0r0,-23r145,0","w":219},"\u20ac":{"d":"98,-77v17,43,74,47,126,32r0,43v-86,18,-160,-2,-180,-75r-34,0r0,-24r28,-7v0,-14,-2,-23,0,-32r-28,0r0,-23r33,-8v14,-72,95,-102,178,-80r0,41v-52,-15,-113,-7,-125,38r83,0r0,32r-90,0r1,30r89,0r0,33r-81,0","w":238},"\u20d0":{"d":"32,-227r49,-39r0,14r78,0r0,25r-127,0","w":196},"\u20d1":{"d":"159,-227r-127,0r0,-25r79,0r0,-14","w":196},"\u20d2":{"d":"113,-230r0,274r-30,0r0,-274r30,0","w":196},"\u20d3":{"d":"113,-206r0,226r-30,0r0,-226r30,0","w":196},"\u20d4":{"d":"232,-159v-27,-73,-147,-94,-198,-29r12,7r-45,22r-1,-49r13,7v37,-52,134,-70,193,-25v21,15,37,34,48,57","w":254},"\u20d5":{"d":"220,-188v-46,-64,-175,-44,-198,29r-22,-10v23,-46,65,-82,131,-83v44,-1,86,21,110,51r13,-7r-1,49r-45,-22","w":254},"\u20d6":{"d":"147,-227r-79,0r0,14r-42,-27r42,-26r0,14r79,0r0,25","w":196},"\u20d7":{"d":"26,-227r0,-25r79,0r0,-14r42,26r-42,27r0,-14r-79,0","w":196},"\u20d8":{"d":"67,-93v0,-18,14,-31,32,-31v17,0,31,14,31,31v0,18,-15,32,-32,32v-17,0,-31,-15,-31,-32xm114,-93v0,-10,-7,-16,-16,-16v-20,0,-20,32,0,32v8,0,16,-7,16,-16","w":196},"\u20d9":{"d":"67,-93v-1,-23,24,-38,46,-28r15,-15r14,13r-16,15v12,22,-5,47,-28,47v-17,0,-31,-15,-31,-32xm98,-77v9,0,18,-7,16,-18r-9,9r-13,-13v2,-3,13,-8,6,-10v-20,0,-20,32,0,32","w":196},"\u20da":{"d":"98,-124v23,0,40,24,28,46r16,15r-14,13r-15,-15v-21,12,-46,-5,-46,-28v0,-17,14,-31,31,-31xm98,-109v-20,0,-21,32,0,32r3,0r-9,-9r13,-13v3,1,8,10,9,6v1,-9,-8,-16,-16,-16","w":196},"\u20db":{"d":"173,-260r0,42r-42,0r0,-42r42,0xm119,-260r0,42r-42,0r0,-42r42,0xm66,-260r0,42r-42,0r0,-42r42,0","w":200},"\u20dc":{"d":"173,-260r0,42r-42,0r0,-42r42,0xm119,-260r0,42r-42,0r0,-42r42,0xm66,-260r0,42r-42,0r0,-42r42,0xm226,-260r0,42r-42,0r0,-42r42,0","w":200},"\u20dd":{"d":"12,-94v-2,-75,66,-146,146,-143v81,3,142,61,142,144v0,84,-60,144,-144,144v-84,0,-142,-61,-144,-145xm276,-94v1,-62,-56,-121,-122,-119v-68,3,-118,51,-118,120v0,70,51,120,120,120v69,0,119,-51,120,-121","w":312},"\u20de":{"d":"300,51r-288,0r0,-288r288,0r0,288xm36,27r240,0r0,-240r-240,0r0,240","w":312},"\u20df":{"d":"407,-93r-203,204r-204,-204r204,-204xm204,77r169,-170r-169,-170r-170,170","w":407},"\u20e0":{"d":"258,9v-83,88,-246,25,-246,-102v0,-61,34,-102,72,-125v95,-56,216,16,216,126v0,45,-17,74,-42,101xm249,-17v63,-75,6,-196,-93,-196v-28,0,-53,9,-76,27xm63,-169v-63,75,-6,196,93,196v29,0,54,-9,76,-27","w":312},"\u20e1":{"d":"129,-227r-61,0r0,14r-42,-27r42,-26r0,14r61,0r0,-14r42,26r-42,27r0,-14","w":196},"\u20e2":{"d":"129,-227r-61,0r0,14r-42,-27r42,-26r0,14r61,0r0,-14r42,26r-42,27r0,-14","w":196},"\u2100":{"d":"243,-240r-142,240r-24,0r144,-240r22,0xm173,-66v0,-66,80,-89,113,-46v6,8,9,16,10,27r-34,0v-3,-15,-9,-22,-25,-23v-19,0,-29,15,-29,42v0,40,47,54,54,17r34,0v-3,28,-27,48,-59,48v-40,0,-64,-23,-64,-65xm62,-200v-15,1,-20,4,-22,17r-28,0v1,-29,17,-43,50,-43v62,0,46,55,48,107v-1,8,6,11,7,19v-15,-1,-39,6,-37,-12v-22,29,-72,21,-72,-20v0,-36,39,-41,67,-47v11,-8,4,-22,-13,-21xm56,-121v19,0,25,-16,24,-37v-14,5,-42,4,-41,22v0,10,6,15,17,15","w":301},"\u2101":{"d":"243,-240r-142,240r-24,0r144,-240r22,0xm62,-200v-15,1,-20,3,-21,17r-29,0v1,-29,17,-43,50,-43v62,0,46,55,48,107v-1,8,6,11,7,19v-15,-1,-39,6,-37,-12v-22,29,-72,21,-72,-20v0,-36,39,-41,67,-47v11,-8,4,-23,-13,-21xm56,-121v18,0,26,-16,24,-37v-14,5,-42,5,-41,22v0,10,6,15,17,15xm209,-69v-40,-24,-8,-82,39,-77v37,4,55,14,56,52r-37,0v1,-14,-4,-20,-19,-20v-27,0,-28,19,-2,23v31,5,61,13,63,45v3,54,-101,62,-117,20v-3,-6,-4,-15,-5,-29r36,0v-5,31,43,30,49,11v-4,-17,-54,-15,-63,-25","w":315},"\u2102":{"d":"15,-127v0,-78,47,-136,122,-136v58,0,98,30,106,83r-34,0v-10,-43,-44,-60,-94,-52r0,207v56,10,92,-18,96,-72r35,0v-9,66,-45,102,-112,103v-76,0,-119,-55,-119,-133xm81,-214v-43,31,-40,142,0,171r0,-171","w":259},"\u2103":{"d":"79,-129v0,-81,44,-138,120,-138v61,-1,105,33,110,93r-52,0v-7,-31,-26,-47,-56,-47v-50,1,-68,41,-68,93v-1,50,19,91,66,91v33,0,56,-19,58,-53r53,0v-3,61,-46,98,-112,98v-76,1,-119,-58,-119,-137xm32,-264v-1,-20,17,-37,38,-37v19,0,37,18,37,37v0,20,-17,38,-38,38v-20,0,-36,-18,-37,-38xm92,-264v1,-11,-11,-22,-23,-22v-11,0,-22,9,-22,23v0,12,9,22,22,22v13,0,23,-10,23,-23"},"\u2104":{"d":"63,-40v-76,-12,-77,-169,0,-181r0,-41r34,0r0,40v33,6,50,26,53,61r-27,0v-2,-18,-11,-30,-26,-35r0,130v15,-5,25,-18,28,-39r27,0v-3,38,-21,59,-55,65r0,10r95,0r0,30r-129,0r0,-40xm63,-68r0,-126v-38,11,-39,114,0,126","w":200},"\u2105":{"d":"233,-240r-143,240r-23,0r144,-240r22,0xm6,-157v0,-66,78,-89,113,-47v6,8,9,17,10,28r-34,0v-3,-15,-9,-22,-25,-23v-19,0,-29,14,-29,41v0,40,48,56,54,18r34,0v-3,28,-27,48,-59,48v-40,0,-64,-23,-64,-65xm165,-70v0,-44,24,-73,68,-73v41,0,66,28,66,72v0,44,-25,72,-67,72v-41,0,-67,-27,-67,-71xm264,-71v0,-24,-10,-43,-32,-43v-21,0,-32,20,-32,43v0,23,11,44,32,44v21,-1,32,-20,32,-44","w":305},"\u2106":{"d":"214,-240r-143,240r-23,0r144,-240r22,0xm29,-139v0,42,48,42,66,9r6,3v-18,23,-37,35,-57,35v-23,0,-39,-20,-39,-45v0,-43,39,-92,81,-95v27,-2,39,38,12,43v-17,-2,-10,-20,-1,-27v-1,-5,-6,-9,-12,-9v-34,0,-56,47,-56,86xm187,-136v13,-1,14,12,11,24r-25,90v0,6,3,8,9,8v32,-11,68,-72,74,-119r23,0r-33,118v5,10,12,-1,23,-12r3,4v-15,18,-28,27,-40,27v-25,-10,3,-46,4,-65v-22,33,-40,60,-70,65v-14,2,-17,-17,-14,-31r25,-88v-5,-12,-15,-1,-23,10v-2,4,-4,4,-7,0v16,-17,19,-29,40,-31","w":288},"\u2107":{"d":"107,-38v29,-1,38,-15,38,-49r54,0v4,62,-35,93,-92,95v-49,1,-93,-37,-92,-85v0,-31,16,-53,41,-63v-23,-13,-34,-32,-34,-56v-1,-43,41,-72,86,-71v56,2,93,25,89,88r-55,0v2,-26,-9,-42,-32,-42v-18,1,-34,11,-34,31v0,24,21,34,52,32r0,45v-33,-2,-59,5,-58,38v0,21,13,38,37,37","w":213},"\u2108":{"d":"53,-99v-3,75,92,97,132,46v14,-18,18,-34,21,-61r-106,0r0,-34r106,0v-7,-51,-32,-85,-79,-85v-43,0,-62,17,-69,55r-39,0v9,-57,44,-89,104,-89v79,-1,122,60,122,139v0,76,-43,136,-121,136v-65,0,-101,-36,-110,-107r39,0","w":259},"\u2109":{"d":"39,-259v0,-19,18,-37,38,-37v20,-1,37,18,37,37v0,20,-17,38,-38,38v-20,0,-36,-18,-37,-38xm99,-259v1,-11,-11,-22,-23,-22v-11,0,-22,9,-22,22v0,12,9,23,22,23v13,1,23,-10,23,-23xm189,-113r0,113r-54,0r0,-262r184,0r0,45r-130,0r0,59r115,0r0,45r-115,0"},"\u210a":{"d":"19,-33v3,-74,77,-164,152,-108r-38,133v8,-5,16,-10,22,-16r6,10v-8,7,-19,14,-32,20v-8,45,-31,64,-78,64v-28,0,-48,-2,-51,-25v3,-38,69,-23,102,-40r15,-48v-19,27,-38,45,-67,47v-19,2,-31,-18,-31,-37xm47,-39v0,31,31,24,49,7v27,-26,35,-62,47,-106v-50,-44,-97,62,-96,99xm30,46v17,30,71,5,68,-28v-16,10,-63,6,-68,28","w":183},"\u210b":{"d":"84,-8v-23,18,-87,20,-84,-18v3,-38,45,-52,92,-67r31,-81v-22,6,-20,-19,-35,-21v-13,-1,-16,21,-28,13v15,-22,28,-33,40,-33v11,0,18,24,26,21v11,0,38,-26,49,-35r4,3r-47,119r69,-23v18,-50,38,-106,97,-107v46,0,38,59,8,79v-19,12,-40,22,-70,32r-42,107v10,18,28,2,49,-13r7,8v-20,16,-36,28,-64,29v-27,1,-31,-19,-22,-41r29,-76r-67,23v-12,27,-23,66,-42,81xm21,-30v8,27,37,19,49,-11r14,-34v-34,13,-57,18,-63,45xm317,-200v0,-26,-36,-23,-48,-3v-9,15,-18,40,-26,59v39,-10,74,-24,74,-56","w":324},"\u210c":{"d":"79,0v-16,-2,-32,-27,-55,-13v6,-18,23,-36,40,-36v8,-2,20,16,27,17v22,-23,8,-89,11,-131v2,-33,-12,-54,-39,-54v-19,0,-35,14,-35,34v0,44,86,42,49,90v-4,4,-7,9,-9,13v-5,-6,-5,-10,-5,-20v-10,-26,-51,-25,-51,-67v0,-42,26,-70,69,-71v56,-1,62,49,58,109r67,0r0,-54v-5,-36,38,-49,66,-54v12,-2,30,21,31,30v-4,9,-28,15,-38,14v-8,-3,-5,-31,-12,-27v-7,0,-10,11,-10,31r0,155v-1,40,14,48,17,12v1,-11,1,-11,12,-11v14,0,22,0,26,7v-23,27,-84,81,-91,14v-3,-29,-1,-69,-1,-101r-67,0v6,64,-16,100,-60,113","w":314},"\u210d":{"d":"27,-230r-12,0r0,230r-33,0r0,-263r79,1r0,108r137,0r0,-108r33,0r0,262r-33,0r0,-125r-137,0r0,125r-34,0r0,-230","w":258},"\u210e":{"d":"117,4v-17,0,-15,-19,-10,-36r27,-99v0,-8,-3,-12,-9,-12v-32,4,-88,91,-93,143r-27,0r64,-230v1,-8,-9,-11,-19,-10r0,-6v19,-3,35,-8,55,-9r-50,175v35,-55,64,-83,88,-83v21,0,21,26,15,48r-27,96v0,4,1,5,4,5v10,3,23,-32,31,-20v-9,15,-32,38,-49,38","w":180},"\u210f":{"d":"129,-109v4,-12,10,-31,-4,-34v-34,4,-86,92,-94,143r-26,0r45,-159r-39,21r-8,-18r54,-28v3,-13,11,-34,12,-46v1,-9,-9,-11,-19,-10r0,-6v19,-3,35,-8,55,-9r-16,55r33,-17r10,15r-50,26r-27,96v35,-55,64,-83,88,-83v21,0,21,26,15,48r-27,96v0,4,1,5,4,5v10,3,23,-32,31,-20v-10,15,-32,37,-50,38v-16,-3,-14,-18,-9,-36","w":180},"\u2110":{"d":"94,-8v-23,19,-86,20,-84,-17v2,-36,43,-48,88,-61r44,-116v0,-4,-3,-5,-8,-5v-25,3,-47,31,-62,53r-8,-5v29,-41,56,-71,104,-78v23,2,16,22,9,41r-59,150v-7,18,-15,30,-24,38xm32,-29v8,33,46,7,48,-12r13,-34v-34,13,-55,19,-61,46","w":193},"\u2111":{"d":"32,-179v-1,28,53,16,52,48v0,9,-6,20,-17,32v1,-37,-53,-39,-49,-80v6,-80,118,-67,185,-42v-16,24,-43,27,-43,56v0,40,50,50,50,95v0,46,-52,67,-90,74v-30,-2,-56,-39,-90,-19r-4,-3v21,-24,26,-42,58,-27v19,8,45,25,66,27v28,-6,32,-50,10,-74v-14,-14,-35,-39,-35,-62v1,-20,13,-32,29,-43v-27,-11,-127,-16,-122,18","w":217},"\u2112":{"d":"6,-32v-1,-31,42,-55,73,-39r31,-74r-40,-1r3,-13r42,0v19,-49,49,-82,110,-82v25,0,37,9,37,26v0,31,-38,54,-113,67r-41,102v36,33,80,33,125,3r7,11v-48,35,-98,42,-144,11v-21,25,-90,34,-90,-11xm156,-163v34,-5,80,-21,81,-43v-22,-35,-78,10,-81,43xm68,-42v-5,-23,-49,-18,-47,7v6,29,41,14,47,-7","w":280},"\u2113":{"d":"124,-241v15,-1,24,13,23,29v-2,48,-29,83,-63,117v-7,37,-11,63,-11,74v0,6,2,8,6,8v9,1,18,-16,20,-24r11,5v-9,26,-22,38,-38,38v-33,0,-25,-34,-22,-75v-6,7,-13,12,-19,17v-14,-17,16,-27,22,-39v8,-44,17,-80,28,-107v11,-29,26,-43,43,-43xm87,-115v23,-22,46,-59,46,-97v0,-21,-18,-15,-25,3v-6,17,-13,48,-21,94","w":157},"\u2114":{"d":"277,-95v1,51,-31,105,-82,103v-24,0,-41,-9,-53,-28r0,20r-51,0r0,-214r-25,0r0,214r-54,0r0,-214r-18,0r0,-23r18,0r0,-25r54,0r0,25r25,0r0,-25r51,0r0,25r127,0r0,23r-127,0r0,45v12,-19,29,-29,53,-29v53,1,82,46,82,103xm184,-34v58,-1,57,-121,-1,-121v-28,0,-41,30,-41,61v0,32,13,60,42,60","w":282},"\u2115":{"d":"76,-183v-6,-7,-9,-17,-16,-23r0,206r-32,0r0,-257r36,0r136,208r0,-208r33,0r0,257r-38,0r-85,-131r0,131r-34,0r0,-183","w":259},"\u2116":{"d":"29,0r0,-254r62,0r101,184r0,-184r50,0r0,254r-62,0r-101,-183r0,183r-50,0xm267,-197v0,-34,20,-57,55,-57v32,0,53,23,53,57v0,35,-20,58,-54,58v-34,0,-55,-23,-54,-58xm321,-219v-11,0,-17,7,-17,22v0,15,5,23,17,23v12,0,18,-8,18,-23v0,-15,-6,-22,-18,-22xm267,-93r0,-33r108,0r0,33r-108,0","w":380},"\u2117":{"d":"207,-163v0,47,-47,49,-96,46r0,68r-20,0r0,-161v54,0,116,-8,116,47xm185,-163v0,-35,-40,-29,-74,-29r0,57v0,0,74,6,74,-28xm0,-129v0,-81,56,-138,139,-138v78,0,133,58,136,137v2,74,-63,138,-137,138v-76,0,-138,-57,-138,-137xm251,-129v0,-64,-53,-116,-115,-116v-59,-1,-112,54,-112,115v0,62,53,116,114,116v61,0,113,-54,113,-115","w":275},"\u2118":{"d":"73,68v-55,-2,-58,-65,-31,-109v-34,-64,-19,-107,39,-152r5,7v-27,25,-43,66,-26,110v40,-57,83,-86,127,-86v37,1,56,28,55,68v0,52,-30,96,-79,95v-32,0,-58,-21,-58,-51v0,-28,38,-42,41,-10v1,13,-17,13,-19,23v2,13,14,20,28,20v36,-1,52,-37,52,-77v1,-58,-53,-55,-89,-24v-18,15,-36,33,-51,57v15,26,44,56,47,90v1,22,-17,40,-41,39xm69,53v38,-15,-11,-63,-18,-82v-17,31,-16,78,18,82","w":230},"\u2119":{"d":"282,-188v0,80,-81,82,-165,78r0,110r-35,0r0,-228r-20,0r0,228r-34,0r0,-257r176,0v46,0,78,24,78,69xm247,-185v0,-59,-75,-40,-130,-43r0,89v57,-2,130,14,130,-46","w":300},"\u211a":{"d":"137,-263v117,0,161,166,84,237r34,27r-17,21r-40,-31v-89,46,-184,-19,-184,-119v0,-76,49,-135,123,-135xm196,-46v60,-59,28,-214,-82,-186r0,207v22,4,40,3,59,-5r-29,-23r18,-20xm79,-213v-42,35,-41,133,0,169r0,-169","w":273},"\u211b":{"d":"227,-26v-18,29,-75,44,-85,0v-7,-27,-8,-65,-22,-85v-16,49,-37,110,-92,112v-21,0,-32,-12,-32,-32v0,-101,90,-207,203,-207v32,0,53,12,53,41v0,48,-46,75,-94,81v15,23,14,70,25,95v12,10,24,1,35,-13xm111,-188v-48,42,-88,86,-95,157v-2,26,17,22,28,7v28,-39,46,-113,67,-164xm127,-129v53,2,85,-30,86,-69v0,-17,-7,-26,-21,-26v-33,0,-54,60,-65,95","w":270},"\u211c":{"d":"138,-119v4,62,-15,114,-62,121v-22,3,-35,-31,-51,-7r-6,-2v13,-43,37,-43,65,-24v24,-11,17,-77,17,-116v0,-43,-12,-64,-38,-64v-20,-1,-37,17,-37,37v0,34,55,32,55,61v0,9,-5,21,-17,35v-7,1,-3,-7,-3,-10v-3,-28,-60,-34,-53,-75v-7,-63,84,-104,118,-48v34,-44,115,-29,115,29v0,28,-27,39,-53,49v24,15,25,51,34,81v5,17,10,24,25,18r5,5v-18,21,-51,54,-63,5v-7,-28,-12,-72,-27,-91v-5,-4,-14,-4,-24,-4xm200,-179v2,-33,-44,-44,-68,-23v6,22,6,42,6,69v34,-9,60,-14,62,-46","w":263},"\u211d":{"d":"252,0v-15,-32,6,-110,-52,-110r-83,0r0,110r-35,0r0,-228r-20,0r0,228r-34,0r0,-257r176,0v84,-12,107,113,33,133v54,5,26,89,54,124r-39,0xm247,-185v0,-59,-75,-40,-130,-43r0,89v57,-2,130,14,130,-46","w":300},"\u211e":{"d":"227,-186v1,40,-26,71,-67,75r22,32r20,-31r37,0r-40,57r36,53r-38,0r-16,-26r-18,26r-36,0r36,-52r-40,-59r-52,0r0,111r-34,0r0,-262r109,0v56,0,80,27,81,76xm192,-187v0,-55,-65,-47,-121,-46r0,92v55,0,121,9,121,-46","w":240},"\u211f":{"d":"200,0v-19,-46,13,-126,-64,-113r-51,133r-16,-7r48,-126r-54,0r0,113r-33,0r0,-262v47,-2,102,5,145,-1r-70,-28r7,-16r86,34r-7,17v53,17,50,111,-2,126v27,12,35,27,35,69v0,33,2,40,16,53r0,8r-40,0xm129,-143r34,-88v-30,-4,-67,-1,-100,-2r0,90r66,0xm148,-143v52,7,59,-59,31,-82","w":259},"\u2120":{"d":"226,-105r-30,0r-39,-110r0,110r-29,0r0,-157r39,0r45,124r45,-124r37,0r0,157r-28,0r0,-110xm50,-265v34,0,62,16,60,49r-23,0v-1,-21,-13,-32,-37,-32v-34,0,-48,42,-10,49v33,6,74,14,76,51v3,55,-93,61,-119,26v-6,-8,-10,-19,-10,-33r24,0v1,25,16,35,42,37v43,3,52,-45,11,-54v-30,-7,-73,-8,-72,-47v0,-30,25,-46,58,-46","w":321},"\u2121":{"d":"113,-262r0,20r-49,0r0,145r-30,0r0,-145r-49,0r0,-20r128,0xm150,-170r0,52r88,0r0,21r-117,0r0,-165r113,0r0,20r-84,0r0,51r81,0r0,21r-81,0xm281,-263r0,145r73,0r0,21r-103,0r0,-166r30,0","w":364},"\u2122":{"d":"58,-110r0,-117r-41,0r0,-27r114,0r0,27r-41,0r0,117r-32,0xm146,-110r0,-144r44,0r34,111r34,-111r44,0r0,144r-30,0r0,-100r-30,100r-35,0r-30,-100r0,100r-31,0","w":330},"\u2123":{"d":"75,-83r-64,-179r36,0r46,133r50,-129r-70,-27r6,-16r87,33r-64,165r22,63r73,-222r35,0r-91,262r-36,0r-21,-57r-31,82r-17,-6","w":242},"\u2124":{"d":"271,0r-263,0r0,-29r160,-203r-148,0r0,-29r247,0r0,29r-160,203r164,0r0,29xm67,-29r159,-203r-18,0r-159,203r18,0","w":278},"\u2125":{"d":"144,-7v1,-57,-49,-68,-112,-62r0,-17r94,-62r-94,0r0,-27r94,-61r-94,0r0,-26r133,0r0,30r-87,58r87,0r0,30r-73,47v57,3,79,35,84,89v9,104,-157,122,-169,24r30,0v9,25,26,38,52,38v37,0,55,-24,55,-61","w":194},"\u2126":{"d":"65,-140v1,52,17,72,53,95r0,45r-112,0r0,-45r61,0v-37,-23,-54,-47,-56,-98v-1,-71,55,-124,126,-124v70,0,126,54,125,124v-1,50,-20,75,-56,98r62,0r0,45r-113,0r0,-45v38,-23,52,-43,53,-95v1,-48,-25,-87,-71,-87v-46,0,-72,39,-72,87","w":273},"\u2127":{"d":"11,-124v1,-50,20,-75,56,-98r-61,0r0,-45r112,0r0,45v-37,23,-51,44,-53,95v-2,48,26,87,72,87v46,0,72,-40,71,-87v-1,-52,-17,-72,-53,-95r0,-45r113,0r0,45r-62,0v37,23,55,46,56,98v1,70,-55,124,-125,124v-71,0,-127,-53,-126,-124","w":273},"\u2128":{"d":"167,-68v1,-53,-72,-66,-103,-29r-7,-7v10,-11,18,-18,26,-22v-30,-3,-38,-49,-8,-53v9,0,18,8,18,17v1,6,-12,11,-12,16v2,8,11,9,25,10v33,1,61,-12,61,-42v0,-28,-24,-45,-54,-45v-28,0,-50,15,-66,34r-7,-4v28,-72,166,-69,167,18v0,27,-13,44,-42,50v78,25,37,135,-38,127v-39,5,-72,-36,-104,-16r-5,-3v24,-63,65,-10,105,-5v27,3,44,-21,44,-46","w":213},"\u2129":{"d":"33,0r0,-189r30,0r0,189r-30,0","w":81},"\u212a":{"d":"81,-88r0,88r-54,0r0,-262r54,0r0,115r102,-115r64,0r-105,112r116,150r-64,0r-86,-116","w":259},"\u212b":{"d":"180,-53r-98,0r-18,53r-55,0r93,-262r60,0r91,262r-55,0xm166,-98r-35,-102r-34,102r69,0xm97,-312v0,-18,15,-32,33,-32v18,0,32,16,32,32v0,17,-15,33,-32,33v-18,0,-33,-15,-33,-33xm145,-312v0,-7,-7,-15,-15,-15v-8,0,-16,7,-16,15v0,8,8,15,16,15v8,0,15,-8,15,-15","w":259},"\u212c":{"d":"227,-85v2,71,-97,108,-157,73v-26,20,-72,19,-70,-19v6,-100,91,-207,203,-207v32,0,53,12,53,41v0,34,-29,64,-63,71v21,7,33,18,34,41xm115,-188v-48,39,-95,88,-95,158v0,12,3,18,11,18v35,-10,65,-130,84,-176xm114,-11v35,-2,72,-33,72,-74v0,-27,-23,-29,-60,-30v-10,29,-24,55,-30,88v0,9,8,16,18,16xm131,-129v53,2,85,-30,87,-69v0,-17,-7,-26,-21,-26v-33,0,-55,59,-66,95","w":265},"\u212d":{"d":"189,-155v40,27,3,73,-41,73v-21,0,-35,-9,-42,-29r28,-17v8,18,18,27,30,27v16,-1,12,-21,2,-30v-16,-15,-42,-27,-42,-56v-1,-25,18,-40,43,-40v-67,-12,-105,37,-105,105v0,63,26,110,89,111v28,0,55,-12,80,-36r7,6v-20,28,-57,46,-99,46v-71,-2,-119,-48,-119,-122v0,-73,52,-127,121,-126v22,-5,72,27,88,0r7,0v-2,31,-36,39,-61,26v-22,1,-22,39,-4,46","w":237},"\u212e":{"d":"31,-92v0,-109,153,-133,164,-25v1,6,2,15,2,27r-135,0v-4,48,9,76,53,76v29,0,49,-12,60,-37r16,0v-11,36,-37,53,-77,53v-54,1,-83,-39,-83,-94xm170,-136v-13,-46,-95,-48,-107,0r0,33r107,0r0,-33","w":241},"\u212f":{"d":"37,-69v-15,59,54,70,80,31r6,5v-22,21,-37,38,-68,38v-29,0,-48,-23,-48,-53v0,-51,49,-113,99,-113v41,0,40,49,10,68v-22,14,-41,22,-79,24xm114,-136v-4,-25,-32,-14,-47,4v-10,12,-19,33,-28,53v46,-2,68,-19,75,-57","w":148},"\u2130":{"d":"146,-64v-26,0,-49,15,-65,35r-7,-6v17,-26,51,-50,85,-50v17,0,30,11,29,26v-3,41,-68,65,-114,64v-41,0,-71,-15,-71,-51v0,-42,38,-71,82,-79v-17,-6,-25,-14,-25,-32v0,-54,51,-81,109,-81v62,0,73,52,21,76r-6,-9v29,-10,32,-53,-6,-53v-36,0,-80,31,-80,66v-1,27,26,25,57,25r-6,20v-59,-7,-106,18,-108,65v0,22,15,34,45,34v29,0,74,-17,76,-39v-1,-8,-7,-12,-16,-11","w":230},"\u2131":{"d":"141,-181v-24,0,-61,-37,-75,-5v2,19,30,-1,38,8v-11,12,-23,18,-34,18v-14,0,-28,-8,-28,-24v0,-23,28,-37,52,-37v24,0,60,24,84,5v12,-10,28,-20,49,-17v-1,15,-14,9,-21,22v-9,11,-18,19,-26,23r-22,59r31,0r0,16r-38,0r-15,40v28,15,24,62,-2,76r-9,-8v18,-15,23,-38,4,-52v-14,36,-53,59,-98,59v-26,0,-44,-9,-44,-30v0,-42,65,-60,115,-54r12,-31r-76,0r0,-16r83,0xm9,-32v3,27,43,17,59,5v15,-10,23,-24,29,-42v-35,-6,-83,11,-88,37","w":259},"\u2132":{"d":"157,-149r0,-113r54,0r0,262r-184,0r0,-45r130,0r0,-59r-115,0r0,-45r115,0","w":219},"\u2133":{"d":"69,-14v-22,27,-79,27,-81,-12v-1,-33,42,-56,83,-55r1,9v-39,8,-59,23,-59,45v0,10,6,17,16,17v14,0,28,-11,43,-34r105,-159v14,-22,29,-34,45,-34v4,0,4,3,4,7r-84,213v2,5,5,3,9,-3r119,-183v14,-22,29,-34,45,-34v4,0,4,3,4,7r-82,211v10,18,28,2,49,-13r6,8v-20,16,-36,28,-64,29v-27,1,-31,-19,-22,-41r42,-107r-83,129v-11,21,-57,28,-58,-3v11,-44,32,-84,47,-126r-61,96v-9,15,-18,25,-24,33","w":345},"\u2134":{"d":"36,-52v2,-57,39,-109,93,-109v30,0,50,27,49,58v-3,54,-39,104,-94,107v-29,2,-49,-26,-48,-56xm88,-5v40,0,59,-64,62,-112v0,-18,-7,-35,-25,-35v-41,0,-63,64,-63,112v0,20,7,35,26,35","w":165},"\u2135":{"d":"103,-24v36,-6,-15,-46,-8,-63v2,-23,24,-52,33,-73v-15,-23,-52,-47,-32,-83r100,128r27,-62v-29,2,-49,-3,-47,-30v0,-15,7,-29,18,-41v-10,47,71,-3,71,51v0,11,-2,22,-5,34v-3,-12,-10,-15,-23,-14v-13,33,-37,74,-5,107v17,17,42,43,22,70r-117,-148v-33,46,34,76,34,119v0,39,-40,27,-75,29r0,-24r7,0","w":296},"\u2136":{"d":"212,-33v-15,22,-11,31,-32,33v-51,5,-112,-5,-156,4v3,-62,88,-29,143,-37r0,-147v0,-15,-6,-19,-20,-19r-91,0v-22,0,-29,-16,-18,-30v4,-4,14,-11,29,-20v2,30,45,15,72,17v31,2,44,13,44,42r0,144v-1,17,13,12,29,13","w":222},"\u2137":{"d":"109,-65v-52,-6,-54,20,-52,65r-33,0v0,-39,-5,-75,33,-77v2,0,19,-1,52,-2r0,-93v-5,-38,-103,-11,-70,-60v3,-3,12,-10,25,-20v-2,30,52,27,57,45v11,41,0,109,4,159v1,16,6,19,18,27r-28,23v-12,-18,-4,-42,-6,-67","w":166},"\u2138":{"d":"154,-42v3,16,6,19,18,27r-28,23v-4,-7,-6,-12,-6,-15r0,-192r-110,0v-22,0,-29,-16,-18,-30v4,-4,13,-11,28,-20v3,12,9,17,17,17v51,5,126,-19,136,33v-19,0,-37,-2,-37,18r0,139","w":198},"\u214b":{"d":"94,-261v3,70,-7,127,-15,186r-24,0v-8,-59,-18,-116,-15,-186r54,0xm94,-53r0,53r-54,0r0,-53r54,0xm204,-261v3,70,-7,127,-15,186r-24,0v-8,-59,-18,-116,-15,-186r54,0xm204,-53r0,53r-54,0r0,-53r54,0","w":229},"\u2153":{"d":"194,-239r30,0r-156,239r-29,0xm48,-206r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104xm228,-23v13,1,23,-8,23,-22v0,-16,-16,-26,-36,-22r0,-23v34,8,42,-40,12,-40v-16,0,-22,8,-21,27r-32,0v2,-36,19,-51,54,-53v47,-3,71,51,33,74v46,21,21,87,-33,87v-35,0,-56,-17,-56,-52r33,0v1,16,8,24,23,24","w":285},"\u2154":{"d":"246,-239r30,0r-156,239r-29,0xm281,-23v13,1,22,-9,22,-22v0,-16,-16,-26,-36,-22r0,-23v35,8,41,-40,12,-40v-16,0,-20,9,-21,27r-31,0v1,-36,18,-50,53,-53v47,-4,71,51,33,74v46,21,21,87,-33,87v-35,0,-55,-18,-56,-52r33,0v1,16,9,24,24,24xm130,-210v1,44,-50,52,-68,79r67,0r0,29r-112,0v-4,-62,78,-58,78,-107v0,-13,-7,-23,-21,-23v-16,0,-23,12,-22,32r-33,0v-1,-38,17,-58,56,-58v35,0,54,17,55,48","w":342},"\u2155":{"d":"196,-239r30,0r-156,239r-29,0xm53,-206r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104xm258,-50v4,-26,-34,-38,-44,-17r-31,0r15,-86r88,0r0,29r-67,0r-4,28v35,-22,77,4,77,45v0,56,-77,74,-105,36v-5,-7,-8,-16,-8,-26r34,0v0,12,7,18,21,18v16,0,25,-10,24,-27","w":297},"\u2156":{"d":"246,-239r30,0r-156,239r-29,0xm130,-210v1,44,-50,52,-68,79r67,0r0,29r-112,0v-4,-62,78,-58,78,-107v0,-13,-7,-23,-21,-23v-16,0,-23,12,-22,32r-33,0v-1,-38,17,-58,56,-58v35,0,54,17,55,48xm278,-23v16,0,25,-11,25,-27v0,-29,-34,-37,-44,-17r-31,0r14,-86r88,0r0,29r-66,0r-5,28v36,-22,78,4,78,45v0,55,-76,74,-105,36v-5,-7,-9,-17,-9,-27r34,0v0,12,7,19,21,19","w":342},"\u2157":{"d":"218,-239r30,0r-156,239r-29,0xm281,-50v0,-26,-34,-39,-45,-17r-31,0r15,-86r88,0r0,29r-66,0r-5,28v36,-22,78,5,78,45v0,55,-77,74,-106,36v-5,-7,-8,-16,-8,-26r34,0v0,12,7,18,21,18v16,0,25,-11,25,-27xm61,-124v13,0,22,-10,23,-22v1,-17,-14,-24,-37,-23r0,-22v35,7,41,-39,12,-40v-16,1,-20,8,-20,27r-32,0v1,-37,19,-52,53,-54v46,-3,71,51,34,75v46,22,20,87,-34,87v-35,0,-55,-18,-55,-52r33,0v1,16,8,24,23,24","w":319},"\u2158":{"d":"218,-239r29,0r-156,239r-29,0xm281,-50v3,-25,-35,-40,-45,-17r-31,0r15,-86r88,0r0,29r-67,0r-4,28v36,-22,78,6,78,46v0,53,-77,73,-106,35v-5,-7,-8,-16,-8,-26r33,0v0,12,7,18,21,18v17,1,24,-12,26,-27xm120,-163r0,27r-17,0r0,34r-34,0r0,-34r-65,0r0,-26r60,-93r39,0r0,92r17,0xm69,-163r0,-59r-38,59r38,0","w":319},"\u2159":{"d":"196,-239r30,0r-156,239r-29,0xm53,-206r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104xm179,-73v0,-49,16,-82,60,-83v29,0,45,13,50,40r-32,0v-17,-28,-49,-8,-44,25v31,-26,81,-3,79,39v-1,33,-22,57,-55,57v-42,-1,-58,-28,-58,-78xm259,-50v0,-15,-8,-26,-23,-26v-13,0,-23,11,-23,27v0,15,9,26,23,26v14,0,23,-12,23,-27","w":297},"\u215a":{"d":"214,-239r29,0r-156,239r-29,0xm196,-73v0,-49,17,-82,61,-83v29,0,45,13,49,40r-31,0v-17,-29,-49,-6,-45,25v31,-26,81,-3,79,39v-1,33,-22,57,-55,57v-39,0,-58,-26,-58,-78xm276,-50v0,-17,-8,-25,-23,-26v-13,0,-23,12,-23,27v0,15,9,26,23,26v13,0,23,-12,23,-27xm85,-153v0,-27,-35,-39,-44,-16r-31,0r14,-86r89,0r0,29r-67,0r-5,27v37,-20,78,5,78,46v0,56,-77,74,-105,35v-5,-7,-8,-16,-8,-26r33,0v0,12,7,19,21,19v17,0,25,-11,25,-28","w":314},"\u215b":{"d":"196,-239r30,0r-156,239r-29,0xm53,-206r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104xm235,-156v46,-6,73,51,34,73v47,21,21,95,-34,88v-53,6,-80,-67,-33,-88v-39,-22,-13,-78,33,-73xm258,-111v0,-13,-9,-19,-23,-19v-12,0,-23,7,-22,19v0,11,10,18,23,18v13,0,22,-6,22,-18xm259,-46v0,-15,-10,-24,-24,-24v-13,0,-25,9,-24,24v0,15,10,23,24,23v14,0,24,-8,24,-23","w":297},"\u215c":{"d":"206,-239r29,0r-155,239r-30,0xm245,-156v46,-6,73,50,34,73v46,21,19,96,-34,88v-53,6,-80,-67,-33,-88v-39,-22,-13,-78,33,-73xm268,-111v0,-13,-9,-19,-23,-19v-12,0,-23,7,-22,19v0,11,10,18,23,18v12,0,22,-6,22,-18xm269,-46v0,-15,-10,-24,-24,-24v-13,0,-24,9,-24,24v0,15,11,23,24,23v14,0,24,-8,24,-23xm60,-132v14,1,22,-10,23,-21v1,-16,-15,-24,-37,-23r0,-22v35,8,42,-41,12,-40v-15,1,-20,8,-20,26r-32,0v1,-36,19,-50,53,-53v47,-4,71,50,34,74v46,22,21,87,-34,87v-34,0,-55,-17,-55,-51r33,0v1,16,8,23,23,23","w":307},"\u215d":{"d":"206,-239r29,0r-156,239r-29,0xm245,-156v45,-6,73,52,33,73v47,20,21,96,-33,88v-53,6,-80,-67,-33,-88v-39,-22,-13,-78,33,-73xm268,-111v0,-13,-10,-19,-23,-19v-12,0,-22,7,-22,19v1,12,9,18,22,18v13,0,23,-6,23,-18xm269,-46v0,-15,-10,-24,-24,-24v-13,0,-25,9,-24,24v0,15,10,23,24,23v14,0,24,-8,24,-23xm77,-153v3,-27,-35,-38,-44,-16r-31,0r15,-86r88,0r0,29r-67,0r-4,27v37,-20,77,4,77,46v0,56,-77,74,-105,35v-5,-7,-8,-16,-8,-26r33,0v0,12,8,19,22,19v16,0,22,-12,24,-28","w":307},"\u215e":{"d":"206,-239r29,0r-156,239r-29,0xm245,-156v45,-6,72,51,34,73v47,21,19,96,-34,88v-53,6,-80,-67,-33,-88v-39,-22,-13,-78,33,-73xm268,-111v0,-13,-10,-19,-23,-19v-12,0,-22,7,-22,19v1,12,9,18,22,18v13,0,23,-6,23,-18xm269,-46v0,-15,-10,-24,-24,-24v-13,0,-25,9,-24,24v0,15,10,23,24,23v14,0,24,-8,24,-23xm148,-230v-33,39,-51,66,-57,128r-35,0v9,-58,26,-90,55,-124r-78,0r0,-29r115,0r0,25","w":307},"\u215f":{"d":"196,-239r30,0r-156,239r-29,0xm53,-206r-38,0r0,-22v27,0,43,-9,49,-27r23,0r0,153r-34,0r0,-104","w":297},"\u2160":{"d":"77,-262r0,262r-54,0r0,-262r54,0","w":100},"\u2161":{"d":"77,-262r0,262r-54,0r0,-262r54,0xm162,-262r0,262r-54,0r0,-262r54,0","w":184},"\u2162":{"d":"77,-262r0,262r-54,0r0,-262r54,0xm162,-262r0,262r-54,0r0,-262r54,0xm248,-262r0,262r-54,0r0,-262r54,0","w":270},"\u2163":{"d":"77,-262r0,262r-54,0r0,-262r54,0xm236,0r-45,0r-89,-262r54,0r58,197r58,-197r54,0"},"\u2164":{"d":"143,0r-46,0r-88,-262r54,0r58,197r57,-197r55,0","w":240},"\u2165":{"d":"272,-262r54,0r0,262r-54,0r0,-262xm113,0r-90,-262r54,0r57,197r59,-197r54,0r-89,262r-45,0"},"\u2166":{"d":"272,-262r54,0r0,262r-54,0r0,-262xm113,0r-90,-262r54,0r57,197r59,-197r54,0r-89,262r-45,0xm406,-263r0,263r-54,0r0,-263r54,0","w":435},"\u2167":{"d":"272,-262r54,0r0,262r-54,0r0,-262xm113,0r-90,-262r54,0r57,197r59,-197r54,0r-89,262r-45,0xm406,-263r0,263r-54,0r0,-263r54,0xm487,-263r0,263r-54,0r0,-263r54,0","w":509},"\u2168":{"d":"77,-262r0,262r-54,0r0,-262r54,0xm253,-134r84,134r-64,0r-50,-91r-51,91r-62,0r83,-132r-80,-130r64,0r46,86r48,-86r63,0"},"\u2169":{"d":"151,-134r84,134r-64,0r-51,-91r-50,91r-62,0r83,-132r-80,-130r64,0r46,86r48,-86r63,0"},"\u216a":{"d":"151,-134r84,134r-64,0r-51,-91r-50,91r-62,0r83,-132r-80,-130r64,0r46,86r48,-86r63,0xm310,-262r0,262r-54,0r0,-262r54,0"},"\u216b":{"d":"151,-134r84,134r-64,0r-51,-91r-50,91r-62,0r83,-132r-80,-130r64,0r46,86r48,-86r63,0xm310,-262r0,262r-54,0r0,-262r54,0xm393,-262r0,262r-54,0r0,-262r54,0","w":401},"\u216c":{"d":"83,-262r0,217r125,0r0,45r-179,0r0,-262r54,0","w":219},"\u216d":{"d":"16,-129v0,-81,45,-138,120,-138v61,-1,105,33,110,93r-52,0v-7,-31,-26,-47,-56,-47v-50,1,-68,41,-68,93v-1,50,19,91,66,91v33,0,56,-19,58,-53r53,0v-3,61,-47,98,-113,98v-76,1,-118,-58,-118,-137","w":219},"\u216e":{"d":"245,-131v0,77,-33,131,-115,131r-102,0r0,-262r102,0v88,-2,115,52,115,131xm130,-45v50,-4,59,-31,61,-86v2,-79,-37,-92,-109,-86r0,172r48,0","w":259},"\u216f":{"d":"78,-204r0,204r-54,0r0,-262r80,0r48,208r46,-208r81,0r0,262r-54,0r0,-204r-46,204r-54,0","w":299},"\u2170":{"d":"75,-194r0,194r-51,0r0,-194r51,0xm75,-262r0,45r-51,0r0,-45r51,0","w":98},"\u2171":{"d":"75,-194r0,194r-51,0r0,-194r51,0xm75,-262r0,45r-51,0r0,-45r51,0xm156,-194r0,194r-50,0r0,-194r50,0xm156,-262r0,45r-50,0r0,-45r50,0","w":180},"\u2172":{"d":"75,-194r0,194r-51,0r0,-194r51,0xm75,-262r0,45r-51,0r0,-45r51,0xm156,-194r0,194r-50,0r0,-194r50,0xm156,-262r0,45r-50,0r0,-45r50,0xm240,-194r0,194r-50,0r0,-194r50,0xm240,-262r0,45r-50,0r0,-45r50,0"},"\u2173":{"d":"75,-194r0,194r-51,0r0,-194r51,0xm75,-262r0,45r-51,0r0,-45r51,0xm219,0r-53,0r-68,-194r53,0r42,142r40,-142r53,0"},"\u2174":{"d":"126,0r-53,0r-68,-194r54,0r41,142r40,-142r53,0","w":197},"\u2175":{"d":"126,0r-53,0r-68,-194r54,0r41,142r40,-142r53,0xm270,-194r0,194r-50,0r0,-194r50,0xm270,-262r0,45r-50,0r0,-45r50,0"},"\u2176":{"d":"126,0r-53,0r-68,-194r54,0r41,142r40,-142r53,0xm270,-194r0,194r-50,0r0,-194r50,0xm270,-262r0,45r-50,0r0,-45r50,0xm347,-195r0,195r-50,0r0,-195r50,0xm347,-263r0,45r-50,0r0,-45r50,0"},"\u2177":{"d":"126,0r-53,0r-68,-194r54,0r41,142r40,-142r53,0xm263,-194r0,194r-50,0r0,-194r50,0xm263,-262r0,45r-50,0r0,-45r50,0xm338,-195r0,195r-50,0r0,-195r50,0xm338,-263r0,45r-50,0r0,-45r50,0xm414,-195r0,195r-51,0r0,-195r51,0xm414,-263r0,45r-51,0r0,-45r51,0","w":418},"\u2178":{"d":"75,-194r0,194r-51,0r0,-194r51,0xm75,-262r0,45r-51,0r0,-45r51,0xm226,-98r65,98r-61,0r-32,-60r-33,60r-61,0r65,-98r-63,-96r60,0r32,58r31,-58r61,0"},"\u2179":{"d":"128,-98r65,98r-61,0r-33,-60r-33,60r-60,0r65,-98r-64,-96r61,0r31,58r32,-58r60,0"},"\u217a":{"d":"240,-194r51,0r0,194r-51,0r0,-194xm240,-262r51,0r0,45r-51,0r0,-45xm89,-98r-64,-96r61,0r31,58r32,-58r61,0r-64,96r65,98r-61,0r-33,-60r-32,60r-61,0"},"\u217b":{"d":"240,-194r51,0r0,194r-51,0r0,-194xm240,-262r51,0r0,45r-51,0r0,-45xm89,-98r-64,-96r61,0r31,58r32,-58r61,0r-64,96r65,98r-61,0r-33,-60r-32,60r-61,0xm316,-195r51,0r0,195r-51,0r0,-195xm316,-263r51,0r0,45r-51,0r0,-45","w":372},"\u217c":{"d":"77,-262r0,262r-54,0r0,-262r54,0","w":372},"\u217d":{"d":"12,-93v1,-62,30,-105,92,-105v47,0,81,29,84,76r-48,0v-5,-22,-13,-35,-36,-35v-27,0,-41,21,-41,64v1,33,10,61,41,61v23,0,31,-14,36,-35r48,0v-5,44,-37,75,-85,75v-59,0,-92,-40,-91,-101","w":200},"\u217e":{"d":"10,-94v-1,-52,31,-105,82,-104v23,0,42,10,54,29r0,-93r50,0r0,262r-50,0r0,-20v-12,19,-30,28,-54,28v-53,-1,-81,-47,-82,-102xm146,-94v0,-32,-14,-61,-43,-61v-28,0,-42,31,-42,61v0,29,14,60,42,60v29,0,43,-29,43,-60","w":219},"\u217f":{"d":"72,-170v19,-37,90,-36,106,1v31,-48,119,-34,119,31r0,138r-51,0r0,-129v-1,-17,-10,-26,-27,-26v-59,0,-27,100,-35,155r-50,0r0,-129v-2,-17,-10,-26,-27,-26v-59,3,-27,100,-35,155r-50,0r0,-194r50,0r0,24","w":320},"\u2180":{"d":"406,-131v0,77,-33,131,-115,131r-152,0v-84,1,-114,-52,-114,-132v0,-77,33,-131,114,-131r152,0v84,-2,115,53,115,132xm291,-45v50,-4,59,-31,61,-86v2,-80,-37,-92,-110,-86r0,172r49,0xm79,-131v2,49,12,84,61,86r48,0r0,-173v-72,-5,-110,6,-109,87","w":430},"\u2181":{"d":"245,-131v0,77,-33,131,-115,131r-102,0r0,-262r102,0v88,-2,115,52,115,131xm82,-73v48,-10,63,-80,16,-105v-6,-4,-11,-6,-16,-7r0,112xm130,-45v50,-4,59,-31,61,-86v2,-79,-37,-92,-109,-86r0,6v40,8,68,37,70,82v2,44,-37,74,-70,84r48,0","w":259},"\u2182":{"d":"7,-131v0,-77,33,-131,115,-131r152,0v88,-2,115,52,115,131v0,77,-33,130,-115,131r-152,1v-84,3,-115,-53,-115,-132xm225,-73v58,-10,59,-102,0,-112r0,112xm274,-45v50,-4,59,-32,61,-86v3,-81,-37,-92,-110,-86r0,6v41,7,68,38,70,82v2,44,-37,74,-70,84r49,0xm171,-185v-58,10,-59,103,0,113r0,-113xm101,-128v-1,-41,32,-78,70,-82r0,-7v-72,-5,-111,5,-110,86v1,50,12,87,61,87r49,0r0,-3v-40,-7,-68,-37,-70,-81","w":259},"\u2190":{"d":"89,-101r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r223,0r0,21r-223,0"},"\u2191":{"d":"191,-223r0,223r-22,0r0,-223r-37,38r-16,-15r64,-64r64,64r-15,15"},"\u2192":{"d":"48,-101r0,-22r223,0r-38,-37r15,-16r64,64r-64,64r-15,-15r38,-38r-223,0"},"\u2193":{"d":"191,-41r38,-38r15,15r-64,64r-64,-64r16,-15r37,38r0,-223r22,0r0,223"},"\u2194":{"d":"89,-101r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r182,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-182,0"},"\u2195":{"d":"169,-41r0,-182r-37,38r-16,-15r64,-64r64,64r-15,15r-38,-38r0,182r38,-38r15,15r-64,64r-64,-64r16,-15"},"\u2196":{"d":"120,-204r157,158r-15,15r-157,-157r0,53r-22,0r0,-90r90,0r0,21r-53,0"},"\u2197":{"d":"240,-204r-53,0r0,-21r90,0r0,90r-22,0r0,-53r-157,157r-15,-15"},"\u2198":{"d":"240,-53r-157,-157r15,-16r157,158r0,-53r22,0r0,90r-90,0r0,-22r53,0"},"\u2199":{"d":"120,-53r53,0r0,22r-90,0r0,-90r22,0r0,53r157,-158r15,16"},"\u219a":{"d":"206,-101r-52,52r-15,-15r36,-37r-86,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r108,0r51,-52r16,15r-37,37r85,0r0,21r-106,0"},"\u219b":{"d":"166,-101r-51,52r-15,-15r36,-37r-88,0r0,-21r110,0r51,-52r15,15r-36,37r83,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-105,0"},"\u219c":{"d":"232,-140v-31,4,-41,46,-82,46v-18,0,-43,-14,-66,-33r5,52r-21,3r-9,-90r89,-9r2,21r-51,6v21,18,39,27,52,27v27,-1,46,-48,82,-46v38,2,45,20,68,48r-17,17v-17,-24,-26,-38,-52,-42"},"\u219d":{"d":"59,-115v22,-38,65,-66,104,-33v12,10,30,31,46,31v13,0,31,-9,52,-27r-51,-6r2,-21r89,9r-9,90r-21,-3r5,-52v-22,18,-48,34,-66,33v-39,5,-44,-37,-82,-46v-24,2,-37,20,-52,42"},"\u219e":{"d":"112,-101r-23,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r23,0r53,-53r15,15r-38,38r170,0r0,21r-170,0r38,38r-15,15"},"\u219f":{"d":"191,-223r0,23r53,53r-15,15r-38,-38r0,170r-22,0r0,-170r-37,38r-16,-15r53,-53r0,-23r-37,38r-16,-15r64,-64r64,64r-15,15"},"\u21a0":{"d":"248,-101r-53,53r-15,-15r38,-38r-170,0r0,-21r170,0r-38,-38r15,-15r53,53r23,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-23,0"},"\u21a1":{"d":"191,-41r38,-38r15,15r-64,64r-64,-64r16,-15r37,38r0,-23r-53,-53r16,-15r37,38r0,-170r22,0r0,170r38,-38r15,15r-53,53r0,23"},"\u21a2":{"d":"244,-101r-155,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r155,0r53,-53r15,15r-48,49r48,48r-15,15"},"\u21a3":{"d":"116,-101r-53,53r-15,-15r48,-48r-48,-49r15,-15r53,53r155,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-155,0"},"\u21a4":{"d":"290,-101r-200,0r37,38r-15,15r-64,-63r64,-64r15,15r-37,38r200,0r0,-50r22,0r0,121r-22,0r0,-50"},"\u21a5":{"d":"191,-17r48,0r0,17r-118,0r0,-17r48,0r0,-206r-37,38r-16,-15r64,-64r64,64r-15,15r-38,-38r0,206"},"\u21a6":{"d":"70,-101r0,50r-22,0r0,-121r22,0r0,50r200,0r-37,-38r15,-15r64,64r-64,63r-15,-15r37,-38r-200,0"},"\u21a7":{"d":"191,-247r0,206r38,-38r15,15r-64,64r-64,-64r16,-15r37,38r0,-206r-48,0r0,-17r118,0r0,17r-48,0"},"\u21a8":{"d":"169,-61r0,-176r-37,38r-16,-16r64,-63r64,63r-15,16r-38,-38r0,176r38,-37r15,15r-64,64r-64,-64r16,-15xm239,-17r0,17r-117,0r0,-17r117,0"},"\u21a9":{"d":"262,-194v62,-5,65,93,8,93r-181,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r170,0v31,4,39,-34,18,-47v-5,-3,-12,-5,-19,-3r0,-22r4,0"},"\u21aa":{"d":"90,-172v-33,8,-19,50,11,50r170,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-176,0v-28,0,-46,-20,-47,-47v-1,-28,23,-48,54,-46r0,22v-4,-1,-9,-1,-12,0"},"\u21ab":{"d":"312,-147v-1,36,-29,51,-72,46r0,36r-21,0r0,-36r-130,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r130,0v-5,-42,11,-72,47,-72v27,0,47,21,46,47xm266,-171v-24,-1,-28,22,-26,49v27,2,50,-1,49,-26v0,-13,-9,-23,-23,-23"},"\u21ac":{"d":"94,-194v36,0,53,28,47,72r130,0r-38,-38r15,-15r64,64r-64,63r-15,-15r38,-38r-130,0r0,36r-21,0r0,-36v-42,5,-73,-11,-72,-46v0,-25,19,-47,46,-47xm71,-148v0,24,23,28,49,26v2,-27,-2,-49,-26,-49v-14,0,-24,9,-23,23"},"\u21ad":{"d":"230,-120v7,1,14,-11,23,-19r31,0r-37,-37r15,-15r64,63r-64,64r-15,-15r37,-38r-21,0v-9,9,-23,23,-33,21v-25,2,-30,-32,-50,-39v-20,4,-23,41,-50,39v-10,2,-24,-12,-33,-21r-21,0r37,38r-15,15r-64,-64r64,-63r15,15r-37,37r32,0v8,9,16,20,22,19v21,-4,25,-42,50,-38v25,-4,29,34,50,38"},"\u21ae":{"d":"156,-101r-89,0r38,38r-15,15r-64,-63r64,-64r15,15r-38,38r110,0r52,-52r15,15r-36,37r85,0r-38,-38r16,-15r63,64r-63,63r-16,-15r38,-38r-107,0r-52,52r-15,-15"},"\u21af":{"d":"187,-39r43,-31r13,18r-74,52r-52,-73r18,-13r31,43r23,-112r-67,26r20,-133r21,0r-17,103r68,-27"},"\u21b0":{"d":"161,-173r38,38r-15,15r-64,-64r64,-63r15,15r-38,38r79,0r0,194r-21,0r0,-173r-58,0"},"\u21b1":{"d":"199,-173r-58,0r0,173r-21,0r0,-194r79,0r-38,-38r15,-15r64,63r-64,64r-15,-15"},"\u21b2":{"d":"161,-75r58,0r0,-173r21,0r0,195r-79,0r38,38r-15,15r-64,-64r64,-63r15,15"},"\u21b3":{"d":"199,-75r-38,-37r15,-15r64,63r-64,64r-15,-15r38,-38r-79,0r0,-195r21,0r0,173r58,0"},"\u21b4":{"d":"209,-139r-132,0r0,-21r153,0r0,109r38,-38r15,16r-63,64r-64,-64r15,-16r38,38r0,-88"},"\u21b5":{"d":"234,-84r0,-132r21,0r0,154r-109,0r38,38r-15,15r-64,-64r64,-64r15,16r-38,37r88,0"},"\u21b6":{"d":"207,-147v-49,0,-77,36,-73,91r37,-38r16,16r-64,64r-64,-64r16,-16r37,38v-3,-70,32,-110,95,-111v60,-1,98,43,94,106r-22,0v3,-54,-24,-86,-72,-86"},"\u21b7":{"d":"153,-167v61,-1,100,44,95,111r38,-38r15,16r-64,64r-64,-64r16,-16r37,38v4,-58,-22,-91,-73,-91v-47,0,-75,34,-72,86r-22,0v-1,-64,32,-105,94,-106"},"\u21b8":{"d":"85,-194r0,-21r189,0r0,21r-189,0xm107,-147r0,53r-22,0r0,-90r90,0r0,22r-53,0r153,152r-16,15"},"\u21b9":{"d":"291,-4r0,-121r21,0r0,121r-21,0xm249,-53r-201,0r0,-22r201,0r-38,-37r16,-16r64,64r-64,64r-16,-16xm69,-102r-21,0r0,-120r21,0r0,120xm111,-150r38,37r-16,15r-64,-63r64,-64r16,15r-38,38r201,0r0,22r-201,0"},"\u21ba":{"d":"170,-20v67,0,103,-95,46,-132r0,56r-21,0r0,-90r90,0r0,21r-53,0v18,15,33,40,33,70v0,52,-43,95,-95,95v-79,0,-129,-107,-67,-162r15,15v-48,44,-12,127,52,127"},"\u21bb":{"d":"190,0v-83,0,-130,-118,-62,-165r-53,0r0,-21r91,0r0,90r-22,0r0,-56v-54,32,-25,132,46,132v62,0,102,-84,53,-127r14,-15v61,56,14,162,-67,162"},"\u21bc":{"d":"312,-101r-264,0r74,-74r16,15r-38,38r212,0r0,21"},"\u21bd":{"d":"312,-122r0,21r-212,0r38,38r-16,15r-74,-74r264,0"},"\u21be":{"d":"143,0r0,-264r74,74r-15,16r-38,-38r0,212r-21,0"},"\u21bf":{"d":"217,0r-21,0r0,-212r-38,38r-15,-16r74,-74r0,264"},"\u21c0":{"d":"48,-101r0,-21r212,0r-38,-38r16,-15r74,74r-264,0"},"\u21c1":{"d":"48,-122r264,0r-74,74r-16,-15r38,-38r-212,0r0,-21"},"\u21c2":{"d":"143,-264r21,0r0,212r38,-38r15,16r-74,74r0,-264"},"\u21c3":{"d":"217,-264r0,264r-74,-74r15,-16r38,38r0,-212r21,0"},"\u21c4":{"d":"89,-53r38,37r-15,16r-64,-64r64,-64r15,16r-38,37r223,0r0,22r-223,0xm271,-150r-223,0r0,-22r223,0r-38,-38r15,-15r64,64r-64,63r-15,-15"},"\u21c5":{"d":"244,-41r38,-38r15,15r-64,64r-63,-64r15,-15r38,38r0,-223r21,0r0,223xm137,-223r0,223r-21,0r0,-223r-38,38r-15,-15r63,-64r64,64r-15,15"},"\u21c6":{"d":"271,-53r-223,0r0,-22r223,0r-38,-37r15,-16r64,64r-64,64r-15,-16xm89,-150r38,37r-15,15r-64,-63r64,-64r15,15r-38,38r223,0r0,22r-223,0"},"\u21c7":{"d":"89,-53r38,37r-15,16r-64,-64r64,-64r15,16r-38,37r223,0r0,22r-223,0xm89,-188r38,38r-15,15r-64,-64r64,-63r15,15r-38,38r223,0r0,21r-223,0"},"\u21c8":{"d":"124,-223r0,223r-22,0r0,-223r-37,38r-15,-15r63,-64r64,64r-15,15xm236,-223r-38,38r-15,-15r64,-64r63,64r-15,15r-38,-38r0,223r-21,0r0,-223"},"\u21c9":{"d":"271,-53r-223,0r0,-22r223,0r-38,-37r15,-16r64,64r-64,64r-15,-16xm271,-188r-223,0r0,-21r223,0r-38,-38r15,-15r64,63r-64,64r-15,-15"},"\u21ca":{"d":"124,-41r38,-38r15,15r-64,64r-63,-64r15,-15r37,38r0,-223r22,0r0,223xm236,-41r0,-223r21,0r0,223r38,-38r15,15r-63,64r-64,-64r15,-15"},"\u21cb":{"d":"312,-161r0,22r-264,0r74,-75r16,16r-38,37r212,0xm48,-88r264,0r-74,75r-16,-15r38,-38r-212,0r0,-22"},"\u21cc":{"d":"48,-161r212,0r-38,-37r16,-16r74,75r-264,0r0,-22xm312,-88r0,22r-212,0r38,38r-16,15r-74,-75r264,0"},"\u21cd":{"d":"195,-88r124,0r0,16r-137,0r-20,28r-13,-11r12,-17r-40,0r23,21r0,23r-103,-88r103,-88r0,23r-23,21r106,0r22,-29r13,10r-13,19r70,0r0,16r-83,0xm173,-88r42,-56r-113,0r-33,28r33,28r71,0"},"\u21ce":{"d":"222,-160r41,0r-23,-21r0,-23r103,88r-103,88r0,-23r23,-21r-107,0r-20,28r-14,-11r12,-17r-37,0r23,21r0,23r-103,-88r103,-88r0,23r-23,21r104,0r21,-29r14,10xm168,-88r115,0r32,-28r-32,-28r-73,0xm147,-88r41,-56r-111,0r-32,28r32,28r70,0"},"\u21cf":{"d":"131,-72r-20,28r-13,-11r12,-17r-69,0r0,-16r81,0r42,-56r-123,0r0,-16r135,0r22,-29r13,10r-13,19r41,0r-23,-21r0,-23r103,88r-103,88r0,-23r23,-21r-108,0xm144,-88r114,0r33,-28r-33,-28r-73,0"},"\u21d0":{"d":"69,-116r33,28r217,0r0,16r-198,0r23,21r0,23r-103,-88r103,-88r0,23r-23,21r198,0r0,16r-217,0"},"\u21d1":{"d":"180,-227r-28,33r0,194r-16,0r0,-175r-21,23r-22,0r87,-103r88,103r-23,0r-21,-23r0,175r-16,0r0,-194"},"\u21d2":{"d":"291,-116r-33,-28r-217,0r0,-16r198,0r-23,-21r0,-23r103,88r-103,88r0,-23r23,-21r-198,0r0,-16r217,0"},"\u21d3":{"d":"180,-28r28,-32r0,-195r16,0r0,176r21,-24r23,0r-88,103r-87,-103r22,0r21,24r0,-176r16,0r0,195"},"\u21d4":{"d":"97,-160r166,0r-23,-21r0,-23r103,88r-103,88r0,-23r23,-21r-166,0r23,21r0,23r-103,-88r103,-88r0,23xm77,-144r-32,28r32,28r206,0r32,-28r-32,-28r-206,0"},"\u21d5":{"d":"224,-56r21,-23r23,0r-88,103r-87,-103r22,0r21,23r0,-143r-21,23r-22,0r87,-103r88,103r-23,0r-21,-23r0,143xm152,-36r28,32r28,-32r0,-182r-28,-33r-28,33r0,182"},"\u21d6":{"d":"94,-192r3,43r138,137r-12,12r-124,-124r2,31r-16,16r-11,-134r135,10r-16,17r-31,-3r124,124r-12,12r-138,-138"},"\u21d7":{"d":"266,-192r-43,3r-137,138r-12,-12r124,-124r-31,3r-16,-17r135,-10r-11,134r-16,-16r2,-31r-124,124r-12,-12r138,-137"},"\u21d8":{"d":"266,-20r-3,-42r-138,-138r12,-11r124,123r-2,-31r16,-16r11,135r-135,-11r16,-16r31,2r-124,-124r12,-11r137,137"},"\u21d9":{"d":"94,-20r42,-3r138,-137r12,11r-124,124r31,-2r16,16r-135,11r11,-135r16,16r-2,31r124,-123r12,11r-138,138"},"\u21da":{"d":"41,-116r103,-87r0,22r-16,14r191,0r0,17r-210,0r-30,26r240,0r0,16r-240,0r30,26r210,0r0,17r-191,0r16,14r0,22"},"\u21db":{"d":"319,-116r-103,87r0,-22r16,-14r-191,0r0,-17r210,0r30,-26r-240,0r0,-16r240,0r-30,-26r-210,0r0,-17r191,0r-16,-14r0,-22"},"\u21dc":{"d":"118,-122r12,12r29,-35r28,35r29,-35r29,35r28,-35r19,23r22,0r0,21r-32,0r-9,-12r-28,34r-29,-35r-29,35r-28,-35r-29,35r-20,-22r-23,0r38,38r-15,15r-64,-64r64,-63r15,15r-38,38r31,0"},"\u21dd":{"d":"242,-122r30,0r-37,-38r15,-15r64,63r-64,64r-15,-15r37,-38r-23,0r-19,22r-29,-35r-28,35r-29,-35r-29,35r-28,-34r-9,12r-32,0r0,-21r22,0r19,-23r28,35r29,-35r29,35r28,-35r29,35"},"\u21de":{"d":"169,-68r-48,0r0,-18r48,0r0,-22r-48,0r0,-18r48,0r0,-97r-37,38r-16,-15r64,-64r64,64r-15,15r-38,-38r0,97r47,0r0,18r-47,0r0,22r47,0r0,18r-47,0r0,68r-22,0r0,-68"},"\u21df":{"d":"169,-196r0,-68r22,0r0,68r47,0r0,18r-47,0r0,22r47,0r0,18r-47,0r0,97r38,-38r15,15r-64,64r-64,-64r16,-15r37,38r0,-97r-48,0r0,-18r48,0r0,-22r-48,0r0,-18r48,0"},"\u21e0":{"d":"304,-101r-36,0r0,-21r36,0r0,21xm252,-101r-36,0r0,-21r36,0r0,21xm199,-101r-36,0r0,-21r36,0r0,21xm146,-101r-49,0r38,38r-16,15r-63,-63r63,-64r16,15r-38,38r49,0r0,21"},"\u21e1":{"d":"169,0r0,-36r22,0r0,36r-22,0xm169,-53r0,-36r22,0r0,36r-22,0xm169,-106r0,-36r22,0r0,36r-22,0xm191,-223r0,65r-22,0r0,-65r-37,38r-16,-15r64,-64r64,64r-15,15"},"\u21e2":{"d":"56,-101r0,-21r36,0r0,21r-36,0xm108,-101r0,-21r36,0r0,21r-36,0xm161,-101r0,-21r36,0r0,21r-36,0xm214,-101r0,-21r49,0r-38,-38r16,-15r63,64r-63,63r-16,-15r38,-38r-49,0"},"\u21e3":{"d":"169,-264r22,0r0,36r-22,0r0,-36xm169,-211r22,0r0,36r-22,0r0,-36xm169,-158r22,0r0,36r-22,0r0,-36xm191,-41r38,-38r15,15r-64,64r-64,-64r16,-15r37,38r0,-65r22,0r0,65"},"\u21e4":{"d":"69,-52r-21,0r0,-120r21,0r0,120xm111,-101r38,38r-16,15r-64,-63r64,-64r16,15r-38,38r201,0r0,21r-201,0"},"\u21e5":{"d":"291,-52r0,-120r21,0r0,120r-21,0xm249,-101r-201,0r0,-21r201,0r-38,-38r16,-15r64,64r-64,63r-16,-15"},"\u21e6":{"d":"324,-55r-186,0r0,42r-102,-86r102,-87r0,42r186,0r0,89xm53,-99r73,63r0,-31r187,0r0,-66r-187,0r0,-30"},"\u21e7":{"d":"225,0r-90,0r0,-155r-41,0r86,-102r86,102r-41,0r0,155xm180,-240r-63,74r30,0r0,155r66,0r0,-155r30,0"},"\u21e8":{"d":"36,-55r0,-89r186,0r0,-42r102,87r-102,86r0,-42r-186,0xm307,-99r-73,-64r0,30r-187,0r0,66r187,0r0,31"},"\u21e9":{"d":"225,-257r0,155r41,0r-86,102r-86,-102r41,0r0,-155r90,0xm180,-17r63,-73r-30,0r0,-155r-66,0r0,155r-30,0"},"\u21ea":{"d":"135,-46r90,0r0,46r-90,0r0,-46xm213,-35r-66,0r0,24r66,0r0,-24xm225,-61r-90,0r0,-144r-41,0r86,-101r86,101r-41,0r0,144xm180,-289r-63,73r30,0r0,144r66,0r0,-144r30,0"},"\u2200":{"d":"171,-184r27,-78r37,0r-92,262r-43,0r-94,-262r36,0r27,78r102,0xm161,-155r-83,0r43,119","w":241},"\u2201":{"d":"48,-123v0,66,1,103,47,103v25,0,39,-16,42,-47r33,0v-5,47,-25,75,-72,75v-66,0,-83,-49,-83,-131v0,-78,19,-133,83,-132v47,1,67,29,72,75r-33,0v-3,-31,-17,-47,-42,-47v-45,0,-48,41,-47,104","w":184},"\u2202":{"d":"133,-124v18,-80,-23,-159,-96,-117r-15,-19v81,-35,147,29,143,114v-4,70,-20,150,-89,151v-38,1,-68,-32,-68,-70v0,-39,28,-82,70,-82v21,0,39,11,55,23xm39,-56v0,28,8,48,32,50v36,3,54,-57,59,-104v-33,-52,-91,-2,-91,54","w":176},"\u2203":{"d":"142,-111r-122,0r0,-27r122,0r0,-77r-127,0r0,-28r158,0r0,243r-164,0r0,-27r133,0r0,-84","w":197},"\u2204":{"d":"40,0r-31,0r0,-27r41,0r29,-84r-59,0r0,-27r68,0r27,-77r-100,0r0,-28r109,0r6,-17r23,0r-6,17r26,0r0,243r-111,0r-6,17r-22,0xm137,-215r-27,77r32,0r0,-77r-5,0xm101,-111r-29,84r70,0r0,-84r-41,0","w":197},"\u2205":{"d":"50,-45v-62,-78,-3,-198,98,-198v30,0,57,9,80,29r28,-26r16,17r-27,26v64,79,4,201,-97,201v-32,0,-59,-10,-82,-31r-26,23r-16,-17xm211,-198v-64,-54,-166,-2,-163,78v0,21,6,41,19,59xm83,-44v61,57,165,5,165,-76v0,-23,-7,-43,-21,-61","w":295},"\u2206":{"d":"4,0r105,-262r36,0r107,262r-248,0xm128,-222r-77,192r153,0","w":255},"\u2207":{"d":"252,-262r-106,262r-36,0r-106,-262r248,0xm128,-41r76,-192r-152,0","w":255},"\u2208":{"d":"48,-99v0,-60,31,-95,100,-95r110,0r0,24v-74,6,-182,-27,-182,61r182,0r0,24r-182,0v-3,84,105,57,182,61r0,24r-110,0v-72,2,-100,-31,-100,-99","w":306},"\u2209":{"d":"48,-99v1,-60,31,-100,100,-95r56,0r19,-33r16,9r-13,24r32,0r0,24r-46,0r-34,61r80,0r0,24r-94,0r-34,60v40,2,86,0,128,1r0,24r-141,-2r-16,27r-16,-9r12,-23v-32,-15,-50,-46,-49,-92xm142,-85r-66,0v2,29,13,48,34,56xm190,-170v-61,-2,-116,-2,-114,61r80,0","w":306},"\u220a":{"d":"24,-71v0,-47,20,-70,73,-70r59,0r0,24v-43,3,-104,-14,-105,35r105,0r0,23r-105,0v-1,45,61,34,105,35r0,24r-59,0v-51,2,-73,-23,-73,-71","w":179},"\u220b":{"d":"258,-99v0,63,-30,99,-100,99r-110,0r0,-24v75,-6,182,26,182,-61r-182,0r0,-24r182,0v3,-84,-105,-57,-182,-61r0,-24r110,0v71,-2,100,30,100,95","w":306},"\u220c":{"d":"213,-186v69,31,59,185,-30,185r-76,1r-14,25r-17,-9r9,-16r-37,0r0,-24r51,0r34,-61r-85,0r0,-24r99,0r34,-60v-41,-3,-90,0,-133,-1r0,-24r146,2r20,-35r17,9xm155,-85r-34,61v60,3,110,-2,109,-61r-75,0xm200,-163r-31,54r61,0v-2,-27,-11,-45,-30,-54","w":306},"\u220d":{"d":"156,-71v0,46,-20,71,-73,71r-59,0r0,-24v43,-3,103,13,104,-35r-104,0r0,-23r104,0v2,-45,-60,-34,-104,-35r0,-24r59,0v51,-2,73,22,73,70","w":179},"\u220e":{"d":"166,0r-142,0r0,-195r142,0r0,195","w":190},"\u220f":{"d":"41,-228v0,-29,-6,-36,-34,-36r0,-9r279,0r0,9v-27,1,-36,8,-35,36r0,214v1,30,6,36,35,36r0,9r-110,0r0,-9v26,-1,34,-7,34,-36r0,-240r-128,0r0,240v2,29,6,36,35,36r0,9r-110,0r0,-9v26,-1,34,-7,34,-36r0,-214","w":292},"\u2210":{"d":"251,-14v1,31,6,35,35,36r0,9r-279,0r0,-9v26,-1,34,-7,34,-36r0,-215v0,-29,-6,-34,-34,-35r0,-10r110,0r0,10v-26,1,-36,7,-35,35r0,241r128,0r0,-241v0,-29,-6,-34,-34,-35r0,-10r110,0r0,10v-26,1,-36,7,-35,35r0,215","w":292},"\u2211":{"d":"62,-6v68,-7,170,25,179,-41r9,0v-6,24,-12,52,-16,82v-69,-7,-154,-2,-228,-2r124,-144r-124,-163v68,7,144,1,216,3r2,57r-8,0v-5,-61,-87,-35,-147,-41r97,128","w":256},"\u2212":{"d":"27,-105r0,-43r183,0r0,43r-183,0","w":237},"\u2213":{"d":"4,-218r0,-20r188,0r0,20r-188,0xm109,0r-20,0r0,-86r-85,0r0,-20r85,0r0,-86r20,0r0,86r85,0r0,20r-85,0r0,86","w":197},"\u2214":{"d":"109,0r-20,0r0,-86r-85,0r0,-20r85,0r0,-86r20,0r0,86r85,0r0,20r-85,0r0,86xm81,-228v0,-9,8,-18,18,-18v9,0,18,9,18,19v0,10,-8,17,-18,18v-11,1,-18,-8,-18,-19","w":197},"\u2215":{"d":"-87,0r144,-254r43,0r-144,254r-43,0","w":13},"\u2216":{"d":"110,-263r147,310r-21,11r-147,-310","w":344},"\u2217":{"d":"89,-95r-41,-15r15,-25r33,28r-8,-43r32,0r-8,43r34,-28r14,25r-41,15r41,15r-14,26r-34,-29r8,43r-32,0r8,-43r-33,29r-15,-26","w":208},"\u2218":{"d":"40,-121v0,-27,23,-51,50,-51v26,0,49,25,49,51v0,26,-24,49,-50,49v-26,0,-49,-23,-49,-49xm122,-121v0,-18,-16,-34,-33,-34v-17,0,-32,16,-32,33v0,17,14,34,32,33v18,0,33,-14,33,-32","w":178},"\u2219":{"d":"19,-127v0,-20,17,-38,38,-38v19,0,38,18,38,38v0,20,-18,38,-38,38v-19,0,-38,-17,-38,-38","w":113},"\u221a":{"d":"112,1r-67,-138r-40,0r0,-25r67,0r54,111r124,-267r19,9r-146,310r-11,0","w":274},"\u221b":{"d":"112,1r-67,-138r-40,0r0,-25r67,0r54,111r124,-267r19,9r-146,310r-11,0xm121,-187v20,1,33,-10,33,-29v1,-21,-19,-28,-45,-26r0,-18v48,10,51,-48,12,-47v-20,0,-30,9,-29,32r-22,0v1,-34,17,-51,51,-51v46,0,70,55,30,74v47,17,23,84,-30,84v-35,0,-53,-17,-55,-51r22,0v1,21,12,32,33,32","w":274},"\u221c":{"d":"112,1r-67,-138r-40,0r0,-25r67,0r54,111r124,-267r19,9r-146,310r-11,0xm115,-215r-67,0r0,-21r73,-96r17,0r0,98r24,0r0,19r-24,0r0,36r-23,0r0,-36xm115,-234r0,-61r-46,61r46,0","w":274},"\u221d":{"d":"9,-95v-1,-32,22,-54,53,-54v23,0,45,13,66,40v22,-28,42,-41,72,-40r0,24v-20,-1,-33,8,-52,29v20,19,24,30,52,30r0,25v-25,0,-50,-14,-72,-41v-25,50,-119,60,-119,-13xm32,-95v4,47,58,28,78,0v-14,-14,-33,-30,-49,-30v-18,-1,-30,11,-29,30","w":256},"\u221e":{"d":"59,-146v29,0,46,19,69,39v23,-21,40,-38,69,-39v26,-1,50,24,50,51v0,27,-23,51,-50,50v-29,-1,-47,-18,-69,-38v-23,21,-39,36,-69,38v-27,1,-50,-23,-50,-50v0,-27,24,-51,50,-51xm143,-97v11,30,84,54,86,2v-6,-47,-63,-34,-86,-2xm115,-95v-19,-19,-40,-32,-56,-32v-17,0,-32,15,-32,32v0,16,15,32,32,32v18,0,47,-23,56,-32","w":255},"\u221f":{"d":"22,0r0,-313r23,0r0,289r293,0r0,24r-316,0"},"\u2220":{"d":"194,-164r11,13r-138,134r185,0r0,17r-228,0","w":275},"\u2221":{"d":"212,0r-1,19r-18,0r1,-19r-170,0r119,-114v-4,-4,-11,-9,-17,-14r11,-14v7,5,14,10,19,15r38,-37r12,13r-38,37v24,28,38,60,43,97r41,0r0,17r-40,0xm192,-17v-5,-33,-16,-61,-37,-85r-88,85r125,0","w":275},"\u2222":{"d":"192,-37r46,20r-5,16r-48,-20v-2,5,-7,12,-12,21r-15,-9v4,-7,7,-13,10,-19r-144,-61r144,-60v-3,-6,-6,-12,-10,-19r15,-9v5,9,10,16,12,21r48,-21r5,17r-46,20v12,36,12,67,0,103xm70,-89r105,45v10,-30,11,-59,0,-89","w":261},"\u2223":{"d":"72,-241r0,241r-24,0r0,-241r24,0","w":120},"\u2224":{"d":"83,-152r25,-38r15,11r-40,60r0,119r-25,0r0,-82r-19,29r-15,-12r34,-51r0,-125r25,0r0,89","w":147},"\u2225":{"d":"127,0r-24,0r0,-241r24,0r0,241xm72,-241r0,241r-24,0r0,-241r24,0","w":175},"\u2226":{"d":"132,-155r0,155r-24,0r0,-119r-31,46r0,73r-24,0r0,-37r-14,21r-15,-12r29,-42r0,-171r24,0r0,135r31,-47r0,-88r24,0r0,52r16,-23r15,11","w":186},"\u2227":{"d":"138,-202r88,202r-31,0r-70,-161r-69,161r-32,0r88,-202r26,0","w":250},"\u2228":{"d":"138,0r-26,0r-88,-202r32,0r69,161r70,-161r31,0","w":250},"\u2229":{"d":"108,-220v67,0,86,41,86,123r0,97r-25,0r0,-98v5,-66,-12,-100,-61,-100v-82,0,-57,114,-61,198r-26,0r0,-97v-4,-81,20,-123,87,-123","w":215},"\u222a":{"d":"108,-23v83,0,60,-111,63,-197r23,0r0,97v6,82,-19,123,-86,123v-67,0,-87,-43,-87,-123r0,-97r24,0r0,98v-4,65,13,99,63,99","w":216},"\u222b":{"d":"27,22v15,0,17,29,36,29v10,0,16,-8,19,-22v1,-6,4,-38,7,-99v5,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-29,-36,-27v-10,0,-16,7,-19,21v-5,21,-23,301,-28,296v-7,33,-24,51,-60,52v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15","w":222},"\u222c":{"d":"27,22v15,0,17,29,36,29v10,0,16,-8,19,-22v1,-6,4,-38,7,-99v5,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-29,-36,-27v-10,0,-16,7,-19,21v-5,21,-23,301,-28,296v-7,33,-24,51,-60,52v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15xm147,22v14,0,18,30,36,29v10,0,16,-8,19,-22v1,-6,4,-38,7,-99v4,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-27,-36,-27v-10,0,-16,7,-19,21v-5,21,-23,301,-28,296v-7,33,-24,51,-60,52v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15","w":342},"\u222d":{"d":"27,22v15,0,17,29,36,29v10,0,16,-8,19,-22v1,-6,4,-38,7,-99v5,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-29,-36,-27v-10,0,-16,7,-19,21v-5,21,-23,301,-28,296v-7,33,-24,51,-60,52v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15xm147,22v14,0,18,30,36,29v10,0,16,-8,19,-22v1,-6,4,-38,7,-99v4,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-27,-36,-27v-10,0,-16,7,-19,21v-5,21,-23,301,-28,296v-7,33,-24,51,-60,52v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15xm267,22v15,0,16,29,36,29v10,0,17,-8,20,-22v1,-6,3,-38,6,-99v4,-81,11,-143,19,-185v8,-43,21,-64,63,-64v17,0,39,7,39,24v1,7,-7,13,-15,13v-16,0,-18,-29,-36,-27v-10,0,-16,7,-19,21v-15,58,-8,320,-46,333v-17,20,-77,23,-82,-8v-1,-9,6,-15,15,-15","w":462},"\u222e":{"d":"195,-282v-16,0,-18,-30,-36,-27v-35,6,-18,67,-27,105v45,13,69,81,32,121v-12,12,-26,21,-43,24v-7,53,-10,119,-69,119v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,18,-8,19,-22r7,-90v-49,-9,-74,-82,-36,-122v13,-14,28,-22,47,-24v8,-64,12,-112,70,-112v17,0,40,7,40,24v1,7,-7,13,-15,13xm122,-77v51,-6,57,-93,9,-108xm98,-189v-56,6,-61,96,-8,110","w":222},"\u222f":{"d":"147,22v14,0,18,30,36,29v10,0,18,-8,19,-22r7,-90v-30,5,-59,3,-88,-3v-7,54,-8,124,-69,124v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,16,-8,19,-22v1,-3,5,-48,7,-104v-24,-11,-51,-29,-51,-58v0,-32,33,-52,61,-62v8,-57,8,-125,71,-124v17,0,40,7,40,24v1,7,-7,13,-15,13v-16,0,-18,-30,-36,-27v-35,6,-18,67,-27,105v30,-4,59,-4,88,1v8,-67,11,-116,70,-116v17,0,40,7,40,24v1,7,-7,13,-15,13v-16,0,-19,-31,-36,-27v-36,7,-18,71,-27,114v40,11,84,62,41,99v-14,13,-32,22,-52,28r-11,84v-9,29,-29,44,-58,44v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15xm210,-78r8,-108v-29,-6,-57,-5,-87,0r-8,104v27,6,58,8,87,4xm243,-86v64,-21,69,-67,7,-91xm97,-176v-53,21,-55,59,-6,84","w":342},"\u2230":{"d":"195,-282v-16,0,-18,-29,-36,-27v-36,3,-20,91,-27,111v33,-6,62,-8,88,-9v8,-63,12,-112,70,-112v17,0,40,7,40,24v1,7,-7,13,-15,13v-16,0,-18,-30,-36,-27v-35,6,-18,65,-27,102v27,1,57,5,87,11v8,-56,10,-126,71,-123v17,0,40,7,40,24v1,7,-7,13,-15,13v-16,0,-19,-31,-36,-27v-37,9,-18,76,-28,122v34,11,85,43,48,81v-11,11,-30,21,-57,30v-6,76,-6,132,-70,136v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,19,-8,20,-22r6,-97v-31,6,-61,9,-89,10v-4,70,-11,114,-68,118v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v14,0,18,30,36,29v10,0,16,-8,19,-22v1,-2,5,-61,6,-88v-32,-1,-60,-5,-86,-11v-6,74,-8,126,-70,130v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,18,-8,19,-22r8,-109v-52,-22,-77,-44,-45,-80v10,-12,28,-20,53,-29v9,-60,8,-132,72,-130v17,0,40,7,40,24v1,7,-7,13,-15,13xm130,-181r-7,94v25,6,55,10,87,11r8,-114v-32,1,-61,3,-88,9xm91,-97r6,-75v-59,22,-66,51,-6,75xm364,-93v26,-9,46,-20,51,-41v0,-13,-15,-25,-45,-37v-5,31,-4,64,-6,78xm330,-85r8,-95v-23,-5,-52,-9,-87,-10r-9,114v34,-1,63,-5,88,-9","w":462},"\u2231":{"d":"195,-282v-16,0,-18,-29,-36,-27v-39,13,-17,86,-29,137v26,7,42,23,51,49r16,-4r-11,55r-42,-41r20,-5v-6,-18,-19,-31,-36,-37v-10,102,-3,163,-34,200v-17,20,-77,23,-82,-8v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,18,-8,19,-22r14,-185v-26,8,-44,27,-43,61v-7,-1,-18,3,-18,-6v0,-37,29,-68,62,-73v11,-72,4,-145,73,-145v17,0,40,7,40,24v1,7,-7,13,-15,13","w":222},"\u2232":{"d":"195,-282v-16,0,-18,-30,-36,-27v-35,6,-18,67,-27,105v21,7,35,21,44,41r16,-4v-8,51,-21,99,-71,108v-7,53,-10,119,-69,119v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,18,-8,19,-22r7,-90v-49,-9,-74,-82,-36,-122v13,-14,28,-22,47,-24v8,-64,12,-112,70,-112v17,0,40,7,40,24v1,7,-7,13,-15,13xm159,-158v-6,-13,-15,-21,-28,-27r-9,108v22,-6,40,-25,43,-50r-26,-26xm98,-189v-56,6,-61,96,-8,110","w":222},"\u2233":{"d":"195,-282v-16,0,-18,-30,-36,-27v-35,6,-18,67,-27,105v39,11,48,57,72,83r-23,4v-7,29,-30,51,-60,58v-7,53,-10,119,-69,119v-17,0,-40,-6,-40,-23v-1,-9,6,-15,15,-15v15,0,16,29,36,29v10,0,18,-8,19,-22r7,-90v-49,-9,-74,-82,-36,-122v13,-14,28,-22,47,-24v8,-64,12,-112,70,-112v17,0,40,7,40,24v1,7,-7,13,-15,13xm163,-148v-5,-18,-15,-30,-32,-37r-9,108v20,-5,33,-18,40,-37r-12,3xm98,-189v-56,6,-61,96,-8,110","w":222},"\u2234":{"d":"145,-193v0,-13,8,-23,23,-23v13,0,22,10,22,23v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22xm48,-22v0,-13,9,-23,23,-23v13,0,22,11,22,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm242,-22v0,-13,8,-23,23,-23v13,0,22,11,22,23v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22","w":335},"\u2235":{"d":"145,-22v0,-12,12,-23,23,-23v12,0,22,10,22,23v0,13,-10,22,-22,22v-13,0,-24,-9,-23,-22xm48,-193v0,-14,9,-22,23,-22v12,0,22,10,22,22v0,12,-9,22,-23,22v-13,0,-22,-9,-22,-22xm242,-193v0,-12,11,-22,23,-22v12,0,23,9,22,22v0,12,-9,23,-22,22v-13,-1,-23,-10,-23,-22","w":335},"\u2236":{"d":"72,-193v0,-13,9,-23,23,-23v13,0,22,10,22,23v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22xm72,-22v0,-13,9,-23,23,-23v13,0,22,11,22,23v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22","w":188},"\u2237":{"d":"48,-22v0,-13,9,-23,23,-23v13,0,22,11,22,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm222,-22v0,-13,8,-23,23,-23v13,-1,21,11,21,23v0,12,-9,22,-22,22v-12,0,-23,-9,-22,-22xm48,-193v0,-13,8,-23,23,-23v13,0,22,11,22,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm222,-193v0,-13,8,-23,23,-23v13,-1,21,11,21,23v0,12,-9,22,-22,22v-12,0,-23,-9,-22,-22","w":314},"\u2238":{"d":"193,-106r0,20r-189,0r0,-20r189,0xm76,-149v0,-13,8,-22,23,-22v13,0,22,9,22,22v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22","w":197},"\u2239":{"d":"99,-86r-95,0r0,-20r95,0r0,20xm128,-149v0,-13,8,-22,23,-22v13,0,22,9,22,22v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22xm128,-44v0,-13,10,-22,23,-22v12,0,22,9,22,22v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22","w":197},"\u223a":{"d":"24,-106r169,0r0,20r-169,0r0,-20xm148,-149v0,-13,8,-22,23,-22v13,0,22,9,22,22v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22xm148,-44v0,-13,10,-22,23,-22v12,0,22,9,22,22v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22xm24,-149v0,-13,9,-22,22,-22v14,0,24,9,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm24,-44v0,-13,10,-22,22,-22v14,-1,24,9,23,22v0,13,-10,22,-23,22v-12,0,-23,-9,-22,-22","w":217},"\u223b":{"d":"86,-149v0,-13,8,-22,23,-22v13,0,22,9,22,22v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22xm86,-44v0,-13,10,-22,23,-22v12,0,22,9,22,22v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22xm156,-95v19,-2,25,-8,38,-23r14,11v-23,53,-88,21,-133,13v-19,1,-22,8,-35,22r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,19","w":217},"\u223c":{"d":"156,-95v19,-2,25,-8,38,-23r14,11v-23,53,-88,21,-133,13v-19,1,-22,8,-35,22r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,19","w":232},"\u223d":{"d":"193,-72v-24,-44,-77,-5,-117,-4v-23,0,-41,-10,-52,-31r14,-11v13,14,19,21,38,23v10,1,72,-22,81,-19v21,0,37,10,51,30","w":232},"\u223e":{"d":"230,-95v0,-17,-15,-33,-33,-32r-1,-18v32,-1,52,23,52,50v0,27,-23,50,-50,50v-52,0,-84,-76,-138,-82v-17,-1,-32,15,-32,32v0,16,15,32,34,32r0,18v-31,1,-52,-23,-52,-50v0,-27,24,-51,50,-51v51,0,84,77,138,83v17,1,32,-16,32,-32","w":257},"\u223f":{"d":"147,-49v27,20,40,-30,46,-57r20,4v-10,35,-18,74,-56,78v-50,-4,-44,-90,-64,-129v-29,-30,-47,18,-53,50r-21,-5v10,-38,20,-76,57,-76v57,0,44,98,71,135","w":232},"\u2240":{"d":"95,-131v-2,-20,-9,-25,-23,-38r12,-14v77,32,-28,134,35,168r-12,16v-20,-14,-31,-31,-31,-52v-3,-9,20,-70,19,-80","w":190},"\u2241":{"d":"114,-100v32,11,45,2,62,-18r15,12v-19,32,-47,38,-88,23r-29,42r-15,-11r25,-37v-28,-7,-48,-6,-62,17r-16,-12v24,-32,48,-37,90,-22r28,-43r16,11","w":197},"\u2242":{"d":"193,-134r-189,0r0,-20r189,0r0,20xm138,-85v19,-2,25,-8,38,-23r15,12v-30,76,-132,-26,-169,34r-16,-12v14,-20,32,-30,52,-30v9,-3,70,20,80,19","w":197},"\u2243":{"d":"193,-81r0,19r-189,0r0,-19r189,0xm138,-131v20,-2,25,-9,38,-23r15,12v-29,76,-133,-26,-169,34r-16,-12v14,-20,32,-30,52,-30v9,-3,70,20,80,19","w":197},"\u2244":{"d":"133,-132v23,2,28,-5,43,-22r15,12v-14,26,-39,36,-70,28r-22,33r94,0r0,19r-108,0r-36,54r-15,-12r29,-42r-59,0r0,-19r72,0r26,-38v-47,-14,-56,-18,-80,11r-16,-12v32,-38,52,-36,108,-16r40,-59r14,12","w":197},"\u2245":{"d":"193,-107r0,19r-189,0r0,-19r189,0xm193,-58r0,20r-189,0r0,-20r189,0xm138,-148v20,-2,25,-9,38,-23r15,12v-23,53,-89,21,-134,12v-20,1,-23,9,-35,23r-16,-12v14,-20,32,-31,52,-31v9,-3,70,20,80,19","w":197},"\u2246":{"d":"118,-88r-20,30r95,0r0,20r-108,0r-18,26r-14,-12r9,-14r-58,0r0,-20r72,0r19,-30r-91,0r0,-19r104,0r15,-21r15,10r-7,11r62,0r0,19r-75,0xm138,-148v20,-2,25,-9,38,-23r15,12v-23,53,-89,21,-134,12v-20,1,-23,9,-35,23r-16,-12v14,-20,32,-31,52,-31v9,-3,70,20,80,19","w":197},"\u2247":{"d":"144,-148v17,-5,17,-8,32,-23r15,12v-13,23,-31,32,-60,31r-14,21r76,0r0,19r-90,0r-19,30r109,0r0,20r-123,0r-25,37r-15,-11r18,-26r-44,0r0,-20r57,0r20,-30r-77,0r0,-19r90,0r17,-26v-54,-16,-62,-23,-89,9r-16,-12v29,-43,68,-32,117,-14r24,-36r15,11","w":197},"\u2248":{"d":"156,-85v19,-2,25,-8,38,-23r14,12v-29,76,-132,-26,-168,34r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,19xm156,-134v20,-1,25,-10,38,-24r14,12v-23,53,-88,21,-133,13v-21,1,-21,8,-35,22r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,19","w":232},"\u2249":{"d":"123,-93v38,14,50,9,71,-15r14,12v-18,37,-58,36,-97,20r-43,62r-15,-11r39,-57v-27,-6,-39,2,-52,20r-16,-12v21,-28,43,-36,80,-25r16,-23v-35,-13,-61,-18,-80,11r-16,-12v28,-39,60,-33,108,-17r41,-60r15,12r-37,53v22,3,30,-7,43,-23r14,12v-14,26,-37,35,-69,29","w":232},"\u224a":{"d":"193,-58r0,20r-189,0r0,-20r189,0xm138,-148v20,-2,25,-9,38,-23r15,12v-23,53,-89,21,-134,12v-20,1,-23,9,-35,23r-16,-12v14,-20,32,-31,52,-31v9,-3,70,20,80,19xm191,-110v-23,53,-91,22,-134,12v-19,2,-21,9,-35,23r-16,-12v14,-20,32,-31,52,-31v9,-3,70,20,80,19v19,-2,25,-8,38,-23","w":197},"\u224b":{"d":"138,-148v20,-2,25,-9,38,-23r15,12v-23,53,-89,21,-134,12v-20,1,-23,9,-35,23r-16,-12v14,-20,31,-31,52,-31v9,-3,70,20,80,19xm191,-110v-23,53,-91,22,-134,12v-19,2,-22,9,-35,23r-16,-12v14,-20,31,-31,52,-31v9,-3,70,20,80,19v19,-2,25,-8,38,-23xm138,-50v20,-2,25,-9,38,-23r15,12v-24,51,-89,23,-134,12v-20,2,-22,9,-35,23r-16,-12v14,-20,31,-30,52,-30v9,-3,70,19,80,18","w":197},"\u224c":{"d":"150,-198v41,0,62,62,18,75v-7,3,-16,4,-26,4r0,-17v33,4,38,-43,8,-43v-35,0,-70,64,-104,59v-40,5,-61,-60,-17,-73v7,-2,17,-5,27,-5r0,17v-31,-5,-39,42,-10,42v35,0,67,-59,104,-59xm193,-107r0,19r-189,0r0,-19r189,0xm193,-58r0,20r-189,0r0,-20r189,0","w":197},"\u224d":{"d":"39,-36r-15,-15v48,-46,134,-47,182,0r-14,15v-43,-40,-111,-40,-153,0xm39,-155v42,41,111,41,153,0r14,16v-48,46,-134,47,-182,0","w":230},"\u224e":{"d":"109,-154v-18,0,-22,18,-20,39r-65,0r0,-20r42,0v1,-24,21,-41,43,-41v22,0,41,18,42,41r42,0r0,20r-65,0v2,-20,-1,-39,-19,-39xm109,-25v-23,0,-42,-17,-43,-41r-42,0r0,-20r65,0v-2,21,1,41,20,39v19,2,21,-18,19,-39r65,0r0,20r-42,0v-1,24,-19,41,-42,41","w":217},"\u224f":{"d":"109,-154v-18,0,-22,18,-20,39r-65,0r0,-20r42,0v1,-24,21,-41,43,-41v22,0,41,18,42,41r42,0r0,20r-65,0v2,-20,-1,-39,-19,-39xm24,-86r169,0r0,20r-169,0r0,-20","w":217},"\u2250":{"d":"193,-135r0,20r-169,0r0,-20r169,0xm193,-86r0,20r-169,0r0,-20r169,0xm86,-178v0,-13,10,-23,23,-23v13,0,22,10,22,23v0,13,-9,22,-22,22v-13,0,-23,-10,-23,-22","w":217},"\u2251":{"d":"193,-135r0,20r-169,0r0,-20r169,0xm193,-86r0,20r-169,0r0,-20r169,0xm86,-178v0,-13,10,-23,23,-23v13,0,22,10,22,23v0,13,-9,22,-22,22v-13,0,-23,-10,-23,-22xm86,-22v0,-13,10,-23,23,-23v13,0,22,10,22,23v0,13,-9,22,-22,22v-13,0,-23,-10,-23,-22","w":217},"\u2252":{"d":"193,-135r0,20r-169,0r0,-20r169,0xm193,-86r0,20r-169,0r0,-20r169,0xm24,-178v0,-13,9,-23,22,-23v13,0,24,9,23,23v0,13,-10,22,-23,22v-12,0,-23,-9,-22,-22xm148,-22v0,-13,10,-23,23,-23v13,0,22,10,22,23v0,12,-9,23,-22,22v-13,0,-23,-10,-23,-22","w":217},"\u2253":{"d":"24,-135r169,0r0,20r-169,0r0,-20xm24,-86r169,0r0,20r-169,0r0,-20xm148,-178v0,-13,9,-23,23,-23v12,0,22,9,22,22v1,13,-9,23,-22,23v-13,0,-23,-10,-23,-22xm24,-22v0,-13,9,-23,23,-23v13,0,22,10,22,23v0,12,-10,22,-22,22v-13,1,-24,-9,-23,-22","w":217},"\u2254":{"d":"253,-135r0,20r-170,0r0,-20r170,0xm253,-74r0,20r-170,0r0,-20r170,0xm24,-125v0,-13,9,-22,22,-22v13,0,24,9,23,22v0,13,-10,22,-23,22v-12,0,-23,-9,-22,-22xm24,-64v0,-13,10,-22,22,-22v13,0,24,9,23,22v0,13,-11,22,-23,23v-12,0,-22,-10,-22,-23","w":276},"\u2255":{"d":"24,-135r169,0r0,20r-169,0r0,-20xm24,-74r169,0r0,20r-169,0r0,-20xm208,-125v0,-14,9,-22,23,-22v13,-1,22,9,22,22v0,12,-10,22,-23,22v-12,0,-22,-9,-22,-22xm208,-64v0,-14,9,-22,23,-22v12,0,22,9,22,22v0,12,-11,23,-23,23v-12,0,-22,-10,-22,-23","w":276},"\u2256":{"d":"140,-115v4,10,4,19,0,29r53,0r0,20r-169,0r0,-20r54,0v-4,-9,-4,-20,0,-29r-54,0r0,-20r169,0r0,20r-53,0xm124,-100v0,-8,-8,-16,-16,-15v-7,0,-14,7,-14,15v0,7,6,15,15,14v8,0,14,-6,15,-14","w":217},"\u2257":{"d":"24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20xm73,-194v0,-18,17,-35,36,-35v18,0,35,17,35,36v0,20,-17,35,-36,35v-20,0,-35,-17,-35,-36xm127,-194v0,-9,-9,-18,-19,-18v-9,0,-18,9,-18,19v0,9,7,18,18,18v11,0,19,-8,19,-19","w":217},"\u2258":{"d":"167,-156v-35,-23,-82,-22,-117,0r-12,-13v36,-34,104,-35,141,0xm24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20","w":217},"\u2259":{"d":"109,-210r-32,58r-24,0r56,-99r55,99r-24,0xm24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20","w":217},"\u225a":{"d":"109,-193r31,-58r24,0r-55,99r-56,-99r24,0xm24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20","w":217},"\u225b":{"d":"24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20xm109,-240r11,35r38,0r-30,22r11,36r-30,-22r-31,22r12,-36r-31,-22r38,0","w":217},"\u225c":{"d":"53,-152r56,-99r55,99r-111,0xm129,-172r-20,-38r-21,38r41,0xm24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20","w":217},"\u225d":{"d":"24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20xm24,-189v-5,-30,31,-47,48,-25r0,-34r11,0r0,92r-10,0r0,-9v-15,25,-54,8,-49,-24xm72,-188v0,-13,-5,-26,-18,-26v-12,0,-19,12,-19,26v0,14,7,25,19,25v12,0,19,-12,18,-25xm96,-188v0,-21,11,-36,30,-36v20,0,29,13,29,39r-48,0v-3,24,31,30,36,9r11,0v-3,15,-12,23,-28,23v-18,-1,-30,-13,-30,-35xm144,-194v1,-19,-25,-28,-34,-11v-2,3,-3,7,-3,11r37,0xm193,-222r0,9r-11,0r0,57r-10,0r0,-57r-9,0r0,-9r9,0v-1,-17,3,-29,21,-26v4,13,-16,5,-11,26r11,0","w":217},"\u225e":{"d":"24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20xm91,-215v-23,0,-15,36,-16,59r-10,0r0,-66r10,0r0,9v8,-14,30,-15,38,-1v9,-16,39,-13,39,9r0,49r-10,0v-3,-21,9,-59,-13,-59v-22,0,-13,36,-15,59r-11,0v-3,-20,9,-59,-12,-59","w":217},"\u225f":{"d":"24,-115r0,-20r169,0r0,20r-169,0xm24,-86r169,0r0,20r-169,0r0,-20xm139,-225v3,16,-27,26,-23,44r-11,0v-5,-24,22,-26,22,-44v0,-10,-6,-15,-16,-15v-11,0,-16,7,-16,20r-11,0v0,-20,10,-29,28,-29v16,0,28,9,27,24xm116,-169r0,13r-11,0r0,-13r11,0","w":217},"\u2260":{"d":"40,-28r21,-35r-34,0r0,-41r59,0r27,-45r-86,0r0,-41r111,0r21,-35r39,0r-21,35r33,0r0,41r-58,0r-27,45r85,0r0,41r-110,0r-21,35r-39,0","w":237},"\u2261":{"d":"24,-137r0,-20r169,0r0,20r-169,0xm24,-107r169,0r0,19r-169,0r0,-19xm24,-58r169,0r0,20r-169,0r0,-20","w":217},"\u2262":{"d":"126,-137r-102,0r0,-20r115,0r17,-25r15,11r-9,14r31,0r0,20r-45,0r-20,30r65,0r0,19r-78,0r-20,30r98,0r0,20r-111,0r-22,33r-15,-12r15,-21r-36,0r0,-20r49,0r20,-30r-69,0r0,-19r82,0","w":217},"\u2263":{"d":"24,-164r0,-20r169,0r0,20r-169,0xm24,-135r169,0r0,20r-169,0r0,-20xm24,-86r169,0r0,20r-169,0r0,-20xm24,-36r169,0r0,19r-169,0r0,-19","w":217},"\u2264":{"d":"27,0r0,-43r183,0r0,43r-183,0xm210,-57r-183,-67r0,-42r183,-67r0,44r-127,44r127,44r0,44","w":237},"\u2265":{"d":"27,0r0,-43r183,0r0,43r-183,0xm27,-57r0,-44r128,-44r-128,-44r0,-44r183,67r0,42","w":237},"\u2266":{"d":"24,-20r169,0r0,20r-169,0r0,-20xm24,-155r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm24,-69r169,0r0,20r-169,0r0,-20","w":217},"\u2267":{"d":"24,-20r169,0r0,20r-169,0r0,-20xm193,-155r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22xm24,-69r169,0r0,20r-169,0r0,-20","w":217},"\u2268":{"d":"24,-155r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm155,-88r-13,19r51,0r0,20r-65,0r-20,29r85,0r0,20r-98,0r-22,33r-15,-11r15,-22r-49,0r0,-20r62,0r20,-29r-82,0r0,-20r95,0r20,-30","w":217},"\u2269":{"d":"193,-155r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22xm155,-88r-13,19r51,0r0,20r-65,0r-20,29r85,0r0,20r-98,0r-22,33r-15,-11r15,-22r-49,0r0,-20r62,0r20,-29r-82,0r0,-20r95,0r20,-30","w":217},"\u226a":{"d":"24,-82r0,-21r151,-82r0,25r-124,67r124,68r0,25xm130,-82r0,-21r150,-82r0,25r-124,67r124,68r0,25","w":303},"\u226b":{"d":"280,-82r-150,82r0,-25r123,-68r-123,-67r0,-25r150,82r0,21xm175,-82r-151,82r0,-25r124,-68r-124,-67r0,-25r151,82r0,21","w":303},"\u226c":{"d":"120,-227v31,68,31,132,0,199v4,9,9,19,15,28v-26,-1,-26,-2,-54,0v6,-9,10,-19,14,-28v-31,-67,-31,-131,0,-199v-4,-9,-8,-18,-14,-28v26,1,26,2,54,0v-6,10,-11,19,-15,28xm108,-196v-15,46,-14,91,0,137v13,-46,14,-91,0,-137","w":215},"\u226d":{"d":"108,-63r-40,59r-14,-12r29,-44v-18,4,-34,11,-50,19r-9,-16v22,-14,47,-22,74,-25r16,-24v-34,-1,-68,-13,-90,-27r9,-16v29,15,61,25,94,22r41,-61r16,11r-32,47v18,-4,35,-11,50,-19r8,16v-22,14,-46,23,-73,26r-16,24v33,1,63,9,89,26r-8,16v-31,-17,-58,-23,-94,-22","w":234},"\u226e":{"d":"72,-68r-48,-26r0,-21r88,-48r19,-45r17,8r-9,22r36,-19r0,25r-50,27r-28,66r78,42r0,25r-86,-47r-23,54r-17,-7xm81,-89r17,-42r-47,26","w":198},"\u226f":{"d":"86,-46r-20,48r-17,-7r11,-27r-36,20r0,-25r49,-27r28,-66r-77,-42r0,-25r86,47r21,-51r17,8r-22,52r49,26r0,21xm100,-79r48,-26r-30,-16","w":198},"\u2270":{"d":"67,-101r-43,-20r0,-17r97,-44r30,-46r16,11r-14,20r22,-10r0,23r-43,19r-36,54r79,36r0,23r-91,-41r-11,16r102,46r0,22r-113,-51r-28,43r-15,-11r26,-40r-21,-10r0,-21r32,14xm79,-118r21,-32r-45,20","w":198},"\u2271":{"d":"113,-92r-20,30r82,-37r0,21r-103,47r-28,41r-14,-11r9,-15r-15,7r0,-22r36,-17r21,-30r-57,26r0,-23r78,-35r20,-30r-98,-44r0,-23r109,50r29,-44r15,11r-27,41r25,11r0,17xm134,-125v4,-2,14,-5,5,-7","w":198},"\u2272":{"d":"31,-145r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm156,-42v19,-1,26,-8,38,-23r14,12v-21,52,-90,22,-133,12v-20,1,-23,8,-35,23r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,18","w":232},"\u2273":{"d":"200,-145r0,24r-169,45r0,-22r133,-35r-133,-35r0,-22xm156,-42v19,-1,26,-8,38,-23r14,12v-21,52,-90,22,-133,12v-20,1,-23,8,-35,23r-16,-12v14,-20,31,-30,52,-30v9,-3,70,20,80,18","w":232},"\u2274":{"d":"101,-68v37,13,66,22,86,-10r14,12v-18,43,-70,31,-109,17r-20,45r-17,-8r19,-42v-24,-1,-28,7,-41,23r-16,-13v17,-23,36,-35,66,-28r19,-42r-78,-20r0,-24r112,-30r15,-34r18,7r-10,21r34,-9r0,22r-46,12r-18,41r64,17r0,22r-73,-20xm124,-163r-64,17r51,13","w":217},"\u2275":{"d":"101,-68v37,13,66,22,86,-10r14,12v-18,43,-70,31,-109,17r-20,45r-17,-8r19,-42v-24,-1,-28,7,-41,23r-16,-13v17,-23,36,-35,66,-28r17,-38r-76,21r0,-22r87,-23r10,-22r-97,-25r0,-22r106,28r21,-47r18,7r-21,45r45,12r0,24r-70,18xm139,-151r-5,11r23,-6","w":217},"\u2276":{"d":"24,-158r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm193,-69r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22","w":217},"\u2277":{"d":"193,-158r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22xm24,-69r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24","w":217},"\u2278":{"d":"99,-178r0,-33r19,0r0,28r75,-20r0,22r-75,19r0,31r75,20r0,22r-75,-20r0,20r75,20r0,24r-75,20r0,38r-19,0r0,-33r-75,20r0,-22r75,-19r0,-31r-75,-20r0,-22r75,20r0,-20r-75,-20r0,-24xm99,-156r-39,10r39,10r0,-20xm118,-67r0,20r39,-10","w":217},"\u2279":{"d":"118,-178r75,20r0,24r-75,20r0,20r75,-20r0,22r-75,20r0,31r75,19r0,22r-75,-20r0,33r-19,0r0,-38r-75,-20r0,-24r75,-20r0,-20r-75,20r0,-22r75,-20r0,-31r-75,-19r0,-22r75,20r0,-28r19,0r0,33xm118,-156r0,20r40,-10xm99,-67r-39,10r39,10r0,-20","w":217},"\u227a":{"d":"193,-1v-49,-44,-96,-66,-169,-84r0,-23v73,-16,120,-40,169,-83r0,26v-36,31,-77,54,-136,69v57,14,102,36,136,68r0,27","w":217},"\u227b":{"d":"24,-191v49,43,95,67,169,83r0,23v-73,18,-120,40,-169,84r0,-27v34,-32,80,-54,137,-68v-60,-17,-101,-34,-137,-69r0,-26","w":217},"\u227c":{"d":"193,-1v-49,-44,-96,-66,-169,-84r0,-21v72,15,126,37,169,78r0,27xm193,-46v-49,-44,-95,-67,-169,-84r0,-23v74,-17,120,-40,169,-84r0,27v-36,31,-77,54,-136,69v57,14,102,36,136,68r0,27","w":217},"\u227d":{"d":"193,-106r0,21v-73,18,-120,40,-169,84r0,-27v45,-42,97,-61,169,-78xm24,-237v49,44,95,67,169,84r0,23v-74,17,-120,40,-169,84r0,-27v34,-32,80,-54,137,-68v-60,-17,-101,-34,-137,-69r0,-27","w":217},"\u227e":{"d":"193,-69v-51,-31,-98,-46,-169,-58r0,-16v71,-12,119,-26,169,-58r0,22v-31,20,-69,35,-116,44v47,9,85,24,116,44r0,22xm147,-42v19,-1,25,-8,38,-23r14,12v-21,52,-90,22,-133,12v-20,1,-24,8,-36,23r-15,-12v14,-20,30,-30,51,-30v9,-3,71,19,81,18","w":217},"\u227f":{"d":"24,-201v50,32,98,46,169,58r0,16v-71,12,-118,27,-169,58r0,-22v31,-20,69,-35,116,-44v-47,-9,-85,-24,-116,-44r0,-22xm147,-42v19,-1,25,-8,38,-23r14,12v-21,52,-90,22,-133,12v-20,1,-24,8,-36,23r-15,-12v14,-20,30,-30,51,-30v9,-3,71,19,81,18","w":217},"\u2280":{"d":"104,-82v34,14,64,30,89,54r0,27v-32,-28,-65,-50,-101,-64r-30,44r-15,-11r27,-39v-15,-5,-32,-10,-50,-14r0,-23v36,-8,69,-19,97,-33r45,-67r15,11r-22,34v10,-7,21,-17,34,-28r0,26v-17,16,-38,30,-62,42xm99,-109v-11,4,-24,8,-42,13v10,2,19,5,28,8","w":217},"\u2281":{"d":"24,-28v24,-20,37,-30,68,-44r25,-38v-38,-15,-69,-33,-93,-55r0,-26v33,30,63,48,104,64r35,-51r15,11r-31,47v12,4,27,8,46,12r0,23v-34,8,-65,18,-91,31r-43,64r-15,-12r22,-32v-13,8,-27,19,-42,33r0,-27xm135,-103r-12,18v13,-4,26,-8,38,-11v-11,-3,-20,-5,-26,-7","w":217},"\u2282":{"d":"75,-97v0,97,100,70,183,73r0,24r-110,0v-72,2,-100,-31,-100,-97v0,-61,30,-97,100,-97r110,0r0,24r-114,0v-50,-1,-69,23,-69,73","w":306},"\u2283":{"d":"258,-97v0,62,-31,97,-100,97r-110,0r0,-24r114,0v51,0,68,-23,69,-73v0,-50,-19,-73,-69,-73r-114,0r0,-24r110,0v72,-2,100,31,100,97","w":306},"\u2284":{"d":"48,-99v1,-60,31,-100,100,-95r67,0r17,-29r16,10r-11,19r21,0r0,24r-35,0r-86,146r121,0r0,24r-135,-1r-15,26r-16,-11r12,-19v-38,-13,-56,-46,-56,-94xm201,-170v-71,-3,-131,-2,-126,73v3,39,12,61,42,70","w":306},"\u2285":{"d":"215,-185v65,33,58,184,-32,184r-76,1r-15,25r-16,-11r9,-14r-37,0r0,-24r51,0r85,-145v-42,-2,-91,0,-136,-1r0,-24r110,0v17,0,30,1,39,3r19,-32r16,10xm121,-24v67,5,110,-6,110,-73v0,-33,-10,-55,-29,-65","w":306},"\u2286":{"d":"75,-138v-6,96,100,70,183,73r0,24r-110,0v-69,3,-100,-33,-100,-97v0,-61,30,-97,100,-97r110,0r0,24r-114,0v-51,-1,-66,24,-69,73xm258,-22r0,22r-210,0r0,-22r210,0","w":306},"\u2287":{"d":"258,-138v0,62,-31,97,-100,97r-110,0r0,-24v83,-3,190,23,183,-73v-3,-49,-18,-73,-69,-73r-114,0r0,-24r110,0v72,-2,100,31,100,97xm258,-22r0,22r-210,0r0,-22r210,0","w":306},"\u2288":{"d":"95,-49v-77,-35,-59,-207,53,-186r72,0r18,-26r15,11r-10,15r15,0r0,24r-31,0r-98,145r129,1r0,24r-145,-2r-14,21r159,0r0,22r-174,0r-13,20v-7,-6,-20,-11,-9,-20r-14,0r0,-22r28,0xm144,-211v-83,-14,-89,115,-35,141r95,-141r-60,0","w":306},"\u2289":{"d":"229,-215v49,44,37,174,-46,173r-71,1r-13,19r159,0r0,22r-174,0r-13,20v-7,-6,-20,-11,-9,-20r-14,0r0,-22r28,0r13,-19r-41,0r0,-24r58,0r94,-139v-38,-14,-102,-4,-152,-7r0,-24v54,2,128,-7,166,9r24,-35r15,11xm128,-65v65,4,103,-9,103,-73v0,-25,-5,-44,-16,-56","w":306},"\u228a":{"d":"147,-22r13,-19v8,6,21,10,10,19r88,0r0,22r-103,0r-19,30r-15,-12r12,-18r-85,0r0,-22r99,0xm75,-138v-6,96,100,70,183,73r0,24r-110,0v-69,3,-100,-33,-100,-97v0,-61,30,-97,100,-97r110,0r0,24r-114,0v-51,-1,-66,24,-69,73","w":306},"\u228b":{"d":"147,-22r13,-19v8,6,21,10,10,19r88,0r0,22r-103,0r-19,30r-15,-12r12,-18r-85,0r0,-22r99,0xm258,-138v0,62,-31,97,-100,97r-110,0r0,-24v83,-3,190,23,183,-73v-3,-49,-18,-73,-69,-73r-114,0r0,-24r110,0v72,-2,100,31,100,97","w":306},"\u228c":{"d":"117,-75r0,26r-47,-36r47,-37r0,26r30,0r0,21r-30,0xm111,-23v83,0,59,-111,62,-197r24,0r0,97v6,82,-19,123,-86,123v-67,0,-87,-41,-87,-123r0,-97r24,0v3,86,-21,197,63,197","w":220},"\u228d":{"d":"111,-23v83,0,59,-111,62,-197r24,0r0,97v6,82,-19,123,-86,123v-67,0,-87,-41,-87,-123r0,-97r24,0v3,86,-21,197,63,197xm86,-82v0,-13,12,-25,25,-25v12,0,24,12,24,25v0,13,-11,24,-24,24v-13,0,-25,-11,-25,-24","w":220},"\u228e":{"d":"147,-91r0,17r-29,0r0,28r-15,0r0,-28r-29,0r0,-17r29,0r0,-28r15,0r0,28r29,0xm111,-23v83,0,59,-111,62,-197r24,0r0,97v6,82,-19,123,-86,123v-67,0,-87,-41,-87,-123r0,-97r24,0v3,86,-21,197,63,197","w":220},"\u228f":{"d":"74,-24r159,0r0,24r-185,0r0,-194r185,0r0,24r-159,0r0,146","w":269},"\u2290":{"d":"195,-24r0,-146r-159,0r0,-24r185,0r0,194r-185,0r0,-24r159,0","w":269},"\u2291":{"d":"74,-65r159,0r0,24r-185,0r0,-194r185,0r0,24r-159,0r0,146xm233,0r-185,0r0,-22r185,0r0,22","w":269},"\u2292":{"d":"195,-65r0,-146r-159,0r0,-24r185,0r0,194r-185,0r0,-24r159,0xm36,0r0,-22r185,0r0,22r-185,0","w":269},"\u2293":{"d":"207,0r0,-170r-133,0r0,170r-26,0r0,-194r185,0r0,194r-26,0","w":281},"\u2294":{"d":"207,-194r26,0r0,194r-185,0r0,-194r26,0r0,170r133,0r0,-170","w":281},"\u2295":{"d":"48,-123v0,-68,59,-128,126,-125v71,3,118,51,121,124v2,67,-58,124,-124,124v-66,0,-123,-57,-123,-123xm184,-136r88,0v-4,-45,-42,-84,-88,-88r0,88xm161,-136r0,-88v-45,4,-84,43,-89,88r89,0xm184,-113r0,89v45,-4,84,-43,88,-89r-88,0xm161,-113r-89,0v4,45,44,84,89,89r0,-89","w":343},"\u2296":{"d":"48,-123v0,-68,59,-128,126,-125v71,3,118,51,121,124v2,67,-58,124,-124,124v-66,0,-123,-57,-123,-123xm272,-136v-2,-79,-110,-118,-167,-63v-19,17,-30,38,-33,63r200,0xm72,-113v4,77,110,118,168,63v19,-17,29,-38,32,-63r-200,0","w":343},"\u2297":{"d":"48,-125v-1,-66,57,-125,126,-123v69,2,121,52,121,124v0,72,-52,124,-123,124v-72,0,-122,-52,-124,-125xm171,-140r63,-63v-37,-29,-88,-30,-125,0xm155,-124r-63,-63v-29,36,-28,90,0,126xm188,-124r62,63v30,-35,29,-90,0,-126xm171,-108r-62,63v34,30,91,29,125,0","w":342},"\u2298":{"d":"48,-125v-1,-66,57,-125,126,-123v69,2,121,52,121,124v0,72,-52,124,-123,124v-72,0,-122,-52,-124,-125xm234,-203v-64,-54,-163,-1,-163,79v0,24,6,44,21,62xm109,-45v62,54,163,1,163,-79v0,-23,-7,-44,-22,-63","w":342},"\u2299":{"d":"150,-124v0,-12,10,-22,22,-22v11,0,21,10,21,22v0,13,-10,22,-22,22v-11,0,-21,-10,-21,-22xm48,-125v-1,-65,56,-124,125,-123v71,2,122,54,122,124v0,71,-53,124,-124,124v-71,0,-120,-53,-123,-125xm272,-125v0,-54,-46,-100,-102,-100v-52,0,-99,47,-99,101v0,54,45,101,100,101v54,0,101,-47,101,-102","w":342},"\u229a":{"d":"138,-124v0,-18,15,-34,34,-34v17,0,34,15,33,34v0,18,-14,33,-34,33v-17,0,-33,-14,-33,-33xm188,-124v0,-9,-8,-16,-17,-16v-9,0,-16,7,-16,16v0,9,7,16,16,16v9,0,18,-7,17,-16xm48,-125v-1,-65,56,-124,125,-123v71,2,122,54,122,124v0,71,-53,124,-124,124v-71,0,-120,-53,-123,-125xm272,-125v0,-54,-46,-100,-102,-100v-52,0,-99,47,-99,101v0,54,45,101,100,101v54,0,101,-47,101,-102","w":342},"\u229b":{"d":"156,-124r-41,-15r15,-26r33,29r-7,-43r31,0r-7,43r33,-29r15,26r-42,15r42,15r-15,25r-33,-28r7,43r-31,0r7,-43r-33,28r-15,-25xm48,-125v-1,-65,56,-124,125,-123v71,2,122,54,122,124v0,71,-53,124,-124,124v-71,0,-120,-53,-123,-125xm272,-125v0,-54,-46,-100,-102,-100v-52,0,-99,47,-99,101v0,54,45,101,100,101v54,0,101,-47,101,-102","w":342},"\u229c":{"d":"244,-164r0,23r-143,0r0,-23r143,0xm244,-108r0,23r-143,0r0,-23r143,0xm48,-123v0,-68,59,-128,126,-125v71,3,118,51,121,124v2,67,-58,124,-124,124v-66,0,-123,-57,-123,-123xm272,-125v0,-53,-45,-100,-101,-100v-52,0,-99,47,-99,101v0,54,46,100,100,100v54,0,100,-45,100,-101","w":343},"\u229d":{"d":"244,-136r0,23r-143,0r0,-23r143,0xm48,-123v0,-68,59,-128,126,-125v71,3,118,51,121,124v2,67,-58,124,-124,124v-66,0,-123,-57,-123,-123xm272,-125v0,-53,-45,-100,-101,-100v-52,0,-99,47,-99,101v0,54,46,100,100,100v54,0,100,-45,100,-101","w":343},"\u229e":{"d":"48,0r0,-235r235,0r0,235r-235,0xm154,-211r-82,0r0,81r82,0r0,-81xm178,-211r0,81r81,0r0,-81r-81,0xm154,-24r0,-81r-82,0r0,81r82,0xm178,-24r81,0r0,-81r-81,0r0,81","w":331},"\u229f":{"d":"48,0r0,-235r235,0r0,235r-235,0xm259,-105r-187,0r0,81r187,0r0,-81xm259,-130r0,-81r-187,0r0,81r187,0","w":331},"\u22a0":{"d":"48,0r0,-235r235,0r0,235r-235,0xm89,-24r153,0r-76,-77xm259,-41r0,-153r-77,76xm242,-211r-153,0r77,76xm72,-194r0,153r77,-77","w":331},"\u22a1":{"d":"144,-118v0,-11,9,-21,22,-21v11,0,21,9,21,21v0,12,-9,22,-22,22v-11,0,-21,-9,-21,-22xm48,0r0,-235r235,0r0,235r-235,0xm72,-211r0,187r187,0r0,-187r-187,0","w":331},"\u22a2":{"d":"283,-130r0,25r-211,0r0,105r-24,0r0,-235r24,0r0,105r211,0","w":307},"\u22a3":{"d":"24,-130r211,0r0,-105r24,0r0,235r-24,0r0,-105r-211,0r0,-25","w":307},"\u22a4":{"d":"130,0r0,-211r-106,0r0,-24r235,0r0,24r-105,0r0,211r-24,0","w":283},"\u22a5":{"d":"130,-235r24,0r0,211r105,0r0,24r-235,0r0,-24r106,0r0,-211","w":283},"\u22a6":{"d":"166,-130r0,25r-94,0r0,105r-24,0r0,-235r24,0r0,105r94,0","w":189},"\u22a7":{"d":"48,-235r24,0r0,78r94,0r0,24r-94,0r0,31r94,0r0,24r-94,0r0,78r-24,0r0,-235","w":189},"\u22a8":{"d":"48,-235r24,0r0,78r211,0r0,24r-211,0r0,31r211,0r0,24r-211,0r0,78r-24,0r0,-235","w":307},"\u22a9":{"d":"127,-130r156,0r0,25r-156,0r0,105r-24,0r0,-235r24,0r0,105xm72,-235r0,235r-24,0r0,-235r24,0","w":307},"\u22aa":{"d":"127,0r-24,0r0,-235r24,0r0,235xm158,-235r24,0r0,105r101,0r0,25r-101,0r0,105r-24,0r0,-235xm72,-235r0,235r-24,0r0,-235r24,0","w":307},"\u22ab":{"d":"48,-235r24,0r0,235r-24,0r0,-235xm103,-235r24,0r0,78r211,0r0,24r-211,0r0,31r211,0r0,24r-211,0r0,78r-24,0r0,-235","w":362},"\u22ac":{"d":"181,-130r102,0r0,25r-113,0r-56,125r-17,-9r53,-116r-78,0r0,105r-24,0r0,-235r24,0r0,105r89,0r63,-138r16,8","w":307},"\u22ad":{"d":"173,-157r51,-111r16,8r-46,103r89,0r0,24r-100,0r-14,31r114,0r0,24r-125,0r-44,97r-17,-9r40,-88r-65,0r0,78r-24,0r0,-235r24,0r0,78r101,0xm162,-133r-90,0r0,31r76,0","w":307},"\u22ae":{"d":"161,-130r63,-138r16,8r-59,130r102,0r0,25r-113,0r-43,95v-1,4,2,12,-4,10r-9,20r-17,-9r6,-14r0,-238r24,0r0,111r34,0xm150,-105r-23,0r0,49xm72,-241r0,241r-24,0r0,-241r24,0","w":307},"\u22af":{"d":"198,-157r50,-111r17,8r-46,103r119,0r0,24r-130,0r-14,31r144,0r0,24r-155,0r-44,97r-17,-9r5,-10r-24,0r0,-235r24,0r0,78r71,0xm187,-133r-60,0r0,31r46,0xm162,-78r-35,0r0,77xm48,-235r24,0r0,235r-24,0r0,-235","w":362},"\u22b0":{"d":"172,-28v9,1,16,-7,15,-16v-8,-37,-101,-60,-163,-61r0,-22v70,-3,121,-18,152,-41v14,-11,15,-34,-4,-36v-8,0,-18,6,-29,16r-13,-16v23,-35,81,-28,83,15v2,37,-60,67,-105,73v45,9,105,32,105,73v0,42,-60,50,-83,16r13,-16v11,10,21,15,29,15","w":260},"\u22b1":{"d":"73,-188v7,38,102,61,163,61r0,22v-71,3,-121,19,-152,42v-14,10,-15,33,4,35v8,0,18,-5,29,-15r14,16v-23,34,-81,27,-83,-16v-2,-38,61,-65,105,-73v-45,-9,-105,-32,-105,-73v0,-43,61,-50,83,-15r-14,16v-16,-17,-38,-24,-44,0","w":260},"\u22b2":{"d":"240,-169r0,126r-215,-63xm106,-106r111,32r0,-64","w":287},"\u22b3":{"d":"48,-169r215,63r-215,63r0,-126xm181,-106r-110,-32r0,64","w":287},"\u22b4":{"d":"240,-175r0,126r-215,-63xm106,-112r111,32r0,-64xm240,-12r-216,0r0,-22r216,0r0,22","w":287},"\u22b5":{"d":"48,-175r215,63r-215,63r0,-126xm181,-112r-110,-32r0,64xm48,-12r0,-22r216,0r0,22r-216,0","w":287},"\u22b6":{"d":"265,-115v0,37,-57,46,-66,10r-97,0v-9,36,-66,28,-66,-10v0,-37,57,-45,66,-10r97,0v9,-34,66,-28,66,10xm85,-115v0,-8,-7,-17,-16,-16v-8,0,-15,8,-15,16v0,9,7,16,16,16v9,0,15,-8,15,-16","w":300},"\u22b7":{"d":"265,-115v0,37,-57,46,-66,10r-97,0v-9,36,-66,28,-66,-10v0,-37,57,-45,66,-10r97,0v9,-34,66,-28,66,10xm247,-115v0,-8,-7,-17,-16,-16v-7,0,-15,8,-15,16v0,9,6,16,15,16v9,0,16,-7,16,-16","w":300},"\u22b8":{"d":"220,-115v0,36,-57,47,-66,10r-130,0r0,-20r130,0v9,-34,66,-27,66,10xm201,-115v0,-8,-6,-17,-15,-16v-7,0,-17,8,-16,16v0,9,7,16,16,16v9,0,15,-8,15,-16","w":255},"\u22b9":{"d":"24,-125r82,0r0,24r-82,0r0,-24xm168,-125r82,0r0,24r-82,0r0,-24xm149,-82r0,82r-24,0r0,-82r24,0xm149,-144r-24,0r0,-82r24,0r0,82","w":273},"\u22ba":{"d":"77,0r0,-211r-53,0r0,-24r130,0r0,24r-53,0r0,211r-24,0","w":177},"\u22bb":{"d":"125,-38r-101,-202r27,0r74,148r74,-148r27,0xm226,0r-202,0r0,-22r202,0r0,22","w":250},"\u22bc":{"d":"125,-202r101,202r-27,0r-74,-148r-74,148r-27,0xm226,-240r0,22r-202,0r0,-22r202,0","w":250},"\u22bd":{"d":"125,0r-101,-202r27,0r74,149r74,-149r27,0xm226,-240r0,22r-202,0r0,-22r202,0","w":250},"\u22be":{"d":"72,-161v68,8,128,67,137,137r79,0r0,24r-240,0r0,-240r24,0r0,79xm72,-138r0,114r113,0v-9,-56,-55,-104,-113,-114","w":312},"\u22bf":{"d":"264,-240r0,240r-240,0xm240,-191r-167,167r167,0r0,-167","w":312},"\u22c0":{"d":"125,-204r101,204r-36,0r-65,-134r-65,134r-36,0","w":250},"\u22c1":{"d":"125,0r-101,-204r36,0r65,134r65,-134r36,0","w":250},"\u22c2":{"d":"126,-204v47,0,78,32,78,78r0,126r-33,0v-6,-66,24,-171,-45,-171v-68,0,-38,106,-44,171r-34,0r0,-126v0,-49,32,-78,78,-78","w":252},"\u22c3":{"d":"126,-34v68,0,39,-105,45,-170r33,0r0,126v0,49,-32,78,-78,78v-47,0,-78,-32,-78,-78r0,-126r34,0v7,65,-25,170,44,170","w":252},"\u22c4":{"d":"48,-95r48,-69r49,69r-49,69xm115,-95r-19,-27r-18,27r18,26","w":192},"\u22c5":{"d":"19,-127v0,-20,17,-38,38,-38v19,0,38,18,38,38v0,20,-18,38,-38,38v-19,0,-38,-17,-38,-38","w":113},"\u22c6":{"d":"73,-143r12,35r38,0r-31,22r12,36r-31,-22r-30,22r11,-36r-30,-22r38,0","w":146},"\u22c7":{"d":"219,-6r-77,-77r-77,76r-17,-17r65,-65r-64,0r0,-24r63,0r-63,-64r17,-17r76,76r77,-77r17,17r-65,65r65,0r0,24r-65,0r65,66xm120,-33v-1,-11,9,-21,22,-21v11,0,21,9,21,21v0,11,-9,22,-21,22v-12,0,-22,-10,-22,-22xm120,-168v0,-12,10,-22,22,-22v11,0,21,10,21,22v0,11,-9,22,-21,22v-12,0,-22,-10,-22,-22","w":284},"\u22c8":{"d":"48,0r0,-245r105,105r106,-105r0,245r-106,-106xm235,-58r0,-129r-65,64xm137,-123r-65,-64r0,129","w":307},"\u22c9":{"d":"48,0r0,-245r106,105r105,-105r0,34r-89,88r89,89r0,34r-105,-106xm137,-123r-65,-64r0,129","w":307},"\u22ca":{"d":"259,0r-106,-106r-105,106r0,-34r89,-89r-89,-88r0,-34r105,105r106,-105r0,245xm170,-123r65,65r0,-129","w":307},"\u22cb":{"d":"259,0r-106,-106r-105,106r0,-34r89,-89r-89,-88r0,-34r211,211r0,34","w":307},"\u22cc":{"d":"48,0r0,-34r211,-211r0,34r-89,88r89,89r0,34r-106,-106","w":307},"\u22cd":{"d":"193,-81r0,19r-189,0r0,-19r189,0xm175,-108v-24,-44,-75,-3,-117,-3v-23,0,-41,-10,-52,-31r14,-12v14,14,19,21,38,23v10,1,72,-22,81,-19v20,0,38,10,52,30","w":197},"\u22ce":{"d":"204,-169v-44,49,-67,95,-84,169r-23,0v-17,-74,-40,-120,-84,-169r27,0v31,36,54,77,69,136v14,-57,36,-102,68,-136r27,0","w":217},"\u22cf":{"d":"13,0v44,-49,67,-95,84,-169r23,0v17,74,40,120,84,169r-27,0v-32,-34,-54,-80,-68,-137v-17,60,-34,101,-69,137r-27,0","w":217},"\u22d0":{"d":"48,-97v0,-61,30,-97,100,-97r82,0r0,24r-86,0v-50,-1,-69,23,-69,73v0,86,78,73,155,73r0,24r-82,0v-72,2,-100,-31,-100,-97xm97,-97v3,-33,11,-53,48,-53r85,0r0,24v-40,5,-107,-18,-107,29v0,46,67,24,107,29r0,24v-61,-2,-139,17,-133,-53","w":278},"\u22d1":{"d":"203,-97v-3,-50,-18,-74,-68,-73r-87,0r0,-24r82,0v72,-2,100,31,100,97v0,62,-30,97,-100,97r-82,0r0,-24v77,0,161,14,155,-73xm182,-97v0,33,-12,54,-48,53r-86,0r0,-24v40,-5,107,18,107,-29v0,-47,-67,-24,-107,-29r0,-24r86,0v37,-2,48,20,48,53","w":278},"\u22d2":{"d":"128,-196v49,0,81,29,81,79r0,117r-25,0v-3,-72,20,-174,-56,-174v-76,0,-51,103,-55,174r-25,0r0,-117v-2,-51,31,-79,80,-79xm138,-119v0,-17,-20,-12,-20,0r0,119r-25,0v6,-54,-21,-153,35,-153v57,0,28,99,35,153r-25,0r0,-119","w":256},"\u22d3":{"d":"128,-23v76,0,53,-102,56,-173r25,0r0,116v2,52,-31,80,-81,80v-48,0,-80,-29,-80,-80r0,-116r25,0v4,71,-21,173,55,173xm128,-66v6,0,11,-5,10,-12r0,-118r25,0v-7,55,23,152,-35,152v-57,0,-29,-99,-35,-152r25,0r0,118v0,7,4,12,10,12","w":256},"\u22d4":{"d":"140,-166v69,9,70,78,67,166r-23,0v-5,-59,13,-133,-44,-144r0,144r-25,0r0,-143v-50,10,-42,79,-42,143r-25,0v-3,-85,-4,-157,67,-166r0,-40r25,0r0,40","w":255},"\u22d5":{"d":"89,-160r0,-80r24,0r0,80r18,0r0,-80r24,0r0,80r53,0r0,24r-53,0r0,32r53,0r0,24r-53,0r0,80r-24,0r0,-80r-18,0r0,80r-24,0r0,-80r-53,0r0,-24r53,0r0,-32r-53,0r0,-24r53,0xm131,-136r-18,0r0,32r18,0r0,-32","w":244},"\u22d6":{"d":"24,-82r0,-21r172,-82r0,25r-145,67r145,68r0,25xm130,-93v0,-11,9,-21,22,-21v11,0,21,10,21,21v0,12,-10,22,-22,22v-11,1,-21,-9,-21,-22","w":219},"\u22d7":{"d":"196,-82r-172,82r0,-25r145,-68r-145,-67r0,-25r172,82r0,21xm47,-93v0,-11,9,-21,22,-21v11,0,21,9,21,21v0,12,-9,22,-21,22v-12,1,-22,-9,-22,-22","w":219},"\u22d8":{"d":"24,-82r0,-21r151,-82r0,25r-124,67r124,68r0,25xm130,-82r0,-21r150,-82r0,25r-124,67r124,68r0,25xm235,-82r0,-21r150,-82r0,25r-123,67r123,68r0,25","w":409},"\u22d9":{"d":"385,-82r-150,82r0,-25r124,-68r-124,-67r0,-25r150,82r0,21xm280,-82r-150,82r0,-25r123,-68r-123,-67r0,-25r150,82r0,21xm175,-82r-151,82r0,-25r124,-68r-124,-67r0,-25r151,82r0,21","w":409},"\u22da":{"d":"193,-69r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22xm24,-226r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm24,-145r169,0r0,19r-169,0r0,-19","w":217},"\u22db":{"d":"24,-69r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24xm193,-226r0,24r-169,45r0,-22r134,-35r-134,-35r0,-22xm193,-145r0,19r-169,0r0,-19r169,0","w":217},"\u22dc":{"d":"51,-81r142,57r0,24r-169,-70r0,-23r169,-70r0,24xm24,-177r0,-20r169,0r0,20r-169,0","w":217},"\u22dd":{"d":"167,-81r-143,-58r0,-24r169,70r0,23r-169,70r0,-24xm193,-177r-169,0r0,-20r169,0r0,20","w":217},"\u22de":{"d":"24,-131r0,-22v74,-17,120,-40,169,-84r0,27v-44,43,-97,62,-169,79xm193,-1v-49,-43,-96,-67,-169,-84r0,-23v73,-17,120,-39,169,-83r0,26v-34,32,-79,55,-136,69v61,16,99,35,136,68r0,27","w":217},"\u22df":{"d":"24,-237v49,44,95,67,169,84r0,22v-71,-16,-126,-38,-169,-79r0,-27xm24,-191v49,44,95,66,169,83r0,23v-73,17,-120,41,-169,84r0,-27v36,-32,77,-54,137,-68v-57,-14,-103,-37,-137,-69r0,-26","w":217},"\u22e0":{"d":"91,-88r9,-19v-23,-9,-48,-17,-76,-23r0,-23v44,-10,83,-24,117,-44r24,-53r17,8r-12,25v7,-6,15,-12,23,-20r0,27v-13,12,-26,22,-40,30r-28,63v27,11,48,26,68,44r0,27v-26,-23,-51,-41,-76,-53r-9,18v32,13,61,31,85,53r0,27v-30,-28,-58,-44,-93,-60r-45,98r-17,-9r44,-96v-16,-6,-35,-12,-58,-17r0,-21v27,6,50,11,67,18xm127,-166v-19,9,-42,18,-70,25v19,5,36,10,51,16","w":217},"\u22e1":{"d":"108,-81v23,-10,51,-18,85,-25r0,21v-38,8,-70,20,-98,34r-40,88r-17,-9r29,-63v-13,8,-27,20,-43,34r0,-27v18,-16,37,-30,58,-41r13,-27v-24,12,-48,29,-71,50r0,-27v24,-23,51,-39,84,-51r13,-29v-39,-14,-72,-33,-97,-57r0,-27v36,31,60,49,105,65r36,-78r17,8r-35,77v12,4,27,8,46,12r0,23v-28,6,-51,14,-72,22xm139,-147r-7,14r29,-8","w":217},"\u22e2":{"d":"126,-65r107,0r0,24r-118,0r-9,19r127,0r0,22r-137,0r-9,21r-17,-9r6,-12r-28,0r0,-22r37,0r9,-19r-46,0r0,-194r134,0r15,-32r16,8r-10,24r30,0r0,24r-41,0xm105,-65r66,-146r-97,0r0,146r31,0","w":269},"\u22e3":{"d":"91,-65r66,-146r-121,0r0,-24r132,0r14,-32r17,8r-11,24r33,0r0,194r-121,0r-9,19r130,0r0,22r-139,0r-10,21r-16,-9r5,-12r-25,0r0,-22r35,0r9,-19r-44,0r0,-24r55,0xm111,-65r84,0r0,-146r-18,0","w":269},"\u22e4":{"d":"140,0r-20,30r-14,-12r12,-18r-70,0r0,-22r84,0r13,-19v7,6,20,10,10,19r78,0r0,22r-93,0xm74,-65r159,0r0,24r-185,0r0,-194r185,0r0,24r-159,0r0,146","w":269},"\u22e5":{"d":"112,0r-76,0r0,-22r91,0r13,-19v7,6,20,11,9,19r72,0r0,22r-87,0r-19,30r-15,-12xm195,-65r0,-146r-159,0r0,-24r185,0r0,194r-185,0r0,-24r159,0","w":269},"\u22e6":{"d":"137,-45v30,8,42,-1,57,-20r14,12v-17,31,-45,38,-83,25r-18,27r-15,-12r15,-21v-33,-11,-51,-9,-67,16r-16,-12v25,-33,49,-38,94,-21r14,-21r15,11xm31,-145r169,-45r0,22r-133,35r133,35r0,22r-169,-45r0,-24","w":232},"\u22e7":{"d":"200,-145r0,24r-169,45r0,-22r133,-35r-133,-35r0,-22xm137,-45v30,8,42,-1,57,-20r14,12v-17,31,-45,38,-83,25r-18,27r-15,-12r15,-21v-33,-11,-51,-9,-67,16r-16,-12v25,-33,49,-38,94,-21r14,-21r15,11","w":232},"\u22e8":{"d":"202,-69v-51,-31,-98,-46,-169,-58r0,-16v71,-12,119,-26,169,-58r0,22v-31,20,-69,35,-116,44v47,9,85,24,116,44r0,22xm137,-45v30,8,42,-1,57,-20r14,12v-17,31,-45,38,-83,25r-18,27r-15,-12r15,-21v-33,-11,-51,-9,-67,16r-16,-12v25,-33,49,-38,94,-21r14,-21r15,11","w":232},"\u22e9":{"d":"33,-201v51,31,98,46,169,58r0,16v-70,12,-117,27,-169,58r0,-22v31,-20,70,-35,117,-44v-47,-9,-86,-24,-117,-44r0,-22xm137,-45v30,8,42,-1,57,-20r14,12v-17,31,-45,38,-83,25r-18,27r-15,-12r15,-21v-33,-11,-51,-9,-67,16r-16,-12v25,-33,49,-38,94,-21r14,-21r15,11","w":232},"\u22ea":{"d":"173,-149r67,-20r0,126r-117,-34r-36,54r-15,-11r32,-48r-79,-24r120,-35r48,-71r15,11xm124,-111r-18,5v9,5,15,4,18,-5xm152,-119r-15,22r80,23r0,-64","w":287},"\u22eb":{"d":"158,-137r43,-63r15,11r-39,58r86,25r-130,38r-39,57r-14,-11r25,-37r-57,16r0,-126xm163,-111r-9,13r27,-8xm144,-117r-73,-21r0,64r55,-16","w":287},"\u22ec":{"d":"172,-155r68,-20r0,126r-103,-30r-20,45r123,0r0,22r-133,0r-18,38r-16,-9r13,-29r-62,0r0,-22r72,0r23,-50r-94,-28r123,-37r29,-63r17,9xm135,-121r-29,9r23,6xm159,-127r-12,27r70,20r0,-64","w":287},"\u22ed":{"d":"160,-142r32,-70r17,9r-30,66r84,25r-110,32r-21,46r132,0r0,22r-142,0r-18,38r-16,-9r13,-29r-53,0r0,-22r63,0r18,-39r-81,24r0,-126xm181,-112v-8,-4,-14,-5,-16,5xm151,-121r-80,-23r0,64r71,-21","w":287},"\u22ee":{"d":"120,-22v0,-12,9,-24,22,-23v13,0,23,11,23,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm120,-217v0,-12,10,-22,22,-22v13,0,23,10,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm120,-120v0,-12,10,-22,22,-22v13,0,23,10,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22","w":284},"\u22ef":{"d":"48,-108v0,-12,10,-22,22,-22v13,0,23,10,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm246,-108v0,-12,10,-22,22,-22v13,0,23,10,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm147,-108v0,-12,10,-22,22,-22v13,0,23,10,23,22v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22","w":338},"\u22f0":{"d":"48,-22v0,-12,9,-24,22,-23v13,0,23,11,23,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm222,-193v0,-12,9,-24,22,-23v12,1,22,10,22,23v0,12,-9,22,-22,22v-12,0,-23,-9,-22,-22xm135,-108v0,-12,10,-22,22,-22v13,0,24,9,23,22v0,12,-10,22,-23,22v-12,0,-22,-10,-22,-22","w":314},"\u22f1":{"d":"222,-22v0,-13,8,-23,23,-23v13,-1,21,11,21,23v0,12,-9,22,-22,22v-12,0,-23,-9,-22,-22xm48,-193v0,-13,8,-23,23,-23v13,0,22,11,22,23v0,12,-10,22,-23,22v-12,0,-23,-9,-22,-22xm135,-108v0,-13,9,-22,23,-22v12,0,21,10,21,22v0,12,-9,22,-22,22v-12,0,-23,-9,-22,-22","w":314},"\u2300":{"d":"40,-31v-54,-66,36,-163,109,-109r9,-9r14,13r-10,9v41,49,3,130,-60,127v-18,0,-34,-6,-49,-17r-8,8r-14,-13xm136,-127v-51,-38,-123,29,-84,84xm65,-30v51,43,128,-27,85,-84","w":203}}});

}catch(e){console.log('Error in MiniGlobal_Pro_Headline_400.font: ' + e.description);}

// ---- model_data_js ----
try{ 
var defaultModel = new Array();
// Add 3 default models
defaultModel.push({body:'-1', type:'-1'});
defaultModel.push({body:'-1', type:'-1'});
defaultModel.push({body:'-1', type:'-1'});
// Init market default model
defaultModel[0] = {body: 'mini_cabrio', type: 'cooper_s'};
var defaultMinimalismModel = {body: '', type: ''};
var baseConfiguratorLink =  miniUrlFix.fixAbsoluteUrl('/configurator/index.html');
var modelData = {   
"mini.one_55.acceleration_0_100" : '13,2 s',
"mini.one_55.acceleration_0_100_num" : '13.2',
"mini.one_55.acceleration_80_120" : '',
"mini.one_55.acceleration_80_120_num" : '13.5',
"mini.one_55.allowed_axle_load_front_rear" : '815/730 kg',
"mini.one_55.basic_financing_price" : '139,00 â‚¬',
"mini.one_55.basic_financing_price_num" : '139.00',
"mini.one_55.basic_price" : '15.550 â‚¬',
"mini.one_55.basic_price_num" : '15550',
"mini.one_55.body_type" : 'CP',
"mini.one_55.charging_type" : '',
"mini.one_55.co2_emission" : '127 g/km',
"mini.one_55.co2_emission_num" : '127',
"mini.one_55.color" : 'M900',
"mini.one_55.color_line" : '4C1',
"mini.one_55.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini.one_55.cubic_capacity" : '1598 cmÂ³',
"mini.one_55.cubic_capacity_num" : '1598',
"mini.one_55.cushion_material" : 'APE1',
"mini.one_55.cylinder_type_valve" : '4/Reihe/4',
"mini.one_55.dimensions" : '3723/1683/1407 mm',
"mini.one_55.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_55.drive_type" : '',
"mini.one_55.drive_type_num" : '',
"mini.one_55.elasticity" : '13,5/16,7 s',
"mini.one_55.elasticity_80_100_5" : '16,7 s',
"mini.one_55.elasticity_num" : '13.5',
"mini.one_55.engine" : 'One (55 kW)',
"mini.one_55.engine_hood_stripes" : 'ohne',
"mini.one_55.engine_num" : '',
"mini.one_55.engine_type" : '',
"mini.one_55.exterior_mirror" : '-',
"mini.one_55.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3354,47 EUR<br />Anzahlung in % 21,57<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 12.195,53 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 243,91 EUR<br />Darlehensgesamtbetrag 13.417,51 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 8.552,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit .',
"mini.one_55.financing_disclaimer_headline1" : '',
"mini.one_55.financing_disclaimer_headline2" : '',
"mini.one_55.folding_top_color" : '',
"mini.one_55.front_brakes" : '',
"mini.one_55.fuel_consumption_combined" : '5,4 l/100 km',
"mini.one_55.fuel_consumption_combined_num" : '5.4',
"mini.one_55.fuel_consumption_extra_urban" : '4,4 l/100 km',
"mini.one_55.fuel_consumption_extra_urban_num" : '4.4',
"mini.one_55.fuel_consumption_urban" : '7,2 l/100 km',
"mini.one_55.fuel_consumption_urban_num" : '7.2',
"mini.one_55.fuel_type" : 'Benzin',
"mini.one_55.fuel_type_num" : '',
"mini.one_55.id" : 'one_55',
"mini.one_55.infomaterial_id" : '',
"mini.one_55.interior_surface" : '-',
"mini.one_55.luggage_capacity" : '160 â€“ 680 l',
"mini.one_55.luggage_capacity_num" : '160',
"mini.one_55.market_attr1" : '',
"mini.one_55.market_attr2" : '',
"mini.one_55.market_attr3" : '',
"mini.one_55.max_output" : '55/75/6000 kW/PS/1/min',
"mini.one_55.max_output_num" : '55',
"mini.one_55.max_permissible_roof_load" : '75 kg',
"mini.one_55.max_permissible_roof_load_num" : '75',
"mini.one_55.max_permissible_weight" : '1520 kg',
"mini.one_55.max_permissible_weight_num" : '1520',
"mini.one_55.max_torque" : '140/2250 Nm/1/min',
"mini.one_55.max_torque_num" : '140',
"mini.one_55.max_torque_overboost" : '-',
"mini.one_55.max_torque_overboost_num" : '-',
"mini.one_55.max_towed_load" : '-',
"mini.one_55.model_code" : 'SR11',
"mini.one_55.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/financial_services/'),
"mini.one_55.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/modelcomparison.jpg'),
"mini.one_55.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/model_filter_small.jpg'),
"mini.one_55.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/model_filter_medium.jpg'),
"mini.one_55.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55.model_name" : 'MINI One 55 kW',
"mini.one_55.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/model_quickfacts_55kw.html'),
"mini.one_55.output_per_litre" : '',
"mini.one_55.payload" : '450 kg',
"mini.one_55.range" : '740 km',
"mini.one_55.rear_brakes" : '',
"mini.one_55.rim_dimension" : '5,5 J x 15 St',
"mini.one_55.roof_color" : '-',
"mini.one_55.seat_type" : 'Basis',
"mini.one_55.short_description" : '',
"mini.one_55.stroke_bore" : '85,8/77,0 mm',
"mini.one_55.tank_capacity" : '40 l',
"mini.one_55.tank_capacity_num" : '40',
"mini.one_55.top_speed" : '175 km/h',
"mini.one_55.top_speed_num" : '175',
"mini.one_55.transmission" : '',
"mini.one_55.unladen_weight" : '1145 kg',
"mini.one_55.unladen_weight_num" : '1145',
"mini.one_55.weight_ratio" : '',
"mini.one_55.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_55.wheels" : '175/65 R 15 84H',
"mini.one_70.acceleration_0_100" : '10,5 [12,3] s',
"mini.one_70.acceleration_0_100_num" : '10.5',
"mini.one_70.acceleration_80_120" : '',
"mini.one_70.acceleration_80_120_num" : '',
"mini.one_70.allowed_axle_load_front_rear" : '815/730 [855/730] kg',
"mini.one_70.basic_financing_price" : '159,00 â‚¬',
"mini.one_70.basic_financing_price_num" : '159.00',
"mini.one_70.basic_price" : '16.850 â‚¬',
"mini.one_70.basic_price_num" : '16850',
"mini.one_70.body_type" : 'CP',
"mini.one_70.charging_type" : '',
"mini.one_70.co2_emission" : '127 [150] g/km',
"mini.one_70.co2_emission_num" : '127',
"mini.one_70.color" : 'M900',
"mini.one_70.color_line" : '4C1',
"mini.one_70.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini.one_70.cubic_capacity" : '1598 cmÂ³',
"mini.one_70.cubic_capacity_num" : '1598',
"mini.one_70.cushion_material" : 'APE1',
"mini.one_70.cylinder_type_valve" : '4/Reihe/4',
"mini.one_70.dimensions" : '3723/1683/1407 mm',
"mini.one_70.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_70.drive_type" : '',
"mini.one_70.drive_type_num" : '',
"mini.one_70.elasticity" : '12,1/15,3 s',
"mini.one_70.elasticity_80_100_5" : '15,3 s',
"mini.one_70.elasticity_num" : '12.1',
"mini.one_70.engine" : 'One (72 kW)',
"mini.one_70.engine_hood_stripes" : 'ohne',
"mini.one_70.engine_num" : '',
"mini.one_70.engine_type" : '',
"mini.one_70.exterior_mirror" : '-',
"mini.one_70.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.358,20 EUR<br />Anzahlung in % 19,93<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 13.491,80 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 269,84 EUR<br />Darlehensgesamtbetrag 14.832,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 9.267,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.one_70.financing_disclaimer_headline1" : '',
"mini.one_70.financing_disclaimer_headline2" : '',
"mini.one_70.folding_top_color" : '',
"mini.one_70.front_brakes" : '',
"mini.one_70.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini.one_70.fuel_consumption_combined_num" : '5.4',
"mini.one_70.fuel_consumption_extra_urban" : '4,4 [5,1] l/100 km',
"mini.one_70.fuel_consumption_extra_urban_num" : '4.4',
"mini.one_70.fuel_consumption_urban" : '7,2 [8,7] l/100 km',
"mini.one_70.fuel_consumption_urban_num" : '7.2',
"mini.one_70.fuel_type" : 'Benzin',
"mini.one_70.fuel_type_num" : '',
"mini.one_70.id" : 'one_70',
"mini.one_70.infomaterial_id" : '',
"mini.one_70.interior_surface" : '-',
"mini.one_70.luggage_capacity" : '160 â€“ 680 l',
"mini.one_70.luggage_capacity_num" : '160',
"mini.one_70.market_attr1" : '',
"mini.one_70.market_attr2" : '',
"mini.one_70.market_attr3" : '',
"mini.one_70.max_output" : '72/98/6000 kW/PS/1/min',
"mini.one_70.max_output_num" : '72',
"mini.one_70.max_permissible_roof_load" : '75 kg',
"mini.one_70.max_permissible_roof_load_num" : '75',
"mini.one_70.max_permissible_weight" : '1520 [1560] kg',
"mini.one_70.max_permissible_weight_num" : '1520',
"mini.one_70.max_torque" : '153/3000 Nm/1/min',
"mini.one_70.max_torque_num" : '153',
"mini.one_70.max_torque_overboost" : '-',
"mini.one_70.max_torque_overboost_num" : '-',
"mini.one_70.max_towed_load" : '-',
"mini.one_70.model_code" : 'SR31',
"mini.one_70.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/financial_services/'),
"mini.one_70.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/modelcomparison.jpg'),
"mini.one_70.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/model_filter_small.jpg'),
"mini.one_70.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one/model_filter_medium.jpg'),
"mini.one_70.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70.model_name" : 'MINI One 72 kW',
"mini.one_70.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/model_quickfacts_70kw.html'),
"mini.one_70.output_per_litre" : '',
"mini.one_70.payload" : '450 kg',
"mini.one_70.range" : '740 [625] km',
"mini.one_70.rear_brakes" : '',
"mini.one_70.rim_dimension" : '5,5 J x 15 St',
"mini.one_70.roof_color" : '-',
"mini.one_70.seat_type" : 'Basis',
"mini.one_70.short_description" : '-',
"mini.one_70.stroke_bore" : '85,8/77,0 mm',
"mini.one_70.tank_capacity" : '40 l',
"mini.one_70.tank_capacity_num" : '40',
"mini.one_70.top_speed" : '186 [181] km/h',
"mini.one_70.top_speed_num" : '186',
"mini.one_70.transmission" : '',
"mini.one_70.unladen_weight" : '1145 [1185] kg',
"mini.one_70.unladen_weight_num" : '1145',
"mini.one_70.weight_ratio" : '',
"mini.one_70.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_70.wheels" : '175/65 R 15 84H',
"mini.one_75_baker_street.acceleration_0_100" : '10,5 [12,3] s',
"mini.one_75_baker_street.acceleration_0_100_num" : '10.5',
"mini.one_75_baker_street.acceleration_80_120" : '',
"mini.one_75_baker_street.acceleration_80_120_num" : '',
"mini.one_75_baker_street.allowed_axle_load_front_rear" : '',
"mini.one_75_baker_street.basic_financing_price" : '199,00 â‚¬',
"mini.one_75_baker_street.basic_financing_price_num" : '199',
"mini.one_75_baker_street.basic_price" : '20.800 â‚¬',
"mini.one_75_baker_street.basic_price_num" : '20800',
"mini.one_75_baker_street.body_type" : 'CP',
"mini.one_75_baker_street.charging_type" : '',
"mini.one_75_baker_street.co2_emission" : '127 [150] g/km',
"mini.one_75_baker_street.co2_emission_num" : '127',
"mini.one_75_baker_street.color" : 'M900',
"mini.one_75_baker_street.color_line" : '4C1',
"mini.one_75_baker_street.compression_recommended_fuel_type" : '',
"mini.one_75_baker_street.cubic_capacity" : '1.598 cmÂ³',
"mini.one_75_baker_street.cubic_capacity_num" : '1598',
"mini.one_75_baker_street.cushion_material" : 'APE1',
"mini.one_75_baker_street.cylinder_type_valve" : '',
"mini.one_75_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini.one_75_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_75_baker_street.drive_type" : 'Front',
"mini.one_75_baker_street.drive_type_num" : '',
"mini.one_75_baker_street.elasticity" : '12,1 / 15,3 s',
"mini.one_75_baker_street.elasticity_80_100_5" : '',
"mini.one_75_baker_street.elasticity_num" : '12.1',
"mini.one_75_baker_street.engine" : 'One Baker Street',
"mini.one_75_baker_street.engine_hood_stripes" : 'ohne',
"mini.one_75_baker_street.engine_num" : '',
"mini.one_75_baker_street.engine_type" : '',
"mini.one_75_baker_street.exterior_mirror" : '-',
"mini.one_75_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.055,38 EUR<br />Anzahlung in % 19,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.744,62 EUR<br />Sollzinssatz p.a.* 3,09%<br />BearbeitungsgebÃ¼hr 334,89 EUR<br />Darlehensgesamtbetrag 18.405,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 11.440,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.one_75_baker_street.financing_disclaimer_headline1" : '',
"mini.one_75_baker_street.financing_disclaimer_headline2" : '',
"mini.one_75_baker_street.folding_top_color" : '',
"mini.one_75_baker_street.front_brakes" : '',
"mini.one_75_baker_street.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini.one_75_baker_street.fuel_consumption_combined_num" : '5.4',
"mini.one_75_baker_street.fuel_consumption_extra_urban" : '4,4 [5,1] l/100 km',
"mini.one_75_baker_street.fuel_consumption_extra_urban_num" : '5.1',
"mini.one_75_baker_street.fuel_consumption_urban" : '7,2 [8,7] l/100 km',
"mini.one_75_baker_street.fuel_consumption_urban_num" : '7.2',
"mini.one_75_baker_street.fuel_type" : 'Benzin',
"mini.one_75_baker_street.fuel_type_num" : '',
"mini.one_75_baker_street.id" : 'one_75_baker_street',
"mini.one_75_baker_street.infomaterial_id" : '',
"mini.one_75_baker_street.interior_surface" : '-',
"mini.one_75_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini.one_75_baker_street.luggage_capacity_num" : '160',
"mini.one_75_baker_street.market_attr1" : '',
"mini.one_75_baker_street.market_attr2" : '',
"mini.one_75_baker_street.market_attr3" : '',
"mini.one_75_baker_street.max_output" : '72/98/6000 kW/PS/1/min',
"mini.one_75_baker_street.max_output_num" : '72',
"mini.one_75_baker_street.max_permissible_roof_load" : '75 kg',
"mini.one_75_baker_street.max_permissible_roof_load_num" : '75',
"mini.one_75_baker_street.max_permissible_weight" : '1520 kg',
"mini.one_75_baker_street.max_permissible_weight_num" : '1520',
"mini.one_75_baker_street.max_torque" : '153/3000 Nm/1/min',
"mini.one_75_baker_street.max_torque_num" : '153',
"mini.one_75_baker_street.max_torque_overboost" : '-',
"mini.one_75_baker_street.max_torque_overboost_num" : '-',
"mini.one_75_baker_street.max_towed_load" : '',
"mini.one_75_baker_street.model_code" : 'SR31_7HT',
"mini.one_75_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/financial_services/index.html'),
"mini.one_75_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_comparison.png'),
"mini.one_75_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_small.jpg'),
"mini.one_75_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_medium.jpg'),
"mini.one_75_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_75_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_75_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_75_baker_street.model_name" : 'MINI One Baker Street',
"mini.one_75_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_one.html'),
"mini.one_75_baker_street.output_per_litre" : '',
"mini.one_75_baker_street.payload" : '450 kg',
"mini.one_75_baker_street.range" : '',
"mini.one_75_baker_street.rear_brakes" : '',
"mini.one_75_baker_street.rim_dimension" : '5.5J x 15 St',
"mini.one_75_baker_street.roof_color" : '-',
"mini.one_75_baker_street.seat_type" : 'Basis',
"mini.one_75_baker_street.short_description" : '-',
"mini.one_75_baker_street.stroke_bore" : '',
"mini.one_75_baker_street.tank_capacity" : '40 Liter',
"mini.one_75_baker_street.tank_capacity_num" : '40',
"mini.one_75_baker_street.top_speed" : '186 [181] km/h',
"mini.one_75_baker_street.top_speed_num" : '186',
"mini.one_75_baker_street.transmission" : '',
"mini.one_75_baker_street.unladen_weight" : '1070 / 1145 kg',
"mini.one_75_baker_street.unladen_weight_num" : '1070',
"mini.one_75_baker_street.weight_ratio" : '',
"mini.one_75_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_75_baker_street.wheels" : '2GA',
"mini.one_d.acceleration_0_100" : '11,4 s',
"mini.one_d.acceleration_0_100_num" : '11.4',
"mini.one_d.acceleration_80_120" : '9,5/11,8 s',
"mini.one_d.acceleration_80_120_num" : '9.5',
"mini.one_d.allowed_axle_load_front_rear" : '860/715 kg',
"mini.one_d.basic_financing_price" : '169,00 â‚¬',
"mini.one_d.basic_financing_price_num" : '169.00',
"mini.one_d.basic_price" : '18.450 â‚¬',
"mini.one_d.basic_price_num" : '18450',
"mini.one_d.body_type" : 'CP',
"mini.one_d.charging_type" : '',
"mini.one_d.co2_emission" : '99 g/km',
"mini.one_d.co2_emission_num" : '99',
"mini.one_d.color" : '',
"mini.one_d.color_line" : '4C1',
"mini.one_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini.one_d.cubic_capacity" : '1598 cmÂ³',
"mini.one_d.cubic_capacity_num" : '1598',
"mini.one_d.cushion_material" : 'FKE1',
"mini.one_d.cylinder_type_valve" : '4/Reihe/4',
"mini.one_d.dimensions" : '3723/1683/1407 mm',
"mini.one_d.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_d.drive_type" : '',
"mini.one_d.drive_type_num" : '',
"mini.one_d.elasticity" : '9,5/11,8 s',
"mini.one_d.elasticity_80_100_5" : '11,8 s',
"mini.one_d.elasticity_num" : '9.5',
"mini.one_d.engine" : 'One D',
"mini.one_d.engine_hood_stripes" : 'ohne',
"mini.one_d.engine_num" : '1.4',
"mini.one_d.engine_type" : '',
"mini.one_d.exterior_mirror" : '3AB',
"mini.one_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3845,43 EUR<br />Anzahlung in % 20,84<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 14.604,57 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 292,09 EUR<br />Darlehensgesamtbetrag 16.062,49 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 10.147,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.one_d.financing_disclaimer_headline1" : '',
"mini.one_d.financing_disclaimer_headline2" : '',
"mini.one_d.folding_top_color" : '-',
"mini.one_d.front_brakes" : '',
"mini.one_d.fuel_consumption_combined" : '3,8 l/100 km',
"mini.one_d.fuel_consumption_combined_num" : '3.8',
"mini.one_d.fuel_consumption_extra_urban" : '3,5 l/100 km',
"mini.one_d.fuel_consumption_extra_urban_num" : '3.5',
"mini.one_d.fuel_consumption_urban" : '4,2 l/100 km',
"mini.one_d.fuel_consumption_urban_num" : '4.2',
"mini.one_d.fuel_type" : 'Diesel',
"mini.one_d.fuel_type_num" : '',
"mini.one_d.id" : 'one_d',
"mini.one_d.infomaterial_id" : '',
"mini.one_d.interior_surface" : '4BD',
"mini.one_d.luggage_capacity" : '160 â€“ 680 l',
"mini.one_d.luggage_capacity_num" : '160',
"mini.one_d.market_attr1" : '',
"mini.one_d.market_attr2" : '',
"mini.one_d.market_attr3" : '',
"mini.one_d.max_output" : '66/90/4000 kW/PS/1/min',
"mini.one_d.max_output_num" : '66',
"mini.one_d.max_permissible_roof_load" : '75 kg',
"mini.one_d.max_permissible_roof_load_num" : '75',
"mini.one_d.max_permissible_weight" : '1540 kg',
"mini.one_d.max_permissible_weight_num" : '1540',
"mini.one_d.max_torque" : '215/1750 â€“ 2500 Nm/1/min',
"mini.one_d.max_torque_num" : '215',
"mini.one_d.max_torque_overboost" : '-',
"mini.one_d.max_torque_overboost_num" : '-',
"mini.one_d.max_towed_load" : '-',
"mini.one_d.model_code" : 'SW11',
"mini.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/financial_services/'),
"mini.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one_d/modelcomparison.jpg'),
"mini.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one_d/model_filter_small.jpg'),
"mini.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/one_d/model_filter_medium.jpg'),
"mini.one_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d.model_name" : 'MINI One D',
"mini.one_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/model_quickfacts.html'),
"mini.one_d.output_per_litre" : '',
"mini.one_d.payload" : '450 kg',
"mini.one_d.range" : '1055 km',
"mini.one_d.rear_brakes" : '',
"mini.one_d.rim_dimension" : '5,5 J x 15 St',
"mini.one_d.roof_color" : '-',
"mini.one_d.seat_type" : '481',
"mini.one_d.short_description" : '',
"mini.one_d.stroke_bore" : '83,6/78,0 mm',
"mini.one_d.tank_capacity" : '40 l',
"mini.one_d.tank_capacity_num" : '40',
"mini.one_d.top_speed" : '184 km/h',
"mini.one_d.top_speed_num" : '184',
"mini.one_d.transmission" : '',
"mini.one_d.unladen_weight" : '1165 kg',
"mini.one_d.unladen_weight_num" : '1165',
"mini.one_d.weight_ratio" : '',
"mini.one_d.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_d.wheels" : '175/65 R 15 84H',
"mini.one_d_baker_street.acceleration_0_100" : '11,4 s',
"mini.one_d_baker_street.acceleration_0_100_num" : '11.4',
"mini.one_d_baker_street.acceleration_80_120" : '9,5  s / 11,8 s',
"mini.one_d_baker_street.acceleration_80_120_num" : '9.5',
"mini.one_d_baker_street.allowed_axle_load_front_rear" : '',
"mini.one_d_baker_street.basic_financing_price" : '209,00 â‚¬',
"mini.one_d_baker_street.basic_financing_price_num" : '209',
"mini.one_d_baker_street.basic_price" : '22.400 â‚¬',
"mini.one_d_baker_street.basic_price_num" : '22400',
"mini.one_d_baker_street.body_type" : 'CP',
"mini.one_d_baker_street.charging_type" : '',
"mini.one_d_baker_street.co2_emission" : '99 g/km',
"mini.one_d_baker_street.co2_emission_num" : '99',
"mini.one_d_baker_street.color" : 'U851, U850, WA95, WA94, WB22, M900, WA93, WB23, M857',
"mini.one_d_baker_street.color_line" : '4C1',
"mini.one_d_baker_street.compression_recommended_fuel_type" : '',
"mini.one_d_baker_street.cubic_capacity" : '1.560 cmÂ³',
"mini.one_d_baker_street.cubic_capacity_num" : '1560',
"mini.one_d_baker_street.cushion_material" : 'FKE1',
"mini.one_d_baker_street.cylinder_type_valve" : '',
"mini.one_d_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini.one_d_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_d_baker_street.drive_type" : 'Front',
"mini.one_d_baker_street.drive_type_num" : '',
"mini.one_d_baker_street.elasticity" : '9,5 / 11,8 s',
"mini.one_d_baker_street.elasticity_80_100_5" : '',
"mini.one_d_baker_street.elasticity_num" : '9.5',
"mini.one_d_baker_street.engine" : 'One D Baker Street',
"mini.one_d_baker_street.engine_hood_stripes" : 'ohne',
"mini.one_d_baker_street.engine_num" : '1.4',
"mini.one_d_baker_street.engine_type" : '',
"mini.one_d_baker_street.exterior_mirror" : '3AB',
"mini.one_d_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.542,60 EUR<br />Anzahlung in % 20,28<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 17.857,40 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 357,15 EUR<br />Darlehensgesamtbetrag 19.635,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 12.320,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.one_d_baker_street.financing_disclaimer_headline1" : '',
"mini.one_d_baker_street.financing_disclaimer_headline2" : '',
"mini.one_d_baker_street.folding_top_color" : '-',
"mini.one_d_baker_street.front_brakes" : '',
"mini.one_d_baker_street.fuel_consumption_combined" : '3,8 l/100 km',
"mini.one_d_baker_street.fuel_consumption_combined_num" : '3.8',
"mini.one_d_baker_street.fuel_consumption_extra_urban" : '3,5 l/100 km',
"mini.one_d_baker_street.fuel_consumption_extra_urban_num" : '3.5',
"mini.one_d_baker_street.fuel_consumption_urban" : '4,2 l/100 km',
"mini.one_d_baker_street.fuel_consumption_urban_num" : '4.2',
"mini.one_d_baker_street.fuel_type" : 'Diesel',
"mini.one_d_baker_street.fuel_type_num" : '',
"mini.one_d_baker_street.id" : 'one_d_baker_street',
"mini.one_d_baker_street.infomaterial_id" : '',
"mini.one_d_baker_street.interior_surface" : '4BD',
"mini.one_d_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini.one_d_baker_street.luggage_capacity_num" : '160',
"mini.one_d_baker_street.market_attr1" : '',
"mini.one_d_baker_street.market_attr2" : '',
"mini.one_d_baker_street.market_attr3" : '',
"mini.one_d_baker_street.max_output" : '66/90/4000 kW/PS/1/min',
"mini.one_d_baker_street.max_output_num" : '99',
"mini.one_d_baker_street.max_permissible_roof_load" : '75 kg',
"mini.one_d_baker_street.max_permissible_roof_load_num" : '75',
"mini.one_d_baker_street.max_permissible_weight" : '1540 kg',
"mini.one_d_baker_street.max_permissible_weight_num" : '1540',
"mini.one_d_baker_street.max_torque" : '215/1750 â€“ 2500 Nm/1/min',
"mini.one_d_baker_street.max_torque_num" : '215',
"mini.one_d_baker_street.max_torque_overboost" : '-',
"mini.one_d_baker_street.max_torque_overboost_num" : '-',
"mini.one_d_baker_street.max_towed_load" : '',
"mini.one_d_baker_street.model_code" : 'SW11_7HT',
"mini.one_d_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/index.html'),
"mini.one_d_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_comparison.png'),
"mini.one_d_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_small.jpg'),
"mini.one_d_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_medium.jpg'),
"mini.one_d_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_d_baker_street.model_name" : 'MINI One D Baker Street',
"mini.one_d_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_one_d.html'),
"mini.one_d_baker_street.output_per_litre" : '',
"mini.one_d_baker_street.payload" : '450 kg',
"mini.one_d_baker_street.range" : '',
"mini.one_d_baker_street.rear_brakes" : '',
"mini.one_d_baker_street.rim_dimension" : '5.5J x 15 St',
"mini.one_d_baker_street.roof_color" : '-',
"mini.one_d_baker_street.seat_type" : '481',
"mini.one_d_baker_street.short_description" : '',
"mini.one_d_baker_street.stroke_bore" : '',
"mini.one_d_baker_street.tank_capacity" : '40 Liter',
"mini.one_d_baker_street.tank_capacity_num" : '40',
"mini.one_d_baker_street.top_speed" : '184 km/h',
"mini.one_d_baker_street.top_speed_num" : '184',
"mini.one_d_baker_street.transmission" : '',
"mini.one_d_baker_street.unladen_weight" : '1090 / 1165 kg',
"mini.one_d_baker_street.unladen_weight_num" : '1090',
"mini.one_d_baker_street.weight_ratio" : '',
"mini.one_d_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_d_baker_street.wheels" : '2GA',
"mini.cooper.acceleration_0_100" : '9,1 [10,4] s',
"mini.cooper.acceleration_0_100_num" : '9.1',
"mini.cooper.acceleration_80_120" : '12,1 s',
"mini.cooper.acceleration_80_120_num" : '',
"mini.cooper.allowed_axle_load_front_rear" : '820/730 [860/730] kg',
"mini.cooper.basic_financing_price" : '179,00 â‚¬',
"mini.cooper.basic_financing_price_num" : '179.00',
"mini.cooper.basic_price" : '19.550 â‚¬',
"mini.cooper.basic_price_num" : '19550',
"mini.cooper.body_type" : 'CP',
"mini.cooper.charging_type" : '',
"mini.cooper.co2_emission" : '127 [150] g/km',
"mini.cooper.co2_emission_num" : '127',
"mini.cooper.color" : 'U851',
"mini.cooper.color_line" : '4BA',
"mini.cooper.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini.cooper.cubic_capacity" : '1598 cmÂ³',
"mini.cooper.cubic_capacity_num" : '1598',
"mini.cooper.cushion_material" : 'FKE6',
"mini.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini.cooper.dimensions" : '3723/1683/1407 mm',
"mini.cooper.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper.drive_type" : '',
"mini.cooper.drive_type_num" : '',
"mini.cooper.elasticity" : '9,6/12,1 s',
"mini.cooper.elasticity_80_100_5" : '12,1 s',
"mini.cooper.elasticity_num" : '9.6',
"mini.cooper.engine" : 'Cooper',
"mini.cooper.engine_hood_stripes" : '327',
"mini.cooper.engine_num" : '',
"mini.cooper.engine_type" : '',
"mini.cooper.exterior_mirror" : '-',
"mini.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4077,20 EUR<br />Anzahlung in % 20,86<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 15.472,80 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 309,46 EUR<br />Darlehensgesamtbetrag 17.017,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 10.752,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper.financing_disclaimer_headline1" : '',
"mini.cooper.financing_disclaimer_headline2" : '',
"mini.cooper.folding_top_color" : '',
"mini.cooper.front_brakes" : '',
"mini.cooper.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini.cooper.fuel_consumption_combined_num" : '5.4',
"mini.cooper.fuel_consumption_extra_urban" : '4,6 [5,1] l/100 km',
"mini.cooper.fuel_consumption_extra_urban_num" : '4.6',
"mini.cooper.fuel_consumption_urban" : '6,9 [8,7] l/100 km',
"mini.cooper.fuel_consumption_urban_num" : '6.9',
"mini.cooper.fuel_type" : 'Benzin',
"mini.cooper.fuel_type_num" : '',
"mini.cooper.id" : 'cooper',
"mini.cooper.infomaterial_id" : '',
"mini.cooper.interior_surface" : '4DA',
"mini.cooper.luggage_capacity" : '160 â€“ 680 l',
"mini.cooper.luggage_capacity_num" : '160',
"mini.cooper.market_attr1" : '',
"mini.cooper.market_attr2" : '',
"mini.cooper.market_attr3" : '',
"mini.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini.cooper.max_output_num" : '90',
"mini.cooper.max_permissible_roof_load" : '75 kg',
"mini.cooper.max_permissible_roof_load_num" : '75',
"mini.cooper.max_permissible_weight" : '1525 [1565] kg',
"mini.cooper.max_permissible_weight_num" : '1525',
"mini.cooper.max_torque" : '160/4250 Nm/1/min',
"mini.cooper.max_torque_num" : '160',
"mini.cooper.max_torque_overboost" : '',
"mini.cooper.max_torque_overboost_num" : '-',
"mini.cooper.max_towed_load" : '-',
"mini.cooper.model_code" : 'SU31',
"mini.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/'),
"mini.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper/modelcomparison.jpg'),
"mini.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper/model_filter_small.jpg'),
"mini.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper/model_filter_medium.jpg'),
"mini.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper.model_name" : 'MINI Cooper',
"mini.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/model_quickfacts.html'),
"mini.cooper.output_per_litre" : '',
"mini.cooper.payload" : '450 kg',
"mini.cooper.range" : '740 [625] km',
"mini.cooper.rear_brakes" : '',
"mini.cooper.rim_dimension" : '5,5 J x 15 LM',
"mini.cooper.roof_color" : '382',
"mini.cooper.seat_type" : '481',
"mini.cooper.short_description" : '',
"mini.cooper.stroke_bore" : '85,8/77,0 mm',
"mini.cooper.tank_capacity" : '40 l',
"mini.cooper.tank_capacity_num" : '40',
"mini.cooper.top_speed" : '203 [197] km/h',
"mini.cooper.top_speed_num" : '203',
"mini.cooper.transmission" : '',
"mini.cooper.unladen_weight" : '1150 [1190] kg',
"mini.cooper.unladen_weight_num" : '1150',
"mini.cooper.weight_ratio" : '',
"mini.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper.wheels" : '175/65 R 15 84H',
"mini.cooper_bayswater.acceleration_0_100" : '9,1 [10,4] s',
"mini.cooper_bayswater.acceleration_0_100_num" : '9.1',
"mini.cooper_bayswater.acceleration_80_120" : '',
"mini.cooper_bayswater.acceleration_80_120_num" : '',
"mini.cooper_bayswater.allowed_axle_load_front_rear" : '',
"mini.cooper_bayswater.basic_financing_price" : '229,00 â‚¬',
"mini.cooper_bayswater.basic_financing_price_num" : '229',
"mini.cooper_bayswater.basic_price" : '24.400 â‚¬',
"mini.cooper_bayswater.basic_price_num" : '24400',
"mini.cooper_bayswater.body_type" : 'CP',
"mini.cooper_bayswater.charging_type" : '',
"mini.cooper_bayswater.co2_emission" : '127 [150] g/km',
"mini.cooper_bayswater.co2_emission_num" : '127',
"mini.cooper_bayswater.color" : 'U851',
"mini.cooper_bayswater.color_line" : '4BA',
"mini.cooper_bayswater.compression_recommended_fuel_type" : '',
"mini.cooper_bayswater.cubic_capacity" : '1.598 cmÂ³',
"mini.cooper_bayswater.cubic_capacity_num" : '1598',
"mini.cooper_bayswater.cushion_material" : 'FKE6',
"mini.cooper_bayswater.cylinder_type_valve" : '',
"mini.cooper_bayswater.dimensions" : '3723/ 1683 / 1407 mm',
"mini.cooper_bayswater.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_bayswater.drive_type" : 'Front',
"mini.cooper_bayswater.drive_type_num" : '',
"mini.cooper_bayswater.elasticity" : '9,6 / 12,1 s',
"mini.cooper_bayswater.elasticity_80_100_5" : '',
"mini.cooper_bayswater.elasticity_num" : '9.6',
"mini.cooper_bayswater.engine" : 'Cooper Bayswater',
"mini.cooper_bayswater.engine_hood_stripes" : '327',
"mini.cooper_bayswater.engine_num" : '',
"mini.cooper_bayswater.engine_type" : '',
"mini.cooper_bayswater.exterior_mirror" : '-',
"mini.cooper_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.903,97 EUR<br />Anzahlung in % 20,10<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.496,03 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 389,92 EUR<br />Darlehensgesamtbetrag 21.435,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 13.420,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_bayswater.financing_disclaimer_headline1" : '',
"mini.cooper_bayswater.financing_disclaimer_headline2" : '',
"mini.cooper_bayswater.folding_top_color" : '',
"mini.cooper_bayswater.front_brakes" : '',
"mini.cooper_bayswater.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini.cooper_bayswater.fuel_consumption_combined_num" : '5.4',
"mini.cooper_bayswater.fuel_consumption_extra_urban" : '4,6 [5,1] l/100 km',
"mini.cooper_bayswater.fuel_consumption_extra_urban_num" : '5.1',
"mini.cooper_bayswater.fuel_consumption_urban" : '6,9 [8,7] l/100 km',
"mini.cooper_bayswater.fuel_consumption_urban_num" : '6.9',
"mini.cooper_bayswater.fuel_type" : 'Benzin',
"mini.cooper_bayswater.fuel_type_num" : '',
"mini.cooper_bayswater.id" : 'cooper_bayswater',
"mini.cooper_bayswater.infomaterial_id" : '',
"mini.cooper_bayswater.interior_surface" : '4DA',
"mini.cooper_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_bayswater.luggage_capacity_num" : '160',
"mini.cooper_bayswater.market_attr1" : '',
"mini.cooper_bayswater.market_attr2" : '',
"mini.cooper_bayswater.market_attr3" : '',
"mini.cooper_bayswater.max_output" : '90/122/6000 kW/PS/1/min',
"mini.cooper_bayswater.max_output_num" : '90',
"mini.cooper_bayswater.max_permissible_roof_load" : '75 kg',
"mini.cooper_bayswater.max_permissible_roof_load_num" : '75',
"mini.cooper_bayswater.max_permissible_weight" : '1525 kg',
"mini.cooper_bayswater.max_permissible_weight_num" : '1515',
"mini.cooper_bayswater.max_torque" : '160/4250 Nm/1/min',
"mini.cooper_bayswater.max_torque_num" : '160',
"mini.cooper_bayswater.max_torque_overboost" : '',
"mini.cooper_bayswater.max_torque_overboost_num" : '-',
"mini.cooper_bayswater.max_towed_load" : '',
"mini.cooper_bayswater.model_code" : 'SU31_7HU',
"mini.cooper_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/index.html'),
"mini.cooper_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_comparison.png'),
"mini.cooper_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_small.jpg'),
"mini.cooper_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_medium.jpg'),
"mini.cooper_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_bayswater.model_name" : 'MINI Cooper Bayswater',
"mini.cooper_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper.html'),
"mini.cooper_bayswater.output_per_litre" : '',
"mini.cooper_bayswater.payload" : '450 kg',
"mini.cooper_bayswater.range" : '',
"mini.cooper_bayswater.rear_brakes" : '',
"mini.cooper_bayswater.rim_dimension" : '5.5J x 15 LM',
"mini.cooper_bayswater.roof_color" : '382',
"mini.cooper_bayswater.seat_type" : '481',
"mini.cooper_bayswater.short_description" : '',
"mini.cooper_bayswater.stroke_bore" : '',
"mini.cooper_bayswater.tank_capacity" : '40 Liter',
"mini.cooper_bayswater.tank_capacity_num" : '40',
"mini.cooper_bayswater.top_speed" : '203 [197] km/h',
"mini.cooper_bayswater.top_speed_num" : '203',
"mini.cooper_bayswater.transmission" : '',
"mini.cooper_bayswater.unladen_weight" : '1075 / 1150 kg',
"mini.cooper_bayswater.unladen_weight_num" : '1075',
"mini.cooper_bayswater.weight_ratio" : '',
"mini.cooper_bayswater.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_bayswater.wheels" : '2RH',
"mini.cooper_baker_street.acceleration_0_100" : '9,1 [10,4] s',
"mini.cooper_baker_street.acceleration_0_100_num" : '9.1',
"mini.cooper_baker_street.acceleration_80_120" : '',
"mini.cooper_baker_street.acceleration_80_120_num" : '',
"mini.cooper_baker_street.allowed_axle_load_front_rear" : '',
"mini.cooper_baker_street.basic_financing_price" : '209,00 â‚¬',
"mini.cooper_baker_street.basic_financing_price_num" : '209',
"mini.cooper_baker_street.basic_price" : '23.100 â‚¬',
"mini.cooper_baker_street.basic_price_num" : '23100',
"mini.cooper_baker_street.body_type" : 'CP',
"mini.cooper_baker_street.charging_type" : '',
"mini.cooper_baker_street.co2_emission" : '127 [150] g/km',
"mini.cooper_baker_street.co2_emission_num" : '127',
"mini.cooper_baker_street.color" : 'U851',
"mini.cooper_baker_street.color_line" : '4BA',
"mini.cooper_baker_street.compression_recommended_fuel_type" : '',
"mini.cooper_baker_street.cubic_capacity" : '1.598 cmÂ³',
"mini.cooper_baker_street.cubic_capacity_num" : '1598',
"mini.cooper_baker_street.cushion_material" : 'FKE6',
"mini.cooper_baker_street.cylinder_type_valve" : '',
"mini.cooper_baker_street.dimensions" : '3723/ 1683 / 1407 mm',
"mini.cooper_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_baker_street.drive_type" : 'Front',
"mini.cooper_baker_street.drive_type_num" : '',
"mini.cooper_baker_street.elasticity" : '9,6 / 12,1 s',
"mini.cooper_baker_street.elasticity_80_100_5" : '',
"mini.cooper_baker_street.elasticity_num" : '9.6',
"mini.cooper_baker_street.engine" : 'Cooper Baker Street',
"mini.cooper_baker_street.engine_hood_stripes" : '327',
"mini.cooper_baker_street.engine_num" : '',
"mini.cooper_baker_street.engine_type" : '',
"mini.cooper_baker_street.exterior_mirror" : '-',
"mini.cooper_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.900,24 EUR<br />Anzahlung in % 21,21<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.199,76 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 364,00 EUR<br />Darlehensgesamtbetrag 20.020,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 12.705,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_baker_street.financing_disclaimer_headline1" : '',
"mini.cooper_baker_street.financing_disclaimer_headline2" : '',
"mini.cooper_baker_street.folding_top_color" : '',
"mini.cooper_baker_street.front_brakes" : '',
"mini.cooper_baker_street.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini.cooper_baker_street.fuel_consumption_combined_num" : '5.4',
"mini.cooper_baker_street.fuel_consumption_extra_urban" : '4,6 [5,1] l/100 km',
"mini.cooper_baker_street.fuel_consumption_extra_urban_num" : '5.1',
"mini.cooper_baker_street.fuel_consumption_urban" : '6,9 [8,7] l/100 km',
"mini.cooper_baker_street.fuel_consumption_urban_num" : '6.9',
"mini.cooper_baker_street.fuel_type" : 'Benzin',
"mini.cooper_baker_street.fuel_type_num" : '',
"mini.cooper_baker_street.id" : 'cooper_baker_street',
"mini.cooper_baker_street.infomaterial_id" : '',
"mini.cooper_baker_street.interior_surface" : '4DA',
"mini.cooper_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_baker_street.luggage_capacity_num" : '160',
"mini.cooper_baker_street.market_attr1" : '',
"mini.cooper_baker_street.market_attr2" : '',
"mini.cooper_baker_street.market_attr3" : '',
"mini.cooper_baker_street.max_output" : '90/122/6000 kW/PS/1/min',
"mini.cooper_baker_street.max_output_num" : '90',
"mini.cooper_baker_street.max_permissible_roof_load" : '75 kg',
"mini.cooper_baker_street.max_permissible_roof_load_num" : '75',
"mini.cooper_baker_street.max_permissible_weight" : '1525 kg',
"mini.cooper_baker_street.max_permissible_weight_num" : '1515',
"mini.cooper_baker_street.max_torque" : '160/4250 Nm/1/min',
"mini.cooper_baker_street.max_torque_num" : '160',
"mini.cooper_baker_street.max_torque_overboost" : '',
"mini.cooper_baker_street.max_torque_overboost_num" : '-',
"mini.cooper_baker_street.max_towed_load" : '',
"mini.cooper_baker_street.model_code" : 'SU31_7HT',
"mini.cooper_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/index.html'),
"mini.cooper_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_comparison.png'),
"mini.cooper_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_small.jpg'),
"mini.cooper_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_medium.jpg'),
"mini.cooper_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_baker_street.model_name" : 'MINI Cooper Baker Street',
"mini.cooper_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_cooper.html'),
"mini.cooper_baker_street.output_per_litre" : '',
"mini.cooper_baker_street.payload" : '450 kg',
"mini.cooper_baker_street.range" : '',
"mini.cooper_baker_street.rear_brakes" : '',
"mini.cooper_baker_street.rim_dimension" : '5.5J x 15 LM',
"mini.cooper_baker_street.roof_color" : '382',
"mini.cooper_baker_street.seat_type" : '481',
"mini.cooper_baker_street.short_description" : '',
"mini.cooper_baker_street.stroke_bore" : '',
"mini.cooper_baker_street.tank_capacity" : '40 Liter',
"mini.cooper_baker_street.tank_capacity_num" : '40',
"mini.cooper_baker_street.top_speed" : '203 [197] km/h',
"mini.cooper_baker_street.top_speed_num" : '203',
"mini.cooper_baker_street.transmission" : '',
"mini.cooper_baker_street.unladen_weight" : '1075 / 1150 kg',
"mini.cooper_baker_street.unladen_weight_num" : '1075',
"mini.cooper_baker_street.weight_ratio" : '',
"mini.cooper_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_baker_street.wheels" : '2RH',
"mini.cooper_d.acceleration_0_100" : '9,7 [10,1] s',
"mini.cooper_d.acceleration_0_100_num" : '9.7',
"mini.cooper_d.acceleration_80_120" : '',
"mini.cooper_d.acceleration_80_120_num" : '',
"mini.cooper_d.allowed_axle_load_front_rear" : '860/715 [890/715] kg',
"mini.cooper_d.basic_financing_price" : '189,00 â‚¬',
"mini.cooper_d.basic_financing_price_num" : '189.00',
"mini.cooper_d.basic_price" : '21.250 â‚¬',
"mini.cooper_d.basic_price_num" : '21250',
"mini.cooper_d.body_type" : 'CP',
"mini.cooper_d.charging_type" : '',
"mini.cooper_d.co2_emission" : '99 [135] g/km',
"mini.cooper_d.co2_emission_num" : '99',
"mini.cooper_d.color" : 'WA93',
"mini.cooper_d.color_line" : '4C2',
"mini.cooper_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini.cooper_d.cubic_capacity" : '1598 [1995] cmÂ³',
"mini.cooper_d.cubic_capacity_num" : '1598',
"mini.cooper_d.cushion_material" : 'FTGW',
"mini.cooper_d.cylinder_type_valve" : '4/Reihe/4',
"mini.cooper_d.dimensions" : '3723/1683/1407 mm',
"mini.cooper_d.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_d.drive_type" : '',
"mini.cooper_d.drive_type_num" : '',
"mini.cooper_d.elasticity" : '7,4/9,2 s',
"mini.cooper_d.elasticity_80_100_5" : '9,2 s',
"mini.cooper_d.elasticity_num" : '7.4',
"mini.cooper_d.engine" : 'Cooper D',
"mini.cooper_d.engine_hood_stripes" : '327',
"mini.cooper_d.engine_num" : '',
"mini.cooper_d.engine_type" : '',
"mini.cooper_d.exterior_mirror" : '382',
"mini.cooper_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4426,55 EUR<br />Anzahlung in % 20,83<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.823,45 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 336,47 EUR<br />Darlehensgesamtbetrag 18.515,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 11.900,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_d.financing_disclaimer_headline1" : '',
"mini.cooper_d.financing_disclaimer_headline2" : '',
"mini.cooper_d.folding_top_color" : '',
"mini.cooper_d.front_brakes" : '',
"mini.cooper_d.fuel_consumption_combined" : '3,8 [5,1] l/100 km',
"mini.cooper_d.fuel_consumption_combined_num" : '3.8',
"mini.cooper_d.fuel_consumption_extra_urban" : '3,5 [4,1] l/100 km',
"mini.cooper_d.fuel_consumption_extra_urban_num" : '3.5',
"mini.cooper_d.fuel_consumption_urban" : '4,2 [6,8] l/100 km',
"mini.cooper_d.fuel_consumption_urban_num" : '4.2',
"mini.cooper_d.fuel_type" : 'Diesel',
"mini.cooper_d.fuel_type_num" : '',
"mini.cooper_d.id" : 'cooper_d',
"mini.cooper_d.infomaterial_id" : '',
"mini.cooper_d.interior_surface" : '-',
"mini.cooper_d.luggage_capacity" : '160 â€“ 680 l',
"mini.cooper_d.luggage_capacity_num" : '160',
"mini.cooper_d.market_attr1" : '',
"mini.cooper_d.market_attr2" : '',
"mini.cooper_d.market_attr3" : '',
"mini.cooper_d.max_output" : '82/112/4000 kW/PS/1/min',
"mini.cooper_d.max_output_num" : '82',
"mini.cooper_d.max_permissible_roof_load" : '75 kg',
"mini.cooper_d.max_permissible_roof_load_num" : '75',
"mini.cooper_d.max_permissible_weight" : '1540 [1570] kg',
"mini.cooper_d.max_permissible_weight_num" : '1540',
"mini.cooper_d.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini.cooper_d.max_torque_num" : '270',
"mini.cooper_d.max_torque_overboost" : '-',
"mini.cooper_d.max_torque_overboost_num" : '-',
"mini.cooper_d.max_towed_load" : '-',
"mini.cooper_d.model_code" : 'SW31',
"mini.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/'),
"mini.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_d/modelcomparison.jpg'),
"mini.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_d/model_filter_small.jpg'),
"mini.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_d/model_filter_medium.jpg'),
"mini.cooper_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d.model_name" : 'MINI Cooper D',
"mini.cooper_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/model_quickfacts.html'),
"mini.cooper_d.output_per_litre" : '',
"mini.cooper_d.payload" : '450 kg',
"mini.cooper_d.range" : '1055 [785] km',
"mini.cooper_d.rear_brakes" : '',
"mini.cooper_d.rim_dimension" : '5,5 J x 15 LM',
"mini.cooper_d.roof_color" : '382',
"mini.cooper_d.seat_type" : '481',
"mini.cooper_d.short_description" : '',
"mini.cooper_d.stroke_bore" : '83,6/78,0 [90/84] mm',
"mini.cooper_d.tank_capacity" : '40 l',
"mini.cooper_d.tank_capacity_num" : '40',
"mini.cooper_d.top_speed" : '197 [192] km/h',
"mini.cooper_d.top_speed_num" : '197',
"mini.cooper_d.transmission" : '',
"mini.cooper_d.unladen_weight" : '1165 [1195] kg',
"mini.cooper_d.unladen_weight_num" : '1165',
"mini.cooper_d.weight_ratio" : '',
"mini.cooper_d.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_d.wheels" : '175/65 R 15 84H',
"mini.cooper_d_bayswater.acceleration_0_100" : '9,7 [10,1] s',
"mini.cooper_d_bayswater.acceleration_0_100_num" : '9.7',
"mini.cooper_d_bayswater.acceleration_80_120" : '',
"mini.cooper_d_bayswater.acceleration_80_120_num" : '',
"mini.cooper_d_bayswater.allowed_axle_load_front_rear" : '',
"mini.cooper_d_bayswater.basic_financing_price" : '239,00 â‚¬',
"mini.cooper_d_bayswater.basic_financing_price_num" : '239',
"mini.cooper_d_bayswater.basic_price" : '26.100 â‚¬',
"mini.cooper_d_bayswater.basic_price_num" : '26100',
"mini.cooper_d_bayswater.body_type" : 'CP',
"mini.cooper_d_bayswater.charging_type" : '',
"mini.cooper_d_bayswater.co2_emission" : '99 [135] g/km',
"mini.cooper_d_bayswater.co2_emission_num" : '99',
"mini.cooper_d_bayswater.color" : 'WA93',
"mini.cooper_d_bayswater.color_line" : '4C2',
"mini.cooper_d_bayswater.compression_recommended_fuel_type" : '',
"mini.cooper_d_bayswater.cubic_capacity" : '1.560 cmÂ³',
"mini.cooper_d_bayswater.cubic_capacity_num" : '1560',
"mini.cooper_d_bayswater.cushion_material" : 'FTGW',
"mini.cooper_d_bayswater.cylinder_type_valve" : '',
"mini.cooper_d_bayswater.dimensions" : '3723 / 1683 / 1407 mm',
"mini.cooper_d_bayswater.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_d_bayswater.drive_type" : 'Front',
"mini.cooper_d_bayswater.drive_type_num" : '',
"mini.cooper_d_bayswater.elasticity" : '7,4 / 9,2 s',
"mini.cooper_d_bayswater.elasticity_80_100_5" : '',
"mini.cooper_d_bayswater.elasticity_num" : '7.4',
"mini.cooper_d_bayswater.engine" : 'Cooper D Bayswater',
"mini.cooper_d_bayswater.engine_hood_stripes" : '327',
"mini.cooper_d_bayswater.engine_num" : '',
"mini.cooper_d_bayswater.engine_type" : '',
"mini.cooper_d_bayswater.exterior_mirror" : '382',
"mini.cooper_d_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.210,19 EUR<br />Anzahlung in % 19,96<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 20.889,81 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 417,80 EUR<br />Darlehensgesamtbetrag 22.981,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 14.616,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_d_bayswater.financing_disclaimer_headline1" : '',
"mini.cooper_d_bayswater.financing_disclaimer_headline2" : '',
"mini.cooper_d_bayswater.folding_top_color" : '',
"mini.cooper_d_bayswater.front_brakes" : '',
"mini.cooper_d_bayswater.fuel_consumption_combined" : '3,8 [5,1] l/100 km',
"mini.cooper_d_bayswater.fuel_consumption_combined_num" : '3.8',
"mini.cooper_d_bayswater.fuel_consumption_extra_urban" : '3,5 [4,1] l/100 km',
"mini.cooper_d_bayswater.fuel_consumption_extra_urban_num" : '',
"mini.cooper_d_bayswater.fuel_consumption_urban" : '4,2 [6,8] l/100 km',
"mini.cooper_d_bayswater.fuel_consumption_urban_num" : '4.2',
"mini.cooper_d_bayswater.fuel_type" : 'Diesel',
"mini.cooper_d_bayswater.fuel_type_num" : '',
"mini.cooper_d_bayswater.id" : 'cooper_d_bayswater',
"mini.cooper_d_bayswater.infomaterial_id" : '',
"mini.cooper_d_bayswater.interior_surface" : '-',
"mini.cooper_d_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_d_bayswater.luggage_capacity_num" : '160',
"mini.cooper_d_bayswater.market_attr1" : '',
"mini.cooper_d_bayswater.market_attr2" : '',
"mini.cooper_d_bayswater.market_attr3" : '',
"mini.cooper_d_bayswater.max_output" : '82/112/4000 kW/PS/1/min',
"mini.cooper_d_bayswater.max_output_num" : '82',
"mini.cooper_d_bayswater.max_permissible_roof_load" : '75 kg',
"mini.cooper_d_bayswater.max_permissible_roof_load_num" : '75',
"mini.cooper_d_bayswater.max_permissible_weight" : '1540 kg',
"mini.cooper_d_bayswater.max_permissible_weight_num" : '1540',
"mini.cooper_d_bayswater.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini.cooper_d_bayswater.max_torque_num" : '270',
"mini.cooper_d_bayswater.max_torque_overboost" : '-',
"mini.cooper_d_bayswater.max_torque_overboost_num" : '-',
"mini.cooper_d_bayswater.max_towed_load" : '',
"mini.cooper_d_bayswater.model_code" : 'SW31_7HU',
"mini.cooper_d_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"mini.cooper_d_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_comparison.png'),
"mini.cooper_d_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_small.jpg'),
"mini.cooper_d_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_medium.jpg'),
"mini.cooper_d_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_bayswater.model_name" : 'MINI Cooper D Bayswater',
"mini.cooper_d_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_d.html'),
"mini.cooper_d_bayswater.output_per_litre" : '',
"mini.cooper_d_bayswater.payload" : '450 kg',
"mini.cooper_d_bayswater.range" : '',
"mini.cooper_d_bayswater.rear_brakes" : '',
"mini.cooper_d_bayswater.rim_dimension" : '5.5J x 15 LM',
"mini.cooper_d_bayswater.roof_color" : '382',
"mini.cooper_d_bayswater.seat_type" : '481',
"mini.cooper_d_bayswater.short_description" : '',
"mini.cooper_d_bayswater.stroke_bore" : '',
"mini.cooper_d_bayswater.tank_capacity" : '40 Liter',
"mini.cooper_d_bayswater.tank_capacity_num" : '40',
"mini.cooper_d_bayswater.top_speed" : '197 [192] km/h',
"mini.cooper_d_bayswater.top_speed_num" : '197',
"mini.cooper_d_bayswater.transmission" : '',
"mini.cooper_d_bayswater.unladen_weight" : '1090 / 1165 kg',
"mini.cooper_d_bayswater.unladen_weight_num" : '1090',
"mini.cooper_d_bayswater.weight_ratio" : '',
"mini.cooper_d_bayswater.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_d_bayswater.wheels" : '2GC',
"mini.cooper_d_baker_street.acceleration_0_100" : '9,7 [10,1] s',
"mini.cooper_d_baker_street.acceleration_0_100_num" : '9.7',
"mini.cooper_d_baker_street.acceleration_80_120" : '',
"mini.cooper_d_baker_street.acceleration_80_120_num" : '',
"mini.cooper_d_baker_street.allowed_axle_load_front_rear" : '',
"mini.cooper_d_baker_street.basic_financing_price" : '219,00 â‚¬',
"mini.cooper_d_baker_street.basic_financing_price_num" : '219',
"mini.cooper_d_baker_street.basic_price" : '24.800 â‚¬',
"mini.cooper_d_baker_street.basic_price_num" : '24800',
"mini.cooper_d_baker_street.body_type" : 'CP',
"mini.cooper_d_baker_street.charging_type" : '',
"mini.cooper_d_baker_street.co2_emission" : '99 [135] g/km',
"mini.cooper_d_baker_street.co2_emission_num" : '99',
"mini.cooper_d_baker_street.color" : 'WA93',
"mini.cooper_d_baker_street.color_line" : '4C2',
"mini.cooper_d_baker_street.compression_recommended_fuel_type" : '',
"mini.cooper_d_baker_street.cubic_capacity" : '1.560 cmÂ³',
"mini.cooper_d_baker_street.cubic_capacity_num" : '1560',
"mini.cooper_d_baker_street.cushion_material" : 'FTGW',
"mini.cooper_d_baker_street.cylinder_type_valve" : '',
"mini.cooper_d_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini.cooper_d_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_d_baker_street.drive_type" : 'Front',
"mini.cooper_d_baker_street.drive_type_num" : '',
"mini.cooper_d_baker_street.elasticity" : '7,4 / 9,2 s',
"mini.cooper_d_baker_street.elasticity_80_100_5" : '',
"mini.cooper_d_baker_street.elasticity_num" : '7.4',
"mini.cooper_d_baker_street.engine" : 'Cooper D Baker Street',
"mini.cooper_d_baker_street.engine_hood_stripes" : '327',
"mini.cooper_d_baker_street.engine_num" : '',
"mini.cooper_d_baker_street.engine_type" : '',
"mini.cooper_d_baker_street.exterior_mirror" : '382',
"mini.cooper_d_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.218,03 EUR<br />Anzahlung in % 21,04<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.581,97 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 391,64 EUR<br />Darlehensgesamtbetrag 21.553,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 13.888,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_d_baker_street.financing_disclaimer_headline1" : '',
"mini.cooper_d_baker_street.financing_disclaimer_headline2" : '',
"mini.cooper_d_baker_street.folding_top_color" : '',
"mini.cooper_d_baker_street.front_brakes" : '',
"mini.cooper_d_baker_street.fuel_consumption_combined" : '3,8 [5,1] l/100 km',
"mini.cooper_d_baker_street.fuel_consumption_combined_num" : '3.8',
"mini.cooper_d_baker_street.fuel_consumption_extra_urban" : '3,5 [4,1] l/100 km',
"mini.cooper_d_baker_street.fuel_consumption_extra_urban_num" : '',
"mini.cooper_d_baker_street.fuel_consumption_urban" : '4,2 [6,8] l/100 km',
"mini.cooper_d_baker_street.fuel_consumption_urban_num" : '4.2',
"mini.cooper_d_baker_street.fuel_type" : 'Diesel',
"mini.cooper_d_baker_street.fuel_type_num" : '',
"mini.cooper_d_baker_street.id" : 'cooper_d_baker_street',
"mini.cooper_d_baker_street.infomaterial_id" : '',
"mini.cooper_d_baker_street.interior_surface" : '-',
"mini.cooper_d_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_d_baker_street.luggage_capacity_num" : '160',
"mini.cooper_d_baker_street.market_attr1" : '',
"mini.cooper_d_baker_street.market_attr2" : '',
"mini.cooper_d_baker_street.market_attr3" : '',
"mini.cooper_d_baker_street.max_output" : '82/112/4000 kW/PS/1/min',
"mini.cooper_d_baker_street.max_output_num" : '82',
"mini.cooper_d_baker_street.max_permissible_roof_load" : '75 kg',
"mini.cooper_d_baker_street.max_permissible_roof_load_num" : '75',
"mini.cooper_d_baker_street.max_permissible_weight" : '1540 kg',
"mini.cooper_d_baker_street.max_permissible_weight_num" : '1540',
"mini.cooper_d_baker_street.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini.cooper_d_baker_street.max_torque_num" : '270',
"mini.cooper_d_baker_street.max_torque_overboost" : '-',
"mini.cooper_d_baker_street.max_torque_overboost_num" : '-',
"mini.cooper_d_baker_street.max_towed_load" : '',
"mini.cooper_d_baker_street.model_code" : 'SW31_7HT',
"mini.cooper_d_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"mini.cooper_d_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_comparison.png'),
"mini.cooper_d_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_small.jpg'),
"mini.cooper_d_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_medium.jpg'),
"mini.cooper_d_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_d_baker_street.model_name" : 'MINI Cooper D Baker Street',
"mini.cooper_d_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_cooper_d.html'),
"mini.cooper_d_baker_street.output_per_litre" : '',
"mini.cooper_d_baker_street.payload" : '450 kg',
"mini.cooper_d_baker_street.range" : '',
"mini.cooper_d_baker_street.rear_brakes" : '',
"mini.cooper_d_baker_street.rim_dimension" : '5.5J x 15 LM',
"mini.cooper_d_baker_street.roof_color" : '382',
"mini.cooper_d_baker_street.seat_type" : '481',
"mini.cooper_d_baker_street.short_description" : '',
"mini.cooper_d_baker_street.stroke_bore" : '',
"mini.cooper_d_baker_street.tank_capacity" : '40 Liter',
"mini.cooper_d_baker_street.tank_capacity_num" : '40',
"mini.cooper_d_baker_street.top_speed" : '197 [192] km/h',
"mini.cooper_d_baker_street.top_speed_num" : '197',
"mini.cooper_d_baker_street.transmission" : '',
"mini.cooper_d_baker_street.unladen_weight" : '1090 / 1165 kg',
"mini.cooper_d_baker_street.unladen_weight_num" : '1090',
"mini.cooper_d_baker_street.weight_ratio" : '',
"mini.cooper_d_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_d_baker_street.wheels" : '2GC',
"mini.cooper_s.acceleration_0_100" : '7,0 [7,2] s',
"mini.cooper_s.acceleration_0_100_num" : '7',
"mini.cooper_s.acceleration_80_120" : '6,6/8,4 s',
"mini.cooper_s.acceleration_80_120_num" : '6.6',
"mini.cooper_s.allowed_axle_load_front_rear" : '865/745 [890/745] kg',
"mini.cooper_s.basic_financing_price" : '239,00 â‚¬',
"mini.cooper_s.basic_financing_price_num" : '239.00',
"mini.cooper_s.basic_price" : '23.650 â‚¬',
"mini.cooper_s.basic_price_num" : '23650',
"mini.cooper_s.body_type" : 'CP',
"mini.cooper_s.charging_type" : '',
"mini.cooper_s.co2_emission" : '136 [149] g/km',
"mini.cooper_s.co2_emission_num" : '136',
"mini.cooper_s.color" : 'WB24',
"mini.cooper_s.color_line" : '4C1',
"mini.cooper_s.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini.cooper_s.cubic_capacity_num" : '1598',
"mini.cooper_s.cushion_material" : 'T8E1',
"mini.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini.cooper_s.dimensions" : '3729/1683/1407 mm',
"mini.cooper_s.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_s.drive_type" : '',
"mini.cooper_s.drive_type_num" : '',
"mini.cooper_s.elasticity" : '5,6/7,0 s',
"mini.cooper_s.elasticity_80_100_5" : '7 s',
"mini.cooper_s.elasticity_num" : '5.6',
"mini.cooper_s.engine" : 'Cooper S',
"mini.cooper_s.engine_hood_stripes" : '329',
"mini.cooper_s.engine_num" : '1.6',
"mini.cooper_s.engine_type" : '',
"mini.cooper_s.exterior_mirror" : '383',
"mini.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4821,48 EUR<br />Anzahlung in % 20,39<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.828,52 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 376,57 EUR<br />Darlehensgesamtbetrag 20.663,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 12.298,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_s.financing_disclaimer_headline1" : '',
"mini.cooper_s.financing_disclaimer_headline2" : '',
"mini.cooper_s.folding_top_color" : '',
"mini.cooper_s.front_brakes" : '',
"mini.cooper_s.fuel_consumption_combined" : '5,8 [6,4] l/100 km',
"mini.cooper_s.fuel_consumption_combined_num" : '5.8',
"mini.cooper_s.fuel_consumption_extra_urban" : '5,0 [5,0] l/100 km',
"mini.cooper_s.fuel_consumption_extra_urban_num" : '5',
"mini.cooper_s.fuel_consumption_urban" : '7,3 [8,9] l/100 km',
"mini.cooper_s.fuel_consumption_urban_num" : '7.3',
"mini.cooper_s.fuel_type" : 'Benzin',
"mini.cooper_s.fuel_type_num" : '',
"mini.cooper_s.id" : 'cooper_s',
"mini.cooper_s.infomaterial_id" : '268466091',
"mini.cooper_s.interior_surface" : '-',
"mini.cooper_s.luggage_capacity" : '160 â€“ 680 l',
"mini.cooper_s.luggage_capacity_num" : '160',
"mini.cooper_s.market_attr1" : '',
"mini.cooper_s.market_attr2" : '',
"mini.cooper_s.market_attr3" : '',
"mini.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini.cooper_s.max_output_num" : '135',
"mini.cooper_s.max_permissible_roof_load" : '75 kg',
"mini.cooper_s.max_permissible_roof_load_num" : '75',
"mini.cooper_s.max_permissible_weight" : '1590 [1615] kg',
"mini.cooper_s.max_permissible_weight_num" : '1590',
"mini.cooper_s.max_torque" : '240(260)/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s.max_torque_num" : '240',
"mini.cooper_s.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s.max_torque_overboost_num" : '260',
"mini.cooper_s.max_towed_load" : '-',
"mini.cooper_s.model_code" : 'SV31',
"mini.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_s/financial_services/'),
"mini.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_s/modelcomparison.jpg'),
"mini.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_s/model_filter_small.jpg'),
"mini.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_s/model_filter_medium.jpg'),
"mini.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s.model_name" : 'MINI Cooper S',
"mini.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_s/model_quickfacts.html'),
"mini.cooper_s.output_per_litre" : '',
"mini.cooper_s.payload" : '450 kg',
"mini.cooper_s.range" : '860 [780] km',
"mini.cooper_s.rear_brakes" : '',
"mini.cooper_s.rim_dimension" : '6,5 J x 16 LM',
"mini.cooper_s.roof_color" : '383',
"mini.cooper_s.seat_type" : '481',
"mini.cooper_s.short_description" : '',
"mini.cooper_s.stroke_bore" : '85,8/77,0 mm',
"mini.cooper_s.tank_capacity" : '50 l',
"mini.cooper_s.tank_capacity_num" : '50',
"mini.cooper_s.top_speed" : '228 [223] km/h',
"mini.cooper_s.top_speed_num" : '228',
"mini.cooper_s.transmission" : '',
"mini.cooper_s.unladen_weight" : '1215 [1240] kg',
"mini.cooper_s.unladen_weight_num" : '1215',
"mini.cooper_s.weight_ratio" : '',
"mini.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_s.wheels" : '195/55 R 16 87V',
"mini.cooper_s_bayswater.acceleration_0_100" : '7 [7,2] s',
"mini.cooper_s_bayswater.acceleration_0_100_num" : '7',
"mini.cooper_s_bayswater.acceleration_80_120" : '6,6 / 8,4 s',
"mini.cooper_s_bayswater.acceleration_80_120_num" : '6.6',
"mini.cooper_s_bayswater.allowed_axle_load_front_rear" : '',
"mini.cooper_s_bayswater.basic_financing_price" : '279,00 â‚¬',
"mini.cooper_s_bayswater.basic_financing_price_num" : '279',
"mini.cooper_s_bayswater.basic_price" : '27.400 â‚¬',
"mini.cooper_s_bayswater.basic_price_num" : '27400',
"mini.cooper_s_bayswater.body_type" : 'CP',
"mini.cooper_s_bayswater.charging_type" : '',
"mini.cooper_s_bayswater.co2_emission" : '136 [149] g/km',
"mini.cooper_s_bayswater.co2_emission_num" : '136',
"mini.cooper_s_bayswater.color" : 'WB24',
"mini.cooper_s_bayswater.color_line" : '4C1',
"mini.cooper_s_bayswater.compression_recommended_fuel_type" : '',
"mini.cooper_s_bayswater.cubic_capacity" : '1.598 cmÂ³',
"mini.cooper_s_bayswater.cubic_capacity_num" : '1598',
"mini.cooper_s_bayswater.cushion_material" : 'T8E1',
"mini.cooper_s_bayswater.cylinder_type_valve" : '',
"mini.cooper_s_bayswater.dimensions" : '3714 / 1683 / 1407 mm',
"mini.cooper_s_bayswater.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_s_bayswater.drive_type" : 'Front',
"mini.cooper_s_bayswater.drive_type_num" : '',
"mini.cooper_s_bayswater.elasticity" : '5,6 / 7,0 s',
"mini.cooper_s_bayswater.elasticity_80_100_5" : '',
"mini.cooper_s_bayswater.elasticity_num" : '5.6',
"mini.cooper_s_bayswater.engine" : 'Cooper S Bayswater',
"mini.cooper_s_bayswater.engine_hood_stripes" : '329',
"mini.cooper_s_bayswater.engine_num" : '1.6',
"mini.cooper_s_bayswater.engine_type" : '',
"mini.cooper_s_bayswater.exterior_mirror" : '383',
"mini.cooper_s_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.516,52 EUR<br />Anzahlung in % 20,13<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.883,48 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 437,67 EUR<br />Darlehensgesamtbetrag 24.013,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 14.248,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_s_bayswater.financing_disclaimer_headline1" : '',
"mini.cooper_s_bayswater.financing_disclaimer_headline2" : '',
"mini.cooper_s_bayswater.folding_top_color" : '',
"mini.cooper_s_bayswater.front_brakes" : '',
"mini.cooper_s_bayswater.fuel_consumption_combined" : '5,8 [6,4] l/100 km',
"mini.cooper_s_bayswater.fuel_consumption_combined_num" : '5.8',
"mini.cooper_s_bayswater.fuel_consumption_extra_urban" : '5 [5,0] l/100 km',
"mini.cooper_s_bayswater.fuel_consumption_extra_urban_num" : '5',
"mini.cooper_s_bayswater.fuel_consumption_urban" : '7,3 [8,9] l/100 km',
"mini.cooper_s_bayswater.fuel_consumption_urban_num" : '7.3',
"mini.cooper_s_bayswater.fuel_type" : 'Benzin',
"mini.cooper_s_bayswater.fuel_type_num" : '',
"mini.cooper_s_bayswater.id" : 'cooper_s_bayswater',
"mini.cooper_s_bayswater.infomaterial_id" : '268466091',
"mini.cooper_s_bayswater.interior_surface" : '-',
"mini.cooper_s_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_s_bayswater.luggage_capacity_num" : '160',
"mini.cooper_s_bayswater.market_attr1" : '',
"mini.cooper_s_bayswater.market_attr2" : '',
"mini.cooper_s_bayswater.market_attr3" : '',
"mini.cooper_s_bayswater.max_output" : '135/184/5500 kW/PS/1/min',
"mini.cooper_s_bayswater.max_output_num" : '135',
"mini.cooper_s_bayswater.max_permissible_roof_load" : '75 kg',
"mini.cooper_s_bayswater.max_permissible_roof_load_num" : '75',
"mini.cooper_s_bayswater.max_permissible_weight" : '1580 kg',
"mini.cooper_s_bayswater.max_permissible_weight_num" : '1580',
"mini.cooper_s_bayswater.max_torque" : '240(260)/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s_bayswater.max_torque_num" : '240',
"mini.cooper_s_bayswater.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s_bayswater.max_torque_overboost_num" : '260',
"mini.cooper_s_bayswater.max_towed_load" : '',
"mini.cooper_s_bayswater.model_code" : 'SV31_7HU',
"mini.cooper_s_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_s/financial_services/index.html'),
"mini.cooper_s_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_comparison.png'),
"mini.cooper_s_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_small.jpg'),
"mini.cooper_s_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_medium.jpg'),
"mini.cooper_s_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_bayswater.model_name" : 'MINI Cooper S Bayswater',
"mini.cooper_s_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_s.html'),
"mini.cooper_s_bayswater.output_per_litre" : '',
"mini.cooper_s_bayswater.payload" : '450 kg',
"mini.cooper_s_bayswater.range" : '',
"mini.cooper_s_bayswater.rear_brakes" : '',
"mini.cooper_s_bayswater.rim_dimension" : '6.5 J x 16 LM',
"mini.cooper_s_bayswater.roof_color" : '383',
"mini.cooper_s_bayswater.seat_type" : '481',
"mini.cooper_s_bayswater.short_description" : '',
"mini.cooper_s_bayswater.stroke_bore" : '',
"mini.cooper_s_bayswater.tank_capacity" : '50 Liter',
"mini.cooper_s_bayswater.tank_capacity_num" : '50',
"mini.cooper_s_bayswater.top_speed" : '228 [223] km/h',
"mini.cooper_s_bayswater.top_speed_num" : '228',
"mini.cooper_s_bayswater.transmission" : '',
"mini.cooper_s_bayswater.unladen_weight" : '1130 / 1205 kg',
"mini.cooper_s_bayswater.unladen_weight_num" : '1130',
"mini.cooper_s_bayswater.weight_ratio" : '',
"mini.cooper_s_bayswater.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_s_bayswater.wheels" : '2GD',
"mini.cooper_s_goodwood.acceleration_0_100" : '7,0 [7,2] s',
"mini.cooper_s_goodwood.acceleration_0_100_num" : '7',
"mini.cooper_s_goodwood.acceleration_80_120" : '6,6/8,4 s',
"mini.cooper_s_goodwood.acceleration_80_120_num" : '6.6',
"mini.cooper_s_goodwood.allowed_axle_load_front_rear" : '865/745 [890/745] kg',
"mini.cooper_s_goodwood.basic_financing_price" : '',
"mini.cooper_s_goodwood.basic_financing_price_num" : '236.52',
"mini.cooper_s_goodwood.basic_price" : '',
"mini.cooper_s_goodwood.basic_price_num" : '23100',
"mini.cooper_s_goodwood.body_type" : 'CP',
"mini.cooper_s_goodwood.charging_type" : '',
"mini.cooper_s_goodwood.co2_emission" : '136 [149] g/km',
"mini.cooper_s_goodwood.co2_emission_num" : '136',
"mini.cooper_s_goodwood.color" : 'WB24',
"mini.cooper_s_goodwood.color_line" : '4C1',
"mini.cooper_s_goodwood.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini.cooper_s_goodwood.cubic_capacity" : '1598 cmÂ³',
"mini.cooper_s_goodwood.cubic_capacity_num" : '1598',
"mini.cooper_s_goodwood.cushion_material" : 'T8E1',
"mini.cooper_s_goodwood.cylinder_type_valve" : '4/Reihe/4',
"mini.cooper_s_goodwood.dimensions" : '3729/1683/1407 mm',
"mini.cooper_s_goodwood.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_s_goodwood.drive_type" : 'Front',
"mini.cooper_s_goodwood.drive_type_num" : '',
"mini.cooper_s_goodwood.elasticity" : '5,6/7,0 s',
"mini.cooper_s_goodwood.elasticity_80_100_5" : '7 s',
"mini.cooper_s_goodwood.elasticity_num" : '5.6',
"mini.cooper_s_goodwood.engine" : 'MINI INSPIRED BY GOODWOOD',
"mini.cooper_s_goodwood.engine_hood_stripes" : '329',
"mini.cooper_s_goodwood.engine_num" : '1.6',
"mini.cooper_s_goodwood.engine_type" : '',
"mini.cooper_s_goodwood.exterior_mirror" : '383',
"mini.cooper_s_goodwood.financing_disclaimer" : '',
"mini.cooper_s_goodwood.financing_disclaimer_headline1" : '',
"mini.cooper_s_goodwood.financing_disclaimer_headline2" : '',
"mini.cooper_s_goodwood.folding_top_color" : '',
"mini.cooper_s_goodwood.front_brakes" : '',
"mini.cooper_s_goodwood.fuel_consumption_combined" : '5.8 l/100 km',
"mini.cooper_s_goodwood.fuel_consumption_combined_num" : '5,8 [6,4] l/100 km',
"mini.cooper_s_goodwood.fuel_consumption_extra_urban" : '5,0 [5,0] l/100 km',
"mini.cooper_s_goodwood.fuel_consumption_extra_urban_num" : '5',
"mini.cooper_s_goodwood.fuel_consumption_urban" : '7,3 [8,9] l/100 km',
"mini.cooper_s_goodwood.fuel_consumption_urban_num" : '7.3',
"mini.cooper_s_goodwood.fuel_type" : 'Benzin',
"mini.cooper_s_goodwood.fuel_type_num" : '',
"mini.cooper_s_goodwood.id" : 'cooper_s_goodwood',
"mini.cooper_s_goodwood.infomaterial_id" : '268466091',
"mini.cooper_s_goodwood.interior_surface" : '-',
"mini.cooper_s_goodwood.luggage_capacity" : '160 - 680 l',
"mini.cooper_s_goodwood.luggage_capacity_num" : '160',
"mini.cooper_s_goodwood.market_attr1" : '',
"mini.cooper_s_goodwood.market_attr2" : '',
"mini.cooper_s_goodwood.market_attr3" : '',
"mini.cooper_s_goodwood.max_output" : '135/184/5500 kW/PS/1/min',
"mini.cooper_s_goodwood.max_output_num" : '135',
"mini.cooper_s_goodwood.max_permissible_roof_load" : '75 kg',
"mini.cooper_s_goodwood.max_permissible_roof_load_num" : '75',
"mini.cooper_s_goodwood.max_permissible_weight" : '1590 [1615] kg',
"mini.cooper_s_goodwood.max_permissible_weight_num" : '1590',
"mini.cooper_s_goodwood.max_torque" : '240(260)/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s_goodwood.max_torque_num" : '240',
"mini.cooper_s_goodwood.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini.cooper_s_goodwood.max_torque_overboost_num" : '260',
"mini.cooper_s_goodwood.max_towed_load" : '',
"mini.cooper_s_goodwood.model_code" : 'SV31',
"mini.cooper_s_goodwood.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/finance/index.html'),
"mini.cooper_s_goodwood.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/modelcomparison_r56_goodwood.jpg'),
"mini.cooper_s_goodwood.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/r56_goodwood_small.jpg'),
"mini.cooper_s_goodwood.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/r56_goodwood_medium.jpg'),
"mini.cooper_s_goodwood.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_goodwood.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_goodwood.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_s_goodwood.model_name" : 'MINI INSPIRED BY GOODWOOD',
"mini.cooper_s_goodwood.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_goodwood/model_quickfacts.html'),
"mini.cooper_s_goodwood.output_per_litre" : '',
"mini.cooper_s_goodwood.payload" : '450 kg',
"mini.cooper_s_goodwood.range" : '860 [780] km',
"mini.cooper_s_goodwood.rear_brakes" : '',
"mini.cooper_s_goodwood.rim_dimension" : '6,5 J x 16 LM',
"mini.cooper_s_goodwood.roof_color" : '383',
"mini.cooper_s_goodwood.seat_type" : '481',
"mini.cooper_s_goodwood.short_description" : '',
"mini.cooper_s_goodwood.stroke_bore" : '85,8/77,0 mm',
"mini.cooper_s_goodwood.tank_capacity" : '50 l',
"mini.cooper_s_goodwood.tank_capacity_num" : '50',
"mini.cooper_s_goodwood.top_speed" : '228 [223] km/h',
"mini.cooper_s_goodwood.top_speed_num" : '228',
"mini.cooper_s_goodwood.transmission" : '',
"mini.cooper_s_goodwood.unladen_weight" : '1215 [1240] kg',
"mini.cooper_s_goodwood.unladen_weight_num" : '1215',
"mini.cooper_s_goodwood.weight_ratio" : '',
"mini.cooper_s_goodwood.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_s_goodwood.wheels" : '195/55 R 16 87V',
"mini.cooper_sd.acceleration_0_100" : '8,1 [8,4] s',
"mini.cooper_sd.acceleration_0_100_num" : '8.1',
"mini.cooper_sd.acceleration_80_120" : '6,6/8,4 s',
"mini.cooper_sd.acceleration_80_120_num" : '6.6',
"mini.cooper_sd.allowed_axle_load_front_rear" : '890/735 [910/735] kg',
"mini.cooper_sd.basic_financing_price" : '229,00 â‚¬',
"mini.cooper_sd.basic_financing_price_num" : '229.00',
"mini.cooper_sd.basic_price" : '24.650 â‚¬',
"mini.cooper_sd.basic_price_num" : '24650',
"mini.cooper_sd.body_type" : 'CP',
"mini.cooper_sd.charging_type" : '',
"mini.cooper_sd.co2_emission" : '114 [139] g/km',
"mini.cooper_sd.co2_emission_num" : '114',
"mini.cooper_sd.color" : 'WB24',
"mini.cooper_sd.color_line" : '4C1',
"mini.cooper_sd.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini.cooper_sd.cubic_capacity_num" : '1995',
"mini.cooper_sd.cushion_material" : 'T8E1',
"mini.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini.cooper_sd.dimensions" : '3723/1683/1407 mm',
"mini.cooper_sd.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_sd.drive_type" : '',
"mini.cooper_sd.drive_type_num" : '',
"mini.cooper_sd.elasticity" : '6,6/7,8 s',
"mini.cooper_sd.elasticity_80_100_5" : '7,8 s',
"mini.cooper_sd.elasticity_num" : '6.6',
"mini.cooper_sd.engine" : 'Cooper SD',
"mini.cooper_sd.engine_hood_stripes" : '329',
"mini.cooper_sd.engine_num" : '1.6',
"mini.cooper_sd.engine_type" : '',
"mini.cooper_sd.exterior_mirror" : '383',
"mini.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI Partner.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.812,49 EUR<br />Anzahlung in % 19,52<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.837,51 EUR<br />Sollzinssatz p.a.* 3,10 %<br />BearbeitungsgebÃ¼hr 396,75 EUR<br />Darlehensgesamtbetrag 21.819,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 13.804,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_sd.financing_disclaimer_headline1" : '',
"mini.cooper_sd.financing_disclaimer_headline2" : '',
"mini.cooper_sd.folding_top_color" : '',
"mini.cooper_sd.front_brakes" : '',
"mini.cooper_sd.fuel_consumption_combined" : '4,3 [5,3] l/100 km',
"mini.cooper_sd.fuel_consumption_combined_num" : '4.3',
"mini.cooper_sd.fuel_consumption_extra_urban" : '3,9 [4,3] l/100 km',
"mini.cooper_sd.fuel_consumption_extra_urban_num" : '3.9',
"mini.cooper_sd.fuel_consumption_urban" : '5,1 [6,9] l/100 km',
"mini.cooper_sd.fuel_consumption_urban_num" : '5.1',
"mini.cooper_sd.fuel_type" : 'Diesel',
"mini.cooper_sd.fuel_type_num" : '',
"mini.cooper_sd.id" : 'cooper_sd',
"mini.cooper_sd.infomaterial_id" : '268466091',
"mini.cooper_sd.interior_surface" : '-',
"mini.cooper_sd.luggage_capacity" : '160 â€“ 680 l',
"mini.cooper_sd.luggage_capacity_num" : '160',
"mini.cooper_sd.market_attr1" : '',
"mini.cooper_sd.market_attr2" : '',
"mini.cooper_sd.market_attr3" : '',
"mini.cooper_sd.max_output" : '105/143/4000 kW/PS/1/min',
"mini.cooper_sd.max_output_num" : '105',
"mini.cooper_sd.max_permissible_roof_load" : '75 kg',
"mini.cooper_sd.max_permissible_roof_load_num" : '75',
"mini.cooper_sd.max_permissible_weight" : '1600 [1620] kg',
"mini.cooper_sd.max_permissible_weight_num" : '1600',
"mini.cooper_sd.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini.cooper_sd.max_torque_num" : '305',
"mini.cooper_sd.max_torque_overboost" : '',
"mini.cooper_sd.max_torque_overboost_num" : '',
"mini.cooper_sd.max_towed_load" : '-',
"mini.cooper_sd.model_code" : 'SW71',
"mini.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_sd/financial_services/index.html'),
"mini.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_sd/modelcomparison.jpg'),
"mini.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_sd/model_filter_small.jpg'),
"mini.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/cooper_sd/model_filter_medium.jpg'),
"mini.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd.model_name" : 'MINI Cooper SD',
"mini.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_sd/model_quickfacts.html'),
"mini.cooper_sd.output_per_litre" : '',
"mini.cooper_sd.payload" : '450 kg',
"mini.cooper_sd.range" : '930 [755] km',
"mini.cooper_sd.rear_brakes" : '',
"mini.cooper_sd.rim_dimension" : '6,5 J x 16 LM',
"mini.cooper_sd.roof_color" : '383',
"mini.cooper_sd.seat_type" : '481',
"mini.cooper_sd.short_description" : '',
"mini.cooper_sd.stroke_bore" : '90/84 mm',
"mini.cooper_sd.tank_capacity" : '40 l',
"mini.cooper_sd.tank_capacity_num" : '40',
"mini.cooper_sd.top_speed" : '215 [205] km/h',
"mini.cooper_sd.top_speed_num" : '215',
"mini.cooper_sd.transmission" : '',
"mini.cooper_sd.unladen_weight" : '1225 [1245] kg',
"mini.cooper_sd.unladen_weight_num" : '1225',
"mini.cooper_sd.weight_ratio" : '',
"mini.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_sd.wheels" : '195/55 R 16 87V',
"mini.cooper_sd_bayswater.acceleration_0_100" : '8,1 [8,4] s',
"mini.cooper_sd_bayswater.acceleration_0_100_num" : '8.1',
"mini.cooper_sd_bayswater.acceleration_80_120" : '6,6 / 8,4 s',
"mini.cooper_sd_bayswater.acceleration_80_120_num" : '6.6',
"mini.cooper_sd_bayswater.allowed_axle_load_front_rear" : '',
"mini.cooper_sd_bayswater.basic_financing_price" : '259,00 â‚¬',
"mini.cooper_sd_bayswater.basic_financing_price_num" : '259',
"mini.cooper_sd_bayswater.basic_price" : '28.400 â‚¬',
"mini.cooper_sd_bayswater.basic_price_num" : '28400',
"mini.cooper_sd_bayswater.body_type" : 'CP',
"mini.cooper_sd_bayswater.charging_type" : '',
"mini.cooper_sd_bayswater.co2_emission" : '114 [139] g/km',
"mini.cooper_sd_bayswater.co2_emission_num" : '114',
"mini.cooper_sd_bayswater.color" : 'WB24',
"mini.cooper_sd_bayswater.color_line" : '4C1',
"mini.cooper_sd_bayswater.compression_recommended_fuel_type" : '',
"mini.cooper_sd_bayswater.cubic_capacity" : '1.995 cmÂ³',
"mini.cooper_sd_bayswater.cubic_capacity_num" : '1995',
"mini.cooper_sd_bayswater.cushion_material" : 'T8E1',
"mini.cooper_sd_bayswater.cylinder_type_valve" : '',
"mini.cooper_sd_bayswater.dimensions" : '3723 / 1683 / 1407 mm',
"mini.cooper_sd_bayswater.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_sd_bayswater.drive_type" : 'Front',
"mini.cooper_sd_bayswater.drive_type_num" : '',
"mini.cooper_sd_bayswater.elasticity" : '6,6 / 7,8 s',
"mini.cooper_sd_bayswater.elasticity_80_100_5" : '',
"mini.cooper_sd_bayswater.elasticity_num" : '6.6',
"mini.cooper_sd_bayswater.engine" : 'Cooper SD Bayswater',
"mini.cooper_sd_bayswater.engine_hood_stripes" : '329',
"mini.cooper_sd_bayswater.engine_num" : '1.6',
"mini.cooper_sd_bayswater.engine_type" : '',
"mini.cooper_sd_bayswater.exterior_mirror" : '383',
"mini.cooper_sd_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.704,37 EUR<br />Anzahlung in % 20,09<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.695,63 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 453,91 EUR<br />Darlehensgesamtbetrag 24.969,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 15.904,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.cooper_sd_bayswater.financing_disclaimer_headline1" : '',
"mini.cooper_sd_bayswater.financing_disclaimer_headline2" : '',
"mini.cooper_sd_bayswater.folding_top_color" : '',
"mini.cooper_sd_bayswater.front_brakes" : '',
"mini.cooper_sd_bayswater.fuel_consumption_combined" : '4,3 [5,3] l/100 km',
"mini.cooper_sd_bayswater.fuel_consumption_combined_num" : '4.3',
"mini.cooper_sd_bayswater.fuel_consumption_extra_urban" : '3,9 [4,3] l/100 km',
"mini.cooper_sd_bayswater.fuel_consumption_extra_urban_num" : '3.9',
"mini.cooper_sd_bayswater.fuel_consumption_urban" : '5,1 [6,9] l/100 km',
"mini.cooper_sd_bayswater.fuel_consumption_urban_num" : '5.1',
"mini.cooper_sd_bayswater.fuel_type" : 'Diesel',
"mini.cooper_sd_bayswater.fuel_type_num" : '',
"mini.cooper_sd_bayswater.id" : 'cooper_sd_bayswater',
"mini.cooper_sd_bayswater.infomaterial_id" : '268466091',
"mini.cooper_sd_bayswater.interior_surface" : '-',
"mini.cooper_sd_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini.cooper_sd_bayswater.luggage_capacity_num" : '160',
"mini.cooper_sd_bayswater.market_attr1" : '',
"mini.cooper_sd_bayswater.market_attr2" : '',
"mini.cooper_sd_bayswater.market_attr3" : '',
"mini.cooper_sd_bayswater.max_output" : '105/143/4000 kW/PS/1/min',
"mini.cooper_sd_bayswater.max_output_num" : '135',
"mini.cooper_sd_bayswater.max_permissible_roof_load" : '75 kg',
"mini.cooper_sd_bayswater.max_permissible_roof_load_num" : '75',
"mini.cooper_sd_bayswater.max_permissible_weight" : '1600 kg',
"mini.cooper_sd_bayswater.max_permissible_weight_num" : '1600',
"mini.cooper_sd_bayswater.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini.cooper_sd_bayswater.max_torque_num" : '305',
"mini.cooper_sd_bayswater.max_torque_overboost" : '',
"mini.cooper_sd_bayswater.max_torque_overboost_num" : '',
"mini.cooper_sd_bayswater.max_towed_load" : '',
"mini.cooper_sd_bayswater.model_code" : 'SW71_7HU',
"mini.cooper_sd_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_sd/financial_services/index.html'),
"mini.cooper_sd_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_comparison.png'),
"mini.cooper_sd_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_small.jpg'),
"mini.cooper_sd_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_medium.jpg'),
"mini.cooper_sd_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.cooper_sd_bayswater.model_name" : 'MINI Cooper SD Bayswater',
"mini.cooper_sd_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_sd.html'),
"mini.cooper_sd_bayswater.output_per_litre" : '',
"mini.cooper_sd_bayswater.payload" : '450 kg',
"mini.cooper_sd_bayswater.range" : '',
"mini.cooper_sd_bayswater.rear_brakes" : '',
"mini.cooper_sd_bayswater.rim_dimension" : '6.5 J x 16 LM',
"mini.cooper_sd_bayswater.roof_color" : '383',
"mini.cooper_sd_bayswater.seat_type" : '481',
"mini.cooper_sd_bayswater.short_description" : '',
"mini.cooper_sd_bayswater.stroke_bore" : '',
"mini.cooper_sd_bayswater.tank_capacity" : '40 Liter',
"mini.cooper_sd_bayswater.tank_capacity_num" : '40',
"mini.cooper_sd_bayswater.top_speed" : '215 [205] km/h',
"mini.cooper_sd_bayswater.top_speed_num" : '215',
"mini.cooper_sd_bayswater.transmission" : '',
"mini.cooper_sd_bayswater.unladen_weight" : '1150 / 1225 kg',
"mini.cooper_sd_bayswater.unladen_weight_num" : '1150',
"mini.cooper_sd_bayswater.weight_ratio" : '',
"mini.cooper_sd_bayswater.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_sd_bayswater.wheels" : '2GD',
"mini.mini.acceleration_0_100" : '6,5 s',
"mini.mini.acceleration_0_100_num" : '6.5',
"mini.mini.acceleration_80_120" : '',
"mini.mini.acceleration_80_120_num" : '',
"mini.mini.allowed_axle_load_front_rear" : '',
"mini.mini.basic_financing_price" : '299,00 â‚¬',
"mini.mini.basic_financing_price_num" : '299.00',
"mini.mini.basic_price" : '29.500 â‚¬',
"mini.mini.basic_price_num" : '29500',
"mini.mini.body_type" : 'CP',
"mini.mini.charging_type" : 'twin scroll turbo',
"mini.mini.co2_emission" : '165 g/km',
"mini.mini.co2_emission_num" : '165',
"mini.mini.color" : 'WA94',
"mini.mini.color_line" : '4C1',
"mini.mini.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"mini.mini.cubic_capacity" : '1598 cmÂ³',
"mini.mini.cubic_capacity_num" : '1598',
"mini.mini.cushion_material" : 'T9IN',
"mini.mini.cylinder_type_valve" : '4/Reihe/4',
"mini.mini.dimensions" : '3.729 / 1.683 / 1.407 mm',
"mini.mini.dimensions_num" : '3729 / 1683 / 1407',
"mini.mini.drive_type" : '',
"mini.mini.drive_type_num" : '',
"mini.mini.elasticity" : '5,2 / 6,2 s',
"mini.mini.elasticity_80_100_5" : '6,2 s',
"mini.mini.elasticity_num" : '5.2',
"mini.mini.engine" : 'John Cooper Works',
"mini.mini.engine_hood_stripes" : '3AZ',
"mini.mini.engine_num" : '',
"mini.mini.engine_type" : '',
"mini.mini.exterior_mirror" : '3A3',
"mini.mini.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.985,00 EUR<br />Anzahlung in % 20,29<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein351<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 23.515,00 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 470,30 EUR<br />Darlehensgesamtbetrag 25.805,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.340,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini.mini.financing_disclaimer_headline1" : '',
"mini.mini.financing_disclaimer_headline2" : '',
"mini.mini.folding_top_color" : '',
"mini.mini.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"mini.mini.fuel_consumption_combined" : '7,1 l/100 km',
"mini.mini.fuel_consumption_combined_num" : '7.1',
"mini.mini.fuel_consumption_extra_urban" : '5,8 l/100 km',
"mini.mini.fuel_consumption_extra_urban_num" : '-',
"mini.mini.fuel_consumption_urban" : '9,4 l/100 km',
"mini.mini.fuel_consumption_urban_num" : '9.4',
"mini.mini.fuel_type" : 'Benzin',
"mini.mini.fuel_type_num" : '',
"mini.mini.id" : 'mini',
"mini.mini.infomaterial_id" : '',
"mini.mini.interior_surface" : '4CY',
"mini.mini.luggage_capacity" : '160-680 l',
"mini.mini.luggage_capacity_num" : '160',
"mini.mini.market_attr1" : '',
"mini.mini.market_attr2" : '',
"mini.mini.market_attr3" : '',
"mini.mini.max_output" : '155/211/6000 kW/PS/1/min',
"mini.mini.max_output_num" : '155',
"mini.mini.max_permissible_roof_load" : '75 kg',
"mini.mini.max_permissible_roof_load_num" : '75',
"mini.mini.max_permissible_weight" : '1.590 kg',
"mini.mini.max_permissible_weight_num" : '1590',
"mini.mini.max_torque" : '260(280)/1850-5600 Nm/1/min',
"mini.mini.max_torque_num" : '260',
"mini.mini.max_torque_overboost" : '280 Nm / 1.850-5.600 min-1',
"mini.mini.max_torque_overboost_num" : '280',
"mini.mini.max_towed_load" : '',
"mini.mini.model_code" : 'SV91',
"mini.mini.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/financial_services/'),
"mini.mini.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/modelcomparison.jpg'),
"mini.mini.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_small.jpg'),
"mini.mini.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_medium.jpg'),
"mini.mini.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_3.jpg'),
"mini.mini.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_4.jpg'),
"mini.mini.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_5.jpg'),
"mini.mini.model_name" : 'MINI John Cooper Works',
"mini.mini.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/model_quickfacts.html'),
"mini.mini.output_per_litre" : '97 kW/l',
"mini.mini.payload" : '450 kg',
"mini.mini.range" : '705 km',
"mini.mini.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"mini.mini.rim_dimension" : '7,0J x 17 LM',
"mini.mini.roof_color" : '3A3',
"mini.mini.seat_type" : '481',
"mini.mini.short_description" : '',
"mini.mini.stroke_bore" : '85,8/77 mm',
"mini.mini.tank_capacity" : '50 Liter',
"mini.mini.tank_capacity_num" : '50',
"mini.mini.top_speed" : '238 km/h',
"mini.mini.top_speed_num" : '238',
"mini.mini.transmission" : '',
"mini.mini.unladen_weight" : '1140/1215 kg',
"mini.mini.unladen_weight_num" : '1140',
"mini.mini.weight_ratio" : '7,4 kg/kW',
"mini.mini.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini.mini.wheels" : '205/45 R 17 84 W RSC',
"mini.challenge.acceleration_0_100" : '6,1 s',
"mini.challenge.acceleration_0_100_num" : '6.1',
"mini.challenge.acceleration_80_120" : '',
"mini.challenge.acceleration_80_120_num" : '',
"mini.challenge.allowed_axle_load_front_rear" : '',
"mini.challenge.basic_financing_price" : '-',
"mini.challenge.basic_financing_price_num" : '',
"mini.challenge.basic_price" : '49.900 â‚¬',
"mini.challenge.basic_price_num" : '49900',
"mini.challenge.body_type" : 'CP',
"mini.challenge.charging_type" : '',
"mini.challenge.co2_emission" : '-',
"mini.challenge.co2_emission_num" : '',
"mini.challenge.color" : '-',
"mini.challenge.color_line" : '-',
"mini.challenge.compression_recommended_fuel_type" : '',
"mini.challenge.cubic_capacity" : '1.598 cmÂ³',
"mini.challenge.cubic_capacity_num" : '1598',
"mini.challenge.cushion_material" : '-',
"mini.challenge.cylinder_type_valve" : '',
"mini.challenge.dimensions" : '3.798 / 1.683 / 1.446 mm',
"mini.challenge.dimensions_num" : '3798 / 1683 / 1446',
"mini.challenge.drive_type" : '',
"mini.challenge.drive_type_num" : '',
"mini.challenge.elasticity" : '-',
"mini.challenge.elasticity_80_100_5" : '',
"mini.challenge.elasticity_num" : '',
"mini.challenge.engine" : 'John Cooper Works Challenge',
"mini.challenge.engine_hood_stripes" : '-',
"mini.challenge.engine_num" : '',
"mini.challenge.engine_type" : '',
"mini.challenge.exterior_mirror" : '-',
"mini.challenge.financing_disclaimer" : 'Wird vom Markt ergÃ¤nzt.',
"mini.challenge.financing_disclaimer_headline1" : '',
"mini.challenge.financing_disclaimer_headline2" : '',
"mini.challenge.folding_top_color" : '',
"mini.challenge.front_brakes" : '',
"mini.challenge.fuel_consumption_combined" : '-',
"mini.challenge.fuel_consumption_combined_num" : '',
"mini.challenge.fuel_consumption_extra_urban" : '-',
"mini.challenge.fuel_consumption_extra_urban_num" : '',
"mini.challenge.fuel_consumption_urban" : '-',
"mini.challenge.fuel_consumption_urban_num" : '',
"mini.challenge.fuel_type" : 'Benzin',
"mini.challenge.fuel_type_num" : '',
"mini.challenge.id" : 'challenge',
"mini.challenge.infomaterial_id" : '',
"mini.challenge.interior_surface" : '-',
"mini.challenge.luggage_capacity" : '-',
"mini.challenge.luggage_capacity_num" : '0',
"mini.challenge.market_attr1" : '',
"mini.challenge.market_attr2" : '',
"mini.challenge.market_attr3" : '',
"mini.challenge.max_output" : '155 kW (211 PS)',
"mini.challenge.max_output_num" : '155',
"mini.challenge.max_permissible_roof_load" : '-',
"mini.challenge.max_permissible_roof_load_num" : '',
"mini.challenge.max_permissible_weight" : '-',
"mini.challenge.max_permissible_weight_num" : '',
"mini.challenge.max_torque" : '260 Nm',
"mini.challenge.max_torque_num" : '260',
"mini.challenge.max_torque_overboost" : '280 Nm',
"mini.challenge.max_torque_overboost_num" : '280',
"mini.challenge.max_towed_load" : '',
"mini.challenge.model_code" : '-',
"mini.challenge.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works_challenge/index.html'),
"mini.challenge.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/jcw_challenge/modelcomparison.jpg'),
"mini.challenge.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/jcw_challenge/model_filter_small.jpg'),
"mini.challenge.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/jcw_challenge/model_filter_medium.jpg'),
"mini.challenge.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_3.jpg'),
"mini.challenge.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_4.jpg'),
"mini.challenge.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_5.jpg'),
"mini.challenge.model_name" : 'MINI John Cooper Works CHALLENGE',
"mini.challenge.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works_challenge/model_quickfacts.html'),
"mini.challenge.output_per_litre" : '',
"mini.challenge.payload" : '',
"mini.challenge.range" : '',
"mini.challenge.rear_brakes" : '',
"mini.challenge.rim_dimension" : '7,5 x 7',
"mini.challenge.roof_color" : '-',
"mini.challenge.seat_type" : '-',
"mini.challenge.short_description" : '',
"mini.challenge.stroke_bore" : '',
"mini.challenge.tank_capacity" : '-',
"mini.challenge.tank_capacity_num" : '',
"mini.challenge.top_speed" : '240 km/h',
"mini.challenge.top_speed_num" : '240',
"mini.challenge.transmission" : '',
"mini.challenge.unladen_weight" : '1.150 kg (inkl. Fahrer)',
"mini.challenge.unladen_weight_num" : '1150',
"mini.challenge.weight_ratio" : '',
"mini.challenge.wheel_dimension_num" : '17"',
"mini.challenge.wheels" : '-',
"mini_coupe.cooper.acceleration_0_100" : '9 [10,3] s',
"mini_coupe.cooper.acceleration_0_100_num" : '9',
"mini_coupe.cooper.acceleration_80_120" : '9,4 / 11,9s',
"mini_coupe.cooper.acceleration_80_120_num" : '9,4',
"mini_coupe.cooper.allowed_axle_load_front_rear" : '820/590 [855/590] kg',
"mini_coupe.cooper.basic_financing_price" : '259,00 â‚¬',
"mini_coupe.cooper.basic_financing_price_num" : '259.00',
"mini_coupe.cooper.basic_price" : '21.200 â‚¬',
"mini_coupe.cooper.basic_price_num" : '21200',
"mini_coupe.cooper.body_type" : 'SC',
"mini_coupe.cooper.charging_type" : '',
"mini_coupe.cooper.co2_emission" : '127 [150] g/km',
"mini_coupe.cooper.co2_emission_num" : '127',
"mini_coupe.cooper.color" : '',
"mini_coupe.cooper.color_line" : '',
"mini_coupe.cooper.compression_recommended_fuel_type" : '11/91-98 ROZ :1',
"mini_coupe.cooper.cubic_capacity" : '1598 cmÂ³',
"mini_coupe.cooper.cubic_capacity_num" : '1598',
"mini_coupe.cooper.cushion_material" : '',
"mini_coupe.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini_coupe.cooper.dimensions" : '3728 / 1683 / 1378 mm',
"mini_coupe.cooper.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper.drive_type" : '',
"mini_coupe.cooper.drive_type_num" : '',
"mini_coupe.cooper.elasticity" : '',
"mini_coupe.cooper.elasticity_80_100_5" : '9,4 / 11,9s',
"mini_coupe.cooper.elasticity_num" : '11,9',
"mini_coupe.cooper.engine" : 'Cooper CoupÃ©',
"mini_coupe.cooper.engine_hood_stripes" : '',
"mini_coupe.cooper.engine_num" : '',
"mini_coupe.cooper.engine_type" : '',
"mini_coupe.cooper.exterior_mirror" : '',
"mini_coupe.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19 % MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.032,45 EUR<br />Anzahlung in % 14,30<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie  0,00 EUR<br />Nettodarlehensbetrag 18.167,55 EUR<br />Sollzinssatz p.a.* 3,05 %<br />BearbeitungsgebÃ¼hr 363,35 EUR<br />Darlehensgesamtbetrag 19.877,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 10.812,00 EUR<br />Zielrate in % 51<br  />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br /><br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_coupe.cooper.financing_disclaimer_headline1" : '',
"mini_coupe.cooper.financing_disclaimer_headline2" : '',
"mini_coupe.cooper.folding_top_color" : '',
"mini_coupe.cooper.front_brakes" : 'Scheibe belÃ¼ftet (280) Ã˜ mm',
"mini_coupe.cooper.fuel_consumption_combined" : '5,4 [6,4] l/100km',
"mini_coupe.cooper.fuel_consumption_combined_num" : '5,4',
"mini_coupe.cooper.fuel_consumption_extra_urban" : '4,6 [5,1] l/100km',
"mini_coupe.cooper.fuel_consumption_extra_urban_num" : '4,6',
"mini_coupe.cooper.fuel_consumption_urban" : '6,9 [8,7] l/100km',
"mini_coupe.cooper.fuel_consumption_urban_num" : '6,9',
"mini_coupe.cooper.fuel_type" : 'Benzin',
"mini_coupe.cooper.fuel_type_num" : '',
"mini_coupe.cooper.id" : 'cooper',
"mini_coupe.cooper.infomaterial_id" : '268472464',
"mini_coupe.cooper.interior_surface" : '',
"mini_coupe.cooper.luggage_capacity" : '280 l',
"mini_coupe.cooper.luggage_capacity_num" : '280',
"mini_coupe.cooper.market_attr1" : '',
"mini_coupe.cooper.market_attr2" : '',
"mini_coupe.cooper.market_attr3" : '',
"mini_coupe.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini_coupe.cooper.max_output_num" : '90',
"mini_coupe.cooper.max_permissible_roof_load" : '',
"mini_coupe.cooper.max_permissible_roof_load_num" : '',
"mini_coupe.cooper.max_permissible_weight" : '1380 [1425] kg',
"mini_coupe.cooper.max_permissible_weight_num" : '1380',
"mini_coupe.cooper.max_torque" : '160/4250 Nm/1/min',
"mini_coupe.cooper.max_torque_num" : '160',
"mini_coupe.cooper.max_torque_overboost" : '',
"mini_coupe.cooper.max_torque_overboost_num" : '',
"mini_coupe.cooper.max_towed_load" : '-',
"mini_coupe.cooper.model_code" : 'SX11',
"mini_coupe.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper/financial_services/index.html'),
"mini_coupe.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper/modelcomparison.jpg'),
"mini_coupe.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper/model_filter_small.jpg'),
"mini_coupe.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper/model_filter_medium.jpg'),
"mini_coupe.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper.model_name" : 'MINI Cooper CoupÃ©',
"mini_coupe.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper/model_quickfacts.html'),
"mini_coupe.cooper.output_per_litre" : '56,3 kW/dmÂ³',
"mini_coupe.cooper.payload" : '290 kg',
"mini_coupe.cooper.range" : '740 [625] km',
"mini_coupe.cooper.rear_brakes" : 'Scheibe belÃ¼ftet (2259) Ã˜ mm',
"mini_coupe.cooper.rim_dimension" : '5,5J x 15 LM',
"mini_coupe.cooper.roof_color" : '',
"mini_coupe.cooper.seat_type" : '',
"mini_coupe.cooper.short_description" : '',
"mini_coupe.cooper.stroke_bore" : '85,8/77 mm',
"mini_coupe.cooper.tank_capacity" : '40 l',
"mini_coupe.cooper.tank_capacity_num" : '40',
"mini_coupe.cooper.top_speed" : '204 [198] km/h',
"mini_coupe.cooper.top_speed_num" : '204',
"mini_coupe.cooper.transmission" : '6-Gang-Schaltgetriebe',
"mini_coupe.cooper.unladen_weight" : '1090 [1135] / 1165 [1210] kg',
"mini_coupe.cooper.unladen_weight_num" : '1090',
"mini_coupe.cooper.weight_ratio" : '12,1 [12,6] kg/kW',
"mini_coupe.cooper.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_coupe.cooper.wheels" : '175/65 R15 84H',
"mini_coupe.cooper_s.acceleration_0_100" : '6,9 [7,1] s',
"mini_coupe.cooper_s.acceleration_0_100_num" : '6,9',
"mini_coupe.cooper_s.acceleration_80_120" : '5,5 / 6,9s',
"mini_coupe.cooper_s.acceleration_80_120_num" : '5,5',
"mini_coupe.cooper_s.allowed_axle_load_front_rear" : '870/605 [895/605] kg',
"mini_coupe.cooper_s.basic_financing_price" : '299,00 â‚¬',
"mini_coupe.cooper_s.basic_financing_price_num" : '299.00',
"mini_coupe.cooper_s.basic_price" : '25.300 â‚¬',
"mini_coupe.cooper_s.basic_price_num" : '25300',
"mini_coupe.cooper_s.body_type" : 'SC',
"mini_coupe.cooper_s.charging_type" : 'TwinScrollTurbo',
"mini_coupe.cooper_s.co2_emission" : '136 [149] g/km',
"mini_coupe.cooper_s.co2_emission_num" : '136',
"mini_coupe.cooper_s.color" : '',
"mini_coupe.cooper_s.color_line" : '',
"mini_coupe.cooper_s.compression_recommended_fuel_type" : '10,5/91-98  ROZ :1',
"mini_coupe.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini_coupe.cooper_s.cubic_capacity_num" : '1598',
"mini_coupe.cooper_s.cushion_material" : '',
"mini_coupe.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini_coupe.cooper_s.dimensions" : '3734 / 1683 / 1384 mm',
"mini_coupe.cooper_s.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper_s.drive_type" : '',
"mini_coupe.cooper_s.drive_type_num" : '',
"mini_coupe.cooper_s.elasticity" : '',
"mini_coupe.cooper_s.elasticity_80_100_5" : '5,5 / 6,9s',
"mini_coupe.cooper_s.elasticity_num" : '6,9',
"mini_coupe.cooper_s.engine" : 'Cooper S CoupÃ©',
"mini_coupe.cooper_s.engine_hood_stripes" : '',
"mini_coupe.cooper_s.engine_num" : '',
"mini_coupe.cooper_s.engine_type" : '',
"mini_coupe.cooper_s.exterior_mirror" : '',
"mini_coupe.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19 % MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.952,10 EUR<br />Anzahlung in % 15,62<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.347,89 EUR<br />Sollzinssatz p.a.* 3,06 %<br />BearbeitungsgebÃ¼hr 426,90EUR<br />Darlehensgesamtbetrag 23.368,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 12.903,00 EUR<br />Zielrate in % 51<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br /><br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_coupe.cooper_s.financing_disclaimer_headline1" : '',
"mini_coupe.cooper_s.financing_disclaimer_headline2" : '',
"mini_coupe.cooper_s.folding_top_color" : '',
"mini_coupe.cooper_s.front_brakes" : 'Scheibe belÃ¼ftet (294) Ã˜ mm',
"mini_coupe.cooper_s.fuel_consumption_combined" : '5,8 [6,4] l/100km',
"mini_coupe.cooper_s.fuel_consumption_combined_num" : '5,8',
"mini_coupe.cooper_s.fuel_consumption_extra_urban" : '5 [5] l/100km',
"mini_coupe.cooper_s.fuel_consumption_extra_urban_num" : '5',
"mini_coupe.cooper_s.fuel_consumption_urban" : '7,3 [8,9] l/100km',
"mini_coupe.cooper_s.fuel_consumption_urban_num" : '7,3',
"mini_coupe.cooper_s.fuel_type" : 'Benzin',
"mini_coupe.cooper_s.fuel_type_num" : '',
"mini_coupe.cooper_s.id" : 'cooper_s',
"mini_coupe.cooper_s.infomaterial_id" : '268472464',
"mini_coupe.cooper_s.interior_surface" : '',
"mini_coupe.cooper_s.luggage_capacity" : '280 l',
"mini_coupe.cooper_s.luggage_capacity_num" : '280',
"mini_coupe.cooper_s.market_attr1" : '',
"mini_coupe.cooper_s.market_attr2" : '',
"mini_coupe.cooper_s.market_attr3" : '',
"mini_coupe.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini_coupe.cooper_s.max_output_num" : '135',
"mini_coupe.cooper_s.max_permissible_roof_load" : '',
"mini_coupe.cooper_s.max_permissible_roof_load_num" : '',
"mini_coupe.cooper_s.max_permissible_weight" : '1455 [1480] kg',
"mini_coupe.cooper_s.max_permissible_weight_num" : '1455',
"mini_coupe.cooper_s.max_torque" : '240(260)/1600-5000 Nm/1/min',
"mini_coupe.cooper_s.max_torque_num" : '240',
"mini_coupe.cooper_s.max_torque_overboost" : '240(260)/1600-5000 Nm/1/min',
"mini_coupe.cooper_s.max_torque_overboost_num" : '260',
"mini_coupe.cooper_s.max_towed_load" : '-',
"mini_coupe.cooper_s.model_code" : 'SX31',
"mini_coupe.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper_s/financial_services/index.html'),
"mini_coupe.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_s/modelcomparison.jpg'),
"mini_coupe.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_s/model_filter_small.jpg'),
"mini_coupe.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_s/model_filter_medium.jpg'),
"mini_coupe.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_s.model_name" : 'MINI Cooper S CoupÃ©',
"mini_coupe.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper_s/model_quickfacts.html'),
"mini_coupe.cooper_s.output_per_litre" : '84,5 kW/dmÂ³',
"mini_coupe.cooper_s.payload" : '290 kg',
"mini_coupe.cooper_s.range" : '860 [780] km',
"mini_coupe.cooper_s.rear_brakes" : 'Scheibe belÃ¼ftet (259) Ã˜ mm',
"mini_coupe.cooper_s.rim_dimension" : '6,5J x 16 LM',
"mini_coupe.cooper_s.roof_color" : '',
"mini_coupe.cooper_s.seat_type" : '',
"mini_coupe.cooper_s.short_description" : '',
"mini_coupe.cooper_s.stroke_bore" : '85,8/77 mm',
"mini_coupe.cooper_s.tank_capacity" : '50 l',
"mini_coupe.cooper_s.tank_capacity_num" : '50',
"mini_coupe.cooper_s.top_speed" : '230 [224] km/h',
"mini_coupe.cooper_s.top_speed_num" : '230',
"mini_coupe.cooper_s.transmission" : '6-Gang-Schaltgetriebe',
"mini_coupe.cooper_s.unladen_weight" : '1165 [1190] / 1240 [1265] kg',
"mini_coupe.cooper_s.unladen_weight_num" : '1165',
"mini_coupe.cooper_s.weight_ratio" : '8,6 [8,8] kg/kW',
"mini_coupe.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_coupe.cooper_s.wheels" : '195/55 R16 87V',
"mini_coupe.cooper_sd.acceleration_0_100" : '7,9 [8,2] s',
"mini_coupe.cooper_sd.acceleration_0_100_num" : '7,9',
"mini_coupe.cooper_sd.acceleration_80_120" : '6,5 / 7,7s',
"mini_coupe.cooper_sd.acceleration_80_120_num" : '6,5',
"mini_coupe.cooper_sd.allowed_axle_load_front_rear" : '890/600 [905/600] kg',
"mini_coupe.cooper_sd.basic_financing_price" : '299,00 â‚¬',
"mini_coupe.cooper_sd.basic_financing_price_num" : '299.00',
"mini_coupe.cooper_sd.basic_price" : '26.300 â‚¬',
"mini_coupe.cooper_sd.basic_price_num" : '26300',
"mini_coupe.cooper_sd.body_type" : 'SC',
"mini_coupe.cooper_sd.charging_type" : 'VNT',
"mini_coupe.cooper_sd.co2_emission" : '114 [139] g/km',
"mini_coupe.cooper_sd.co2_emission_num" : '114',
"mini_coupe.cooper_sd.color" : '',
"mini_coupe.cooper_sd.color_line" : '',
"mini_coupe.cooper_sd.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_coupe.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini_coupe.cooper_sd.cubic_capacity_num" : '1995',
"mini_coupe.cooper_sd.cushion_material" : '',
"mini_coupe.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini_coupe.cooper_sd.dimensions" : '3734 / 1683 / 1384 mm',
"mini_coupe.cooper_sd.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper_sd.drive_type" : '',
"mini_coupe.cooper_sd.drive_type_num" : '',
"mini_coupe.cooper_sd.elasticity" : '',
"mini_coupe.cooper_sd.elasticity_80_100_5" : '6,5 / 7,7s',
"mini_coupe.cooper_sd.elasticity_num" : '7,7',
"mini_coupe.cooper_sd.engine" : 'Cooper SD CoupÃ©',
"mini_coupe.cooper_sd.engine_hood_stripes" : '',
"mini_coupe.cooper_sd.engine_num" : '',
"mini_coupe.cooper_sd.engine_type" : '',
"mini_coupe.cooper_sd.exterior_mirror" : '',
"mini_coupe.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19 % MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.498,58 EUR<br />Anzahlung in % 17,10<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie  0,00 EUR<br />Nettodarlehensbetrag 21.801,42 EUR<br />Sollzinssatz p.a.* 3,06 %<br />BearbeitungsgebÃ¼hr 436,03 EUR<br />Darlehensgesamtbetrag 23.878,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 13.413,00 EUR<br />Zielrate in % 51<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br /><br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_coupe.cooper_sd.financing_disclaimer_headline1" : '',
"mini_coupe.cooper_sd.financing_disclaimer_headline2" : '',
"mini_coupe.cooper_sd.folding_top_color" : '',
"mini_coupe.cooper_sd.front_brakes" : 'Scheibe belÃ¼ftet (280) Ã˜ mm',
"mini_coupe.cooper_sd.fuel_consumption_combined" : '4,3 [5,3] l',
"mini_coupe.cooper_sd.fuel_consumption_combined_num" : '4.3',
"mini_coupe.cooper_sd.fuel_consumption_extra_urban" : '3,9 [4,3] l',
"mini_coupe.cooper_sd.fuel_consumption_extra_urban_num" : '3,9',
"mini_coupe.cooper_sd.fuel_consumption_urban" : '5,1 [6,9] l',
"mini_coupe.cooper_sd.fuel_consumption_urban_num" : '5,1',
"mini_coupe.cooper_sd.fuel_type" : 'Diesel',
"mini_coupe.cooper_sd.fuel_type_num" : '',
"mini_coupe.cooper_sd.id" : 'cooper_sd',
"mini_coupe.cooper_sd.infomaterial_id" : '268472464',
"mini_coupe.cooper_sd.interior_surface" : '',
"mini_coupe.cooper_sd.luggage_capacity" : '280 l',
"mini_coupe.cooper_sd.luggage_capacity_num" : '280',
"mini_coupe.cooper_sd.market_attr1" : '',
"mini_coupe.cooper_sd.market_attr2" : '',
"mini_coupe.cooper_sd.market_attr3" : '',
"mini_coupe.cooper_sd.max_output" : '105/143/4000 kW/PS/1/min',
"mini_coupe.cooper_sd.max_output_num" : '105',
"mini_coupe.cooper_sd.max_permissible_roof_load" : '',
"mini_coupe.cooper_sd.max_permissible_roof_load_num" : '',
"mini_coupe.cooper_sd.max_permissible_weight" : '1465 [1485] kg',
"mini_coupe.cooper_sd.max_permissible_weight_num" : '1465',
"mini_coupe.cooper_sd.max_torque" : '305/1750-2700 Nm/1/min',
"mini_coupe.cooper_sd.max_torque_num" : '305',
"mini_coupe.cooper_sd.max_torque_overboost" : '',
"mini_coupe.cooper_sd.max_torque_overboost_num" : '',
"mini_coupe.cooper_sd.max_towed_load" : '-',
"mini_coupe.cooper_sd.model_code" : 'SX71',
"mini_coupe.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper_sd/financial_services/index.html'),
"mini_coupe.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_sd/modelcomparison.jpg'),
"mini_coupe.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_sd/model_filter_small.jpg'),
"mini_coupe.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/cooper_sd/model_filter_medium.jpg'),
"mini_coupe.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.cooper_sd.model_name" : 'MINI Cooper SD CoupÃ©',
"mini_coupe.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/cooper_sd/model_quickfacts.html'),
"mini_coupe.cooper_sd.output_per_litre" : '52,6 kW/dmÂ³',
"mini_coupe.cooper_sd.payload" : '290 kg',
"mini_coupe.cooper_sd.range" : '930 [755] km',
"mini_coupe.cooper_sd.rear_brakes" : 'Scheibe belÃ¼ftet (259) Ã˜ mm',
"mini_coupe.cooper_sd.rim_dimension" : '6,5J x 16 LM',
"mini_coupe.cooper_sd.roof_color" : '',
"mini_coupe.cooper_sd.seat_type" : '',
"mini_coupe.cooper_sd.short_description" : '',
"mini_coupe.cooper_sd.stroke_bore" : '90/84 mm',
"mini_coupe.cooper_sd.tank_capacity" : '40 l',
"mini_coupe.cooper_sd.tank_capacity_num" : '40',
"mini_coupe.cooper_sd.top_speed" : '216 [206] km/h',
"mini_coupe.cooper_sd.top_speed_num" : '216',
"mini_coupe.cooper_sd.transmission" : '6-Gang-Schaltgetriebe',
"mini_coupe.cooper_sd.unladen_weight" : '1175 [1195] / 1250 [1270] kg',
"mini_coupe.cooper_sd.unladen_weight_num" : '1175',
"mini_coupe.cooper_sd.weight_ratio" : '11,2 [11,4] kg/kW',
"mini_coupe.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_coupe.cooper_sd.wheels" : '195/55 R16 87V',
"mini_coupe.mini_coupe.acceleration_0_100" : '6,4 s',
"mini_coupe.mini_coupe.acceleration_0_100_num" : '6,4',
"mini_coupe.mini_coupe.acceleration_80_120" : '5,1 / 6,1s',
"mini_coupe.mini_coupe.acceleration_80_120_num" : '5,1',
"mini_coupe.mini_coupe.allowed_axle_load_front_rear" : '865/610 kg',
"mini_coupe.mini_coupe.basic_financing_price" : '399,00 â‚¬',
"mini_coupe.mini_coupe.basic_financing_price_num" : '399.00',
"mini_coupe.mini_coupe.basic_price" : '31.150 â‚¬',
"mini_coupe.mini_coupe.basic_price_num" : '31150',
"mini_coupe.mini_coupe.body_type" : 'SC',
"mini_coupe.mini_coupe.charging_type" : 'TwinScrollTurbo',
"mini_coupe.mini_coupe.co2_emission" : '165 g/km',
"mini_coupe.mini_coupe.co2_emission_num" : '165',
"mini_coupe.mini_coupe.color" : '',
"mini_coupe.mini_coupe.color_line" : '',
"mini_coupe.mini_coupe.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"mini_coupe.mini_coupe.cubic_capacity" : '1598 cmÂ³',
"mini_coupe.mini_coupe.cubic_capacity_num" : '1598',
"mini_coupe.mini_coupe.cushion_material" : '',
"mini_coupe.mini_coupe.cylinder_type_valve" : '4/Reihe/4',
"mini_coupe.mini_coupe.dimensions" : '3734 / 1683 / 1384 mm',
"mini_coupe.mini_coupe.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.mini_coupe.drive_type" : '',
"mini_coupe.mini_coupe.drive_type_num" : '',
"mini_coupe.mini_coupe.elasticity" : '',
"mini_coupe.mini_coupe.elasticity_80_100_5" : '5,1 / 6,1s',
"mini_coupe.mini_coupe.elasticity_num" : '6,1',
"mini_coupe.mini_coupe.engine" : 'John Cooper Works CoupÃ©',
"mini_coupe.mini_coupe.engine_hood_stripes" : '',
"mini_coupe.mini_coupe.engine_num" : '',
"mini_coupe.mini_coupe.engine_type" : '',
"mini_coupe.mini_coupe.exterior_mirror" : '',
"mini_coupe.mini_coupe.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19 % MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.846,72 EUR<br />Anzahlung in % 12,35<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie  0,00 EUR<br />Nettodarlehensbetrag 27.303,28 EUR<br />Sollzinssatz p.a.* 3,04 %<br />BearbeitungsgebÃ¼hr 546,07 EUR<br />Darlehensgesamtbetrag 29.851,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.886,50 EUR<br />Zielrate in % 51<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br /><br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_coupe.mini_coupe.financing_disclaimer_headline1" : '',
"mini_coupe.mini_coupe.financing_disclaimer_headline2" : '',
"mini_coupe.mini_coupe.folding_top_color" : '',
"mini_coupe.mini_coupe.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"mini_coupe.mini_coupe.fuel_consumption_combined" : '7,1 l/100km',
"mini_coupe.mini_coupe.fuel_consumption_combined_num" : '7,1',
"mini_coupe.mini_coupe.fuel_consumption_extra_urban" : '5,8 l/100km',
"mini_coupe.mini_coupe.fuel_consumption_extra_urban_num" : '5,8',
"mini_coupe.mini_coupe.fuel_consumption_urban" : '9,4 l/100km',
"mini_coupe.mini_coupe.fuel_consumption_urban_num" : '9,4',
"mini_coupe.mini_coupe.fuel_type" : 'Benzin',
"mini_coupe.mini_coupe.fuel_type_num" : '',
"mini_coupe.mini_coupe.id" : 'mini_coupe',
"mini_coupe.mini_coupe.infomaterial_id" : '268472464',
"mini_coupe.mini_coupe.interior_surface" : '',
"mini_coupe.mini_coupe.luggage_capacity" : '280 l',
"mini_coupe.mini_coupe.luggage_capacity_num" : '280',
"mini_coupe.mini_coupe.market_attr1" : '',
"mini_coupe.mini_coupe.market_attr2" : '',
"mini_coupe.mini_coupe.market_attr3" : '',
"mini_coupe.mini_coupe.max_output" : '155/211/6000 kW/PS/1/min',
"mini_coupe.mini_coupe.max_output_num" : '155',
"mini_coupe.mini_coupe.max_permissible_roof_load" : '',
"mini_coupe.mini_coupe.max_permissible_roof_load_num" : '',
"mini_coupe.mini_coupe.max_permissible_weight" : '1455 kg',
"mini_coupe.mini_coupe.max_permissible_weight_num" : '1455',
"mini_coupe.mini_coupe.max_torque" : '260 Nm / 1.850-5.600 min-1',
"mini_coupe.mini_coupe.max_torque_num" : '260',
"mini_coupe.mini_coupe.max_torque_overboost" : '260(280)/1850-5600 Nm/1/min',
"mini_coupe.mini_coupe.max_torque_overboost_num" : '280',
"mini_coupe.mini_coupe.max_towed_load" : '-',
"mini_coupe.mini_coupe.model_code" : 'SX51',
"mini_coupe.mini_coupe.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/john_cooper_works/financial_services/index.html'),
"mini_coupe.mini_coupe.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/modelcomparison.jpg'),
"mini_coupe.mini_coupe.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/model_filter_small.jpg'),
"mini_coupe.mini_coupe.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/model_filter_medium.jpg'),
"mini_coupe.mini_coupe.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.mini_coupe.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.mini_coupe.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_coupe.mini_coupe.model_name" : 'MINI John Cooper Works CoupÃ©',
"mini_coupe.mini_coupe.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/john_cooper_works/model_quickfacts.html'),
"mini_coupe.mini_coupe.output_per_litre" : '97 kW/dmÂ³',
"mini_coupe.mini_coupe.payload" : '290 kg',
"mini_coupe.mini_coupe.range" : '705 km',
"mini_coupe.mini_coupe.rear_brakes" : 'Scheibe belÃ¼ftet (280) Ã˜ mm',
"mini_coupe.mini_coupe.rim_dimension" : '7J x 17 LM',
"mini_coupe.mini_coupe.roof_color" : '',
"mini_coupe.mini_coupe.seat_type" : '',
"mini_coupe.mini_coupe.short_description" : '',
"mini_coupe.mini_coupe.stroke_bore" : '85,8/77 mm',
"mini_coupe.mini_coupe.tank_capacity" : '50 l',
"mini_coupe.mini_coupe.tank_capacity_num" : '50',
"mini_coupe.mini_coupe.top_speed" : '240 km/h',
"mini_coupe.mini_coupe.top_speed_num" : '240',
"mini_coupe.mini_coupe.transmission" : '6-Gang-Schaltgetriebe',
"mini_coupe.mini_coupe.unladen_weight" : '1165 / 1240 kg',
"mini_coupe.mini_coupe.unladen_weight_num" : '1165',
"mini_coupe.mini_coupe.weight_ratio" : '7,5 kg/kW',
"mini_coupe.mini_coupe.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_coupe.mini_coupe.wheels" : '205/45 R17 84W',
"mini_cabrio.one.acceleration_0_100" : '11,3 [13,1] s',
"mini_cabrio.one.acceleration_0_100_num" : '11.3',
"mini_cabrio.one.acceleration_80_120" : '13,4/17,1 s',
"mini_cabrio.one.acceleration_80_120_num" : '13.4',
"mini_cabrio.one.allowed_axle_load_front_rear" : '840/775 [880/775] kg',
"mini_cabrio.one.basic_financing_price" : '189,00 â‚¬',
"mini_cabrio.one.basic_financing_price_num" : '189.00',
"mini_cabrio.one.basic_price" : '20.950 â‚¬',
"mini_cabrio.one.basic_price_num" : '20950',
"mini_cabrio.one.body_type" : 'CA',
"mini_cabrio.one.charging_type" : '',
"mini_cabrio.one.co2_emission" : '133 [154] g/km',
"mini_cabrio.one.co2_emission_num" : '133',
"mini_cabrio.one.color" : 'A88',
"mini_cabrio.one.color_line" : '4C3',
"mini_cabrio.one.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_cabrio.one.cubic_capacity" : '1598 cmÂ³',
"mini_cabrio.one.cubic_capacity_num" : '1598',
"mini_cabrio.one.cushion_material" : 'T9GK',
"mini_cabrio.one.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.one.dimensions" : '3723/1683/1414 mm',
"mini_cabrio.one.dimensions_num" : '3723 / 1683 / 1414',
"mini_cabrio.one.drive_type" : '',
"mini_cabrio.one.drive_type_num" : '',
"mini_cabrio.one.elasticity" : '13,4/17,1 s',
"mini_cabrio.one.elasticity_80_100_5" : '17,1 s',
"mini_cabrio.one.elasticity_num" : '13.4',
"mini_cabrio.one.engine" : 'One Cabrio',
"mini_cabrio.one.engine_hood_stripes" : 'ohne',
"mini_cabrio.one.engine_num" : '',
"mini_cabrio.one.engine_type" : '',
"mini_cabrio.one.exterior_mirror" : '-',
"mini_cabrio.one.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.275,94 EUR<br />Anzahlung in % 20,41<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.674,06 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 333,48 EUR<br />Darlehensgesamtbetrag 18.347,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 11.732,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.one.financing_disclaimer_headline1" : '',
"mini_cabrio.one.financing_disclaimer_headline2" : '',
"mini_cabrio.one.folding_top_color" : '-',
"mini_cabrio.one.front_brakes" : '',
"mini_cabrio.one.fuel_consumption_combined" : '5,7 [6,6] l/100 km',
"mini_cabrio.one.fuel_consumption_combined_num" : '5.7',
"mini_cabrio.one.fuel_consumption_extra_urban" : '4,6 [5,3] l/100 km',
"mini_cabrio.one.fuel_consumption_extra_urban_num" : '4.6',
"mini_cabrio.one.fuel_consumption_urban" : '7,6 [8,9] l/100 km',
"mini_cabrio.one.fuel_consumption_urban_num" : '7.6',
"mini_cabrio.one.fuel_type" : 'Benzin',
"mini_cabrio.one.fuel_type_num" : '',
"mini_cabrio.one.id" : 'one',
"mini_cabrio.one.infomaterial_id" : '',
"mini_cabrio.one.interior_surface" : '4BD',
"mini_cabrio.one.luggage_capacity" : '125/170 â€“ 660 l',
"mini_cabrio.one.luggage_capacity_num" : '125',
"mini_cabrio.one.market_attr1" : '',
"mini_cabrio.one.market_attr2" : '',
"mini_cabrio.one.market_attr3" : '',
"mini_cabrio.one.max_output" : '72/98/6000 kW/PS/1/min',
"mini_cabrio.one.max_output_num" : '72',
"mini_cabrio.one.max_permissible_roof_load" : '- / -',
"mini_cabrio.one.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.one.max_permissible_weight" : '1590 [1630] kg',
"mini_cabrio.one.max_permissible_weight_num" : '1590',
"mini_cabrio.one.max_torque" : '153/3000 Nm/1/min',
"mini_cabrio.one.max_torque_num" : '153',
"mini_cabrio.one.max_torque_overboost" : '-',
"mini_cabrio.one.max_torque_overboost_num" : '-',
"mini_cabrio.one.max_towed_load" : '-',
"mini_cabrio.one.model_code" : 'ZM31',
"mini_cabrio.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/one/financial_services/'),
"mini_cabrio.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/one/modelcomparison.jpg'),
"mini_cabrio.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/model_data/_img/small/cabrio_one_small.jpg'),
"mini_cabrio.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/model_data/_img/medium/cabrio_one_medium.jpg'),
"mini_cabrio.one.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.one.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.one.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.one.model_name" : 'MINI One Cabrio',
"mini_cabrio.one.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/one/model_quickfacts.html'),
"mini_cabrio.one.output_per_litre" : '',
"mini_cabrio.one.payload" : '430 kg',
"mini_cabrio.one.range" : '700 [605] km',
"mini_cabrio.one.rear_brakes" : '',
"mini_cabrio.one.rim_dimension" : '5,5 J x 15 St',
"mini_cabrio.one.roof_color" : '-',
"mini_cabrio.one.seat_type" : '481',
"mini_cabrio.one.short_description" : '',
"mini_cabrio.one.stroke_bore" : '85,8/77,0 mm',
"mini_cabrio.one.tank_capacity" : '40 l',
"mini_cabrio.one.tank_capacity_num" : '40',
"mini_cabrio.one.top_speed" : '181 [174] km/h',
"mini_cabrio.one.top_speed_num" : '181',
"mini_cabrio.one.transmission" : '5-speed, manual',
"mini_cabrio.one.unladen_weight" : '1235 [1275] kg',
"mini_cabrio.one.unladen_weight_num" : '1235',
"mini_cabrio.one.weight_ratio" : '',
"mini_cabrio.one.wheel_dimension_num" : '175/65 R15 84H',
"mini_cabrio.one.wheels" : '175/65 R15 84H',
"mini_cabrio.cooper.acceleration_0_100" : '9,8 [11,1] s',
"mini_cabrio.cooper.acceleration_0_100_num" : '9.8',
"mini_cabrio.cooper.acceleration_80_120" : '11,6 s',
"mini_cabrio.cooper.acceleration_80_120_num" : '11.6',
"mini_cabrio.cooper.allowed_axle_load_front_rear" : '845/775 [880/780] kg',
"mini_cabrio.cooper.basic_financing_price" : '209,00 â‚¬',
"mini_cabrio.cooper.basic_financing_price_num" : '209.00',
"mini_cabrio.cooper.basic_price" : '23.550 â‚¬',
"mini_cabrio.cooper.basic_price_num" : '23550',
"mini_cabrio.cooper.body_type" : 'CA',
"mini_cabrio.cooper.charging_type" : '',
"mini_cabrio.cooper.co2_emission" : '133 [154] g/km',
"mini_cabrio.cooper.co2_emission_num" : '133',
"mini_cabrio.cooper.color" : 'A60',
"mini_cabrio.cooper.color_line" : '4C3',
"mini_cabrio.cooper.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_cabrio.cooper.cubic_capacity" : '1598 cmÂ³',
"mini_cabrio.cooper.cubic_capacity_num" : '1598',
"mini_cabrio.cooper.cushion_material" : 'T9GK',
"mini_cabrio.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.cooper.dimensions" : '3723/1683/1414 mm',
"mini_cabrio.cooper.dimensions_num" : '3723 / 1683 / 1414',
"mini_cabrio.cooper.drive_type" : '',
"mini_cabrio.cooper.drive_type_num" : '',
"mini_cabrio.cooper.elasticity" : '10,5/13,3 s',
"mini_cabrio.cooper.elasticity_80_100_5" : '13,3 s',
"mini_cabrio.cooper.elasticity_num" : '10.5',
"mini_cabrio.cooper.engine" : 'Cooper Cabrio',
"mini_cabrio.cooper.engine_hood_stripes" : 'ohne',
"mini_cabrio.cooper.engine_num" : '1.6',
"mini_cabrio.cooper.engine_type" : '',
"mini_cabrio.cooper.exterior_mirror" : '3AB',
"mini_cabrio.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.920,73 EUR<br />Anzahlung in % 20,89<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.629,27 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 372,59 EUR<br />Darlehensgesamtbetrag 20.503,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 13.188,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper.folding_top_color" : '-',
"mini_cabrio.cooper.front_brakes" : '',
"mini_cabrio.cooper.fuel_consumption_combined" : '5,7 [6,6] l/100 km',
"mini_cabrio.cooper.fuel_consumption_combined_num" : '5.7',
"mini_cabrio.cooper.fuel_consumption_extra_urban" : '4,9 [5,3] l/100 km',
"mini_cabrio.cooper.fuel_consumption_extra_urban_num" : '4.9',
"mini_cabrio.cooper.fuel_consumption_urban" : '7,2 [8,9] l/100 km',
"mini_cabrio.cooper.fuel_consumption_urban_num" : '7.2',
"mini_cabrio.cooper.fuel_type" : 'Benzin',
"mini_cabrio.cooper.fuel_type_num" : '',
"mini_cabrio.cooper.id" : 'cooper',
"mini_cabrio.cooper.infomaterial_id" : '',
"mini_cabrio.cooper.interior_surface" : '4BD',
"mini_cabrio.cooper.luggage_capacity" : '125/170 â€“ 660 l',
"mini_cabrio.cooper.luggage_capacity_num" : '125',
"mini_cabrio.cooper.market_attr1" : '',
"mini_cabrio.cooper.market_attr2" : '',
"mini_cabrio.cooper.market_attr3" : '',
"mini_cabrio.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini_cabrio.cooper.max_output_num" : '90',
"mini_cabrio.cooper.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper.max_permissible_weight" : '1595 [1635] kg',
"mini_cabrio.cooper.max_permissible_weight_num" : '1595',
"mini_cabrio.cooper.max_torque" : '160/4250 Nm/1/min',
"mini_cabrio.cooper.max_torque_num" : '160',
"mini_cabrio.cooper.max_torque_overboost" : '-',
"mini_cabrio.cooper.max_torque_overboost_num" : '-',
"mini_cabrio.cooper.max_towed_load" : '-',
"mini_cabrio.cooper.model_code" : 'ZN31',
"mini_cabrio.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper/financial_services/'),
"mini_cabrio.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper/modelcomparison.jpg'),
"mini_cabrio.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper/model_filter_small.jpg'),
"mini_cabrio.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper/model_filter_medium.jpg'),
"mini_cabrio.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper.model_name" : 'MINI Cooper Cabrio',
"mini_cabrio.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper/model_quickfacts.html'),
"mini_cabrio.cooper.output_per_litre" : '',
"mini_cabrio.cooper.payload" : '430 kg',
"mini_cabrio.cooper.range" : '700 [605] km',
"mini_cabrio.cooper.rear_brakes" : '',
"mini_cabrio.cooper.rim_dimension" : '5,5 J x 15 LM',
"mini_cabrio.cooper.roof_color" : '-',
"mini_cabrio.cooper.seat_type" : '481',
"mini_cabrio.cooper.short_description" : '',
"mini_cabrio.cooper.stroke_bore" : '85,8/77,0 mm',
"mini_cabrio.cooper.tank_capacity" : '40 l',
"mini_cabrio.cooper.tank_capacity_num" : '40',
"mini_cabrio.cooper.top_speed" : '198 [191] km/h',
"mini_cabrio.cooper.top_speed_num" : '198',
"mini_cabrio.cooper.transmission" : '5-speed, manual, or as an option Continuously Variable automatic Transmission (CVT) with Steptronic mode',
"mini_cabrio.cooper.unladen_weight" : '1240 [1280] kg',
"mini_cabrio.cooper.unladen_weight_num" : '1240',
"mini_cabrio.cooper.weight_ratio" : '',
"mini_cabrio.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini_cabrio.cooper.wheels" : '175/65 R15 84H',
"mini_cabrio.cooper_highgate.acceleration_0_100" : '9,8 [11,1] s',
"mini_cabrio.cooper_highgate.acceleration_0_100_num" : '9.8',
"mini_cabrio.cooper_highgate.acceleration_80_120" : '11,6',
"mini_cabrio.cooper_highgate.acceleration_80_120_num" : '11.6',
"mini_cabrio.cooper_highgate.allowed_axle_load_front_rear" : '',
"mini_cabrio.cooper_highgate.basic_financing_price" : '259,00 â‚¬',
"mini_cabrio.cooper_highgate.basic_financing_price_num" : '259',
"mini_cabrio.cooper_highgate.basic_price" : '28.800 â‚¬',
"mini_cabrio.cooper_highgate.basic_price_num" : '28800',
"mini_cabrio.cooper_highgate.body_type" : 'CA',
"mini_cabrio.cooper_highgate.charging_type" : '',
"mini_cabrio.cooper_highgate.co2_emission" : '133 [154] g/km',
"mini_cabrio.cooper_highgate.co2_emission_num" : '133',
"mini_cabrio.cooper_highgate.color" : 'A60',
"mini_cabrio.cooper_highgate.color_line" : '4C3',
"mini_cabrio.cooper_highgate.compression_recommended_fuel_type" : '',
"mini_cabrio.cooper_highgate.cubic_capacity" : '1.598 Liter',
"mini_cabrio.cooper_highgate.cubic_capacity_num" : '1598',
"mini_cabrio.cooper_highgate.cushion_material" : 'T9GK',
"mini_cabrio.cooper_highgate.cylinder_type_valve" : '',
"mini_cabrio.cooper_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_cabrio.cooper_highgate.dimensions_num" : '3723 / 1683 / 1414',
"mini_cabrio.cooper_highgate.drive_type" : 'Front',
"mini_cabrio.cooper_highgate.drive_type_num" : '',
"mini_cabrio.cooper_highgate.elasticity" : '10,5 s / 13,3 s',
"mini_cabrio.cooper_highgate.elasticity_80_100_5" : '',
"mini_cabrio.cooper_highgate.elasticity_num" : '10.5',
"mini_cabrio.cooper_highgate.engine" : 'Cooper Cabrio Highgate',
"mini_cabrio.cooper_highgate.engine_hood_stripes" : 'ohne',
"mini_cabrio.cooper_highgate.engine_num" : '1.6',
"mini_cabrio.cooper_highgate.engine_type" : '',
"mini_cabrio.cooper_highgate.exterior_mirror" : '3AB',
"mini_cabrio.cooper_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.905,18 EUR<br />Anzahlung in % 20,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.894,82 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 457,90 EUR<br />Darlehensgesamtbetrag 25.193,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 16.128,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_highgate.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_highgate.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_highgate.folding_top_color" : '',
"mini_cabrio.cooper_highgate.front_brakes" : '',
"mini_cabrio.cooper_highgate.fuel_consumption_combined" : '5,7 [6,6] l/100 km',
"mini_cabrio.cooper_highgate.fuel_consumption_combined_num" : '5.7',
"mini_cabrio.cooper_highgate.fuel_consumption_extra_urban" : '5,3 [5,3] l/100 km',
"mini_cabrio.cooper_highgate.fuel_consumption_extra_urban_num" : '5.3',
"mini_cabrio.cooper_highgate.fuel_consumption_urban" : '7,2 [8,9] l/100 km',
"mini_cabrio.cooper_highgate.fuel_consumption_urban_num" : '7.2',
"mini_cabrio.cooper_highgate.fuel_type" : 'Benzin',
"mini_cabrio.cooper_highgate.fuel_type_num" : '',
"mini_cabrio.cooper_highgate.id" : 'cooper_highgate',
"mini_cabrio.cooper_highgate.infomaterial_id" : '',
"mini_cabrio.cooper_highgate.interior_surface" : '4BD',
"mini_cabrio.cooper_highgate.luggage_capacity" : '125 / 170 / 660',
"mini_cabrio.cooper_highgate.luggage_capacity_num" : '125',
"mini_cabrio.cooper_highgate.market_attr1" : '',
"mini_cabrio.cooper_highgate.market_attr2" : '',
"mini_cabrio.cooper_highgate.market_attr3" : '',
"mini_cabrio.cooper_highgate.max_output" : '90/122/6000 kW/PS/1/min',
"mini_cabrio.cooper_highgate.max_output_num" : '90',
"mini_cabrio.cooper_highgate.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_highgate.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_highgate.max_permissible_weight" : '1595 kg',
"mini_cabrio.cooper_highgate.max_permissible_weight_num" : '1595',
"mini_cabrio.cooper_highgate.max_torque" : '160/4250 Nm/1/min',
"mini_cabrio.cooper_highgate.max_torque_num" : '160',
"mini_cabrio.cooper_highgate.max_torque_overboost" : '-',
"mini_cabrio.cooper_highgate.max_torque_overboost_num" : '-',
"mini_cabrio.cooper_highgate.max_towed_load" : '',
"mini_cabrio.cooper_highgate.model_code" : 'ZN31_7HV',
"mini_cabrio.cooper_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper/financial_services/index.html'),
"mini_cabrio.cooper_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_comparison.png'),
"mini_cabrio.cooper_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_small.jpg'),
"mini_cabrio.cooper_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_medium.jpg'),
"mini_cabrio.cooper_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_highgate.model_name" : 'MINI Cooper Cabrio Highgate',
"mini_cabrio.cooper_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper.html'),
"mini_cabrio.cooper_highgate.output_per_litre" : '',
"mini_cabrio.cooper_highgate.payload" : '430 kg',
"mini_cabrio.cooper_highgate.range" : '',
"mini_cabrio.cooper_highgate.rear_brakes" : '',
"mini_cabrio.cooper_highgate.rim_dimension" : '5.5J x 15 LM',
"mini_cabrio.cooper_highgate.roof_color" : '-',
"mini_cabrio.cooper_highgate.seat_type" : '481',
"mini_cabrio.cooper_highgate.short_description" : '',
"mini_cabrio.cooper_highgate.stroke_bore" : '',
"mini_cabrio.cooper_highgate.tank_capacity" : '40 Liter',
"mini_cabrio.cooper_highgate.tank_capacity_num" : '40',
"mini_cabrio.cooper_highgate.top_speed" : '198 [191] km/h',
"mini_cabrio.cooper_highgate.top_speed_num" : '198',
"mini_cabrio.cooper_highgate.transmission" : '5-speed, manual, or as an option Continuously Variable automatic Transmission (CVT) with Steptronic mode',
"mini_cabrio.cooper_highgate.unladen_weight" : '1165 / 1240 kg',
"mini_cabrio.cooper_highgate.unladen_weight_num" : '1165',
"mini_cabrio.cooper_highgate.weight_ratio" : '',
"mini_cabrio.cooper_highgate.wheel_dimension_num" : '175/65 R15 84H',
"mini_cabrio.cooper_highgate.wheels" : '2GD',
"mini_cabrio.cooper_d.acceleration_0_100" : '10,3 [10,7] s',
"mini_cabrio.cooper_d.acceleration_0_100_num" : '10.3',
"mini_cabrio.cooper_d.acceleration_80_120" : '',
"mini_cabrio.cooper_d.acceleration_80_120_num" : '',
"mini_cabrio.cooper_d.allowed_axle_load_front_rear" : '875/770 [905/770] kg',
"mini_cabrio.cooper_d.basic_financing_price" : '219,00 â‚¬',
"mini_cabrio.cooper_d.basic_financing_price_num" : '219.00',
"mini_cabrio.cooper_d.basic_price" : '25.200 â‚¬',
"mini_cabrio.cooper_d.basic_price_num" : '25200',
"mini_cabrio.cooper_d.body_type" : 'CA',
"mini_cabrio.cooper_d.charging_type" : '',
"mini_cabrio.cooper_d.co2_emission" : '105 [140] g/km',
"mini_cabrio.cooper_d.co2_emission_num" : '105',
"mini_cabrio.cooper_d.color" : 'WB23',
"mini_cabrio.cooper_d.color_line" : '4C3',
"mini_cabrio.cooper_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_cabrio.cooper_d.cubic_capacity" : '1598 [1995] cmÂ³',
"mini_cabrio.cooper_d.cubic_capacity_num" : '1598',
"mini_cabrio.cooper_d.cushion_material" : 'T9GK',
"mini_cabrio.cooper_d.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.cooper_d.dimensions" : '3723/1683/1414 mm',
"mini_cabrio.cooper_d.dimensions_num" : '',
"mini_cabrio.cooper_d.drive_type" : '',
"mini_cabrio.cooper_d.drive_type_num" : '',
"mini_cabrio.cooper_d.elasticity" : '8,1/9,9 s',
"mini_cabrio.cooper_d.elasticity_80_100_5" : '9,9 s',
"mini_cabrio.cooper_d.elasticity_num" : '8.1',
"mini_cabrio.cooper_d.engine" : 'Cooper D Cabrio',
"mini_cabrio.cooper_d.engine_hood_stripes" : 'ohne',
"mini_cabrio.cooper_d.engine_num" : '',
"mini_cabrio.cooper_d.engine_type" : '',
"mini_cabrio.cooper_d.exterior_mirror" : '3AB',
"mini_cabrio.cooper_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.194,74 EUR<br />Anzahlung in % 20,61<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 20.005,26 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 400,11 EUR<br />Darlehensgesamtbetrag 22.029,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 14.364,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_d.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_d.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_d.folding_top_color" : '-',
"mini_cabrio.cooper_d.front_brakes" : '',
"mini_cabrio.cooper_d.fuel_consumption_combined" : '4,0 [5,3] l/100 km',
"mini_cabrio.cooper_d.fuel_consumption_combined_num" : '4',
"mini_cabrio.cooper_d.fuel_consumption_extra_urban" : '3,7 [4,3] l/100 km',
"mini_cabrio.cooper_d.fuel_consumption_extra_urban_num" : '3.7',
"mini_cabrio.cooper_d.fuel_consumption_urban" : '4,5 [7,0] l/100 km',
"mini_cabrio.cooper_d.fuel_consumption_urban_num" : '4.5',
"mini_cabrio.cooper_d.fuel_type" : 'Diesel',
"mini_cabrio.cooper_d.fuel_type_num" : '',
"mini_cabrio.cooper_d.id" : 'cooper_d',
"mini_cabrio.cooper_d.infomaterial_id" : '',
"mini_cabrio.cooper_d.interior_surface" : '4BD',
"mini_cabrio.cooper_d.luggage_capacity" : '125/170 â€“ 660 l',
"mini_cabrio.cooper_d.luggage_capacity_num" : '125',
"mini_cabrio.cooper_d.market_attr1" : '',
"mini_cabrio.cooper_d.market_attr2" : '',
"mini_cabrio.cooper_d.market_attr3" : '',
"mini_cabrio.cooper_d.max_output" : '82/112/4000 kW/PS/1/min',
"mini_cabrio.cooper_d.max_output_num" : '82',
"mini_cabrio.cooper_d.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_d.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_d.max_permissible_weight" : '1630 [1655] kg',
"mini_cabrio.cooper_d.max_permissible_weight_num" : '1630',
"mini_cabrio.cooper_d.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_cabrio.cooper_d.max_torque_num" : '270',
"mini_cabrio.cooper_d.max_torque_overboost" : '-',
"mini_cabrio.cooper_d.max_torque_overboost_num" : '-',
"mini_cabrio.cooper_d.max_towed_load" : '-',
"mini_cabrio.cooper_d.model_code" : 'ZR31',
"mini_cabrio.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_d/financial_services/index.html'),
"mini_cabrio.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_d/modelcomparison.jpg'),
"mini_cabrio.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_d/model_filter_small.jpg'),
"mini_cabrio.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_d/model_filter_medium.jpg'),
"mini_cabrio.cooper_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d.model_name" : 'MINI Cooper D Cabrio',
"mini_cabrio.cooper_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_d/model_quickfacts.html'),
"mini_cabrio.cooper_d.output_per_litre" : '',
"mini_cabrio.cooper_d.payload" : '430 kg',
"mini_cabrio.cooper_d.range" : '1000 [755] km',
"mini_cabrio.cooper_d.rear_brakes" : '',
"mini_cabrio.cooper_d.rim_dimension" : '5,5 J x 15 LM',
"mini_cabrio.cooper_d.roof_color" : '-',
"mini_cabrio.cooper_d.seat_type" : '481',
"mini_cabrio.cooper_d.short_description" : '',
"mini_cabrio.cooper_d.stroke_bore" : '83,6/78,0 [90/84] mm',
"mini_cabrio.cooper_d.tank_capacity" : '40 l',
"mini_cabrio.cooper_d.tank_capacity_num" : '40',
"mini_cabrio.cooper_d.top_speed" : '194 [190] km/h',
"mini_cabrio.cooper_d.top_speed_num" : '194',
"mini_cabrio.cooper_d.transmission" : '',
"mini_cabrio.cooper_d.unladen_weight" : '1275 [1300] kg',
"mini_cabrio.cooper_d.unladen_weight_num" : '1275',
"mini_cabrio.cooper_d.weight_ratio" : '',
"mini_cabrio.cooper_d.wheel_dimension_num" : '195 / 55 R16',
"mini_cabrio.cooper_d.wheels" : '175/65 R15 84H',
"mini_cabrio.cooper_d_highgate.acceleration_0_100" : '10,3 [10,7] s',
"mini_cabrio.cooper_d_highgate.acceleration_0_100_num" : '10.3',
"mini_cabrio.cooper_d_highgate.acceleration_80_120" : '',
"mini_cabrio.cooper_d_highgate.acceleration_80_120_num" : '',
"mini_cabrio.cooper_d_highgate.allowed_axle_load_front_rear" : '',
"mini_cabrio.cooper_d_highgate.basic_financing_price" : '269,00 â‚¬',
"mini_cabrio.cooper_d_highgate.basic_financing_price_num" : '269',
"mini_cabrio.cooper_d_highgate.basic_price" : '30.450 â‚¬',
"mini_cabrio.cooper_d_highgate.basic_price_num" : '30.450',
"mini_cabrio.cooper_d_highgate.body_type" : 'CA',
"mini_cabrio.cooper_d_highgate.charging_type" : '',
"mini_cabrio.cooper_d_highgate.co2_emission" : '105 [140] g/km',
"mini_cabrio.cooper_d_highgate.co2_emission_num" : '105',
"mini_cabrio.cooper_d_highgate.color" : 'WB23',
"mini_cabrio.cooper_d_highgate.color_line" : '4C3',
"mini_cabrio.cooper_d_highgate.compression_recommended_fuel_type" : '',
"mini_cabrio.cooper_d_highgate.cubic_capacity" : '1.598 cmÂ³',
"mini_cabrio.cooper_d_highgate.cubic_capacity_num" : '',
"mini_cabrio.cooper_d_highgate.cushion_material" : 'T9GK',
"mini_cabrio.cooper_d_highgate.cylinder_type_valve" : '',
"mini_cabrio.cooper_d_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_cabrio.cooper_d_highgate.dimensions_num" : '',
"mini_cabrio.cooper_d_highgate.drive_type" : 'Front',
"mini_cabrio.cooper_d_highgate.drive_type_num" : '',
"mini_cabrio.cooper_d_highgate.elasticity" : '8,3 / 9,9 s',
"mini_cabrio.cooper_d_highgate.elasticity_80_100_5" : '',
"mini_cabrio.cooper_d_highgate.elasticity_num" : '8.3',
"mini_cabrio.cooper_d_highgate.engine" : 'Cooper D Cabrio Highgate',
"mini_cabrio.cooper_d_highgate.engine_hood_stripes" : 'ohne',
"mini_cabrio.cooper_d_highgate.engine_num" : '',
"mini_cabrio.cooper_d_highgate.engine_type" : '',
"mini_cabrio.cooper_d_highgate.exterior_mirror" : '3AB',
"mini_cabrio.cooper_d_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.132,50 EUR<br />Anzahlung in % 20,14<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 24.317,50 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 486,35 EUR<br />Darlehensgesamtbetrag 26.771,50 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 17.356,50 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_d_highgate.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_d_highgate.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_d_highgate.folding_top_color" : '',
"mini_cabrio.cooper_d_highgate.front_brakes" : '',
"mini_cabrio.cooper_d_highgate.fuel_consumption_combined" : '4,0 [5,3] l/100km',
"mini_cabrio.cooper_d_highgate.fuel_consumption_combined_num" : '4',
"mini_cabrio.cooper_d_highgate.fuel_consumption_extra_urban" : '3,7 [4,3] l/100km',
"mini_cabrio.cooper_d_highgate.fuel_consumption_extra_urban_num" : '3.7',
"mini_cabrio.cooper_d_highgate.fuel_consumption_urban" : '4,5 [7,0] l/100km',
"mini_cabrio.cooper_d_highgate.fuel_consumption_urban_num" : '4.5',
"mini_cabrio.cooper_d_highgate.fuel_type" : 'Diesel',
"mini_cabrio.cooper_d_highgate.fuel_type_num" : '',
"mini_cabrio.cooper_d_highgate.id" : 'cooper_d_highgate',
"mini_cabrio.cooper_d_highgate.infomaterial_id" : '',
"mini_cabrio.cooper_d_highgate.interior_surface" : '4BD',
"mini_cabrio.cooper_d_highgate.luggage_capacity" : '125 / 170 / 660 Liter',
"mini_cabrio.cooper_d_highgate.luggage_capacity_num" : '125',
"mini_cabrio.cooper_d_highgate.market_attr1" : '',
"mini_cabrio.cooper_d_highgate.market_attr2" : '',
"mini_cabrio.cooper_d_highgate.market_attr3" : '',
"mini_cabrio.cooper_d_highgate.max_output" : '82/112/4000 kW/PS/1/min',
"mini_cabrio.cooper_d_highgate.max_output_num" : '82',
"mini_cabrio.cooper_d_highgate.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_d_highgate.max_permissible_roof_load_num" : '',
"mini_cabrio.cooper_d_highgate.max_permissible_weight" : '1630 kg',
"mini_cabrio.cooper_d_highgate.max_permissible_weight_num" : '',
"mini_cabrio.cooper_d_highgate.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_cabrio.cooper_d_highgate.max_torque_num" : '270',
"mini_cabrio.cooper_d_highgate.max_torque_overboost" : '',
"mini_cabrio.cooper_d_highgate.max_torque_overboost_num" : '0',
"mini_cabrio.cooper_d_highgate.max_towed_load" : '',
"mini_cabrio.cooper_d_highgate.model_code" : 'ZR31_7HV',
"mini_cabrio.cooper_d_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_d/financial_services/index.html'),
"mini_cabrio.cooper_d_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_comparison.png'),
"mini_cabrio.cooper_d_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_small.jpg'),
"mini_cabrio.cooper_d_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_medium.jpg'),
"mini_cabrio.cooper_d_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_d_highgate.model_name" : 'MINI Cooper D Cabrio Highgate',
"mini_cabrio.cooper_d_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_d.html'),
"mini_cabrio.cooper_d_highgate.output_per_litre" : '',
"mini_cabrio.cooper_d_highgate.payload" : '430 kg',
"mini_cabrio.cooper_d_highgate.range" : '',
"mini_cabrio.cooper_d_highgate.rear_brakes" : '',
"mini_cabrio.cooper_d_highgate.rim_dimension" : '',
"mini_cabrio.cooper_d_highgate.roof_color" : '-',
"mini_cabrio.cooper_d_highgate.seat_type" : '481',
"mini_cabrio.cooper_d_highgate.short_description" : '',
"mini_cabrio.cooper_d_highgate.stroke_bore" : '',
"mini_cabrio.cooper_d_highgate.tank_capacity" : '40 Liter',
"mini_cabrio.cooper_d_highgate.tank_capacity_num" : '',
"mini_cabrio.cooper_d_highgate.top_speed" : '194 [190] km/h',
"mini_cabrio.cooper_d_highgate.top_speed_num" : '194',
"mini_cabrio.cooper_d_highgate.transmission" : '',
"mini_cabrio.cooper_d_highgate.unladen_weight" : '1200 / 1275 kg',
"mini_cabrio.cooper_d_highgate.unladen_weight_num" : '1200',
"mini_cabrio.cooper_d_highgate.weight_ratio" : '',
"mini_cabrio.cooper_d_highgate.wheel_dimension_num" : '195 / 55 R16',
"mini_cabrio.cooper_d_highgate.wheels" : '2GC',
"mini_cabrio.cooper_s.acceleration_0_100" : '7,3 [7,6] s',
"mini_cabrio.cooper_s.acceleration_0_100_num" : '7.3',
"mini_cabrio.cooper_s.acceleration_80_120" : '6,2/7,9 s',
"mini_cabrio.cooper_s.acceleration_80_120_num" : '6.2',
"mini_cabrio.cooper_s.allowed_axle_load_front_rear" : '885/795 [905/795] kg',
"mini_cabrio.cooper_s.basic_financing_price" : '259,00 â‚¬',
"mini_cabrio.cooper_s.basic_financing_price_num" : '259.00',
"mini_cabrio.cooper_s.basic_price" : '27.750 â‚¬',
"mini_cabrio.cooper_s.basic_price_num" : '27750',
"mini_cabrio.cooper_s.body_type" : 'CA',
"mini_cabrio.cooper_s.charging_type" : '',
"mini_cabrio.cooper_s.co2_emission" : '139 [153] g/km',
"mini_cabrio.cooper_s.co2_emission_num" : '139',
"mini_cabrio.cooper_s.color" : 'B28',
"mini_cabrio.cooper_s.color_line" : '4C1',
"mini_cabrio.cooper_s.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini_cabrio.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini_cabrio.cooper_s.cubic_capacity_num" : '1598',
"mini_cabrio.cooper_s.cushion_material" : 'FTGM',
"mini_cabrio.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.cooper_s.dimensions" : '3729/1683/1414 mm',
"mini_cabrio.cooper_s.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_s.drive_type" : '',
"mini_cabrio.cooper_s.drive_type_num" : '',
"mini_cabrio.cooper_s.elasticity" : '6,2/7,9 s',
"mini_cabrio.cooper_s.elasticity_80_100_5" : '7,9 s',
"mini_cabrio.cooper_s.elasticity_num" : '6.2',
"mini_cabrio.cooper_s.engine" : 'Cooper S Cabrio',
"mini_cabrio.cooper_s.engine_hood_stripes" : '329',
"mini_cabrio.cooper_s.engine_num" : '1.6',
"mini_cabrio.cooper_s.engine_type" : '',
"mini_cabrio.cooper_s.exterior_mirror" : '383',
"mini_cabrio.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.624,83 EUR<br />Anzahlung in % 20,27<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.125,17 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 442,50 EUR<br />Darlehensgesamtbetrag 24.327,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.262,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_s.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_s.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_s.folding_top_color" : '',
"mini_cabrio.cooper_s.front_brakes" : '',
"mini_cabrio.cooper_s.fuel_consumption_combined" : '6,0 [6,6] l/100 km',
"mini_cabrio.cooper_s.fuel_consumption_combined_num" : '6',
"mini_cabrio.cooper_s.fuel_consumption_extra_urban" : '5,1 [5,1] l/100 km',
"mini_cabrio.cooper_s.fuel_consumption_extra_urban_num" : '5.1',
"mini_cabrio.cooper_s.fuel_consumption_urban" : '7,5 [9,1] l/100 km',
"mini_cabrio.cooper_s.fuel_consumption_urban_num" : '7.5',
"mini_cabrio.cooper_s.fuel_type" : 'Benzin',
"mini_cabrio.cooper_s.fuel_type_num" : '',
"mini_cabrio.cooper_s.id" : 'cooper_s',
"mini_cabrio.cooper_s.infomaterial_id" : '',
"mini_cabrio.cooper_s.interior_surface" : '4BC',
"mini_cabrio.cooper_s.luggage_capacity" : '125/170 â€“ 660 l',
"mini_cabrio.cooper_s.luggage_capacity_num" : '125',
"mini_cabrio.cooper_s.market_attr1" : '',
"mini_cabrio.cooper_s.market_attr2" : '',
"mini_cabrio.cooper_s.market_attr3" : '',
"mini_cabrio.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini_cabrio.cooper_s.max_output_num" : '135',
"mini_cabrio.cooper_s.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_s.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_s.max_permissible_weight" : '1660 [1685] kg',
"mini_cabrio.cooper_s.max_permissible_weight_num" : '1660',
"mini_cabrio.cooper_s.max_torque" : '240 (260)/1600 â€“ 5000 Nm/1/min',
"mini_cabrio.cooper_s.max_torque_num" : '240',
"mini_cabrio.cooper_s.max_torque_overboost" : '260/1700 â€“ 4.500 Nm/1/min',
"mini_cabrio.cooper_s.max_torque_overboost_num" : '260',
"mini_cabrio.cooper_s.max_towed_load" : '-',
"mini_cabrio.cooper_s.model_code" : 'ZP31',
"mini_cabrio.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_s/financial_services/'),
"mini_cabrio.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_s/modelcomparison.jpg'),
"mini_cabrio.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_s/model_filter_small.jpg'),
"mini_cabrio.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_s/model_filter_medium.jpg'),
"mini_cabrio.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s.model_name" : 'MINI Cooper S Cabrio',
"mini_cabrio.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_s/model_quickfacts.html'),
"mini_cabrio.cooper_s.output_per_litre" : '',
"mini_cabrio.cooper_s.payload" : '430 kg',
"mini_cabrio.cooper_s.range" : '835 [760] km',
"mini_cabrio.cooper_s.rear_brakes" : '',
"mini_cabrio.cooper_s.rim_dimension" : '6,5 J x 16 LM',
"mini_cabrio.cooper_s.roof_color" : '-',
"mini_cabrio.cooper_s.seat_type" : '481',
"mini_cabrio.cooper_s.short_description" : '',
"mini_cabrio.cooper_s.stroke_bore" : '85,8/77,0 mm',
"mini_cabrio.cooper_s.tank_capacity" : '50 l',
"mini_cabrio.cooper_s.tank_capacity_num" : '50',
"mini_cabrio.cooper_s.top_speed" : '225 [220] km/h',
"mini_cabrio.cooper_s.top_speed_num" : '225',
"mini_cabrio.cooper_s.transmission" : '6-speed, manual',
"mini_cabrio.cooper_s.unladen_weight" : '1305 [1330] kg',
"mini_cabrio.cooper_s.unladen_weight_num" : '1305',
"mini_cabrio.cooper_s.weight_ratio" : '',
"mini_cabrio.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_s.wheels" : '195/55 R16 87V',
"mini_cabrio.cooper_s_highgate.acceleration_0_100" : '7,3 [7,6] s',
"mini_cabrio.cooper_s_highgate.acceleration_0_100_num" : '7.3',
"mini_cabrio.cooper_s_highgate.acceleration_80_120" : '6,6 / 8,4 s',
"mini_cabrio.cooper_s_highgate.acceleration_80_120_num" : '6.6',
"mini_cabrio.cooper_s_highgate.allowed_axle_load_front_rear" : '',
"mini_cabrio.cooper_s_highgate.basic_financing_price" : '299,00 â‚¬',
"mini_cabrio.cooper_s_highgate.basic_financing_price_num" : '299',
"mini_cabrio.cooper_s_highgate.basic_price" : '31.900 â‚¬',
"mini_cabrio.cooper_s_highgate.basic_price_num" : '31900',
"mini_cabrio.cooper_s_highgate.body_type" : 'CA',
"mini_cabrio.cooper_s_highgate.charging_type" : '',
"mini_cabrio.cooper_s_highgate.co2_emission" : '139 [153] g/km',
"mini_cabrio.cooper_s_highgate.co2_emission_num" : '139',
"mini_cabrio.cooper_s_highgate.color" : 'B28',
"mini_cabrio.cooper_s_highgate.color_line" : '4C1',
"mini_cabrio.cooper_s_highgate.compression_recommended_fuel_type" : '',
"mini_cabrio.cooper_s_highgate.cubic_capacity" : '1.598 Liter',
"mini_cabrio.cooper_s_highgate.cubic_capacity_num" : '1598',
"mini_cabrio.cooper_s_highgate.cushion_material" : 'FTGM',
"mini_cabrio.cooper_s_highgate.cylinder_type_valve" : '',
"mini_cabrio.cooper_s_highgate.dimensions" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_s_highgate.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_s_highgate.drive_type" : 'Front',
"mini_cabrio.cooper_s_highgate.drive_type_num" : '',
"mini_cabrio.cooper_s_highgate.elasticity" : '6,2 / 7,9 s',
"mini_cabrio.cooper_s_highgate.elasticity_80_100_5" : '',
"mini_cabrio.cooper_s_highgate.elasticity_num" : '6.2',
"mini_cabrio.cooper_s_highgate.engine" : 'Cooper S Cabrio Highgate',
"mini_cabrio.cooper_s_highgate.engine_hood_stripes" : '327, 329, 3AK',
"mini_cabrio.cooper_s_highgate.engine_num" : '1.6',
"mini_cabrio.cooper_s_highgate.engine_type" : '',
"mini_cabrio.cooper_s_highgate.exterior_mirror" : '383',
"mini_cabrio.cooper_s_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.424,19 EUR<br />Anzahlung in % 20,14<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 25.475,81 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 509,52 EUR<br />Darlehensgesamtbetrag 28.010,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 17.545,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_s_highgate.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_s_highgate.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_s_highgate.folding_top_color" : '',
"mini_cabrio.cooper_s_highgate.front_brakes" : '',
"mini_cabrio.cooper_s_highgate.fuel_consumption_combined" : '6 [6,6] l/100km',
"mini_cabrio.cooper_s_highgate.fuel_consumption_combined_num" : '6.0',
"mini_cabrio.cooper_s_highgate.fuel_consumption_extra_urban" : '5,1 [5,1] l/100km',
"mini_cabrio.cooper_s_highgate.fuel_consumption_extra_urban_num" : '5.1',
"mini_cabrio.cooper_s_highgate.fuel_consumption_urban" : '7,5 [9,1] l/100km',
"mini_cabrio.cooper_s_highgate.fuel_consumption_urban_num" : '7.5',
"mini_cabrio.cooper_s_highgate.fuel_type" : 'Benzin',
"mini_cabrio.cooper_s_highgate.fuel_type_num" : '',
"mini_cabrio.cooper_s_highgate.id" : 'cooper_s_highgate',
"mini_cabrio.cooper_s_highgate.infomaterial_id" : '',
"mini_cabrio.cooper_s_highgate.interior_surface" : '4BC',
"mini_cabrio.cooper_s_highgate.luggage_capacity" : '125 / 170 / 660 Liter',
"mini_cabrio.cooper_s_highgate.luggage_capacity_num" : '125',
"mini_cabrio.cooper_s_highgate.market_attr1" : '',
"mini_cabrio.cooper_s_highgate.market_attr2" : '',
"mini_cabrio.cooper_s_highgate.market_attr3" : '',
"mini_cabrio.cooper_s_highgate.max_output" : '135/184/5500 kW/PS/1/min',
"mini_cabrio.cooper_s_highgate.max_output_num" : '135',
"mini_cabrio.cooper_s_highgate.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_s_highgate.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_s_highgate.max_permissible_weight" : '1660 kg',
"mini_cabrio.cooper_s_highgate.max_permissible_weight_num" : '1660',
"mini_cabrio.cooper_s_highgate.max_torque" : '240 (260)/1600 â€“ 5000 Nm/1/min',
"mini_cabrio.cooper_s_highgate.max_torque_num" : '240',
"mini_cabrio.cooper_s_highgate.max_torque_overboost" : '260/1700 @ 4.500 Nm/1/min',
"mini_cabrio.cooper_s_highgate.max_torque_overboost_num" : '260',
"mini_cabrio.cooper_s_highgate.max_towed_load" : '',
"mini_cabrio.cooper_s_highgate.model_code" : 'ZP31_7HV',
"mini_cabrio.cooper_s_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_s/financial_services/index.html'),
"mini_cabrio.cooper_s_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_comparison.png'),
"mini_cabrio.cooper_s_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_small.jpg'),
"mini_cabrio.cooper_s_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_medium.jpg'),
"mini_cabrio.cooper_s_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_s_highgate.model_name" : 'MINI Cooper S Cabrio Highgate',
"mini_cabrio.cooper_s_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_s.html'),
"mini_cabrio.cooper_s_highgate.output_per_litre" : '',
"mini_cabrio.cooper_s_highgate.payload" : '430 kg',
"mini_cabrio.cooper_s_highgate.range" : '',
"mini_cabrio.cooper_s_highgate.rear_brakes" : '',
"mini_cabrio.cooper_s_highgate.rim_dimension" : '6.5J x 16 LM',
"mini_cabrio.cooper_s_highgate.roof_color" : '-',
"mini_cabrio.cooper_s_highgate.seat_type" : '481',
"mini_cabrio.cooper_s_highgate.short_description" : '',
"mini_cabrio.cooper_s_highgate.stroke_bore" : '',
"mini_cabrio.cooper_s_highgate.tank_capacity" : '50 Liter',
"mini_cabrio.cooper_s_highgate.tank_capacity_num" : '50',
"mini_cabrio.cooper_s_highgate.top_speed" : '225 [220] km/h',
"mini_cabrio.cooper_s_highgate.top_speed_num" : '225',
"mini_cabrio.cooper_s_highgate.transmission" : '6-speed, manual',
"mini_cabrio.cooper_s_highgate.unladen_weight" : '1230 / 1305 kg',
"mini_cabrio.cooper_s_highgate.unladen_weight_num" : '1230',
"mini_cabrio.cooper_s_highgate.weight_ratio" : '',
"mini_cabrio.cooper_s_highgate.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_s_highgate.wheels" : '2RU',
"mini_cabrio.cooper_sd.acceleration_0_100" : '8,7 [8,9] s',
"mini_cabrio.cooper_sd.acceleration_0_100_num" : '8.7',
"mini_cabrio.cooper_sd.acceleration_80_120" : '6,2/7,9 s',
"mini_cabrio.cooper_sd.acceleration_80_120_num" : '6.2',
"mini_cabrio.cooper_sd.allowed_axle_load_front_rear" : '905/790 [925/790] kg',
"mini_cabrio.cooper_sd.basic_financing_price" : '259,00 â‚¬',
"mini_cabrio.cooper_sd.basic_financing_price_num" : '259.00',
"mini_cabrio.cooper_sd.basic_price" : '28.750 â‚¬',
"mini_cabrio.cooper_sd.basic_price_num" : '28750',
"mini_cabrio.cooper_sd.body_type" : 'CA',
"mini_cabrio.cooper_sd.charging_type" : '',
"mini_cabrio.cooper_sd.co2_emission" : '118 [143] g/km',
"mini_cabrio.cooper_sd.co2_emission_num" : '118',
"mini_cabrio.cooper_sd.color" : 'B28',
"mini_cabrio.cooper_sd.color_line" : '4C1',
"mini_cabrio.cooper_sd.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_cabrio.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini_cabrio.cooper_sd.cubic_capacity_num" : '1995',
"mini_cabrio.cooper_sd.cushion_material" : 'FTGM',
"mini_cabrio.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.cooper_sd.dimensions" : '3723/1683/1414 mm',
"mini_cabrio.cooper_sd.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_sd.drive_type" : '',
"mini_cabrio.cooper_sd.drive_type_num" : '',
"mini_cabrio.cooper_sd.elasticity" : '7,1/8,6 s',
"mini_cabrio.cooper_sd.elasticity_80_100_5" : '8,6 s',
"mini_cabrio.cooper_sd.elasticity_num" : '6.6',
"mini_cabrio.cooper_sd.engine" : 'Cooper SD Cabrio',
"mini_cabrio.cooper_sd.engine_hood_stripes" : '329',
"mini_cabrio.cooper_sd.engine_num" : '1.6',
"mini_cabrio.cooper_sd.engine_type" : '',
"mini_cabrio.cooper_sd.exterior_mirror" : '383',
"mini_cabrio.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI Partner.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.624,42 EUR<br />Anzahlung in % 19,56<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 23.125,58 EUR<br />Sollzinssatz p.a.* 3,11 %<br />BearbeitungsgebÃ¼hr 462,51 EUR<br />Darlehensgesamtbetrag 25.452,50 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 16.387,50 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_sd.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_sd.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_sd.folding_top_color" : '',
"mini_cabrio.cooper_sd.front_brakes" : '',
"mini_cabrio.cooper_sd.fuel_consumption_combined" : '4,5 [5,4] l/100 km',
"mini_cabrio.cooper_sd.fuel_consumption_combined_num" : '4.5',
"mini_cabrio.cooper_sd.fuel_consumption_extra_urban" : '4,0 [4,4] l/100 km',
"mini_cabrio.cooper_sd.fuel_consumption_extra_urban_num" : '4.0',
"mini_cabrio.cooper_sd.fuel_consumption_urban" : '5,3 [7,1] l/100 km',
"mini_cabrio.cooper_sd.fuel_consumption_urban_num" : '5.3',
"mini_cabrio.cooper_sd.fuel_type" : 'Diesel',
"mini_cabrio.cooper_sd.fuel_type_num" : '',
"mini_cabrio.cooper_sd.id" : 'cooper_sd',
"mini_cabrio.cooper_sd.infomaterial_id" : '268464972',
"mini_cabrio.cooper_sd.interior_surface" : '4BC',
"mini_cabrio.cooper_sd.luggage_capacity" : '125/170 â€“ 660 l',
"mini_cabrio.cooper_sd.luggage_capacity_num" : '125',
"mini_cabrio.cooper_sd.market_attr1" : '',
"mini_cabrio.cooper_sd.market_attr2" : '',
"mini_cabrio.cooper_sd.market_attr3" : '',
"mini_cabrio.cooper_sd.max_output" : '105/143/4000 kW/PS/1/min',
"mini_cabrio.cooper_sd.max_output_num" : '105',
"mini_cabrio.cooper_sd.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_sd.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_sd.max_permissible_weight" : '1680 [1695] kg',
"mini_cabrio.cooper_sd.max_permissible_weight_num" : '1680',
"mini_cabrio.cooper_sd.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_cabrio.cooper_sd.max_torque_num" : '305',
"mini_cabrio.cooper_sd.max_torque_overboost" : '',
"mini_cabrio.cooper_sd.max_torque_overboost_num" : '',
"mini_cabrio.cooper_sd.max_towed_load" : '-',
"mini_cabrio.cooper_sd.model_code" : 'ZR71',
"mini_cabrio.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_sd/financial_services/index.html'),
"mini_cabrio.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_sd/modelcomparison.jpg'),
"mini_cabrio.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_sd/model_filter_small.jpg'),
"mini_cabrio.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/cooper_sd/model_filter_medium.jpg'),
"mini_cabrio.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd.model_name" : 'MINI Cooper SD Cabrio',
"mini_cabrio.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_sd/model_quickfacts.html'),
"mini_cabrio.cooper_sd.output_per_litre" : '',
"mini_cabrio.cooper_sd.payload" : '430 kg',
"mini_cabrio.cooper_sd.range" : '890 [740] kg',
"mini_cabrio.cooper_sd.rear_brakes" : '',
"mini_cabrio.cooper_sd.rim_dimension" : '6,5 J x 16 LM',
"mini_cabrio.cooper_sd.roof_color" : '-',
"mini_cabrio.cooper_sd.seat_type" : '481',
"mini_cabrio.cooper_sd.short_description" : '',
"mini_cabrio.cooper_sd.stroke_bore" : '90/84 mm',
"mini_cabrio.cooper_sd.tank_capacity" : '40 l',
"mini_cabrio.cooper_sd.tank_capacity_num" : '40',
"mini_cabrio.cooper_sd.top_speed" : '210 [203] km/h',
"mini_cabrio.cooper_sd.top_speed_num" : '210',
"mini_cabrio.cooper_sd.transmission" : '6-speed, manual',
"mini_cabrio.cooper_sd.unladen_weight" : '1325 [1340] kg',
"mini_cabrio.cooper_sd.unladen_weight_num" : '1325',
"mini_cabrio.cooper_sd.weight_ratio" : '',
"mini_cabrio.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_sd.wheels" : '195/55 R 16 87V',
"mini_cabrio.cooper_sd_highgate.acceleration_0_100" : '8,7 [8,9] s',
"mini_cabrio.cooper_sd_highgate.acceleration_0_100_num" : '8.7',
"mini_cabrio.cooper_sd_highgate.acceleration_80_120" : '6,6 / 8,4 s',
"mini_cabrio.cooper_sd_highgate.acceleration_80_120_num" : '6.6',
"mini_cabrio.cooper_sd_highgate.allowed_axle_load_front_rear" : '',
"mini_cabrio.cooper_sd_highgate.basic_financing_price" : '299,00 â‚¬',
"mini_cabrio.cooper_sd_highgate.basic_financing_price_num" : '299',
"mini_cabrio.cooper_sd_highgate.basic_price" : '32.900 â‚¬',
"mini_cabrio.cooper_sd_highgate.basic_price_num" : '32900',
"mini_cabrio.cooper_sd_highgate.body_type" : 'CA',
"mini_cabrio.cooper_sd_highgate.charging_type" : '',
"mini_cabrio.cooper_sd_highgate.co2_emission" : '118 [143] g/km',
"mini_cabrio.cooper_sd_highgate.co2_emission_num" : '118',
"mini_cabrio.cooper_sd_highgate.color" : 'B28',
"mini_cabrio.cooper_sd_highgate.color_line" : '4C1',
"mini_cabrio.cooper_sd_highgate.compression_recommended_fuel_type" : '',
"mini_cabrio.cooper_sd_highgate.cubic_capacity" : '1.995 Liter',
"mini_cabrio.cooper_sd_highgate.cubic_capacity_num" : '1995',
"mini_cabrio.cooper_sd_highgate.cushion_material" : 'FTGM',
"mini_cabrio.cooper_sd_highgate.cylinder_type_valve" : '',
"mini_cabrio.cooper_sd_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_cabrio.cooper_sd_highgate.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_sd_highgate.drive_type" : 'Front',
"mini_cabrio.cooper_sd_highgate.drive_type_num" : '',
"mini_cabrio.cooper_sd_highgate.elasticity" : '7,1 / 8,6 s',
"mini_cabrio.cooper_sd_highgate.elasticity_80_100_5" : '',
"mini_cabrio.cooper_sd_highgate.elasticity_num" : '6.6',
"mini_cabrio.cooper_sd_highgate.engine" : 'Cooper SD Cabrio Highgate',
"mini_cabrio.cooper_sd_highgate.engine_hood_stripes" : '327, 329, 3AK',
"mini_cabrio.cooper_sd_highgate.engine_num" : '1.6',
"mini_cabrio.cooper_sd_highgate.engine_type" : '',
"mini_cabrio.cooper_sd_highgate.exterior_mirror" : '383',
"mini_cabrio.cooper_sd_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.349,97 EUR<br />Anzahlung in % 19,30<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 26.550,03 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 531,00 EUR<br />Darlehensgesamtbetrag 29.218,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 18.753,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.cooper_sd_highgate.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper_sd_highgate.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper_sd_highgate.folding_top_color" : '',
"mini_cabrio.cooper_sd_highgate.front_brakes" : '',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_combined" : '4,5 [5,4] l/100km',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_combined_num" : '4.5',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_extra_urban" : '4,0 [4,4] l/100km',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_extra_urban_num" : '4.0',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_urban" : '5,3 [7,1] l/100km',
"mini_cabrio.cooper_sd_highgate.fuel_consumption_urban_num" : '5.3',
"mini_cabrio.cooper_sd_highgate.fuel_type" : 'Diesel',
"mini_cabrio.cooper_sd_highgate.fuel_type_num" : '',
"mini_cabrio.cooper_sd_highgate.id" : 'cooper_sd_highgate',
"mini_cabrio.cooper_sd_highgate.infomaterial_id" : '',
"mini_cabrio.cooper_sd_highgate.interior_surface" : '4BC',
"mini_cabrio.cooper_sd_highgate.luggage_capacity" : '125 - 660 Liter',
"mini_cabrio.cooper_sd_highgate.luggage_capacity_num" : '125',
"mini_cabrio.cooper_sd_highgate.market_attr1" : '',
"mini_cabrio.cooper_sd_highgate.market_attr2" : '',
"mini_cabrio.cooper_sd_highgate.market_attr3" : '',
"mini_cabrio.cooper_sd_highgate.max_output" : '105/143/4000 kW/PS/1/min',
"mini_cabrio.cooper_sd_highgate.max_output_num" : '105',
"mini_cabrio.cooper_sd_highgate.max_permissible_roof_load" : '- / -',
"mini_cabrio.cooper_sd_highgate.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.cooper_sd_highgate.max_permissible_weight" : '1680 kg',
"mini_cabrio.cooper_sd_highgate.max_permissible_weight_num" : '1680',
"mini_cabrio.cooper_sd_highgate.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_cabrio.cooper_sd_highgate.max_torque_num" : '305',
"mini_cabrio.cooper_sd_highgate.max_torque_overboost" : '',
"mini_cabrio.cooper_sd_highgate.max_torque_overboost_num" : '',
"mini_cabrio.cooper_sd_highgate.max_towed_load" : '',
"mini_cabrio.cooper_sd_highgate.model_code" : 'ZR71_7HV',
"mini_cabrio.cooper_sd_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_sd/financial_services/index.html'),
"mini_cabrio.cooper_sd_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_comparison.png'),
"mini_cabrio.cooper_sd_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_small.jpg'),
"mini_cabrio.cooper_sd_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_medium.jpg'),
"mini_cabrio.cooper_sd_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.cooper_sd_highgate.model_name" : 'MINI Cooper SD Cabrio Highgate',
"mini_cabrio.cooper_sd_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_sd.html'),
"mini_cabrio.cooper_sd_highgate.output_per_litre" : '',
"mini_cabrio.cooper_sd_highgate.payload" : '430 kg',
"mini_cabrio.cooper_sd_highgate.range" : '',
"mini_cabrio.cooper_sd_highgate.rear_brakes" : '',
"mini_cabrio.cooper_sd_highgate.rim_dimension" : '6.5J x 16 LM',
"mini_cabrio.cooper_sd_highgate.roof_color" : '-',
"mini_cabrio.cooper_sd_highgate.seat_type" : '481',
"mini_cabrio.cooper_sd_highgate.short_description" : '',
"mini_cabrio.cooper_sd_highgate.stroke_bore" : '',
"mini_cabrio.cooper_sd_highgate.tank_capacity" : '40 Liter',
"mini_cabrio.cooper_sd_highgate.tank_capacity_num" : '40',
"mini_cabrio.cooper_sd_highgate.top_speed" : '210 [203] km/h',
"mini_cabrio.cooper_sd_highgate.top_speed_num" : '210',
"mini_cabrio.cooper_sd_highgate.transmission" : '6-speed, manual',
"mini_cabrio.cooper_sd_highgate.unladen_weight" : '1250 / 1325 kg',
"mini_cabrio.cooper_sd_highgate.unladen_weight_num" : '1250',
"mini_cabrio.cooper_sd_highgate.weight_ratio" : '',
"mini_cabrio.cooper_sd_highgate.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_sd_highgate.wheels" : '2RU',
"mini_cabrio.mini_cabrio.acceleration_0_100" : '6,9 s',
"mini_cabrio.mini_cabrio.acceleration_0_100_num" : '6.9',
"mini_cabrio.mini_cabrio.acceleration_80_120" : '5,7 /6,8 s',
"mini_cabrio.mini_cabrio.acceleration_80_120_num" : '5.7',
"mini_cabrio.mini_cabrio.allowed_axle_load_front_rear" : '',
"mini_cabrio.mini_cabrio.basic_financing_price" : '299,00 â‚¬',
"mini_cabrio.mini_cabrio.basic_financing_price_num" : '299.00',
"mini_cabrio.mini_cabrio.basic_price" : '32.750 â‚¬',
"mini_cabrio.mini_cabrio.basic_price_num" : '32750',
"mini_cabrio.mini_cabrio.body_type" : 'CA',
"mini_cabrio.mini_cabrio.charging_type" : 'twin scroll turbo',
"mini_cabrio.mini_cabrio.co2_emission" : '169 g/km',
"mini_cabrio.mini_cabrio.co2_emission_num" : '169',
"mini_cabrio.mini_cabrio.color" : 'U851',
"mini_cabrio.mini_cabrio.color_line" : '4C1',
"mini_cabrio.mini_cabrio.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"mini_cabrio.mini_cabrio.cubic_capacity" : '1598 cmÂ³',
"mini_cabrio.mini_cabrio.cubic_capacity_num" : '1598',
"mini_cabrio.mini_cabrio.cushion_material" : 'T8E1',
"mini_cabrio.mini_cabrio.cylinder_type_valve" : '4/Reihe/4',
"mini_cabrio.mini_cabrio.dimensions" : '3.729 / 1.683 / 1.414 mm',
"mini_cabrio.mini_cabrio.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.mini_cabrio.drive_type" : '',
"mini_cabrio.mini_cabrio.drive_type_num" : '',
"mini_cabrio.mini_cabrio.elasticity" : '5,7 / 6,8 s',
"mini_cabrio.mini_cabrio.elasticity_80_100_5" : '6,8 s',
"mini_cabrio.mini_cabrio.elasticity_num" : '5.7',
"mini_cabrio.mini_cabrio.engine" : 'John Cooper Works Cabrio',
"mini_cabrio.mini_cabrio.engine_hood_stripes" : '3AZ',
"mini_cabrio.mini_cabrio.engine_num" : '',
"mini_cabrio.mini_cabrio.engine_type" : '',
"mini_cabrio.mini_cabrio.exterior_mirror" : '383',
"mini_cabrio.mini_cabrio.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.858,47 EUR<br />Anzahlung in % 20,94<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 25.891,53 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 517,83 EUR<br />Darlehensgesamtbetrag 28.477,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 18.012,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_cabrio.mini_cabrio.financing_disclaimer_headline1" : '',
"mini_cabrio.mini_cabrio.financing_disclaimer_headline2" : '',
"mini_cabrio.mini_cabrio.folding_top_color" : '-',
"mini_cabrio.mini_cabrio.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"mini_cabrio.mini_cabrio.fuel_consumption_combined" : '7,3 l/100 km',
"mini_cabrio.mini_cabrio.fuel_consumption_combined_num" : '7.3',
"mini_cabrio.mini_cabrio.fuel_consumption_extra_urban" : '5,9 l/100 km',
"mini_cabrio.mini_cabrio.fuel_consumption_extra_urban_num" : '5.9',
"mini_cabrio.mini_cabrio.fuel_consumption_urban" : '9,6 l/100 km',
"mini_cabrio.mini_cabrio.fuel_consumption_urban_num" : '9.6',
"mini_cabrio.mini_cabrio.fuel_type" : 'Benzin',
"mini_cabrio.mini_cabrio.fuel_type_num" : '',
"mini_cabrio.mini_cabrio.id" : 'mini_cabrio',
"mini_cabrio.mini_cabrio.infomaterial_id" : '',
"mini_cabrio.mini_cabrio.interior_surface" : '4CY',
"mini_cabrio.mini_cabrio.luggage_capacity" : '125/170-660 l',
"mini_cabrio.mini_cabrio.luggage_capacity_num" : '125',
"mini_cabrio.mini_cabrio.market_attr1" : '',
"mini_cabrio.mini_cabrio.market_attr2" : '',
"mini_cabrio.mini_cabrio.market_attr3" : '',
"mini_cabrio.mini_cabrio.max_output" : '155/211/6000 kW/PS/1/min',
"mini_cabrio.mini_cabrio.max_output_num" : '155',
"mini_cabrio.mini_cabrio.max_permissible_roof_load" : '- / -',
"mini_cabrio.mini_cabrio.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.mini_cabrio.max_permissible_weight" : '1.660 kg',
"mini_cabrio.mini_cabrio.max_permissible_weight_num" : '1660',
"mini_cabrio.mini_cabrio.max_torque" : '260(280)/1850-5600 Nm/1/min',
"mini_cabrio.mini_cabrio.max_torque_num" : '260',
"mini_cabrio.mini_cabrio.max_torque_overboost" : '280 Nm / 1.700-4.500 min-1',
"mini_cabrio.mini_cabrio.max_torque_overboost_num" : '280',
"mini_cabrio.mini_cabrio.max_towed_load" : '',
"mini_cabrio.mini_cabrio.model_code" : 'ZP91',
"mini_cabrio.mini_cabrio.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/financial_services/'),
"mini_cabrio.mini_cabrio.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/modelcomparison.jpg'),
"mini_cabrio.mini_cabrio.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_small.jpg'),
"mini_cabrio.mini_cabrio.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_medium.jpg'),
"mini_cabrio.mini_cabrio.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.mini_cabrio.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.mini_cabrio.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_cabrio.mini_cabrio.model_name" : 'MINI John Cooper Works Cabrio',
"mini_cabrio.mini_cabrio.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/model_quickfacts.html'),
"mini_cabrio.mini_cabrio.output_per_litre" : '97 kW/l',
"mini_cabrio.mini_cabrio.payload" : '430 Kg',
"mini_cabrio.mini_cabrio.range" : '685 km',
"mini_cabrio.mini_cabrio.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"mini_cabrio.mini_cabrio.rim_dimension" : '7,0J x 17 LM',
"mini_cabrio.mini_cabrio.roof_color" : '-',
"mini_cabrio.mini_cabrio.seat_type" : '481',
"mini_cabrio.mini_cabrio.short_description" : '',
"mini_cabrio.mini_cabrio.stroke_bore" : '85,8/77 mm',
"mini_cabrio.mini_cabrio.tank_capacity" : '50 Liter',
"mini_cabrio.mini_cabrio.tank_capacity_num" : '50',
"mini_cabrio.mini_cabrio.top_speed" : '235 km/h',
"mini_cabrio.mini_cabrio.top_speed_num" : '235',
"mini_cabrio.mini_cabrio.transmission" : '',
"mini_cabrio.mini_cabrio.unladen_weight" : '1230/1305 kg',
"mini_cabrio.mini_cabrio.unladen_weight_num" : '1230',
"mini_cabrio.mini_cabrio.weight_ratio" : '7,9 kg/kW',
"mini_cabrio.mini_cabrio.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini_cabrio.mini_cabrio.wheels" : '205/45 R 17 84 W RSC',
"mini_roadster.cooper.acceleration_0_100" : '9,2 [10,5] s',
"mini_roadster.cooper.acceleration_0_100_num" : '9.2',
"mini_roadster.cooper.acceleration_80_120" : '9,8 / 12,4',
"mini_roadster.cooper.acceleration_80_120_num" : '9.8',
"mini_roadster.cooper.allowed_axle_load_front_rear" : '820/610 [855/610] kg',
"mini_roadster.cooper.basic_financing_price" : '229,00 â‚¬',
"mini_roadster.cooper.basic_financing_price_num" : '229',
"mini_roadster.cooper.basic_price" : '22.600 â‚¬',
"mini_roadster.cooper.basic_price_num" : '22600',
"mini_roadster.cooper.body_type" : 'RO',
"mini_roadster.cooper.charging_type" : '',
"mini_roadster.cooper.co2_emission" : '133 [154] g/km',
"mini_roadster.cooper.co2_emission_num" : '133',
"mini_roadster.cooper.color" : '',
"mini_roadster.cooper.color_line" : '',
"mini_roadster.cooper.compression_recommended_fuel_type" : '11/91-98 ROZ :1',
"mini_roadster.cooper.cubic_capacity" : '1598 cmÂ³',
"mini_roadster.cooper.cubic_capacity_num" : '1598',
"mini_roadster.cooper.cushion_material" : '',
"mini_roadster.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini_roadster.cooper.dimensions" : '3728 x 1683 x 1384 mm',
"mini_roadster.cooper.dimensions_num" : '3714 / 1683 / 1407',
"mini_roadster.cooper.drive_type" : 'Front',
"mini_roadster.cooper.drive_type_num" : '',
"mini_roadster.cooper.elasticity" : '',
"mini_roadster.cooper.elasticity_80_100_5" : '12,4 s',
"mini_roadster.cooper.elasticity_num" : '12.4',
"mini_roadster.cooper.engine" : 'Cooper Roadster',
"mini_roadster.cooper.engine_hood_stripes" : '',
"mini_roadster.cooper.engine_num" : '',
"mini_roadster.cooper.engine_type" : '',
"mini_roadster.cooper.exterior_mirror" : '',
"mini_roadster.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.788,21 EUR<br />Anzahlung in % 21,19<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 17.811,79 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 356,24 EUR<br />Darlehensgesamtbetrag 19.541,01 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 11.526,00 EUR<br />Zielrate in % 51,00<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_roadster.cooper.financing_disclaimer_headline1" : '',
"mini_roadster.cooper.financing_disclaimer_headline2" : '',
"mini_roadster.cooper.folding_top_color" : '',
"mini_roadster.cooper.front_brakes" : 'Scheibe belÃ¼fted',
"mini_roadster.cooper.fuel_consumption_combined" : '5,7 [6,6] l/100 km',
"mini_roadster.cooper.fuel_consumption_combined_num" : '5.7',
"mini_roadster.cooper.fuel_consumption_extra_urban" : '4,9 [5,3] l/100 km',
"mini_roadster.cooper.fuel_consumption_extra_urban_num" : '4.9',
"mini_roadster.cooper.fuel_consumption_urban" : '7,2 [8,9] l/100 km',
"mini_roadster.cooper.fuel_consumption_urban_num" : '7.2',
"mini_roadster.cooper.fuel_type" : 'Benzin',
"mini_roadster.cooper.fuel_type_num" : '',
"mini_roadster.cooper.id" : 'cooper',
"mini_roadster.cooper.infomaterial_id" : '',
"mini_roadster.cooper.interior_surface" : '',
"mini_roadster.cooper.luggage_capacity" : '240 l',
"mini_roadster.cooper.luggage_capacity_num" : '240',
"mini_roadster.cooper.market_attr1" : '',
"mini_roadster.cooper.market_attr2" : '',
"mini_roadster.cooper.market_attr3" : '',
"mini_roadster.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini_roadster.cooper.max_output_num" : '90',
"mini_roadster.cooper.max_permissible_roof_load" : '',
"mini_roadster.cooper.max_permissible_roof_load_num" : '',
"mini_roadster.cooper.max_permissible_weight" : '1410 [1450] kg',
"mini_roadster.cooper.max_permissible_weight_num" : '1410',
"mini_roadster.cooper.max_torque" : '160/4250 Nm/1/min',
"mini_roadster.cooper.max_torque_num" : '160',
"mini_roadster.cooper.max_torque_overboost" : '',
"mini_roadster.cooper.max_torque_overboost_num" : '',
"mini_roadster.cooper.max_towed_load" : '-',
"mini_roadster.cooper.model_code" : 'SY11',
"mini_roadster.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper/financial_services/index.html'),
"mini_roadster.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper/modelcomparison.jpg'),
"mini_roadster.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper/model_filter_small.jpg'),
"mini_roadster.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper/model_filter_medium.jpg'),
"mini_roadster.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper.model_name" : 'MINI Cooper Roadster',
"mini_roadster.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper/model_quickfacts.html'),
"mini_roadster.cooper.output_per_litre" : '56,3 kW/dmÂ³',
"mini_roadster.cooper.payload" : '290 kg',
"mini_roadster.cooper.range" : '702 [606] km',
"mini_roadster.cooper.rear_brakes" : 'Scheibe',
"mini_roadster.cooper.rim_dimension" : '5,5J x 15 LM',
"mini_roadster.cooper.roof_color" : '',
"mini_roadster.cooper.seat_type" : '',
"mini_roadster.cooper.short_description" : '',
"mini_roadster.cooper.stroke_bore" : '85,8/77 mm',
"mini_roadster.cooper.tank_capacity" : '40 l',
"mini_roadster.cooper.tank_capacity_num" : '40',
"mini_roadster.cooper.top_speed" : '199 [192] km/h',
"mini_roadster.cooper.top_speed_num" : '199',
"mini_roadster.cooper.transmission" : '6-Gang-Schaltgetriebe',
"mini_roadster.cooper.unladen_weight" : '1120 [1160] / 1195 [1235] kg',
"mini_roadster.cooper.unladen_weight_num" : '1120',
"mini_roadster.cooper.weight_ratio" : '12,4 [12,9] kg/kW',
"mini_roadster.cooper.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_roadster.cooper.wheels" : '175/65 R15 84H',
"mini_roadster.cooper_s.acceleration_0_100" : '7,0 [7,2] s',
"mini_roadster.cooper_s.acceleration_0_100_num" : '7.0',
"mini_roadster.cooper_s.acceleration_80_120" : '5,8 / 7,2',
"mini_roadster.cooper_s.acceleration_80_120_num" : '5.8',
"mini_roadster.cooper_s.allowed_axle_load_front_rear" : '870/620 [895/620] kg',
"mini_roadster.cooper_s.basic_financing_price" : '309,00 â‚¬',
"mini_roadster.cooper_s.basic_financing_price_num" : '309',
"mini_roadster.cooper_s.basic_price" : '26.750 â‚¬',
"mini_roadster.cooper_s.basic_price_num" : '26750',
"mini_roadster.cooper_s.body_type" : 'RO',
"mini_roadster.cooper_s.charging_type" : 'Twin Scroll Turbo',
"mini_roadster.cooper_s.co2_emission" : '139 [153] g/km',
"mini_roadster.cooper_s.co2_emission_num" : '139',
"mini_roadster.cooper_s.color" : '',
"mini_roadster.cooper_s.color_line" : '',
"mini_roadster.cooper_s.compression_recommended_fuel_type" : '10,5/91-98  ROZ :1',
"mini_roadster.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini_roadster.cooper_s.cubic_capacity_num" : '1598',
"mini_roadster.cooper_s.cushion_material" : '',
"mini_roadster.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini_roadster.cooper_s.dimensions" : '3734 x 1683 x 1390 mm',
"mini_roadster.cooper_s.dimensions_num" : '3714 / 1683 / 1407',
"mini_roadster.cooper_s.drive_type" : 'Front',
"mini_roadster.cooper_s.drive_type_num" : '',
"mini_roadster.cooper_s.elasticity" : '',
"mini_roadster.cooper_s.elasticity_80_100_5" : '7,2 s',
"mini_roadster.cooper_s.elasticity_num" : '7.2',
"mini_roadster.cooper_s.engine" : 'Cooper S Roadster',
"mini_roadster.cooper_s.engine_hood_stripes" : '',
"mini_roadster.cooper_s.engine_num" : '',
"mini_roadster.cooper_s.engine_type" : '',
"mini_roadster.cooper_s.exterior_mirror" : '',
"mini_roadster.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.414,27 EUR<br />Anzahlung in % 16,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.335,73 EUR<br />Sollzinssatz p.a.* 3,06%<br />BearbeitungsgebÃ¼hr 446,71 EUR<br />Darlehensgesamtbetrag 24.457,50 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 13.642,50 EUR<br />Zielrate in % 51,00<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_roadster.cooper_s.financing_disclaimer_headline1" : '',
"mini_roadster.cooper_s.financing_disclaimer_headline2" : '',
"mini_roadster.cooper_s.folding_top_color" : '',
"mini_roadster.cooper_s.front_brakes" : 'Scheiben belÃ¼ftet',
"mini_roadster.cooper_s.fuel_consumption_combined" : '6,0 [6,6] l/100 km',
"mini_roadster.cooper_s.fuel_consumption_combined_num" : '6.0',
"mini_roadster.cooper_s.fuel_consumption_extra_urban" : '5,1 [5,1] l/100 km',
"mini_roadster.cooper_s.fuel_consumption_extra_urban_num" : '5.1',
"mini_roadster.cooper_s.fuel_consumption_urban" : '7,5 [9,1] l/100 km',
"mini_roadster.cooper_s.fuel_consumption_urban_num" : '7.5',
"mini_roadster.cooper_s.fuel_type" : 'Benzin',
"mini_roadster.cooper_s.fuel_type_num" : '',
"mini_roadster.cooper_s.id" : 'cooper_s',
"mini_roadster.cooper_s.infomaterial_id" : '',
"mini_roadster.cooper_s.interior_surface" : '',
"mini_roadster.cooper_s.luggage_capacity" : '240 l',
"mini_roadster.cooper_s.luggage_capacity_num" : '240',
"mini_roadster.cooper_s.market_attr1" : '',
"mini_roadster.cooper_s.market_attr2" : '',
"mini_roadster.cooper_s.market_attr3" : '',
"mini_roadster.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini_roadster.cooper_s.max_output_num" : '135',
"mini_roadster.cooper_s.max_permissible_roof_load" : '',
"mini_roadster.cooper_s.max_permissible_roof_load_num" : '',
"mini_roadster.cooper_s.max_permissible_weight" : '1475 [1495] kg',
"mini_roadster.cooper_s.max_permissible_weight_num" : '1475',
"mini_roadster.cooper_s.max_torque" : '260/1730-4500 Nm/1/min',
"mini_roadster.cooper_s.max_torque_num" : '260',
"mini_roadster.cooper_s.max_torque_overboost" : '260/1730-4500 Nm/1/min',
"mini_roadster.cooper_s.max_torque_overboost_num" : '260',
"mini_roadster.cooper_s.max_towed_load" : '-',
"mini_roadster.cooper_s.model_code" : 'SY31',
"mini_roadster.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper_s/financial_services/index.html'),
"mini_roadster.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_s/modelcomparison.jpg'),
"mini_roadster.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_s/model_filter_small.jpg'),
"mini_roadster.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_s/model_filter_medium.jpg'),
"mini_roadster.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_s.model_name" : 'MINI Cooper S Roadster',
"mini_roadster.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper_s/model_quickfacts.html'),
"mini_roadster.cooper_s.output_per_litre" : '84,5 kW/dmÂ³',
"mini_roadster.cooper_s.payload" : '290 kg',
"mini_roadster.cooper_s.range" : '835 [760] km',
"mini_roadster.cooper_s.rear_brakes" : 'Scheiben',
"mini_roadster.cooper_s.rim_dimension" : '6,5J x 16 LM',
"mini_roadster.cooper_s.roof_color" : '',
"mini_roadster.cooper_s.seat_type" : '',
"mini_roadster.cooper_s.short_description" : '',
"mini_roadster.cooper_s.stroke_bore" : '85,8 x 77 mm',
"mini_roadster.cooper_s.tank_capacity" : '50 l',
"mini_roadster.cooper_s.tank_capacity_num" : '40',
"mini_roadster.cooper_s.top_speed" : '227 [222] km/h',
"mini_roadster.cooper_s.top_speed_num" : '227',
"mini_roadster.cooper_s.transmission" : '6-Gang-Schaltgetriebe',
"mini_roadster.cooper_s.unladen_weight" : '1185 [1205] / 1260 [1280] kg',
"mini_roadster.cooper_s.unladen_weight_num" : '1185',
"mini_roadster.cooper_s.weight_ratio" : '8,8 [8,9] kg/kW',
"mini_roadster.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_roadster.cooper_s.wheels" : '195/55 R16 87V',
"mini_roadster.cooper_sd.acceleration_0_100" : '8,1 [8,3] s',
"mini_roadster.cooper_sd.acceleration_0_100_num" : '8.1',
"mini_roadster.cooper_sd.acceleration_80_120" : '6,7 / 8,0',
"mini_roadster.cooper_sd.acceleration_80_120_num" : '6.7',
"mini_roadster.cooper_sd.allowed_axle_load_front_rear" : '890/620 [905/620] kg',
"mini_roadster.cooper_sd.basic_financing_price" : '329,00 â‚¬',
"mini_roadster.cooper_sd.basic_financing_price_num" : '329',
"mini_roadster.cooper_sd.basic_price" : '27.750 â‚¬',
"mini_roadster.cooper_sd.basic_price_num" : '27750',
"mini_roadster.cooper_sd.body_type" : 'RO',
"mini_roadster.cooper_sd.charging_type" : 'VNT',
"mini_roadster.cooper_sd.co2_emission" : '118 [143] g/km',
"mini_roadster.cooper_sd.co2_emission_num" : '118',
"mini_roadster.cooper_sd.color" : '',
"mini_roadster.cooper_sd.color_line" : '',
"mini_roadster.cooper_sd.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_roadster.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini_roadster.cooper_sd.cubic_capacity_num" : '1995',
"mini_roadster.cooper_sd.cushion_material" : '',
"mini_roadster.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini_roadster.cooper_sd.dimensions" : '3734 x 1683 x 1390 mm',
"mini_roadster.cooper_sd.dimensions_num" : '3714 / 1683 / 1407',
"mini_roadster.cooper_sd.drive_type" : 'Front',
"mini_roadster.cooper_sd.drive_type_num" : '',
"mini_roadster.cooper_sd.elasticity" : '',
"mini_roadster.cooper_sd.elasticity_80_100_5" : '8,0 s',
"mini_roadster.cooper_sd.elasticity_num" : '8.0',
"mini_roadster.cooper_sd.engine" : 'Cooper SD Roadster',
"mini_roadster.cooper_sd.engine_hood_stripes" : '',
"mini_roadster.cooper_sd.engine_num" : '',
"mini_roadster.cooper_sd.engine_type" : '',
"mini_roadster.cooper_sd.exterior_mirror" : '',
"mini_roadster.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.300,29 EUR<br />Anzahlung in % 15,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 23.449,71 EUR<br />Sollzinssatz p.a.* 3,06 %<br />BearbeitungsgebÃ¼hr 468,99 EUR<br />Darlehensgesamtbetrag 25.667,51 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 14.152,50 EUR<br />Zielrate in % 51,00<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_roadster.cooper_sd.financing_disclaimer_headline1" : '',
"mini_roadster.cooper_sd.financing_disclaimer_headline2" : '',
"mini_roadster.cooper_sd.folding_top_color" : '',
"mini_roadster.cooper_sd.front_brakes" : 'Scheiben belÃ¼ftet',
"mini_roadster.cooper_sd.fuel_consumption_combined" : '4,5 [5,4] l/100 km',
"mini_roadster.cooper_sd.fuel_consumption_combined_num" : '4.5',
"mini_roadster.cooper_sd.fuel_consumption_extra_urban" : '4,0 [4,4] l/100 km',
"mini_roadster.cooper_sd.fuel_consumption_extra_urban_num" : '4.0',
"mini_roadster.cooper_sd.fuel_consumption_urban" : '5,3 [7,1] l/100 km',
"mini_roadster.cooper_sd.fuel_consumption_urban_num" : '5.3',
"mini_roadster.cooper_sd.fuel_type" : 'Diesel',
"mini_roadster.cooper_sd.fuel_type_num" : '',
"mini_roadster.cooper_sd.id" : 'cooper_sd',
"mini_roadster.cooper_sd.infomaterial_id" : '',
"mini_roadster.cooper_sd.interior_surface" : '',
"mini_roadster.cooper_sd.luggage_capacity" : '240 l',
"mini_roadster.cooper_sd.luggage_capacity_num" : '240',
"mini_roadster.cooper_sd.market_attr1" : '',
"mini_roadster.cooper_sd.market_attr2" : '',
"mini_roadster.cooper_sd.market_attr3" : '',
"mini_roadster.cooper_sd.max_output" : '105/122/6000 kW/PS/1/min',
"mini_roadster.cooper_sd.max_output_num" : '105',
"mini_roadster.cooper_sd.max_permissible_roof_load" : '',
"mini_roadster.cooper_sd.max_permissible_roof_load_num" : '',
"mini_roadster.cooper_sd.max_permissible_weight" : '1490 [1505] kg',
"mini_roadster.cooper_sd.max_permissible_weight_num" : '1490',
"mini_roadster.cooper_sd.max_torque" : '305/1750-2700 Nm/1/min',
"mini_roadster.cooper_sd.max_torque_num" : '305',
"mini_roadster.cooper_sd.max_torque_overboost" : '',
"mini_roadster.cooper_sd.max_torque_overboost_num" : '',
"mini_roadster.cooper_sd.max_towed_load" : '-',
"mini_roadster.cooper_sd.model_code" : 'SY71',
"mini_roadster.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper_sd/financial_services/index.html'),
"mini_roadster.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_sd/modelcomparison.jpg'),
"mini_roadster.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_sd/model_filter_small.jpg'),
"mini_roadster.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/cooper_sd/model_filter_medium.jpg'),
"mini_roadster.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.cooper_sd.model_name" : 'MINI Cooper SD Roadster',
"mini_roadster.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/cooper_sd/model_quickfacts.html'),
"mini_roadster.cooper_sd.output_per_litre" : '52,6 kW/dmÂ³',
"mini_roadster.cooper_sd.payload" : '290 kg',
"mini_roadster.cooper_sd.range" : '890 [740] km',
"mini_roadster.cooper_sd.rear_brakes" : 'Scheiben',
"mini_roadster.cooper_sd.rim_dimension" : '6,5J x 16 LM',
"mini_roadster.cooper_sd.roof_color" : '',
"mini_roadster.cooper_sd.seat_type" : '',
"mini_roadster.cooper_sd.short_description" : '',
"mini_roadster.cooper_sd.stroke_bore" : '90 x 84 mm',
"mini_roadster.cooper_sd.tank_capacity" : '40 l',
"mini_roadster.cooper_sd.tank_capacity_num" : '40',
"mini_roadster.cooper_sd.top_speed" : '212 [204] km/h',
"mini_roadster.cooper_sd.top_speed_num" : '212',
"mini_roadster.cooper_sd.transmission" : '6-Gang-Schaltgetriebe',
"mini_roadster.cooper_sd.unladen_weight" : '1200 [1215] / 1275 [1290] kg',
"mini_roadster.cooper_sd.unladen_weight_num" : '1200',
"mini_roadster.cooper_sd.weight_ratio" : '11,4 [11,6] kg/kW',
"mini_roadster.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_roadster.cooper_sd.wheels" : '195/55 R16 87V',
"mini_roadster.mini_roadster.acceleration_0_100" : '6,5 s',
"mini_roadster.mini_roadster.acceleration_0_100_num" : '6.5',
"mini_roadster.mini_roadster.acceleration_80_120" : '5,3 / 6,3 s',
"mini_roadster.mini_roadster.acceleration_80_120_num" : '5.3',
"mini_roadster.mini_roadster.allowed_axle_load_front_rear" : '865/630 kg',
"mini_roadster.mini_roadster.basic_financing_price" : '409,00 â‚¬',
"mini_roadster.mini_roadster.basic_financing_price_num" : '409',
"mini_roadster.mini_roadster.basic_price" : '31.900 â‚¬',
"mini_roadster.mini_roadster.basic_price_num" : '31900',
"mini_roadster.mini_roadster.body_type" : 'RO',
"mini_roadster.mini_roadster.charging_type" : 'Twin Scroll Turbo',
"mini_roadster.mini_roadster.co2_emission" : '169 g/km',
"mini_roadster.mini_roadster.co2_emission_num" : '169',
"mini_roadster.mini_roadster.color" : '',
"mini_roadster.mini_roadster.color_line" : '',
"mini_roadster.mini_roadster.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"mini_roadster.mini_roadster.cubic_capacity" : '1598 cmÂ³',
"mini_roadster.mini_roadster.cubic_capacity_num" : '1598',
"mini_roadster.mini_roadster.cushion_material" : '',
"mini_roadster.mini_roadster.cylinder_type_valve" : '4/Reihe/4',
"mini_roadster.mini_roadster.dimensions" : '3758 x 1683 x 1391 mm',
"mini_roadster.mini_roadster.dimensions_num" : '3714 / 1683 / 1407',
"mini_roadster.mini_roadster.drive_type" : 'Front',
"mini_roadster.mini_roadster.drive_type_num" : '',
"mini_roadster.mini_roadster.elasticity" : '',
"mini_roadster.mini_roadster.elasticity_80_100_5" : '6,3 s',
"mini_roadster.mini_roadster.elasticity_num" : '6.3',
"mini_roadster.mini_roadster.engine" : 'John Cooper Works Roadster',
"mini_roadster.mini_roadster.engine_hood_stripes" : '',
"mini_roadster.mini_roadster.engine_num" : '',
"mini_roadster.mini_roadster.engine_type" : '',
"mini_roadster.mini_roadster.exterior_mirror" : '',
"mini_roadster.mini_roadster.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.926,35 EUR<br />Anzahlung in % 12,31<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 27.973,65 EUR<br />Sollzinssatz p.a.* 3,04%<br />BearbeitungsgebÃ¼hr 559,47 EUR<br />Darlehensgesamtbetrag 30.584,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 16.269,00 EUR<br />Zielrate in % 51,00<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_roadster.mini_roadster.financing_disclaimer_headline1" : '',
"mini_roadster.mini_roadster.financing_disclaimer_headline2" : '',
"mini_roadster.mini_roadster.folding_top_color" : '',
"mini_roadster.mini_roadster.front_brakes" : 'Scheibe belÃ¼fted',
"mini_roadster.mini_roadster.fuel_consumption_combined" : '7,3 l/100 km',
"mini_roadster.mini_roadster.fuel_consumption_combined_num" : '7.3',
"mini_roadster.mini_roadster.fuel_consumption_extra_urban" : '5,9 l/100 km',
"mini_roadster.mini_roadster.fuel_consumption_extra_urban_num" : '5.9',
"mini_roadster.mini_roadster.fuel_consumption_urban" : '9,6 l/100 km',
"mini_roadster.mini_roadster.fuel_consumption_urban_num" : '9.6',
"mini_roadster.mini_roadster.fuel_type" : 'Benzin',
"mini_roadster.mini_roadster.fuel_type_num" : '',
"mini_roadster.mini_roadster.id" : 'mini_roadster',
"mini_roadster.mini_roadster.infomaterial_id" : '',
"mini_roadster.mini_roadster.interior_surface" : '',
"mini_roadster.mini_roadster.luggage_capacity" : '240 l',
"mini_roadster.mini_roadster.luggage_capacity_num" : '240',
"mini_roadster.mini_roadster.market_attr1" : '',
"mini_roadster.mini_roadster.market_attr2" : '',
"mini_roadster.mini_roadster.market_attr3" : '',
"mini_roadster.mini_roadster.max_output" : '155/211/6000 kW/PS/1/min',
"mini_roadster.mini_roadster.max_output_num" : '155',
"mini_roadster.mini_roadster.max_permissible_roof_load" : '',
"mini_roadster.mini_roadster.max_permissible_roof_load_num" : '',
"mini_roadster.mini_roadster.max_permissible_weight" : '1475 kg',
"mini_roadster.mini_roadster.max_permissible_weight_num" : '1475',
"mini_roadster.mini_roadster.max_torque" : '280 Nm @ 2,000-5,100 rpm',
"mini_roadster.mini_roadster.max_torque_num" : '280',
"mini_roadster.mini_roadster.max_torque_overboost" : '280 Nm @ 2,000-5,100 rpm',
"mini_roadster.mini_roadster.max_torque_overboost_num" : '280',
"mini_roadster.mini_roadster.max_towed_load" : '-',
"mini_roadster.mini_roadster.model_code" : 'SY51',
"mini_roadster.mini_roadster.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/john_cooper_works/financial_services/index.html'),
"mini_roadster.mini_roadster.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/modelcomparison.jpg'),
"mini_roadster.mini_roadster.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/model_filter_small.jpg'),
"mini_roadster.mini_roadster.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/model_filter_medium.jpg'),
"mini_roadster.mini_roadster.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.mini_roadster.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.mini_roadster.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_roadster.mini_roadster.model_name" : 'MINI John Cooper Works Roadster',
"mini_roadster.mini_roadster.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/john_cooper_works/model_quickfacts.html'),
"mini_roadster.mini_roadster.output_per_litre" : '97 kW/dmÂ³',
"mini_roadster.mini_roadster.payload" : '290 kg',
"mini_roadster.mini_roadster.range" : '685 km',
"mini_roadster.mini_roadster.rear_brakes" : 'Scheibe',
"mini_roadster.mini_roadster.rim_dimension" : '7J x 17 LM',
"mini_roadster.mini_roadster.roof_color" : '',
"mini_roadster.mini_roadster.seat_type" : '',
"mini_roadster.mini_roadster.short_description" : '',
"mini_roadster.mini_roadster.stroke_bore" : '85,8 x 77 mm',
"mini_roadster.mini_roadster.tank_capacity" : '50 l',
"mini_roadster.mini_roadster.tank_capacity_num" : '50',
"mini_roadster.mini_roadster.top_speed" : '237 km/h',
"mini_roadster.mini_roadster.top_speed_num" : '237',
"mini_roadster.mini_roadster.transmission" : '6-Gang-Schaltgetriebe',
"mini_roadster.mini_roadster.unladen_weight" : '1185 / 1260 kg',
"mini_roadster.mini_roadster.unladen_weight_num" : '1185',
"mini_roadster.mini_roadster.weight_ratio" : '7,6 kg/kW',
"mini_roadster.mini_roadster.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_roadster.mini_roadster.wheels" : '205/45 R17 84W',
"mini_clubman.one.acceleration_0_100" : '11,1 [12,8] s',
"mini_clubman.one.acceleration_0_100_num" : '11.1',
"mini_clubman.one.acceleration_80_120" : '6,6/8,6 s',
"mini_clubman.one.acceleration_80_120_num" : '6.7',
"mini_clubman.one.allowed_axle_load_front_rear" : '835/840 [870/845] kg',
"mini_clubman.one.basic_financing_price" : '169,00 â‚¬',
"mini_clubman.one.basic_financing_price_num" : '169.00',
"mini_clubman.one.basic_price" : '18.600 â‚¬',
"mini_clubman.one.basic_price_num" : '18600',
"mini_clubman.one.body_type" : 'HB',
"mini_clubman.one.charging_type" : '',
"mini_clubman.one.co2_emission" : '129 [152] g/km',
"mini_clubman.one.co2_emission_num" : '129',
"mini_clubman.one.color" : 'M900',
"mini_clubman.one.color_line" : '4C3',
"mini_clubman.one.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_clubman.one.cubic_capacity" : '1598 cmÂ³',
"mini_clubman.one.cubic_capacity_num" : '1598',
"mini_clubman.one.cushion_material" : 'APE1',
"mini_clubman.one.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.one.dimensions" : '3961/1683/1426 mm',
"mini_clubman.one.dimensions_num" : '3961 / 1683 / 1426',
"mini_clubman.one.drive_type" : '',
"mini_clubman.one.drive_type_num" : '',
"mini_clubman.one.elasticity" : '12,9/16,4 s',
"mini_clubman.one.elasticity_80_100_5" : '16,4 s',
"mini_clubman.one.elasticity_num" : '12.9',
"mini_clubman.one.engine" : 'One Clubman',
"mini_clubman.one.engine_hood_stripes" : 'ohne',
"mini_clubman.one.engine_num" : '1.6',
"mini_clubman.one.engine_type" : '',
"mini_clubman.one.exterior_mirror" : '-',
"mini_clubman.one.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.922,06 EUR<br />Anzahlung in % 21,09<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 14.677,94 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 293,56 EUR<br />Darlehensgesamtbetrag 16.145,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 10.230,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.one.financing_disclaimer_headline1" : '',
"mini_clubman.one.financing_disclaimer_headline2" : '',
"mini_clubman.one.folding_top_color" : '',
"mini_clubman.one.front_brakes" : '',
"mini_clubman.one.fuel_consumption_combined" : '5,5 [6,5] l/100 km',
"mini_clubman.one.fuel_consumption_combined_num" : '5.5',
"mini_clubman.one.fuel_consumption_extra_urban" : '4,5 [5,2] l/100 km',
"mini_clubman.one.fuel_consumption_extra_urban_num" : '4.5',
"mini_clubman.one.fuel_consumption_urban" : '7,3 [8,8] l/100 km',
"mini_clubman.one.fuel_consumption_urban_num" : '7.3',
"mini_clubman.one.fuel_type" : 'Benzin',
"mini_clubman.one.fuel_type_num" : '',
"mini_clubman.one.id" : 'one',
"mini_clubman.one.infomaterial_id" : '',
"mini_clubman.one.interior_surface" : '4BC',
"mini_clubman.one.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.one.luggage_capacity_num" : '260',
"mini_clubman.one.market_attr1" : '',
"mini_clubman.one.market_attr2" : '',
"mini_clubman.one.market_attr3" : '',
"mini_clubman.one.max_output" : '72/98/6000 kW/PS/1/min',
"mini_clubman.one.max_output_num" : '72',
"mini_clubman.one.max_permissible_roof_load" : '75 kg',
"mini_clubman.one.max_permissible_roof_load_num" : '75',
"mini_clubman.one.max_permissible_weight" : '1640 [1670] kg',
"mini_clubman.one.max_permissible_weight_num" : '1640',
"mini_clubman.one.max_torque" : '153/3000 Nm/1/min',
"mini_clubman.one.max_torque_num" : '153',
"mini_clubman.one.max_torque_overboost" : '-',
"mini_clubman.one.max_torque_overboost_num" : '-',
"mini_clubman.one.max_towed_load" : '-',
"mini_clubman.one.model_code" : 'ZE31',
"mini_clubman.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one/financial_services/'),
"mini_clubman.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one/modelcomparison.jpg'),
"mini_clubman.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one/model_filter_small.jpg'),
"mini_clubman.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one/model_filter_medium.jpg'),
"mini_clubman.one.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one.model_name" : 'MINI One Clubman',
"mini_clubman.one.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one/model_quickfacts.html'),
"mini_clubman.one.output_per_litre" : '',
"mini_clubman.one.payload" : '500 kg',
"mini_clubman.one.range" : '725 [615] km',
"mini_clubman.one.rear_brakes" : '',
"mini_clubman.one.rim_dimension" : '5,5 J x 15 St',
"mini_clubman.one.roof_color" : '-',
"mini_clubman.one.seat_type" : 'Basis',
"mini_clubman.one.short_description" : '',
"mini_clubman.one.stroke_bore" : '85,8/77,0 mm',
"mini_clubman.one.tank_capacity" : '40 l',
"mini_clubman.one.tank_capacity_num" : '40',
"mini_clubman.one.top_speed" : '185 [179] km/h',
"mini_clubman.one.top_speed_num" : '185',
"mini_clubman.one.transmission" : '',
"mini_clubman.one.unladen_weight" : '1215 [1245] kg',
"mini_clubman.one.unladen_weight_num" : '1215',
"mini_clubman.one.weight_ratio" : '',
"mini_clubman.one.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.one.wheels" : '175/65 R 15 84H',
"mini_clubman.one_d.acceleration_0_100" : '11,8 s',
"mini_clubman.one_d.acceleration_0_100_num" : '11.8',
"mini_clubman.one_d.acceleration_80_120" : '',
"mini_clubman.one_d.acceleration_80_120_num" : '',
"mini_clubman.one_d.allowed_axle_load_front_rear" : '890/825 kg',
"mini_clubman.one_d.basic_financing_price" : '189,00 â‚¬',
"mini_clubman.one_d.basic_financing_price_num" : '189.00',
"mini_clubman.one_d.basic_price" : '20.100 â‚¬',
"mini_clubman.one_d.basic_price_num" : '20100',
"mini_clubman.one_d.body_type" : 'HB',
"mini_clubman.one_d.charging_type" : '',
"mini_clubman.one_d.co2_emission" : '103 g/km',
"mini_clubman.one_d.co2_emission_num" : '103',
"mini_clubman.one_d.color" : 'M900',
"mini_clubman.one_d.color_line" : '4C1',
"mini_clubman.one_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_clubman.one_d.cubic_capacity" : '1598 cmÂ³',
"mini_clubman.one_d.cubic_capacity_num" : '1598',
"mini_clubman.one_d.cushion_material" : 'FKE1',
"mini_clubman.one_d.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.one_d.dimensions" : '3961/1683/1426 mm',
"mini_clubman.one_d.dimensions_num" : '',
"mini_clubman.one_d.drive_type" : '',
"mini_clubman.one_d.drive_type_num" : '',
"mini_clubman.one_d.elasticity" : '10,4/12,6 s',
"mini_clubman.one_d.elasticity_80_100_5" : '12,6 s',
"mini_clubman.one_d.elasticity_num" : '10.4',
"mini_clubman.one_d.engine" : 'One D Clubman',
"mini_clubman.one_d.engine_hood_stripes" : 'ohne',
"mini_clubman.one_d.engine_num" : '',
"mini_clubman.one_d.engine_type" : '',
"mini_clubman.one_d.exterior_mirror" : '3AF',
"mini_clubman.one_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.027,97 EUR<br />Anzahlung in % 20,04<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.072,03 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 321,44 EUR<br />Darlehensgesamtbetrag 17.670,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 11.055,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.one_d.financing_disclaimer_headline1" : '',
"mini_clubman.one_d.financing_disclaimer_headline2" : '',
"mini_clubman.one_d.folding_top_color" : '',
"mini_clubman.one_d.front_brakes" : '',
"mini_clubman.one_d.fuel_consumption_combined" : '3,9 l/100 km',
"mini_clubman.one_d.fuel_consumption_combined_num" : '3.9',
"mini_clubman.one_d.fuel_consumption_extra_urban" : '3,6 l/100 km',
"mini_clubman.one_d.fuel_consumption_extra_urban_num" : '3.6',
"mini_clubman.one_d.fuel_consumption_urban" : '4,4 l/100 km',
"mini_clubman.one_d.fuel_consumption_urban_num" : '4.4',
"mini_clubman.one_d.fuel_type" : 'Diesel',
"mini_clubman.one_d.fuel_type_num" : '',
"mini_clubman.one_d.id" : 'one_d',
"mini_clubman.one_d.infomaterial_id" : '',
"mini_clubman.one_d.interior_surface" : '4BC',
"mini_clubman.one_d.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.one_d.luggage_capacity_num" : '260',
"mini_clubman.one_d.market_attr1" : '',
"mini_clubman.one_d.market_attr2" : '',
"mini_clubman.one_d.market_attr3" : '',
"mini_clubman.one_d.max_output" : '66/90/4000 kW/PS/1/min',
"mini_clubman.one_d.max_output_num" : '66',
"mini_clubman.one_d.max_permissible_roof_load" : '75 kg',
"mini_clubman.one_d.max_permissible_roof_load_num" : '75',
"mini_clubman.one_d.max_permissible_weight" : '1685 kg',
"mini_clubman.one_d.max_permissible_weight_num" : '1685',
"mini_clubman.one_d.max_torque" : '215/1750 â€“ 2500 Nm/1/min',
"mini_clubman.one_d.max_torque_num" : '215',
"mini_clubman.one_d.max_torque_overboost" : '-',
"mini_clubman.one_d.max_torque_overboost_num" : '-',
"mini_clubman.one_d.max_towed_load" : '-',
"mini_clubman.one_d.model_code" : 'ZH11',
"mini_clubman.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one_d/financial_services/'),
"mini_clubman.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one_d/modelcomparison.jpg'),
"mini_clubman.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one_d/model_filter_small.jpg'),
"mini_clubman.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/one_d/model_filter_medium.jpg'),
"mini_clubman.one_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.one_d.model_name" : 'MINI One D Clubman',
"mini_clubman.one_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one_d/model_quickfacts.html'),
"mini_clubman.one_d.output_per_litre" : '',
"mini_clubman.one_d.payload" : '500 kg',
"mini_clubman.one_d.range" : '1025 km',
"mini_clubman.one_d.rear_brakes" : '',
"mini_clubman.one_d.rim_dimension" : '5,5 J x 15 St',
"mini_clubman.one_d.roof_color" : '-',
"mini_clubman.one_d.seat_type" : '481',
"mini_clubman.one_d.short_description" : '',
"mini_clubman.one_d.stroke_bore" : '83,6/78,0 mm',
"mini_clubman.one_d.tank_capacity" : '40 l',
"mini_clubman.one_d.tank_capacity_num" : '40',
"mini_clubman.one_d.top_speed" : '182 km/h',
"mini_clubman.one_d.top_speed_num" : '182',
"mini_clubman.one_d.transmission" : '',
"mini_clubman.one_d.unladen_weight" : '1260 kg',
"mini_clubman.one_d.unladen_weight_num" : '1260',
"mini_clubman.one_d.weight_ratio" : '',
"mini_clubman.one_d.wheel_dimension_num" : '195 / 55 R16',
"mini_clubman.one_d.wheels" : '175/65 R 15 84H',
"mini_clubman.cooper.acceleration_0_100" : '9,8 [10,9] s',
"mini_clubman.cooper.acceleration_0_100_num" : '9.8',
"mini_clubman.cooper.acceleration_80_120" : '6,6/9,4 s',
"mini_clubman.cooper.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper.allowed_axle_load_front_rear" : '840/840 [870/850] kg',
"mini_clubman.cooper.basic_financing_price" : '189,00 â‚¬',
"mini_clubman.cooper.basic_financing_price_num" : '189.00',
"mini_clubman.cooper.basic_price" : '21.200 â‚¬',
"mini_clubman.cooper.basic_price_num" : '21200',
"mini_clubman.cooper.body_type" : 'HB',
"mini_clubman.cooper.charging_type" : '',
"mini_clubman.cooper.co2_emission" : '129 [152] g/km',
"mini_clubman.cooper.co2_emission_num" : '129',
"mini_clubman.cooper.color" : 'WB22',
"mini_clubman.cooper.color_line" : '4BU',
"mini_clubman.cooper.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_clubman.cooper.cubic_capacity" : '1598 cmÂ³',
"mini_clubman.cooper.cubic_capacity_num" : '1598',
"mini_clubman.cooper.cushion_material" : 'T9E7',
"mini_clubman.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.cooper.dimensions" : '3961/1683/1426 mm',
"mini_clubman.cooper.dimensions_num" : '3961 / 1683 / 1426 mm',
"mini_clubman.cooper.drive_type" : '',
"mini_clubman.cooper.drive_type_num" : '',
"mini_clubman.cooper.elasticity" : '10,2/12,7 s',
"mini_clubman.cooper.elasticity_80_100_5" : '12,7 s',
"mini_clubman.cooper.elasticity_num" : '10.2',
"mini_clubman.cooper.engine" : 'Cooper Clubman',
"mini_clubman.cooper.engine_hood_stripes" : 'ohne',
"mini_clubman.cooper.engine_num" : '1.7',
"mini_clubman.cooper.engine_type" : '',
"mini_clubman.cooper.exterior_mirror" : '383',
"mini_clubman.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.589,97 EUR<br />Anzahlung in % 21,65<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.610,03 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 332,20 EUR<br />Darlehensgesamtbetrag 18.275,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 11.660,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.cooper.financing_disclaimer_headline1" : '',
"mini_clubman.cooper.financing_disclaimer_headline2" : '',
"mini_clubman.cooper.folding_top_color" : '',
"mini_clubman.cooper.front_brakes" : '',
"mini_clubman.cooper.fuel_consumption_combined" : '5,5 [6,5] l/100 km',
"mini_clubman.cooper.fuel_consumption_combined_num" : '5.5',
"mini_clubman.cooper.fuel_consumption_extra_urban" : '4,7 [5,2] l/100 km',
"mini_clubman.cooper.fuel_consumption_extra_urban_num" : '4.7',
"mini_clubman.cooper.fuel_consumption_urban" : '7,0 [8,8] l/100 km',
"mini_clubman.cooper.fuel_consumption_urban_num" : '7',
"mini_clubman.cooper.fuel_type" : 'Benzin',
"mini_clubman.cooper.fuel_type_num" : '',
"mini_clubman.cooper.id" : 'cooper',
"mini_clubman.cooper.infomaterial_id" : '',
"mini_clubman.cooper.interior_surface" : '4BD',
"mini_clubman.cooper.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.cooper.luggage_capacity_num" : '260',
"mini_clubman.cooper.market_attr1" : '',
"mini_clubman.cooper.market_attr2" : '',
"mini_clubman.cooper.market_attr3" : '',
"mini_clubman.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini_clubman.cooper.max_output_num" : '90',
"mini_clubman.cooper.max_permissible_roof_load" : '75 kg',
"mini_clubman.cooper.max_permissible_roof_load_num" : '75',
"mini_clubman.cooper.max_permissible_weight" : '1645 [1675] kg',
"mini_clubman.cooper.max_permissible_weight_num" : '1645',
"mini_clubman.cooper.max_torque" : '160/4250 Nm/1/min',
"mini_clubman.cooper.max_torque_num" : '160',
"mini_clubman.cooper.max_torque_overboost" : '-',
"mini_clubman.cooper.max_torque_overboost_num" : '-',
"mini_clubman.cooper.max_towed_load" : '750 [750] kg',
"mini_clubman.cooper.model_code" : 'ZF31',
"mini_clubman.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper/financial_services/'),
"mini_clubman.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper/modelcomparison.jpg'),
"mini_clubman.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper/model_filter_small.jpg'),
"mini_clubman.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper/model_filter_medium.jpg'),
"mini_clubman.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper.model_name" : 'MINI Cooper Clubman',
"mini_clubman.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper/model_quickfacts.html'),
"mini_clubman.cooper.output_per_litre" : '',
"mini_clubman.cooper.payload" : '500 kg',
"mini_clubman.cooper.range" : '725 [615] km',
"mini_clubman.cooper.rear_brakes" : '',
"mini_clubman.cooper.rim_dimension" : '5,5 J x 15 LM',
"mini_clubman.cooper.roof_color" : '-',
"mini_clubman.cooper.seat_type" : '481',
"mini_clubman.cooper.short_description" : '',
"mini_clubman.cooper.stroke_bore" : '85,8/77,0 mm',
"mini_clubman.cooper.tank_capacity" : '40 l',
"mini_clubman.cooper.tank_capacity_num" : '40',
"mini_clubman.cooper.top_speed" : '201 [195] km/h',
"mini_clubman.cooper.top_speed_num" : '201',
"mini_clubman.cooper.transmission" : '',
"mini_clubman.cooper.unladen_weight" : '1220 [1250] kg',
"mini_clubman.cooper.unladen_weight_num" : '1145',
"mini_clubman.cooper.weight_ratio" : '',
"mini_clubman.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.cooper.wheels" : '175/65 R 15 84H',
"mini_clubman.cooper_d.acceleration_0_100" : '10,2 [10,6] s',
"mini_clubman.cooper_d.acceleration_0_100_num" : '10.2',
"mini_clubman.cooper_d.acceleration_80_120" : '6,6/8,1 s',
"mini_clubman.cooper_d.acceleration_80_120_num" : '6.1',
"mini_clubman.cooper_d.allowed_axle_load_front_rear" : '890/825 [915/830] kg',
"mini_clubman.cooper_d.basic_financing_price" : '209,00 â‚¬',
"mini_clubman.cooper_d.basic_financing_price_num" : '209.00',
"mini_clubman.cooper_d.basic_price" : '23.100 â‚¬',
"mini_clubman.cooper_d.basic_price_num" : '23000',
"mini_clubman.cooper_d.body_type" : 'HB',
"mini_clubman.cooper_d.charging_type" : '',
"mini_clubman.cooper_d.co2_emission" : '103 [138] g/km',
"mini_clubman.cooper_d.co2_emission_num" : '103',
"mini_clubman.cooper_d.color" : 'U850',
"mini_clubman.cooper_d.color_line" : '4C2',
"mini_clubman.cooper_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_clubman.cooper_d.cubic_capacity" : '1598 [1995] cmÂ³',
"mini_clubman.cooper_d.cubic_capacity_num" : '1598',
"mini_clubman.cooper_d.cushion_material" : 'FTGW',
"mini_clubman.cooper_d.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.cooper_d.dimensions" : '3961/1683/1426 mm',
"mini_clubman.cooper_d.dimensions_num" : '3961/ 1683 / 1426',
"mini_clubman.cooper_d.drive_type" : '',
"mini_clubman.cooper_d.drive_type_num" : '',
"mini_clubman.cooper_d.elasticity" : '7,9/9,7 s',
"mini_clubman.cooper_d.elasticity_80_100_5" : '9,7 s',
"mini_clubman.cooper_d.elasticity_num" : '7.9',
"mini_clubman.cooper_d.engine" : 'Cooper D Clubman',
"mini_clubman.cooper_d.engine_hood_stripes" : '329',
"mini_clubman.cooper_d.engine_num" : '1.6',
"mini_clubman.cooper_d.engine_type" : '',
"mini_clubman.cooper_d.exterior_mirror" : '-',
"mini_clubman.cooper_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.694,82 EUR<br />Anzahlung in % 20,32<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.405,18 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 368,10 EUR<br />Darlehensgesamtbetrag 20.251,01 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 12.936,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.cooper_d.financing_disclaimer_headline1" : '',
"mini_clubman.cooper_d.financing_disclaimer_headline2" : '',
"mini_clubman.cooper_d.folding_top_color" : '',
"mini_clubman.cooper_d.front_brakes" : '',
"mini_clubman.cooper_d.fuel_consumption_combined" : '3,9 [5,2] l/100 km',
"mini_clubman.cooper_d.fuel_consumption_combined_num" : '3.9',
"mini_clubman.cooper_d.fuel_consumption_extra_urban" : '3,6 [4,2] l/100 km',
"mini_clubman.cooper_d.fuel_consumption_extra_urban_num" : '3.6',
"mini_clubman.cooper_d.fuel_consumption_urban" : '4,4 [6,9] l/100 km',
"mini_clubman.cooper_d.fuel_consumption_urban_num" : '4.4',
"mini_clubman.cooper_d.fuel_type" : 'Diesel',
"mini_clubman.cooper_d.fuel_type_num" : '',
"mini_clubman.cooper_d.id" : 'cooper_d',
"mini_clubman.cooper_d.infomaterial_id" : '',
"mini_clubman.cooper_d.interior_surface" : '4BD',
"mini_clubman.cooper_d.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.cooper_d.luggage_capacity_num" : '260',
"mini_clubman.cooper_d.market_attr1" : '',
"mini_clubman.cooper_d.market_attr2" : '',
"mini_clubman.cooper_d.market_attr3" : '',
"mini_clubman.cooper_d.max_output" : '82/112/4000 kW/PS/1/min',
"mini_clubman.cooper_d.max_output_num" : '82',
"mini_clubman.cooper_d.max_permissible_roof_load" : '75 kg',
"mini_clubman.cooper_d.max_permissible_roof_load_num" : '75',
"mini_clubman.cooper_d.max_permissible_weight" : '1685 [1715] kg',
"mini_clubman.cooper_d.max_permissible_weight_num" : '1685',
"mini_clubman.cooper_d.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_clubman.cooper_d.max_torque_num" : '270',
"mini_clubman.cooper_d.max_torque_overboost" : '-',
"mini_clubman.cooper_d.max_torque_overboost_num" : '-',
"mini_clubman.cooper_d.max_towed_load" : '750 [750] kg',
"mini_clubman.cooper_d.model_code" : 'ZH51',
"mini_clubman.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_d/financial_services/'),
"mini_clubman.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_d/modelcomparison.jpg'),
"mini_clubman.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_d/model_filter_small.jpg'),
"mini_clubman.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_d/model_filter_medium.jpg'),
"mini_clubman.cooper_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_d.model_name" : 'MINI Cooper D Clubman',
"mini_clubman.cooper_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_d/model_quickfacts.html'),
"mini_clubman.cooper_d.output_per_litre" : '',
"mini_clubman.cooper_d.payload" : '500 kg',
"mini_clubman.cooper_d.range" : '1025 [770] km',
"mini_clubman.cooper_d.rear_brakes" : '',
"mini_clubman.cooper_d.rim_dimension" : '5,5 J x 15 LM',
"mini_clubman.cooper_d.roof_color" : '381, 382, 383',
"mini_clubman.cooper_d.seat_type" : '481',
"mini_clubman.cooper_d.short_description" : '',
"mini_clubman.cooper_d.stroke_bore" : '83,6/78,0 [90/84] mm',
"mini_clubman.cooper_d.tank_capacity" : '40 l',
"mini_clubman.cooper_d.tank_capacity_num" : '40',
"mini_clubman.cooper_d.top_speed" : '197 [192] km/h',
"mini_clubman.cooper_d.top_speed_num" : '197',
"mini_clubman.cooper_d.transmission" : '',
"mini_clubman.cooper_d.unladen_weight" : '1260 [1290] kg',
"mini_clubman.cooper_d.unladen_weight_num" : '1260',
"mini_clubman.cooper_d.weight_ratio" : '',
"mini_clubman.cooper_d.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.cooper_d.wheels" : '175/65 R 15 84H',
"mini_clubman.cooper_s.acceleration_0_100" : '7,5 [7,7] s',
"mini_clubman.cooper_s.acceleration_0_100_num" : '7.5',
"mini_clubman.cooper_s.acceleration_80_120" : '6,6/8,4 s',
"mini_clubman.cooper_s.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper_s.allowed_axle_load_front_rear" : '875/850 [900/850] kg',
"mini_clubman.cooper_s.basic_financing_price" : '259,00 â‚¬',
"mini_clubman.cooper_s.basic_financing_price_num" : '259.00',
"mini_clubman.cooper_s.basic_price" : '25.500 â‚¬',
"mini_clubman.cooper_s.basic_price_num" : '25500',
"mini_clubman.cooper_s.body_type" : 'HB',
"mini_clubman.cooper_s.charging_type" : '',
"mini_clubman.cooper_s.co2_emission" : '137 [150] g/km',
"mini_clubman.cooper_s.co2_emission_num" : '137',
"mini_clubman.cooper_s.color" : 'WA88',
"mini_clubman.cooper_s.color_line" : '4C1',
"mini_clubman.cooper_s.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini_clubman.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini_clubman.cooper_s.cubic_capacity_num" : '1598',
"mini_clubman.cooper_s.cushion_material" : 'FTGW',
"mini_clubman.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.cooper_s.dimensions" : '3961/1683/1432 mm',
"mini_clubman.cooper_s.dimensions_num" : '3961/ 1683 / 1432 mm',
"mini_clubman.cooper_s.drive_type" : '',
"mini_clubman.cooper_s.drive_type_num" : '',
"mini_clubman.cooper_s.elasticity" : '5,9/7,6 s',
"mini_clubman.cooper_s.elasticity_80_100_5" : '7,6 s',
"mini_clubman.cooper_s.elasticity_num" : '5.9',
"mini_clubman.cooper_s.engine" : 'Cooper S Clubman',
"mini_clubman.cooper_s.engine_hood_stripes" : '3AK',
"mini_clubman.cooper_s.engine_num" : '1.6',
"mini_clubman.cooper_s.engine_type" : '',
"mini_clubman.cooper_s.exterior_mirror" : '3AF',
"mini_clubman.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.155,56 EUR<br />Anzahlung in % 20,22<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 20.344,44 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 406,89 EUR<br />Darlehensgesamtbetrag 22.325,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 13.260,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.cooper_s.financing_disclaimer_headline1" : '',
"mini_clubman.cooper_s.financing_disclaimer_headline2" : '',
"mini_clubman.cooper_s.folding_top_color" : '',
"mini_clubman.cooper_s.front_brakes" : '',
"mini_clubman.cooper_s.fuel_consumption_combined" : '5,9 [6,4] l/100 km',
"mini_clubman.cooper_s.fuel_consumption_combined_num" : '5.9',
"mini_clubman.cooper_s.fuel_consumption_extra_urban" : '5,0 [5,0] l/100 km',
"mini_clubman.cooper_s.fuel_consumption_extra_urban_num" : '5',
"mini_clubman.cooper_s.fuel_consumption_urban" : '7,4 [8,9] l/100 km',
"mini_clubman.cooper_s.fuel_consumption_urban_num" : '7.4',
"mini_clubman.cooper_s.fuel_type" : 'Benzin',
"mini_clubman.cooper_s.fuel_type_num" : '',
"mini_clubman.cooper_s.id" : 'cooper_s',
"mini_clubman.cooper_s.infomaterial_id" : '268466091',
"mini_clubman.cooper_s.interior_surface" : '4BE',
"mini_clubman.cooper_s.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.cooper_s.luggage_capacity_num" : '260',
"mini_clubman.cooper_s.market_attr1" : '',
"mini_clubman.cooper_s.market_attr2" : '',
"mini_clubman.cooper_s.market_attr3" : '',
"mini_clubman.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini_clubman.cooper_s.max_output_num" : '135',
"mini_clubman.cooper_s.max_permissible_roof_load" : '75 kg',
"mini_clubman.cooper_s.max_permissible_roof_load_num" : '75',
"mini_clubman.cooper_s.max_permissible_weight" : '1690 [1715] kg',
"mini_clubman.cooper_s.max_permissible_weight_num" : '1690',
"mini_clubman.cooper_s.max_torque" : '240 (260)/1600 â€“ 5000 Nm/1/min',
"mini_clubman.cooper_s.max_torque_num" : '240',
"mini_clubman.cooper_s.max_torque_overboost" : '260/1700 â€“ 4500 Nm/1/min',
"mini_clubman.cooper_s.max_torque_overboost_num" : '260',
"mini_clubman.cooper_s.max_towed_load" : '-',
"mini_clubman.cooper_s.model_code" : 'ZG31',
"mini_clubman.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_s/financial_services/'),
"mini_clubman.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_s/modelcomparison.jpg'),
"mini_clubman.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_s/model_filter_small.jpg'),
"mini_clubman.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_s/model_filter_medium.jpg'),
"mini_clubman.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_s.model_name" : 'MINI Cooper S Clubman',
"mini_clubman.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_s/model_quickfacts.html'),
"mini_clubman.cooper_s.output_per_litre" : '',
"mini_clubman.cooper_s.payload" : '485 kg',
"mini_clubman.cooper_s.range" : '845 [780] km',
"mini_clubman.cooper_s.rear_brakes" : '',
"mini_clubman.cooper_s.rim_dimension" : '6,5 J x 16 LM',
"mini_clubman.cooper_s.roof_color" : '381, 382, 383',
"mini_clubman.cooper_s.seat_type" : '481',
"mini_clubman.cooper_s.short_description" : '',
"mini_clubman.cooper_s.stroke_bore" : '85,8/77,0 mm',
"mini_clubman.cooper_s.tank_capacity" : '50 l',
"mini_clubman.cooper_s.tank_capacity_num" : '50',
"mini_clubman.cooper_s.top_speed" : '227 [222] km/h',
"mini_clubman.cooper_s.top_speed_num" : '227',
"mini_clubman.cooper_s.transmission" : '',
"mini_clubman.cooper_s.unladen_weight" : '1280 [1305] kg',
"mini_clubman.cooper_s.unladen_weight_num" : '1280',
"mini_clubman.cooper_s.weight_ratio" : '',
"mini_clubman.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_clubman.cooper_s.wheels" : '195/55 R 16 87V',
"mini_clubman.cooper_sd.acceleration_0_100" : '8,6 [8,8] s',
"mini_clubman.cooper_sd.acceleration_0_100_num" : '8.6',
"mini_clubman.cooper_sd.acceleration_80_120" : '6,6/8,4 s',
"mini_clubman.cooper_sd.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper_sd.allowed_axle_load_front_rear" : '915/850 [935/850] kg',
"mini_clubman.cooper_sd.basic_financing_price" : '239,00 â‚¬',
"mini_clubman.cooper_sd.basic_financing_price_num" : '239.00',
"mini_clubman.cooper_sd.basic_price" : '26.500 â‚¬',
"mini_clubman.cooper_sd.basic_price_num" : '26500',
"mini_clubman.cooper_sd.body_type" : 'HB',
"mini_clubman.cooper_sd.charging_type" : '',
"mini_clubman.cooper_sd.co2_emission" : '115 [141] g/km',
"mini_clubman.cooper_sd.co2_emission_num" : '115',
"mini_clubman.cooper_sd.color" : 'WA88',
"mini_clubman.cooper_sd.color_line" : '4C1',
"mini_clubman.cooper_sd.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_clubman.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini_clubman.cooper_sd.cubic_capacity_num" : '1995',
"mini_clubman.cooper_sd.cushion_material" : 'FTGW',
"mini_clubman.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.cooper_sd.dimensions" : '3961/1683/1426 mm',
"mini_clubman.cooper_sd.dimensions_num" : '3961/ 1683 / 1432 mm',
"mini_clubman.cooper_sd.drive_type" : '',
"mini_clubman.cooper_sd.drive_type_num" : '',
"mini_clubman.cooper_sd.elasticity" : '6,9/8,4 s',
"mini_clubman.cooper_sd.elasticity_80_100_5" : '8,4 s',
"mini_clubman.cooper_sd.elasticity_num" : '6.9',
"mini_clubman.cooper_sd.engine" : 'Cooper SD Clubman',
"mini_clubman.cooper_sd.engine_hood_stripes" : '3AK',
"mini_clubman.cooper_sd.engine_num" : '1.6',
"mini_clubman.cooper_sd.engine_type" : '',
"mini_clubman.cooper_sd.exterior_mirror" : '3AF',
"mini_clubman.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI Partner.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.411,00 EUR<br />Anzahlung in % 20,42<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.089,00 EUR<br />Sollzinssatz p.a.* 3,10 %<br />BearbeitungsgebÃ¼hr 421,78 EUR<br />Darlehensgesamtbetrag 23.205,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 14.840,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.cooper_sd.financing_disclaimer_headline1" : '',
"mini_clubman.cooper_sd.financing_disclaimer_headline2" : '',
"mini_clubman.cooper_sd.folding_top_color" : '',
"mini_clubman.cooper_sd.front_brakes" : '',
"mini_clubman.cooper_sd.fuel_consumption_combined" : '4,4 [5,3] l/100 km',
"mini_clubman.cooper_sd.fuel_consumption_combined_num" : '4.4',
"mini_clubman.cooper_sd.fuel_consumption_extra_urban" : '3,9 [4,3] l/100 km',
"mini_clubman.cooper_sd.fuel_consumption_extra_urban_num" : '3.9',
"mini_clubman.cooper_sd.fuel_consumption_urban" : '5,2 [7,0] l/100 km',
"mini_clubman.cooper_sd.fuel_consumption_urban_num" : '5.2',
"mini_clubman.cooper_sd.fuel_type" : 'Diesel',
"mini_clubman.cooper_sd.fuel_type_num" : '',
"mini_clubman.cooper_sd.id" : 'cooper_sd',
"mini_clubman.cooper_sd.infomaterial_id" : '268466091',
"mini_clubman.cooper_sd.interior_surface" : '4BE',
"mini_clubman.cooper_sd.luggage_capacity" : '260 â€“ 930 l',
"mini_clubman.cooper_sd.luggage_capacity_num" : '260',
"mini_clubman.cooper_sd.market_attr1" : '',
"mini_clubman.cooper_sd.market_attr2" : '',
"mini_clubman.cooper_sd.market_attr3" : '',
"mini_clubman.cooper_sd.max_output" : '105/143/4000 kW/PS/1/min',
"mini_clubman.cooper_sd.max_output_num" : '105',
"mini_clubman.cooper_sd.max_permissible_roof_load" : '75 kg',
"mini_clubman.cooper_sd.max_permissible_roof_load_num" : '75',
"mini_clubman.cooper_sd.max_permissible_weight" : '1735 [1755] kg',
"mini_clubman.cooper_sd.max_permissible_weight_num" : '1735',
"mini_clubman.cooper_sd.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_clubman.cooper_sd.max_torque_num" : '305',
"mini_clubman.cooper_sd.max_torque_overboost" : '',
"mini_clubman.cooper_sd.max_torque_overboost_num" : '',
"mini_clubman.cooper_sd.max_towed_load" : '750 [750] kg',
"mini_clubman.cooper_sd.model_code" : 'ZH71',
"mini_clubman.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_sd/financial_services/index.html'),
"mini_clubman.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_sd/modelcomparison.jpg'),
"mini_clubman.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_sd/model_filter_small.jpg'),
"mini_clubman.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/cooper_sd/model_filter_medium.jpg'),
"mini_clubman.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.cooper_sd.model_name" : 'MINI Cooper SD Clubman',
"mini_clubman.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_sd/model_quickfacts.html'),
"mini_clubman.cooper_sd.output_per_litre" : '',
"mini_clubman.cooper_sd.payload" : '500 kg',
"mini_clubman.cooper_sd.range" : '910 [755] km',
"mini_clubman.cooper_sd.rear_brakes" : '',
"mini_clubman.cooper_sd.rim_dimension" : '6,5 J x 16 LM',
"mini_clubman.cooper_sd.roof_color" : '381, 382, 383',
"mini_clubman.cooper_sd.seat_type" : '481',
"mini_clubman.cooper_sd.short_description" : '',
"mini_clubman.cooper_sd.stroke_bore" : '90/84 mm',
"mini_clubman.cooper_sd.tank_capacity" : '40 l',
"mini_clubman.cooper_sd.tank_capacity_num" : '40',
"mini_clubman.cooper_sd.top_speed" : '215 [205] km/h',
"mini_clubman.cooper_sd.top_speed_num" : '215',
"mini_clubman.cooper_sd.transmission" : '',
"mini_clubman.cooper_sd.unladen_weight" : '1310 [1330] kg',
"mini_clubman.cooper_sd.unladen_weight_num" : '1310',
"mini_clubman.cooper_sd.weight_ratio" : '',
"mini_clubman.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_clubman.cooper_sd.wheels" : '195/55 R 16 87V',
"mini_clubman.mini_clubman.acceleration_0_100" : '6,8 s',
"mini_clubman.mini_clubman.acceleration_0_100_num" : '6.8',
"mini_clubman.mini_clubman.acceleration_80_120" : '',
"mini_clubman.mini_clubman.acceleration_80_120_num" : '',
"mini_clubman.mini_clubman.allowed_axle_load_front_rear" : '',
"mini_clubman.mini_clubman.basic_financing_price" : '309,00 â‚¬',
"mini_clubman.mini_clubman.basic_financing_price_num" : '309.00',
"mini_clubman.mini_clubman.basic_price" : '30.700 â‚¬',
"mini_clubman.mini_clubman.basic_price_num" : '30700',
"mini_clubman.mini_clubman.body_type" : 'HB',
"mini_clubman.mini_clubman.charging_type" : 'twin scroll turbo',
"mini_clubman.mini_clubman.co2_emission" : '167 g/km',
"mini_clubman.mini_clubman.co2_emission_num" : '167',
"mini_clubman.mini_clubman.color" : 'WA94',
"mini_clubman.mini_clubman.color_line" : '4C1',
"mini_clubman.mini_clubman.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"mini_clubman.mini_clubman.cubic_capacity" : '1598 cmÂ³',
"mini_clubman.mini_clubman.cubic_capacity_num" : '1598',
"mini_clubman.mini_clubman.cushion_material" : 'ATP9',
"mini_clubman.mini_clubman.cylinder_type_valve" : '4/Reihe/4',
"mini_clubman.mini_clubman.dimensions" : '3.961 / 1.683 / 1.432 mm',
"mini_clubman.mini_clubman.dimensions_num" : '3961/ 1683 / 1432',
"mini_clubman.mini_clubman.drive_type" : '',
"mini_clubman.mini_clubman.drive_type_num" : '',
"mini_clubman.mini_clubman.elasticity" : '5,4 / 6,6 s',
"mini_clubman.mini_clubman.elasticity_80_100_5" : '6,6 s',
"mini_clubman.mini_clubman.elasticity_num" : '5.4',
"mini_clubman.mini_clubman.engine" : 'John Cooper Works Clubman',
"mini_clubman.mini_clubman.engine_hood_stripes" : '3AZ',
"mini_clubman.mini_clubman.engine_num" : '',
"mini_clubman.mini_clubman.engine_type" : '',
"mini_clubman.mini_clubman.exterior_mirror" : '3A3',
"mini_clubman.mini_clubman.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.299,87 EUR<br />Anzahlung in % 20,52<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 24.400,13 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 488,00 EUR<br />Darlehensgesamtbetrag 26.779,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.964,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_clubman.mini_clubman.financing_disclaimer_headline1" : '',
"mini_clubman.mini_clubman.financing_disclaimer_headline2" : '',
"mini_clubman.mini_clubman.folding_top_color" : '',
"mini_clubman.mini_clubman.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"mini_clubman.mini_clubman.fuel_consumption_combined" : '7,2 l/100 km',
"mini_clubman.mini_clubman.fuel_consumption_combined_num" : '7.2',
"mini_clubman.mini_clubman.fuel_consumption_extra_urban" : '5,8 l/100 km',
"mini_clubman.mini_clubman.fuel_consumption_extra_urban_num" : '5.8',
"mini_clubman.mini_clubman.fuel_consumption_urban" : '9,5 l/100 km',
"mini_clubman.mini_clubman.fuel_consumption_urban_num" : '9.5',
"mini_clubman.mini_clubman.fuel_type" : 'Benzin',
"mini_clubman.mini_clubman.fuel_type_num" : '',
"mini_clubman.mini_clubman.id" : 'mini_clubman',
"mini_clubman.mini_clubman.infomaterial_id" : '',
"mini_clubman.mini_clubman.interior_surface" : '4CY',
"mini_clubman.mini_clubman.luggage_capacity" : '260-930 l',
"mini_clubman.mini_clubman.luggage_capacity_num" : '260',
"mini_clubman.mini_clubman.market_attr1" : '',
"mini_clubman.mini_clubman.market_attr2" : '',
"mini_clubman.mini_clubman.market_attr3" : '',
"mini_clubman.mini_clubman.max_output" : '155/211/6000 kW/PS/1/min',
"mini_clubman.mini_clubman.max_output_num" : '155',
"mini_clubman.mini_clubman.max_permissible_roof_load" : '75 kg',
"mini_clubman.mini_clubman.max_permissible_roof_load_num" : '75',
"mini_clubman.mini_clubman.max_permissible_weight" : '1.690 kg',
"mini_clubman.mini_clubman.max_permissible_weight_num" : '1690',
"mini_clubman.mini_clubman.max_torque" : '260(280)/1850-5600 Nm/1/min',
"mini_clubman.mini_clubman.max_torque_num" : '260',
"mini_clubman.mini_clubman.max_torque_overboost" : '280 Nm / 2.000-5.100 min-1',
"mini_clubman.mini_clubman.max_torque_overboost_num" : '280',
"mini_clubman.mini_clubman.max_towed_load" : '',
"mini_clubman.mini_clubman.model_code" : 'ZG91',
"mini_clubman.mini_clubman.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/financial_services/'),
"mini_clubman.mini_clubman.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/modelcomparison.jpg'),
"mini_clubman.mini_clubman.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_small.jpg'),
"mini_clubman.mini_clubman.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_medium.jpg'),
"mini_clubman.mini_clubman.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.mini_clubman.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.mini_clubman.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_clubman.mini_clubman.model_name" : 'MINI John Cooper Works Clubman',
"mini_clubman.mini_clubman.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/model_quickfacts.html'),
"mini_clubman.mini_clubman.output_per_litre" : '97 kW/l',
"mini_clubman.mini_clubman.payload" : '485 kg',
"mini_clubman.mini_clubman.range" : '696 km',
"mini_clubman.mini_clubman.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"mini_clubman.mini_clubman.rim_dimension" : '7,0J x 17 LM',
"mini_clubman.mini_clubman.roof_color" : '3A3',
"mini_clubman.mini_clubman.seat_type" : '481',
"mini_clubman.mini_clubman.short_description" : '',
"mini_clubman.mini_clubman.stroke_bore" : '85,8/77 mm',
"mini_clubman.mini_clubman.tank_capacity" : '50 Liter',
"mini_clubman.mini_clubman.tank_capacity_num" : '50',
"mini_clubman.mini_clubman.top_speed" : '238 km/h',
"mini_clubman.mini_clubman.top_speed_num" : '238',
"mini_clubman.mini_clubman.transmission" : '',
"mini_clubman.mini_clubman.unladen_weight" : '1205/1280 kg',
"mini_clubman.mini_clubman.unladen_weight_num" : '1205',
"mini_clubman.mini_clubman.weight_ratio" : '7,8 kg/kW',
"mini_clubman.mini_clubman.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini_clubman.mini_clubman.wheels" : '205/45 R 17 84 W RSC',
"mini_countryman.one.acceleration_0_100" : '11,9 [13,9] s',
"mini_countryman.one.acceleration_0_100_num" : '13.9',
"mini_countryman.one.acceleration_80_120" : '',
"mini_countryman.one.acceleration_80_120_num" : '',
"mini_countryman.one.allowed_axle_load_front_rear" : '935/855 [965/855] kg',
"mini_countryman.one.basic_financing_price" : '179,00 â‚¬',
"mini_countryman.one.basic_financing_price_num" : '179.00',
"mini_countryman.one.basic_price" : '20.200 â‚¬',
"mini_countryman.one.basic_price_num" : '20200',
"mini_countryman.one.body_type" : 'GF',
"mini_countryman.one.charging_type" : '',
"mini_countryman.one.co2_emission" : '139 [168] g/km',
"mini_countryman.one.co2_emission_num" : '139',
"mini_countryman.one.color" : 'YB16',
"mini_countryman.one.color_line" : '4C5',
"mini_countryman.one.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_countryman.one.cubic_capacity" : '1598 cmÂ³',
"mini_countryman.one.cubic_capacity_num" : '1598',
"mini_countryman.one.cushion_material" : 'FSGY',
"mini_countryman.one.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.one.dimensions" : '4097/1789/1561 mm',
"mini_countryman.one.dimensions_num" : '',
"mini_countryman.one.drive_type" : '',
"mini_countryman.one.drive_type_num" : '',
"mini_countryman.one.elasticity" : '13,9/17,9 s',
"mini_countryman.one.elasticity_80_100_5" : '17,9 s',
"mini_countryman.one.elasticity_num" : '13.9',
"mini_countryman.one.engine" : 'One Countryman',
"mini_countryman.one.engine_hood_stripes" : '-',
"mini_countryman.one.engine_num" : '',
"mini_countryman.one.engine_type" : '',
"mini_countryman.one.exterior_mirror" : '-',
"mini_countryman.one.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.229,66 EUR<br />Anzahlung in % 20,94<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 15.970,34 EUR<br />Sollzinssatz p.a.* 3,11 %<br />BearbeitungsgebÃ¼hr 319,41 EUR<br />Darlehensgesamtbetrag  17.577,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 11.312,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.one.financing_disclaimer_headline1" : '',
"mini_countryman.one.financing_disclaimer_headline2" : '',
"mini_countryman.one.folding_top_color" : '',
"mini_countryman.one.front_brakes" : '',
"mini_countryman.one.fuel_consumption_combined" : '6,0 [7,2] l/100 km',
"mini_countryman.one.fuel_consumption_combined_num" : '6',
"mini_countryman.one.fuel_consumption_extra_urban" : '5,2 [6,0] l/100 km',
"mini_countryman.one.fuel_consumption_extra_urban_num" : '5.2',
"mini_countryman.one.fuel_consumption_urban" : '7,4 [9,3] l/100 km',
"mini_countryman.one.fuel_consumption_urban_num" : '7.4',
"mini_countryman.one.fuel_type" : 'Benzin',
"mini_countryman.one.fuel_type_num" : '',
"mini_countryman.one.id" : 'one',
"mini_countryman.one.infomaterial_id" : '',
"mini_countryman.one.interior_surface" : '4BD',
"mini_countryman.one.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.one.luggage_capacity_num" : '350',
"mini_countryman.one.market_attr1" : '',
"mini_countryman.one.market_attr2" : '',
"mini_countryman.one.market_attr3" : '',
"mini_countryman.one.max_output" : '72/98/6000 kW/PS/1/min',
"mini_countryman.one.max_output_num" : '72',
"mini_countryman.one.max_permissible_roof_load" : '75 kg',
"mini_countryman.one.max_permissible_roof_load_num" : '75',
"mini_countryman.one.max_permissible_weight" : '1735 [1765] kg',
"mini_countryman.one.max_permissible_weight_num" : '1735',
"mini_countryman.one.max_torque" : '153/3000 Nm/1/min',
"mini_countryman.one.max_torque_num" : '153',
"mini_countryman.one.max_torque_overboost" : '',
"mini_countryman.one.max_torque_overboost_num" : '-',
"mini_countryman.one.max_towed_load" : '-',
"mini_countryman.one.model_code" : 'ZA31',
"mini_countryman.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one/financial_services/'),
"mini_countryman.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one/modelcomparison.jpg'),
"mini_countryman.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one/model_filter_small.jpg'),
"mini_countryman.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one/model_filter_medium.jpg'),
"mini_countryman.one.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one.model_name" : 'MINI One Countryman',
"mini_countryman.one.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one/model_quickfacts.html'),
"mini_countryman.one.output_per_litre" : '',
"mini_countryman.one.payload" : '470 kg',
"mini_countryman.one.range" : '785 [655] km',
"mini_countryman.one.rear_brakes" : '',
"mini_countryman.one.rim_dimension" : '6,5 J x 16 St',
"mini_countryman.one.roof_color" : '-',
"mini_countryman.one.seat_type" : '481',
"mini_countryman.one.short_description" : '',
"mini_countryman.one.stroke_bore" : '85,8/77,0 mm',
"mini_countryman.one.tank_capacity" : '47 l',
"mini_countryman.one.tank_capacity_num" : '47',
"mini_countryman.one.top_speed" : '173 [168] km/h',
"mini_countryman.one.top_speed_num" : '173',
"mini_countryman.one.transmission" : '',
"mini_countryman.one.unladen_weight" : '1340 [1370] kg',
"mini_countryman.one.unladen_weight_num" : '1340',
"mini_countryman.one.weight_ratio" : '',
"mini_countryman.one.wheel_dimension_num" : '6,5J x 16 St',
"mini_countryman.one.wheels" : '205/60 R 16 92H',
"mini_countryman.one_d.acceleration_0_100" : '12,9 s',
"mini_countryman.one_d.acceleration_0_100_num" : '12.9',
"mini_countryman.one_d.acceleration_80_120" : '',
"mini_countryman.one_d.acceleration_80_120_num" : '',
"mini_countryman.one_d.allowed_axle_load_front_rear" : '995/850 kg',
"mini_countryman.one_d.basic_financing_price" : '199,00 â‚¬',
"mini_countryman.one_d.basic_financing_price_num" : '199.00',
"mini_countryman.one_d.basic_price" : '22.100 â‚¬',
"mini_countryman.one_d.basic_price_num" : '22100',
"mini_countryman.one_d.body_type" : 'GF',
"mini_countryman.one_d.charging_type" : '',
"mini_countryman.one_d.co2_emission" : '115 g/km',
"mini_countryman.one_d.co2_emission_num" : '115',
"mini_countryman.one_d.color" : 'YB19',
"mini_countryman.one_d.color_line" : '4C4',
"mini_countryman.one_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_countryman.one_d.cubic_capacity" : '1598 cmÂ³',
"mini_countryman.one_d.cubic_capacity_num" : '1598',
"mini_countryman.one_d.cushion_material" : 'APE1',
"mini_countryman.one_d.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.one_d.dimensions" : '4097/1789/1561 mm',
"mini_countryman.one_d.dimensions_num" : '4097 / 1789 / 1561',
"mini_countryman.one_d.drive_type" : '',
"mini_countryman.one_d.drive_type_num" : '',
"mini_countryman.one_d.elasticity" : '12,5/15,9 s',
"mini_countryman.one_d.elasticity_80_100_5" : '15,9 s',
"mini_countryman.one_d.elasticity_num" : '12.5',
"mini_countryman.one_d.engine" : 'One D Countryman',
"mini_countryman.one_d.engine_hood_stripes" : '-',
"mini_countryman.one_d.engine_num" : '',
"mini_countryman.one_d.engine_type" : '',
"mini_countryman.one_d.exterior_mirror" : '-',
"mini_countryman.one_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.523,04 EUR<br />Anzahlung in % 20,47<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 17.576,96 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 351,54 EUR<br />Darlehensgesamtbetrag  19.341,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 12.376,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.one_d.financing_disclaimer_headline1" : '',
"mini_countryman.one_d.financing_disclaimer_headline2" : '',
"mini_countryman.one_d.folding_top_color" : '',
"mini_countryman.one_d.front_brakes" : '',
"mini_countryman.one_d.fuel_consumption_combined" : '4,4 l/100 km',
"mini_countryman.one_d.fuel_consumption_combined_num" : '4.4',
"mini_countryman.one_d.fuel_consumption_extra_urban" : '4,2 l/100 km',
"mini_countryman.one_d.fuel_consumption_extra_urban_num" : '4.2',
"mini_countryman.one_d.fuel_consumption_urban" : '4,7 l/100 km',
"mini_countryman.one_d.fuel_consumption_urban_num" : '4.7',
"mini_countryman.one_d.fuel_type" : 'Diesel',
"mini_countryman.one_d.fuel_type_num" : '',
"mini_countryman.one_d.id" : 'one_d',
"mini_countryman.one_d.infomaterial_id" : '',
"mini_countryman.one_d.interior_surface" : '-',
"mini_countryman.one_d.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.one_d.luggage_capacity_num" : '350',
"mini_countryman.one_d.market_attr1" : '',
"mini_countryman.one_d.market_attr2" : '',
"mini_countryman.one_d.market_attr3" : '',
"mini_countryman.one_d.max_output" : '66/90/4000 kW/PS/1/min',
"mini_countryman.one_d.max_output_num" : '66',
"mini_countryman.one_d.max_permissible_roof_load" : '75 kg',
"mini_countryman.one_d.max_permissible_roof_load_num" : '75',
"mini_countryman.one_d.max_permissible_weight" : '1780 kg',
"mini_countryman.one_d.max_permissible_weight_num" : '1780',
"mini_countryman.one_d.max_torque" : '215/1750â€“2500 Nm/1/min',
"mini_countryman.one_d.max_torque_num" : '215',
"mini_countryman.one_d.max_torque_overboost" : '-',
"mini_countryman.one_d.max_torque_overboost_num" : '-',
"mini_countryman.one_d.max_towed_load" : '-',
"mini_countryman.one_d.model_code" : 'ZD11',
"mini_countryman.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one_d/financial_services/'),
"mini_countryman.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one_d/modelcomparison.jpg'),
"mini_countryman.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one_d/model_filter_small.jpg'),
"mini_countryman.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/one_d/model_filter_medium.jpg'),
"mini_countryman.one_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.one_d.model_name" : 'MINI One D Countryman',
"mini_countryman.one_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one_d/model_quickfacts.html'),
"mini_countryman.one_d.output_per_litre" : '',
"mini_countryman.one_d.payload" : '470 kg',
"mini_countryman.one_d.range" : '1070 km',
"mini_countryman.one_d.rear_brakes" : '',
"mini_countryman.one_d.rim_dimension" : '6,5 J x 16 St',
"mini_countryman.one_d.roof_color" : '-',
"mini_countryman.one_d.seat_type" : '481',
"mini_countryman.one_d.short_description" : '',
"mini_countryman.one_d.stroke_bore" : '83,6/78,0 mm',
"mini_countryman.one_d.tank_capacity" : '47 l',
"mini_countryman.one_d.tank_capacity_num" : '47',
"mini_countryman.one_d.top_speed" : '170 km/h',
"mini_countryman.one_d.top_speed_num" : '170',
"mini_countryman.one_d.transmission" : '',
"mini_countryman.one_d.unladen_weight" : '1385 kg',
"mini_countryman.one_d.unladen_weight_num" : '1385',
"mini_countryman.one_d.weight_ratio" : '',
"mini_countryman.one_d.wheel_dimension_num" : '205/60 R16 92H',
"mini_countryman.one_d.wheels" : '205/60 R 16 92H',
"mini_countryman.cooper.acceleration_0_100" : '10,5 [11,6] s',
"mini_countryman.cooper.acceleration_0_100_num" : '10.5',
"mini_countryman.cooper.acceleration_80_120" : '',
"mini_countryman.cooper.acceleration_80_120_num" : '',
"mini_countryman.cooper.allowed_axle_load_front_rear" : '930/855 [960/855] kg',
"mini_countryman.cooper.basic_financing_price" : '209,00 â‚¬',
"mini_countryman.cooper.basic_financing_price_num" : '209.00',
"mini_countryman.cooper.basic_price" : '22.600 â‚¬',
"mini_countryman.cooper.basic_price_num" : '22600',
"mini_countryman.cooper.body_type" : 'GF',
"mini_countryman.cooper.charging_type" : '',
"mini_countryman.cooper.co2_emission" : '140 [168] g/km',
"mini_countryman.cooper.co2_emission_num" : '140',
"mini_countryman.cooper.color" : 'WA48',
"mini_countryman.cooper.color_line" : '4C1',
"mini_countryman.cooper.compression_recommended_fuel_type" : '11,0/91â€“ 98 ROZ :1',
"mini_countryman.cooper.cubic_capacity" : '1598 cmÂ³',
"mini_countryman.cooper.cubic_capacity_num" : '1598',
"mini_countryman.cooper.cushion_material" : 'T6GW',
"mini_countryman.cooper.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper.dimensions" : '4097/1798/1561 mm',
"mini_countryman.cooper.dimensions_num" : '4097 / 1798 / 1561',
"mini_countryman.cooper.drive_type" : '',
"mini_countryman.cooper.drive_type_num" : '',
"mini_countryman.cooper.elasticity" : '11,6/14,9 s',
"mini_countryman.cooper.elasticity_80_100_5" : '14,9 s',
"mini_countryman.cooper.elasticity_num" : '11.6',
"mini_countryman.cooper.engine" : 'Cooper Countryman',
"mini_countryman.cooper.engine_hood_stripes" : '-',
"mini_countryman.cooper.engine_num" : '',
"mini_countryman.cooper.engine_type" : '',
"mini_countryman.cooper.exterior_mirror" : '382',
"mini_countryman.cooper.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.443,82 EUR<br />Anzahlung in % 19,66<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.156,18 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 363,12 EUR<br />Darlehensgesamtbetrag 19.971,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 12.656,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper.financing_disclaimer_headline1" : '',
"mini_countryman.cooper.financing_disclaimer_headline2" : '',
"mini_countryman.cooper.folding_top_color" : '-',
"mini_countryman.cooper.front_brakes" : '',
"mini_countryman.cooper.fuel_consumption_combined" : '6,0 [7,2] l/100 km',
"mini_countryman.cooper.fuel_consumption_combined_num" : '6',
"mini_countryman.cooper.fuel_consumption_extra_urban" : '5,2 [6,0] l/100 km',
"mini_countryman.cooper.fuel_consumption_extra_urban_num" : '5.2',
"mini_countryman.cooper.fuel_consumption_urban" : '7,4 [9,3] l/100 km',
"mini_countryman.cooper.fuel_consumption_urban_num" : '7.4',
"mini_countryman.cooper.fuel_type" : 'Benzin',
"mini_countryman.cooper.fuel_type_num" : '',
"mini_countryman.cooper.id" : 'cooper',
"mini_countryman.cooper.infomaterial_id" : '',
"mini_countryman.cooper.interior_surface" : '4BD',
"mini_countryman.cooper.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper.luggage_capacity_num" : '350',
"mini_countryman.cooper.market_attr1" : '',
"mini_countryman.cooper.market_attr2" : '',
"mini_countryman.cooper.market_attr3" : '',
"mini_countryman.cooper.max_output" : '90/122/6000 kW/PS/1/min',
"mini_countryman.cooper.max_output_num" : '90',
"mini_countryman.cooper.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper.max_permissible_weight" : '1735 [1765] kg',
"mini_countryman.cooper.max_permissible_weight_num" : '1735',
"mini_countryman.cooper.max_torque" : '160/4250 Nm/1/min',
"mini_countryman.cooper.max_torque_num" : '160',
"mini_countryman.cooper.max_torque_overboost" : '-',
"mini_countryman.cooper.max_torque_overboost_num" : '-',
"mini_countryman.cooper.max_towed_load" : '[1000] kg',
"mini_countryman.cooper.model_code" : 'ZB31',
"mini_countryman.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper/financial_services/'),
"mini_countryman.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper/modelcomparison.jpg'),
"mini_countryman.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper/model_filter_small.jpg'),
"mini_countryman.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper/model_filter_medium.jpg'),
"mini_countryman.cooper.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper.model_name" : 'MINI Cooper Countryman',
"mini_countryman.cooper.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper/model_quickfacts.html'),
"mini_countryman.cooper.output_per_litre" : '',
"mini_countryman.cooper.payload" : '470 kg',
"mini_countryman.cooper.range" : '785 [655] km',
"mini_countryman.cooper.rear_brakes" : '',
"mini_countryman.cooper.rim_dimension" : '6,5 J x 16 LM',
"mini_countryman.cooper.roof_color" : '382',
"mini_countryman.cooper.seat_type" : '481',
"mini_countryman.cooper.short_description" : '',
"mini_countryman.cooper.stroke_bore" : '85,8/77,0 mm',
"mini_countryman.cooper.tank_capacity" : '47 l',
"mini_countryman.cooper.tank_capacity_num" : '47',
"mini_countryman.cooper.top_speed" : '190 [182] km/h',
"mini_countryman.cooper.top_speed_num" : '190',
"mini_countryman.cooper.transmission" : '',
"mini_countryman.cooper.unladen_weight" : '1340 [1370] kg',
"mini_countryman.cooper.unladen_weight_num" : '1340',
"mini_countryman.cooper.weight_ratio" : '',
"mini_countryman.cooper.wheel_dimension_num" : '205/60 R16 92 H',
"mini_countryman.cooper.wheels" : '205/60 R 16 92H',
"mini_countryman.cooper_d.acceleration_0_100" : '10,9 [11,3] s',
"mini_countryman.cooper_d.acceleration_0_100_num" : '10.9',
"mini_countryman.cooper_d.acceleration_80_120" : '',
"mini_countryman.cooper_d.acceleration_80_120_num" : '',
"mini_countryman.cooper_d.allowed_axle_load_front_rear" : '985/850 [1005/850] kg',
"mini_countryman.cooper_d.basic_financing_price" : '219,00 â‚¬',
"mini_countryman.cooper_d.basic_financing_price_num" : '219.00',
"mini_countryman.cooper_d.basic_price" : '24.300 â‚¬',
"mini_countryman.cooper_d.basic_price_num" : '24300',
"mini_countryman.cooper_d.body_type" : 'GF',
"mini_countryman.cooper_d.charging_type" : '',
"mini_countryman.cooper_d.co2_emission" : '115 [149] g/km',
"mini_countryman.cooper_d.co2_emission_num" : '115',
"mini_countryman.cooper_d.color" : 'YB19',
"mini_countryman.cooper_d.color_line" : '4C1',
"mini_countryman.cooper_d.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_countryman.cooper_d.cubic_capacity" : '1598 [1995] cmÂ³',
"mini_countryman.cooper_d.cubic_capacity_num" : '1598',
"mini_countryman.cooper_d.cushion_material" : 'T9GX',
"mini_countryman.cooper_d.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_d.dimensions" : '4097/1789/1561 mm',
"mini_countryman.cooper_d.dimensions_num" : '4097 / 1789 / 1561',
"mini_countryman.cooper_d.drive_type" : '',
"mini_countryman.cooper_d.drive_type_num" : '',
"mini_countryman.cooper_d.elasticity" : '9,7/11,9 s',
"mini_countryman.cooper_d.elasticity_80_100_5" : '11,9 s',
"mini_countryman.cooper_d.elasticity_num" : '9.7',
"mini_countryman.cooper_d.engine" : 'Cooper D Countryman',
"mini_countryman.cooper_d.engine_hood_stripes" : '327',
"mini_countryman.cooper_d.engine_num" : '',
"mini_countryman.cooper_d.engine_type" : '',
"mini_countryman.cooper_d.exterior_mirror" : '382',
"mini_countryman.cooper_d.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.750,93 EUR<br />Anzahlung in % 19,55<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.549,07 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 390,98 EUR<br />Darlehensgesamtbetrag  21.516,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 13.851,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_d.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_d.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_d.folding_top_color" : '',
"mini_countryman.cooper_d.front_brakes" : '',
"mini_countryman.cooper_d.fuel_consumption_combined" : '4,4 [5,6] l/100 km',
"mini_countryman.cooper_d.fuel_consumption_combined_num" : '4.4',
"mini_countryman.cooper_d.fuel_consumption_extra_urban" : '4,2 [4,7] l/100 km',
"mini_countryman.cooper_d.fuel_consumption_extra_urban_num" : '4.2',
"mini_countryman.cooper_d.fuel_consumption_urban" : '4,7 [7,2] l/100 km',
"mini_countryman.cooper_d.fuel_consumption_urban_num" : '',
"mini_countryman.cooper_d.fuel_type" : 'Diesel',
"mini_countryman.cooper_d.fuel_type_num" : '',
"mini_countryman.cooper_d.id" : 'cooper_d',
"mini_countryman.cooper_d.infomaterial_id" : '',
"mini_countryman.cooper_d.interior_surface" : '4BD',
"mini_countryman.cooper_d.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_d.luggage_capacity_num" : '350',
"mini_countryman.cooper_d.market_attr1" : '',
"mini_countryman.cooper_d.market_attr2" : '',
"mini_countryman.cooper_d.market_attr3" : '',
"mini_countryman.cooper_d.max_output" : '82/112/4000 kW/PS/1/min',
"mini_countryman.cooper_d.max_output_num" : '82',
"mini_countryman.cooper_d.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_d.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_d.max_permissible_weight" : '1780 [1805] kg',
"mini_countryman.cooper_d.max_permissible_weight_num" : '1780',
"mini_countryman.cooper_d.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_countryman.cooper_d.max_torque_num" : '270',
"mini_countryman.cooper_d.max_torque_overboost" : '-',
"mini_countryman.cooper_d.max_torque_overboost_num" : '-',
"mini_countryman.cooper_d.max_towed_load" : '800 [1200] kg',
"mini_countryman.cooper_d.model_code" : 'ZD31',
"mini_countryman.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_d/financial_services/'),
"mini_countryman.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/modelcomparison.jpg'),
"mini_countryman.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/model_filter_small.jpg'),
"mini_countryman.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/model_filter_medium.jpg'),
"mini_countryman.cooper_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d.model_name" : 'MINI Cooper D Countryman',
"mini_countryman.cooper_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_d/model_quickfacts.html'),
"mini_countryman.cooper_d.output_per_litre" : '',
"mini_countryman.cooper_d.payload" : '470 kg',
"mini_countryman.cooper_d.range" : '1070 [840] km',
"mini_countryman.cooper_d.rear_brakes" : '',
"mini_countryman.cooper_d.rim_dimension" : '6,5 J x 16 LM',
"mini_countryman.cooper_d.roof_color" : '382',
"mini_countryman.cooper_d.seat_type" : '481',
"mini_countryman.cooper_d.short_description" : '',
"mini_countryman.cooper_d.stroke_bore" : '83,6/78,0 [90,0/84,0] mm',
"mini_countryman.cooper_d.tank_capacity" : '47 l',
"mini_countryman.cooper_d.tank_capacity_num" : '47',
"mini_countryman.cooper_d.top_speed" : '185 [180] km/h',
"mini_countryman.cooper_d.top_speed_num" : '180',
"mini_countryman.cooper_d.transmission" : '',
"mini_countryman.cooper_d.unladen_weight" : '1385 [1410] kg',
"mini_countryman.cooper_d.unladen_weight_num" : '1385',
"mini_countryman.cooper_d.weight_ratio" : '',
"mini_countryman.cooper_d.wheel_dimension_num" : '205/60 R16 92H',
"mini_countryman.cooper_d.wheels" : '205/60 R 16 92H',
"mini_countryman.cooper_d_all4.acceleration_0_100" : '11,6 [11,8] s',
"mini_countryman.cooper_d_all4.acceleration_0_100_num" : '11.6',
"mini_countryman.cooper_d_all4.acceleration_80_120" : '',
"mini_countryman.cooper_d_all4.acceleration_80_120_num" : '',
"mini_countryman.cooper_d_all4.allowed_axle_load_front_rear" : '1010/890 [1030/890] kg',
"mini_countryman.cooper_d_all4.basic_financing_price" : '229,90 â‚¬',
"mini_countryman.cooper_d_all4.basic_financing_price_num" : '229.90',
"mini_countryman.cooper_d_all4.basic_price" : '25.900 â‚¬',
"mini_countryman.cooper_d_all4.basic_price_num" : '25900',
"mini_countryman.cooper_d_all4.body_type" : 'GF',
"mini_countryman.cooper_d_all4.charging_type" : '',
"mini_countryman.cooper_d_all4.co2_emission" : '129 [158] g/km',
"mini_countryman.cooper_d_all4.co2_emission_num" : '129',
"mini_countryman.cooper_d_all4.color" : 'YB19',
"mini_countryman.cooper_d_all4.color_line" : '4C1',
"mini_countryman.cooper_d_all4.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_countryman.cooper_d_all4.cubic_capacity" : '1598 [1995] cmÂ³',
"mini_countryman.cooper_d_all4.cubic_capacity_num" : '1598',
"mini_countryman.cooper_d_all4.cushion_material" : 'T9GX',
"mini_countryman.cooper_d_all4.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_d_all4.dimensions" : '4097/1789/1561 mm',
"mini_countryman.cooper_d_all4.dimensions_num" : '4097 / 1789 / 1561',
"mini_countryman.cooper_d_all4.drive_type" : '',
"mini_countryman.cooper_d_all4.drive_type_num" : '',
"mini_countryman.cooper_d_all4.elasticity" : '12,9 s',
"mini_countryman.cooper_d_all4.elasticity_80_100_5" : '12,9 s',
"mini_countryman.cooper_d_all4.elasticity_num" : '12.9',
"mini_countryman.cooper_d_all4.engine" : 'Cooper D Countryman ALL4',
"mini_countryman.cooper_d_all4.engine_hood_stripes" : '327',
"mini_countryman.cooper_d_all4.engine_num" : '',
"mini_countryman.cooper_d_all4.engine_type" : '',
"mini_countryman.cooper_d_all4.exterior_mirror" : '382',
"mini_countryman.cooper_d_all4.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.840,00 EUR<br />Anzahlung in % 20<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.360,00 EUR<br />Sollzinssatz p.a.* 4,06 %<br />BearbeitungsgebÃ¼hr 387,20 EUR<br />Darlehensgesamtbetrag  21.791,94 EUR<br />Effektiver Jahreszins 4,99 %<br />Zielrate 13.794,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber die Laufzeit von 12 bis 60 Monaten und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_d_all4.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_d_all4.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_d_all4.folding_top_color" : '',
"mini_countryman.cooper_d_all4.front_brakes" : '',
"mini_countryman.cooper_d_all4.fuel_consumption_combined" : '4,9 [6,0] l/100 km',
"mini_countryman.cooper_d_all4.fuel_consumption_combined_num" : '4.9',
"mini_countryman.cooper_d_all4.fuel_consumption_extra_urban" : '4,7 [5,0] l/100 km',
"mini_countryman.cooper_d_all4.fuel_consumption_extra_urban_num" : '4.7',
"mini_countryman.cooper_d_all4.fuel_consumption_urban" : '5,3 [7,6] l/100 km',
"mini_countryman.cooper_d_all4.fuel_consumption_urban_num" : '5.3',
"mini_countryman.cooper_d_all4.fuel_type" : 'Diesel',
"mini_countryman.cooper_d_all4.fuel_type_num" : '',
"mini_countryman.cooper_d_all4.id" : 'cooper_d_all4',
"mini_countryman.cooper_d_all4.infomaterial_id" : '',
"mini_countryman.cooper_d_all4.interior_surface" : '4BD',
"mini_countryman.cooper_d_all4.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_d_all4.luggage_capacity_num" : '350',
"mini_countryman.cooper_d_all4.market_attr1" : '',
"mini_countryman.cooper_d_all4.market_attr2" : '',
"mini_countryman.cooper_d_all4.market_attr3" : '',
"mini_countryman.cooper_d_all4.max_output" : '82/112/4000 kW/PS/1/min',
"mini_countryman.cooper_d_all4.max_output_num" : '82',
"mini_countryman.cooper_d_all4.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_d_all4.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_d_all4.max_permissible_weight" : '1850 [1875] kg',
"mini_countryman.cooper_d_all4.max_permissible_weight_num" : '1850',
"mini_countryman.cooper_d_all4.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_countryman.cooper_d_all4.max_torque_num" : '270',
"mini_countryman.cooper_d_all4.max_torque_overboost" : '',
"mini_countryman.cooper_d_all4.max_torque_overboost_num" : '0',
"mini_countryman.cooper_d_all4.max_towed_load" : '800 [1200] kg',
"mini_countryman.cooper_d_all4.model_code" : 'ZD51',
"mini_countryman.cooper_d_all4.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_sd/financial_services/index.html'),
"mini_countryman.cooper_d_all4.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/modelcomparison.jpg'),
"mini_countryman.cooper_d_all4.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/model_filter_small.jpg'),
"mini_countryman.cooper_d_all4.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_d/model_filter_medium.jpg'),
"mini_countryman.cooper_d_all4.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d_all4.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d_all4.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_d_all4.model_name" : 'MINI Cooper D Countryman ALL4',
"mini_countryman.cooper_d_all4.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_d/model_quickfacts_all4.html'),
"mini_countryman.cooper_d_all4.output_per_litre" : '',
"mini_countryman.cooper_d_all4.payload" : '470 kg',
"mini_countryman.cooper_d_all4.range" : '960 [785] km',
"mini_countryman.cooper_d_all4.rear_brakes" : '',
"mini_countryman.cooper_d_all4.rim_dimension" : '6,5 J x 16 LM',
"mini_countryman.cooper_d_all4.roof_color" : '382',
"mini_countryman.cooper_d_all4.seat_type" : '481',
"mini_countryman.cooper_d_all4.short_description" : '',
"mini_countryman.cooper_d_all4.stroke_bore" : '83,6/78,0 [90,0/84,0] mm',
"mini_countryman.cooper_d_all4.tank_capacity" : '47 l',
"mini_countryman.cooper_d_all4.tank_capacity_num" : '47',
"mini_countryman.cooper_d_all4.top_speed" : '180 [175] km/h',
"mini_countryman.cooper_d_all4.top_speed_num" : '180',
"mini_countryman.cooper_d_all4.transmission" : '',
"mini_countryman.cooper_d_all4.unladen_weight" : '1455 [1480] kg',
"mini_countryman.cooper_d_all4.unladen_weight_num" : '1455',
"mini_countryman.cooper_d_all4.weight_ratio" : '',
"mini_countryman.cooper_d_all4.wheel_dimension_num" : '205/60 R16 92H',
"mini_countryman.cooper_d_all4.wheels" : '2GP',
"mini_countryman.cooper_s.acceleration_0_100" : '7,6 [7,9] s',
"mini_countryman.cooper_s.acceleration_0_100_num" : '7.6',
"mini_countryman.cooper_s.acceleration_80_120" : '',
"mini_countryman.cooper_s.acceleration_80_120_num" : '',
"mini_countryman.cooper_s.allowed_axle_load_front_rear" : '960/855 [980/855] kg',
"mini_countryman.cooper_s.basic_financing_price" : '249,00 â‚¬',
"mini_countryman.cooper_s.basic_financing_price_num" : '249.00',
"mini_countryman.cooper_s.basic_price" : '26.400 â‚¬',
"mini_countryman.cooper_s.basic_price_num" : '26400',
"mini_countryman.cooper_s.body_type" : 'GF',
"mini_countryman.cooper_s.charging_type" : '',
"mini_countryman.cooper_s.co2_emission" : '143 [166] g/km',
"mini_countryman.cooper_s.co2_emission_num" : '143',
"mini_countryman.cooper_s.color" : 'YB15',
"mini_countryman.cooper_s.color_line" : '4C6',
"mini_countryman.cooper_s.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini_countryman.cooper_s.cubic_capacity" : '1598 cmÂ³',
"mini_countryman.cooper_s.cubic_capacity_num" : '1598',
"mini_countryman.cooper_s.cushion_material" : 'T9E1',
"mini_countryman.cooper_s.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_s.dimensions" : '4110/1789/1561 mm',
"mini_countryman.cooper_s.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_s.drive_type" : '',
"mini_countryman.cooper_s.drive_type_num" : '',
"mini_countryman.cooper_s.elasticity" : '7,1/8,6 s',
"mini_countryman.cooper_s.elasticity_80_100_5" : '8,6 s',
"mini_countryman.cooper_s.elasticity_num" : '7.1',
"mini_countryman.cooper_s.engine" : 'Cooper S Countryman',
"mini_countryman.cooper_s.engine_hood_stripes" : '-',
"mini_countryman.cooper_s.engine_num" : '',
"mini_countryman.cooper_s.engine_type" : '',
"mini_countryman.cooper_s.exterior_mirror" : '383',
"mini_countryman.cooper_s.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.265,33 EUR<br />Anzahlung in % 19,84<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.134,67 EUR<br />Sollzinssatz p.a.* 3,10 %<br />BearbeitungsgebÃ¼hr 422,69 EUR<br />Darlehensgesamtbetrag  23.234,99 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 14.520,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br />-<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_s.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_s.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_s.folding_top_color" : '',
"mini_countryman.cooper_s.front_brakes" : '',
"mini_countryman.cooper_s.fuel_consumption_combined" : '6,1 [7,1] l/100 km',
"mini_countryman.cooper_s.fuel_consumption_combined_num" : '7.1',
"mini_countryman.cooper_s.fuel_consumption_extra_urban" : '5,4 [5,7] l/100 km',
"mini_countryman.cooper_s.fuel_consumption_extra_urban_num" : '5.4',
"mini_countryman.cooper_s.fuel_consumption_urban" : '7,5 [9,5] l/100 km',
"mini_countryman.cooper_s.fuel_consumption_urban_num" : '9.5',
"mini_countryman.cooper_s.fuel_type" : 'Benzin',
"mini_countryman.cooper_s.fuel_type_num" : '',
"mini_countryman.cooper_s.id" : 'cooper_s',
"mini_countryman.cooper_s.infomaterial_id" : '',
"mini_countryman.cooper_s.interior_surface" : '-',
"mini_countryman.cooper_s.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_s.luggage_capacity_num" : '350',
"mini_countryman.cooper_s.market_attr1" : '',
"mini_countryman.cooper_s.market_attr2" : '',
"mini_countryman.cooper_s.market_attr3" : '',
"mini_countryman.cooper_s.max_output" : '135/184/5500 kW/PS/1/min',
"mini_countryman.cooper_s.max_output_num" : '135',
"mini_countryman.cooper_s.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_s.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_s.max_permissible_weight" : '1780 [1805] kg',
"mini_countryman.cooper_s.max_permissible_weight_num" : '1780',
"mini_countryman.cooper_s.max_torque" : '240 (260)/1600 â€“ 5000 Nm/1/min',
"mini_countryman.cooper_s.max_torque_num" : '240',
"mini_countryman.cooper_s.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini_countryman.cooper_s.max_torque_overboost_num" : '260',
"mini_countryman.cooper_s.max_towed_load" : '750 [1000] kg',
"mini_countryman.cooper_s.model_code" : 'ZC31',
"mini_countryman.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_s/financial_services/'),
"mini_countryman.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/modelcomparison.jpg'),
"mini_countryman.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/model_filter_small.jpg'),
"mini_countryman.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/model_filter_medium.jpg'),
"mini_countryman.cooper_s.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s.model_name" : 'MINI Cooper S Countryman',
"mini_countryman.cooper_s.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_s/model_quickfacts.html'),
"mini_countryman.cooper_s.output_per_litre" : '',
"mini_countryman.cooper_s.payload" : '470 kg',
"mini_countryman.cooper_s.range" : '770 [660] km',
"mini_countryman.cooper_s.rear_brakes" : '',
"mini_countryman.cooper_s.rim_dimension" : '7 J x 17 LM',
"mini_countryman.cooper_s.roof_color" : '383',
"mini_countryman.cooper_s.seat_type" : '481',
"mini_countryman.cooper_s.short_description" : '',
"mini_countryman.cooper_s.stroke_bore" : '85,8/77,0 mm',
"mini_countryman.cooper_s.tank_capacity" : '47 l',
"mini_countryman.cooper_s.tank_capacity_num" : '47',
"mini_countryman.cooper_s.top_speed" : '215 [210] km/h',
"mini_countryman.cooper_s.top_speed_num" : '215',
"mini_countryman.cooper_s.transmission" : '',
"mini_countryman.cooper_s.unladen_weight" : '1385 [1410] kg',
"mini_countryman.cooper_s.unladen_weight_num" : '1385',
"mini_countryman.cooper_s.weight_ratio" : '',
"mini_countryman.cooper_s.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_s.wheels" : '205/55 R 17 91V',
"mini_countryman.cooper_s_all4.acceleration_0_100" : '7,9 [8,3] s',
"mini_countryman.cooper_s_all4.acceleration_0_100_num" : '7.9',
"mini_countryman.cooper_s_all4.acceleration_80_120" : '',
"mini_countryman.cooper_s_all4.acceleration_80_120_num" : '',
"mini_countryman.cooper_s_all4.allowed_axle_load_front_rear" : '980/895 [1000/895] kg',
"mini_countryman.cooper_s_all4.basic_financing_price" : '262,68 â‚¬',
"mini_countryman.cooper_s_all4.basic_financing_price_num" : '262.68',
"mini_countryman.cooper_s_all4.basic_price" : '27.900 â‚¬',
"mini_countryman.cooper_s_all4.basic_price_num" : '27900',
"mini_countryman.cooper_s_all4.body_type" : 'GF',
"mini_countryman.cooper_s_all4.charging_type" : '',
"mini_countryman.cooper_s_all4.co2_emission" : '157 [180] g/km',
"mini_countryman.cooper_s_all4.co2_emission_num" : '157',
"mini_countryman.cooper_s_all4.color" : 'YB15',
"mini_countryman.cooper_s_all4.color_line" : '4C6',
"mini_countryman.cooper_s_all4.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini_countryman.cooper_s_all4.cubic_capacity" : '1598 cmÂ³',
"mini_countryman.cooper_s_all4.cubic_capacity_num" : '1598',
"mini_countryman.cooper_s_all4.cushion_material" : 'T9E1',
"mini_countryman.cooper_s_all4.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_s_all4.dimensions" : '4110/1789/1561 mm',
"mini_countryman.cooper_s_all4.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_s_all4.drive_type" : '',
"mini_countryman.cooper_s_all4.drive_type_num" : '',
"mini_countryman.cooper_s_all4.elasticity" : '9,4 s',
"mini_countryman.cooper_s_all4.elasticity_80_100_5" : '9,4 s',
"mini_countryman.cooper_s_all4.elasticity_num" : '9.4',
"mini_countryman.cooper_s_all4.engine" : 'Cooper S Countryman ALL4',
"mini_countryman.cooper_s_all4.engine_hood_stripes" : '-',
"mini_countryman.cooper_s_all4.engine_num" : '',
"mini_countryman.cooper_s_all4.engine_type" : '',
"mini_countryman.cooper_s_all4.exterior_mirror" : '383',
"mini_countryman.cooper_s_all4.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.840,00 EUR<br />Anzahlung in % 20<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.360,00 EUR<br />Sollzinssatz p.a.* 4,06 %<br />BearbeitungsgebÃ¼hr 387,20 EUR<br />Darlehensgesamtbetrag  21.791,94 EUR<br />Effektiver Jahreszins 4,99 %<br />Zielrate 13.794,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber die Laufzeit von 12 bis 60 Monaten und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_s_all4.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_s_all4.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_s_all4.folding_top_color" : '',
"mini_countryman.cooper_s_all4.front_brakes" : '',
"mini_countryman.cooper_s_all4.fuel_consumption_combined" : '6,7 [7,7] l/100 km',
"mini_countryman.cooper_s_all4.fuel_consumption_combined_num" : '6.7',
"mini_countryman.cooper_s_all4.fuel_consumption_extra_urban" : '5,8 [6,2] l/100 km',
"mini_countryman.cooper_s_all4.fuel_consumption_extra_urban_num" : '5.8',
"mini_countryman.cooper_s_all4.fuel_consumption_urban" : '8,2 [10,3] l/100 km',
"mini_countryman.cooper_s_all4.fuel_consumption_urban_num" : '8.2',
"mini_countryman.cooper_s_all4.fuel_type" : 'Benzin',
"mini_countryman.cooper_s_all4.fuel_type_num" : '',
"mini_countryman.cooper_s_all4.id" : 'cooper_s_all4',
"mini_countryman.cooper_s_all4.infomaterial_id" : '',
"mini_countryman.cooper_s_all4.interior_surface" : '-',
"mini_countryman.cooper_s_all4.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_s_all4.luggage_capacity_num" : '350',
"mini_countryman.cooper_s_all4.market_attr1" : '',
"mini_countryman.cooper_s_all4.market_attr2" : '',
"mini_countryman.cooper_s_all4.market_attr3" : '',
"mini_countryman.cooper_s_all4.max_output" : '135/184/5500 kW/PS/1/min',
"mini_countryman.cooper_s_all4.max_output_num" : '135',
"mini_countryman.cooper_s_all4.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_s_all4.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_s_all4.max_permissible_weight" : '1840 [1865] kg',
"mini_countryman.cooper_s_all4.max_permissible_weight_num" : '1840',
"mini_countryman.cooper_s_all4.max_torque" : '240/1600 â€“ 5000 Nm/1/min',
"mini_countryman.cooper_s_all4.max_torque_num" : '240',
"mini_countryman.cooper_s_all4.max_torque_overboost" : '260/1600 Nm/1/min',
"mini_countryman.cooper_s_all4.max_torque_overboost_num" : '260',
"mini_countryman.cooper_s_all4.max_towed_load" : '750 [1000] kg',
"mini_countryman.cooper_s_all4.model_code" : 'ZC51',
"mini_countryman.cooper_s_all4.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_s/financial_services/index.html'),
"mini_countryman.cooper_s_all4.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/modelcomparison.jpg'),
"mini_countryman.cooper_s_all4.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/model_filter_small.jpg'),
"mini_countryman.cooper_s_all4.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_s/model_filter_medium.jpg'),
"mini_countryman.cooper_s_all4.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s_all4.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s_all4.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_s_all4.model_name" : 'MINI Cooper S Countryman ALL4',
"mini_countryman.cooper_s_all4.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_s/model_quickfacts_all4.html'),
"mini_countryman.cooper_s_all4.output_per_litre" : '',
"mini_countryman.cooper_s_all4.payload" : '460',
"mini_countryman.cooper_s_all4.range" : '700 [610] km',
"mini_countryman.cooper_s_all4.rear_brakes" : '',
"mini_countryman.cooper_s_all4.rim_dimension" : '7 J x 17 LM',
"mini_countryman.cooper_s_all4.roof_color" : '383',
"mini_countryman.cooper_s_all4.seat_type" : '481',
"mini_countryman.cooper_s_all4.short_description" : '',
"mini_countryman.cooper_s_all4.stroke_bore" : '85,8/77,0 mm',
"mini_countryman.cooper_s_all4.tank_capacity" : '47 l',
"mini_countryman.cooper_s_all4.tank_capacity_num" : '47',
"mini_countryman.cooper_s_all4.top_speed" : '210 [205] km/h',
"mini_countryman.cooper_s_all4.top_speed_num" : '210',
"mini_countryman.cooper_s_all4.transmission" : '',
"mini_countryman.cooper_s_all4.unladen_weight" : '1455 [1480] kg',
"mini_countryman.cooper_s_all4.unladen_weight_num" : '1455',
"mini_countryman.cooper_s_all4.weight_ratio" : '',
"mini_countryman.cooper_s_all4.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_s_all4.wheels" : '2RR. 2GV',
"mini_countryman.cooper_sd.acceleration_0_100" : '9,3 [9,5] s',
"mini_countryman.cooper_sd.acceleration_0_100_num" : '9.3',
"mini_countryman.cooper_sd.acceleration_80_120" : '',
"mini_countryman.cooper_sd.acceleration_80_120_num" : '',
"mini_countryman.cooper_sd.allowed_axle_load_front_rear" : '995/855 [1015/855] kg',
"mini_countryman.cooper_sd.basic_financing_price" : '239,00 â‚¬',
"mini_countryman.cooper_sd.basic_financing_price_num" : '239.00',
"mini_countryman.cooper_sd.basic_price" : '27.300 â‚¬',
"mini_countryman.cooper_sd.basic_price_num" : '27300',
"mini_countryman.cooper_sd.body_type" : 'GF',
"mini_countryman.cooper_sd.charging_type" : '',
"mini_countryman.cooper_sd.co2_emission" : '122 [150] g/km',
"mini_countryman.cooper_sd.co2_emission_num" : '122',
"mini_countryman.cooper_sd.color" : 'YB15',
"mini_countryman.cooper_sd.color_line" : '4C6',
"mini_countryman.cooper_sd.compression_recommended_fuel_type" : '6,5/Diesel :1',
"mini_countryman.cooper_sd.cubic_capacity" : '1995 cmÂ³',
"mini_countryman.cooper_sd.cubic_capacity_num" : '1995',
"mini_countryman.cooper_sd.cushion_material" : 'T9E1',
"mini_countryman.cooper_sd.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_sd.dimensions" : '4110/1789/1561 mm',
"mini_countryman.cooper_sd.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_sd.drive_type" : '',
"mini_countryman.cooper_sd.drive_type_num" : '',
"mini_countryman.cooper_sd.elasticity" : '7,9/10,1 s',
"mini_countryman.cooper_sd.elasticity_80_100_5" : '10,1 s',
"mini_countryman.cooper_sd.elasticity_num" : '7.9',
"mini_countryman.cooper_sd.engine" : 'Cooper SD Countryman',
"mini_countryman.cooper_sd.engine_hood_stripes" : '-',
"mini_countryman.cooper_sd.engine_num" : '',
"mini_countryman.cooper_sd.engine_type" : '',
"mini_countryman.cooper_sd.exterior_mirror" : '383',
"mini_countryman.cooper_sd.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI Partner.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.569,85 EUR<br />Anzahlung in % 20,40<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.730,15 EUR<br />Sollzinssatz p.a.* 3,11 %<br />BearbeitungsgebÃ¼hr 434,60 EUR<br />Darlehensgesamtbetrag 23.926,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.561,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br />-<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_sd.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_sd.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_sd.folding_top_color" : '',
"mini_countryman.cooper_sd.front_brakes" : '',
"mini_countryman.cooper_sd.fuel_consumption_combined" : '4,6 [5,7] l/100 km',
"mini_countryman.cooper_sd.fuel_consumption_combined_num" : '4.6',
"mini_countryman.cooper_sd.fuel_consumption_extra_urban" : '4,3 [4,8] l/100 km',
"mini_countryman.cooper_sd.fuel_consumption_extra_urban_num" : '4.3',
"mini_countryman.cooper_sd.fuel_consumption_urban" : '5,2 [7,3] l/100 km',
"mini_countryman.cooper_sd.fuel_consumption_urban_num" : '5.2',
"mini_countryman.cooper_sd.fuel_type" : 'Diesel',
"mini_countryman.cooper_sd.fuel_type_num" : '',
"mini_countryman.cooper_sd.id" : 'cooper_sd',
"mini_countryman.cooper_sd.infomaterial_id" : '',
"mini_countryman.cooper_sd.interior_surface" : '-',
"mini_countryman.cooper_sd.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_sd.luggage_capacity_num" : '350',
"mini_countryman.cooper_sd.market_attr1" : '',
"mini_countryman.cooper_sd.market_attr2" : '',
"mini_countryman.cooper_sd.market_attr3" : '',
"mini_countryman.cooper_sd.max_output" : '105/143/4000 kW/PS/1/min',
"mini_countryman.cooper_sd.max_output_num" : '105',
"mini_countryman.cooper_sd.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_sd.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_sd.max_permissible_weight" : '1790 [1815] kg',
"mini_countryman.cooper_sd.max_permissible_weight_num" : '1790',
"mini_countryman.cooper_sd.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_countryman.cooper_sd.max_torque_num" : '305',
"mini_countryman.cooper_sd.max_torque_overboost" : '',
"mini_countryman.cooper_sd.max_torque_overboost_num" : '',
"mini_countryman.cooper_sd.max_towed_load" : '800 [1200] kg',
"mini_countryman.cooper_sd.model_code" : 'ZB71',
"mini_countryman.cooper_sd.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_sd/financial_services/index.html'),
"mini_countryman.cooper_sd.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/modelcomparison.jpg'),
"mini_countryman.cooper_sd.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/model_filter_small.jpg'),
"mini_countryman.cooper_sd.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/model_filter_medium.jpg'),
"mini_countryman.cooper_sd.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd.model_name" : 'MINI Cooper SD Countryman',
"mini_countryman.cooper_sd.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_sd/model_quickfacts.html'),
"mini_countryman.cooper_sd.output_per_litre" : '',
"mini_countryman.cooper_sd.payload" : '470 kg',
"mini_countryman.cooper_sd.range" : '1020 [825] km',
"mini_countryman.cooper_sd.rear_brakes" : '',
"mini_countryman.cooper_sd.rim_dimension" : '7,0 J x 17 LM',
"mini_countryman.cooper_sd.roof_color" : '383',
"mini_countryman.cooper_sd.seat_type" : '481',
"mini_countryman.cooper_sd.short_description" : '',
"mini_countryman.cooper_sd.stroke_bore" : '90,0/84,0 mm',
"mini_countryman.cooper_sd.tank_capacity" : '47 l',
"mini_countryman.cooper_sd.tank_capacity_num" : '47',
"mini_countryman.cooper_sd.top_speed" : '198 [195] km/h',
"mini_countryman.cooper_sd.top_speed_num" : '198',
"mini_countryman.cooper_sd.transmission" : '',
"mini_countryman.cooper_sd.unladen_weight" : '1395 [1420] kg',
"mini_countryman.cooper_sd.unladen_weight_num" : '1395',
"mini_countryman.cooper_sd.weight_ratio" : '',
"mini_countryman.cooper_sd.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_sd.wheels" : '205/55 R 17 91V',
"mini_countryman.cooper_sd_all4.acceleration_0_100" : '9,4 [9,5] s',
"mini_countryman.cooper_sd_all4.acceleration_0_100_num" : '9.4',
"mini_countryman.cooper_sd_all4.acceleration_80_120" : '',
"mini_countryman.cooper_sd_all4.acceleration_80_120_num" : '',
"mini_countryman.cooper_sd_all4.allowed_axle_load_front_rear" : '1015/900 [1035/900] kg',
"mini_countryman.cooper_sd_all4.basic_financing_price" : '256,53 â‚¬',
"mini_countryman.cooper_sd_all4.basic_financing_price_num" : '256.53',
"mini_countryman.cooper_sd_all4.basic_price" : '28.900 â‚¬',
"mini_countryman.cooper_sd_all4.basic_price_num" : '28900',
"mini_countryman.cooper_sd_all4.body_type" : 'GF',
"mini_countryman.cooper_sd_all4.charging_type" : '',
"mini_countryman.cooper_sd_all4.co2_emission" : '130 [160] g/km',
"mini_countryman.cooper_sd_all4.co2_emission_num" : '130',
"mini_countryman.cooper_sd_all4.color" : 'YB15',
"mini_countryman.cooper_sd_all4.color_line" : '4C6',
"mini_countryman.cooper_sd_all4.compression_recommended_fuel_type" : '16,5/Diesel :1',
"mini_countryman.cooper_sd_all4.cubic_capacity" : '1995 cmÂ³',
"mini_countryman.cooper_sd_all4.cubic_capacity_num" : '1995',
"mini_countryman.cooper_sd_all4.cushion_material" : 'T9E1',
"mini_countryman.cooper_sd_all4.cylinder_type_valve" : '4/Reihe/4',
"mini_countryman.cooper_sd_all4.dimensions" : '4110/1789/1561 mm',
"mini_countryman.cooper_sd_all4.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_sd_all4.drive_type" : '',
"mini_countryman.cooper_sd_all4.drive_type_num" : '',
"mini_countryman.cooper_sd_all4.elasticity" : '10,7 s',
"mini_countryman.cooper_sd_all4.elasticity_80_100_5" : '10,7 s',
"mini_countryman.cooper_sd_all4.elasticity_num" : '10.7',
"mini_countryman.cooper_sd_all4.engine" : 'Cooper SD Countryman ALL4',
"mini_countryman.cooper_sd_all4.engine_hood_stripes" : '-',
"mini_countryman.cooper_sd_all4.engine_num" : '',
"mini_countryman.cooper_sd_all4.engine_type" : '',
"mini_countryman.cooper_sd_all4.exterior_mirror" : '383',
"mini_countryman.cooper_sd_all4.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.840,00 EUR<br />Anzahlung in % 20<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.360,00 EUR<br />Sollzinssatz p.a.* 4,06 %<br />BearbeitungsgebÃ¼hr 387,20 EUR<br />Darlehensgesamtbetrag  21.791,94 EUR<br />Effektiver Jahreszins 4,99 %<br />Zielrate 13.794,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber die Laufzeit von 12 bis 60 Monaten und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_countryman.cooper_sd_all4.financing_disclaimer_headline1" : '',
"mini_countryman.cooper_sd_all4.financing_disclaimer_headline2" : '',
"mini_countryman.cooper_sd_all4.folding_top_color" : '',
"mini_countryman.cooper_sd_all4.front_brakes" : '',
"mini_countryman.cooper_sd_all4.fuel_consumption_combined" : '4,9 [6,1] l/100 km',
"mini_countryman.cooper_sd_all4.fuel_consumption_combined_num" : '4.9',
"mini_countryman.cooper_sd_all4.fuel_consumption_extra_urban" : '4,7 [5,1] l/100 km',
"mini_countryman.cooper_sd_all4.fuel_consumption_extra_urban_num" : '4.7',
"mini_countryman.cooper_sd_all4.fuel_consumption_urban" : '5,3 [7,7] l/100 km',
"mini_countryman.cooper_sd_all4.fuel_consumption_urban_num" : '5.3',
"mini_countryman.cooper_sd_all4.fuel_type" : 'Diesel',
"mini_countryman.cooper_sd_all4.fuel_type_num" : '',
"mini_countryman.cooper_sd_all4.id" : 'cooper_sd_all4',
"mini_countryman.cooper_sd_all4.infomaterial_id" : '',
"mini_countryman.cooper_sd_all4.interior_surface" : '-',
"mini_countryman.cooper_sd_all4.luggage_capacity" : '350/450 â€“ 1170 l',
"mini_countryman.cooper_sd_all4.luggage_capacity_num" : '350',
"mini_countryman.cooper_sd_all4.market_attr1" : '',
"mini_countryman.cooper_sd_all4.market_attr2" : '',
"mini_countryman.cooper_sd_all4.market_attr3" : '',
"mini_countryman.cooper_sd_all4.max_output" : '105/143/4000 kW/PS/1/min',
"mini_countryman.cooper_sd_all4.max_output_num" : '105',
"mini_countryman.cooper_sd_all4.max_permissible_roof_load" : '75 kg',
"mini_countryman.cooper_sd_all4.max_permissible_roof_load_num" : '75',
"mini_countryman.cooper_sd_all4.max_permissible_weight" : '1855 [1880] kg',
"mini_countryman.cooper_sd_all4.max_permissible_weight_num" : '1855',
"mini_countryman.cooper_sd_all4.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_countryman.cooper_sd_all4.max_torque_num" : '305',
"mini_countryman.cooper_sd_all4.max_torque_overboost" : '',
"mini_countryman.cooper_sd_all4.max_torque_overboost_num" : '',
"mini_countryman.cooper_sd_all4.max_towed_load" : '800 [1200] kg',
"mini_countryman.cooper_sd_all4.model_code" : 'ZD71',
"mini_countryman.cooper_sd_all4.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_sd/financial_services/index.html'),
"mini_countryman.cooper_sd_all4.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/modelcomparison.jpg'),
"mini_countryman.cooper_sd_all4.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/model_filter_small.jpg'),
"mini_countryman.cooper_sd_all4.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_countryman/cooper_sd/model_filter_medium.jpg'),
"mini_countryman.cooper_sd_all4.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd_all4.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd_all4.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_countryman.cooper_sd_all4.model_name" : 'MINI Cooper SD Countryman ALL4',
"mini_countryman.cooper_sd_all4.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_sd/model_quickfacts_all4.html'),
"mini_countryman.cooper_sd_all4.output_per_litre" : '',
"mini_countryman.cooper_sd_all4.payload" : '460 kg',
"mini_countryman.cooper_sd_all4.range" : '960 [770] km',
"mini_countryman.cooper_sd_all4.rear_brakes" : '',
"mini_countryman.cooper_sd_all4.rim_dimension" : '7,0 J x 17 LM',
"mini_countryman.cooper_sd_all4.roof_color" : '383',
"mini_countryman.cooper_sd_all4.seat_type" : '481',
"mini_countryman.cooper_sd_all4.short_description" : '',
"mini_countryman.cooper_sd_all4.stroke_bore" : '90,0/84,0 mm',
"mini_countryman.cooper_sd_all4.tank_capacity" : '47 l',
"mini_countryman.cooper_sd_all4.tank_capacity_num" : '47',
"mini_countryman.cooper_sd_all4.top_speed" : '195 [193] km/h',
"mini_countryman.cooper_sd_all4.top_speed_num" : '195',
"mini_countryman.cooper_sd_all4.transmission" : '',
"mini_countryman.cooper_sd_all4.unladen_weight" : '1470 [1495] kg',
"mini_countryman.cooper_sd_all4.unladen_weight_num" : '1470',
"mini_countryman.cooper_sd_all4.weight_ratio" : '',
"mini_countryman.cooper_sd_all4.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_sd_all4.wheels" : '2RR. 2GV',
"jcw.mini.acceleration_0_100" : '6,5 s',
"jcw.mini.acceleration_0_100_num" : '6.5',
"jcw.mini.acceleration_80_120" : '',
"jcw.mini.acceleration_80_120_num" : '',
"jcw.mini.allowed_axle_load_front_rear" : '',
"jcw.mini.basic_financing_price" : '299,00 â‚¬',
"jcw.mini.basic_financing_price_num" : '299.00',
"jcw.mini.basic_price" : '29.500 â‚¬',
"jcw.mini.basic_price_num" : '29500',
"jcw.mini.body_type" : 'CP',
"jcw.mini.charging_type" : 'twin scroll turbo',
"jcw.mini.co2_emission" : '165 g/km',
"jcw.mini.co2_emission_num" : '165',
"jcw.mini.color" : 'WA94',
"jcw.mini.color_line" : '4C1',
"jcw.mini.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"jcw.mini.cubic_capacity" : '1598 cmÂ³',
"jcw.mini.cubic_capacity_num" : '1598',
"jcw.mini.cushion_material" : 'T9IN',
"jcw.mini.cylinder_type_valve" : '4/Reihe/4',
"jcw.mini.dimensions" : '3.729 / 1.683 / 1.407 mm',
"jcw.mini.dimensions_num" : '3729 / 1683 / 1407',
"jcw.mini.drive_type" : '',
"jcw.mini.drive_type_num" : '',
"jcw.mini.elasticity" : '5,2 / 6,2 s',
"jcw.mini.elasticity_80_100_5" : '6,2 s',
"jcw.mini.elasticity_num" : '5.2',
"jcw.mini.engine" : 'John Cooper Works',
"jcw.mini.engine_hood_stripes" : '3AZ',
"jcw.mini.engine_num" : '',
"jcw.mini.engine_type" : '',
"jcw.mini.exterior_mirror" : '3A3',
"jcw.mini.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.985,00 EUR<br />Anzahlung in % 20,29<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein351<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 23.515,00 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 470,30 EUR<br />Darlehensgesamtbetrag 25.805,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.340,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"jcw.mini.financing_disclaimer_headline1" : '',
"jcw.mini.financing_disclaimer_headline2" : '',
"jcw.mini.folding_top_color" : '',
"jcw.mini.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"jcw.mini.fuel_consumption_combined" : '7,1 l/100 km',
"jcw.mini.fuel_consumption_combined_num" : '7.1',
"jcw.mini.fuel_consumption_extra_urban" : '5,8 l/100 km',
"jcw.mini.fuel_consumption_extra_urban_num" : '-',
"jcw.mini.fuel_consumption_urban" : '9,4 l/100 km',
"jcw.mini.fuel_consumption_urban_num" : '9.4',
"jcw.mini.fuel_type" : 'Benzin',
"jcw.mini.fuel_type_num" : '',
"jcw.mini.id" : 'mini',
"jcw.mini.infomaterial_id" : '',
"jcw.mini.interior_surface" : '4CY',
"jcw.mini.luggage_capacity" : '160-680 l',
"jcw.mini.luggage_capacity_num" : '160',
"jcw.mini.market_attr1" : '',
"jcw.mini.market_attr2" : '',
"jcw.mini.market_attr3" : '',
"jcw.mini.max_output" : '155/211/6000 kW/PS/1/min',
"jcw.mini.max_output_num" : '155',
"jcw.mini.max_permissible_roof_load" : '75 kg',
"jcw.mini.max_permissible_roof_load_num" : '75',
"jcw.mini.max_permissible_weight" : '1.590 kg',
"jcw.mini.max_permissible_weight_num" : '1590',
"jcw.mini.max_torque" : '260(280)/1850-5600 Nm/1/min',
"jcw.mini.max_torque_num" : '260',
"jcw.mini.max_torque_overboost" : '280 Nm / 1.850-5.600 min-1',
"jcw.mini.max_torque_overboost_num" : '280',
"jcw.mini.max_towed_load" : '',
"jcw.mini.model_code" : 'SV91',
"jcw.mini.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/financial_services/'),
"jcw.mini.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/modelcomparison.jpg'),
"jcw.mini.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_small.jpg'),
"jcw.mini.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_medium.jpg'),
"jcw.mini.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_3.jpg'),
"jcw.mini.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_4.jpg'),
"jcw.mini.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_5.jpg'),
"jcw.mini.model_name" : 'MINI John Cooper Works',
"jcw.mini.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/model_quickfacts.html'),
"jcw.mini.output_per_litre" : '97 kW/l',
"jcw.mini.payload" : '450 kg',
"jcw.mini.range" : '705 km',
"jcw.mini.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"jcw.mini.rim_dimension" : '7,0J x 17 LM',
"jcw.mini.roof_color" : '3A3',
"jcw.mini.seat_type" : '481',
"jcw.mini.short_description" : '',
"jcw.mini.stroke_bore" : '85,8/77 mm',
"jcw.mini.tank_capacity" : '50 Liter',
"jcw.mini.tank_capacity_num" : '50',
"jcw.mini.top_speed" : '238 km/h',
"jcw.mini.top_speed_num" : '238',
"jcw.mini.transmission" : '',
"jcw.mini.unladen_weight" : '1140/1215 kg',
"jcw.mini.unladen_weight_num" : '1140',
"jcw.mini.weight_ratio" : '7,4 kg/kW',
"jcw.mini.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini.wheels" : '205/45 R 17 84 W RSC',
"jcw.mini_coupe.acceleration_0_100" : '6,4 s',
"jcw.mini_coupe.acceleration_0_100_num" : '6,4',
"jcw.mini_coupe.acceleration_80_120" : '5,1 / 6,1s',
"jcw.mini_coupe.acceleration_80_120_num" : '5,1',
"jcw.mini_coupe.allowed_axle_load_front_rear" : '865/610 kg',
"jcw.mini_coupe.basic_financing_price" : '399,00 â‚¬',
"jcw.mini_coupe.basic_financing_price_num" : '399.00',
"jcw.mini_coupe.basic_price" : '31.150 â‚¬',
"jcw.mini_coupe.basic_price_num" : '31150',
"jcw.mini_coupe.body_type" : 'SC',
"jcw.mini_coupe.charging_type" : 'TwinScrollTurbo',
"jcw.mini_coupe.co2_emission" : '165 g/km',
"jcw.mini_coupe.co2_emission_num" : '165',
"jcw.mini_coupe.color" : '',
"jcw.mini_coupe.color_line" : '',
"jcw.mini_coupe.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"jcw.mini_coupe.cubic_capacity" : '1598 cmÂ³',
"jcw.mini_coupe.cubic_capacity_num" : '1598',
"jcw.mini_coupe.cushion_material" : '',
"jcw.mini_coupe.cylinder_type_valve" : '4/Reihe/4',
"jcw.mini_coupe.dimensions" : '3734 / 1683 / 1384 mm',
"jcw.mini_coupe.dimensions_num" : '3714 / 1683 / 1407',
"jcw.mini_coupe.drive_type" : '',
"jcw.mini_coupe.drive_type_num" : '',
"jcw.mini_coupe.elasticity" : '',
"jcw.mini_coupe.elasticity_80_100_5" : '5,1 / 6,1s',
"jcw.mini_coupe.elasticity_num" : '6,1',
"jcw.mini_coupe.engine" : 'John Cooper Works CoupÃ©',
"jcw.mini_coupe.engine_hood_stripes" : '',
"jcw.mini_coupe.engine_num" : '',
"jcw.mini_coupe.engine_type" : '',
"jcw.mini_coupe.exterior_mirror" : '',
"jcw.mini_coupe.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19 % MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.846,72 EUR<br />Anzahlung in % 12,35<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie  0,00 EUR<br />Nettodarlehensbetrag 27.303,28 EUR<br />Sollzinssatz p.a.* 3,04 %<br />BearbeitungsgebÃ¼hr 546,07 EUR<br />Darlehensgesamtbetrag 29.851,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.886,50 EUR<br />Zielrate in % 51<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br /><br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"jcw.mini_coupe.financing_disclaimer_headline1" : '',
"jcw.mini_coupe.financing_disclaimer_headline2" : '',
"jcw.mini_coupe.folding_top_color" : '',
"jcw.mini_coupe.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"jcw.mini_coupe.fuel_consumption_combined" : '7,1 l/100km',
"jcw.mini_coupe.fuel_consumption_combined_num" : '7,1',
"jcw.mini_coupe.fuel_consumption_extra_urban" : '5,8 l/100km',
"jcw.mini_coupe.fuel_consumption_extra_urban_num" : '5,8',
"jcw.mini_coupe.fuel_consumption_urban" : '9,4 l/100km',
"jcw.mini_coupe.fuel_consumption_urban_num" : '9,4',
"jcw.mini_coupe.fuel_type" : 'Benzin',
"jcw.mini_coupe.fuel_type_num" : '',
"jcw.mini_coupe.id" : 'mini_coupe',
"jcw.mini_coupe.infomaterial_id" : '268472464',
"jcw.mini_coupe.interior_surface" : '',
"jcw.mini_coupe.luggage_capacity" : '280 l',
"jcw.mini_coupe.luggage_capacity_num" : '280',
"jcw.mini_coupe.market_attr1" : '',
"jcw.mini_coupe.market_attr2" : '',
"jcw.mini_coupe.market_attr3" : '',
"jcw.mini_coupe.max_output" : '155/211/6000 kW/PS/1/min',
"jcw.mini_coupe.max_output_num" : '155',
"jcw.mini_coupe.max_permissible_roof_load" : '',
"jcw.mini_coupe.max_permissible_roof_load_num" : '',
"jcw.mini_coupe.max_permissible_weight" : '1455 kg',
"jcw.mini_coupe.max_permissible_weight_num" : '1455',
"jcw.mini_coupe.max_torque" : '260 Nm / 1.850-5.600 min-1',
"jcw.mini_coupe.max_torque_num" : '260',
"jcw.mini_coupe.max_torque_overboost" : '260(280)/1850-5600 Nm/1/min',
"jcw.mini_coupe.max_torque_overboost_num" : '280',
"jcw.mini_coupe.max_towed_load" : '-',
"jcw.mini_coupe.model_code" : 'SX51',
"jcw.mini_coupe.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/john_cooper_works/financial_services/index.html'),
"jcw.mini_coupe.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_coupe.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_coupe.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_coupe/john_cooper_works/model_filter_medium.jpg'),
"jcw.mini_coupe.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_coupe.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_coupe.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_coupe.model_name" : 'MINI John Cooper Works CoupÃ©',
"jcw.mini_coupe.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_coupe/john_cooper_works/model_quickfacts.html'),
"jcw.mini_coupe.output_per_litre" : '97 kW/dmÂ³',
"jcw.mini_coupe.payload" : '290 kg',
"jcw.mini_coupe.range" : '705 km',
"jcw.mini_coupe.rear_brakes" : 'Scheibe belÃ¼ftet (280) Ã˜ mm',
"jcw.mini_coupe.rim_dimension" : '7J x 17 LM',
"jcw.mini_coupe.roof_color" : '',
"jcw.mini_coupe.seat_type" : '',
"jcw.mini_coupe.short_description" : '',
"jcw.mini_coupe.stroke_bore" : '85,8/77 mm',
"jcw.mini_coupe.tank_capacity" : '50 l',
"jcw.mini_coupe.tank_capacity_num" : '50',
"jcw.mini_coupe.top_speed" : '240 km/h',
"jcw.mini_coupe.top_speed_num" : '240',
"jcw.mini_coupe.transmission" : '6-Gang-Schaltgetriebe',
"jcw.mini_coupe.unladen_weight" : '1165 / 1240 kg',
"jcw.mini_coupe.unladen_weight_num" : '1165',
"jcw.mini_coupe.weight_ratio" : '7,5 kg/kW',
"jcw.mini_coupe.wheel_dimension_num" : '195/55 R16 87V RSC',
"jcw.mini_coupe.wheels" : '205/45 R17 84W',
"jcw.mini_cabrio.acceleration_0_100" : '6,9 s',
"jcw.mini_cabrio.acceleration_0_100_num" : '6.9',
"jcw.mini_cabrio.acceleration_80_120" : '5,7 /6,8 s',
"jcw.mini_cabrio.acceleration_80_120_num" : '5.7',
"jcw.mini_cabrio.allowed_axle_load_front_rear" : '',
"jcw.mini_cabrio.basic_financing_price" : '299,00 â‚¬',
"jcw.mini_cabrio.basic_financing_price_num" : '299.00',
"jcw.mini_cabrio.basic_price" : '32.750 â‚¬',
"jcw.mini_cabrio.basic_price_num" : '32750',
"jcw.mini_cabrio.body_type" : 'CA',
"jcw.mini_cabrio.charging_type" : 'twin scroll turbo',
"jcw.mini_cabrio.co2_emission" : '169 g/km',
"jcw.mini_cabrio.co2_emission_num" : '169',
"jcw.mini_cabrio.color" : 'U851',
"jcw.mini_cabrio.color_line" : '4C1',
"jcw.mini_cabrio.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"jcw.mini_cabrio.cubic_capacity" : '1598 cmÂ³',
"jcw.mini_cabrio.cubic_capacity_num" : '1598',
"jcw.mini_cabrio.cushion_material" : 'T8E1',
"jcw.mini_cabrio.cylinder_type_valve" : '4/Reihe/4',
"jcw.mini_cabrio.dimensions" : '3.729 / 1.683 / 1.414 mm',
"jcw.mini_cabrio.dimensions_num" : '3729 / 1683 / 1414 mm',
"jcw.mini_cabrio.drive_type" : '',
"jcw.mini_cabrio.drive_type_num" : '',
"jcw.mini_cabrio.elasticity" : '5,7 / 6,8 s',
"jcw.mini_cabrio.elasticity_80_100_5" : '6,8 s',
"jcw.mini_cabrio.elasticity_num" : '5.7',
"jcw.mini_cabrio.engine" : 'John Cooper Works Cabrio',
"jcw.mini_cabrio.engine_hood_stripes" : '3AZ',
"jcw.mini_cabrio.engine_num" : '',
"jcw.mini_cabrio.engine_type" : '',
"jcw.mini_cabrio.exterior_mirror" : '383',
"jcw.mini_cabrio.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.858,47 EUR<br />Anzahlung in % 20,94<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 25.891,53 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 517,83 EUR<br />Darlehensgesamtbetrag 28.477,50 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 18.012,50 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"jcw.mini_cabrio.financing_disclaimer_headline1" : '',
"jcw.mini_cabrio.financing_disclaimer_headline2" : '',
"jcw.mini_cabrio.folding_top_color" : '-',
"jcw.mini_cabrio.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"jcw.mini_cabrio.fuel_consumption_combined" : '7,3 l/100 km',
"jcw.mini_cabrio.fuel_consumption_combined_num" : '7.3',
"jcw.mini_cabrio.fuel_consumption_extra_urban" : '5,9 l/100 km',
"jcw.mini_cabrio.fuel_consumption_extra_urban_num" : '5.9',
"jcw.mini_cabrio.fuel_consumption_urban" : '9,6 l/100 km',
"jcw.mini_cabrio.fuel_consumption_urban_num" : '9.6',
"jcw.mini_cabrio.fuel_type" : 'Benzin',
"jcw.mini_cabrio.fuel_type_num" : '',
"jcw.mini_cabrio.id" : 'mini_cabrio',
"jcw.mini_cabrio.infomaterial_id" : '',
"jcw.mini_cabrio.interior_surface" : '4CY',
"jcw.mini_cabrio.luggage_capacity" : '125/170-660 l',
"jcw.mini_cabrio.luggage_capacity_num" : '125',
"jcw.mini_cabrio.market_attr1" : '',
"jcw.mini_cabrio.market_attr2" : '',
"jcw.mini_cabrio.market_attr3" : '',
"jcw.mini_cabrio.max_output" : '155/211/6000 kW/PS/1/min',
"jcw.mini_cabrio.max_output_num" : '155',
"jcw.mini_cabrio.max_permissible_roof_load" : '- / -',
"jcw.mini_cabrio.max_permissible_roof_load_num" : '- / -',
"jcw.mini_cabrio.max_permissible_weight" : '1.660 kg',
"jcw.mini_cabrio.max_permissible_weight_num" : '1660',
"jcw.mini_cabrio.max_torque" : '260(280)/1850-5600 Nm/1/min',
"jcw.mini_cabrio.max_torque_num" : '260',
"jcw.mini_cabrio.max_torque_overboost" : '280 Nm / 1.700-4.500 min-1',
"jcw.mini_cabrio.max_torque_overboost_num" : '280',
"jcw.mini_cabrio.max_towed_load" : '',
"jcw.mini_cabrio.model_code" : 'ZP91',
"jcw.mini_cabrio.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/financial_services/'),
"jcw.mini_cabrio.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_cabrio.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_cabrio.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_medium.jpg'),
"jcw.mini_cabrio.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_cabrio.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_cabrio.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_cabrio.model_name" : 'MINI John Cooper Works Cabrio',
"jcw.mini_cabrio.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/model_quickfacts.html'),
"jcw.mini_cabrio.output_per_litre" : '97 kW/l',
"jcw.mini_cabrio.payload" : '430 Kg',
"jcw.mini_cabrio.range" : '685 km',
"jcw.mini_cabrio.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"jcw.mini_cabrio.rim_dimension" : '7,0J x 17 LM',
"jcw.mini_cabrio.roof_color" : '-',
"jcw.mini_cabrio.seat_type" : '481',
"jcw.mini_cabrio.short_description" : '',
"jcw.mini_cabrio.stroke_bore" : '85,8/77 mm',
"jcw.mini_cabrio.tank_capacity" : '50 Liter',
"jcw.mini_cabrio.tank_capacity_num" : '50',
"jcw.mini_cabrio.top_speed" : '235 km/h',
"jcw.mini_cabrio.top_speed_num" : '235',
"jcw.mini_cabrio.transmission" : '',
"jcw.mini_cabrio.unladen_weight" : '1230/1305 kg',
"jcw.mini_cabrio.unladen_weight_num" : '1230',
"jcw.mini_cabrio.weight_ratio" : '7,9 kg/kW',
"jcw.mini_cabrio.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini_cabrio.wheels" : '205/45 R 17 84 W RSC',
"jcw.mini_roadster.acceleration_0_100" : '6,5 s',
"jcw.mini_roadster.acceleration_0_100_num" : '6.5',
"jcw.mini_roadster.acceleration_80_120" : '5,3 / 6,3 s',
"jcw.mini_roadster.acceleration_80_120_num" : '5.3',
"jcw.mini_roadster.allowed_axle_load_front_rear" : '865/630 kg',
"jcw.mini_roadster.basic_financing_price" : '409,00 â‚¬',
"jcw.mini_roadster.basic_financing_price_num" : '409',
"jcw.mini_roadster.basic_price" : '31.900 â‚¬',
"jcw.mini_roadster.basic_price_num" : '31900',
"jcw.mini_roadster.body_type" : 'RO',
"jcw.mini_roadster.charging_type" : 'Twin Scroll Turbo',
"jcw.mini_roadster.co2_emission" : '169 g/km',
"jcw.mini_roadster.co2_emission_num" : '169',
"jcw.mini_roadster.color" : '',
"jcw.mini_roadster.color_line" : '',
"jcw.mini_roadster.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"jcw.mini_roadster.cubic_capacity" : '1598 cmÂ³',
"jcw.mini_roadster.cubic_capacity_num" : '1598',
"jcw.mini_roadster.cushion_material" : '',
"jcw.mini_roadster.cylinder_type_valve" : '4/Reihe/4',
"jcw.mini_roadster.dimensions" : '3758 x 1683 x 1391 mm',
"jcw.mini_roadster.dimensions_num" : '3714 / 1683 / 1407',
"jcw.mini_roadster.drive_type" : 'Front',
"jcw.mini_roadster.drive_type_num" : '',
"jcw.mini_roadster.elasticity" : '',
"jcw.mini_roadster.elasticity_80_100_5" : '6,3 s',
"jcw.mini_roadster.elasticity_num" : '6.3',
"jcw.mini_roadster.engine" : 'John Cooper Works Roadster',
"jcw.mini_roadster.engine_hood_stripes" : '',
"jcw.mini_roadster.engine_num" : '',
"jcw.mini_roadster.engine_type" : '',
"jcw.mini_roadster.exterior_mirror" : '',
"jcw.mini_roadster.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 3.926,35 EUR<br />Anzahlung in % 12,31<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 27.973,65 EUR<br />Sollzinssatz p.a.* 3,04%<br />BearbeitungsgebÃ¼hr 559,47 EUR<br />Darlehensgesamtbetrag 30.584,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 16.269,00 EUR<br />Zielrate in % 51,00<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"jcw.mini_roadster.financing_disclaimer_headline1" : '',
"jcw.mini_roadster.financing_disclaimer_headline2" : '',
"jcw.mini_roadster.folding_top_color" : '',
"jcw.mini_roadster.front_brakes" : 'Scheibe belÃ¼fted',
"jcw.mini_roadster.fuel_consumption_combined" : '7,3 l/100 km',
"jcw.mini_roadster.fuel_consumption_combined_num" : '7.3',
"jcw.mini_roadster.fuel_consumption_extra_urban" : '5,9 l/100 km',
"jcw.mini_roadster.fuel_consumption_extra_urban_num" : '5.9',
"jcw.mini_roadster.fuel_consumption_urban" : '9,6 l/100 km',
"jcw.mini_roadster.fuel_consumption_urban_num" : '9.6',
"jcw.mini_roadster.fuel_type" : 'Benzin',
"jcw.mini_roadster.fuel_type_num" : '',
"jcw.mini_roadster.id" : 'mini_roadster',
"jcw.mini_roadster.infomaterial_id" : '',
"jcw.mini_roadster.interior_surface" : '',
"jcw.mini_roadster.luggage_capacity" : '240 l',
"jcw.mini_roadster.luggage_capacity_num" : '240',
"jcw.mini_roadster.market_attr1" : '',
"jcw.mini_roadster.market_attr2" : '',
"jcw.mini_roadster.market_attr3" : '',
"jcw.mini_roadster.max_output" : '155/211/6000 kW/PS/1/min',
"jcw.mini_roadster.max_output_num" : '155',
"jcw.mini_roadster.max_permissible_roof_load" : '',
"jcw.mini_roadster.max_permissible_roof_load_num" : '',
"jcw.mini_roadster.max_permissible_weight" : '1475 kg',
"jcw.mini_roadster.max_permissible_weight_num" : '1475',
"jcw.mini_roadster.max_torque" : '280 Nm @ 2,000-5,100 rpm',
"jcw.mini_roadster.max_torque_num" : '280',
"jcw.mini_roadster.max_torque_overboost" : '280 Nm @ 2,000-5,100 rpm',
"jcw.mini_roadster.max_torque_overboost_num" : '280',
"jcw.mini_roadster.max_towed_load" : '-',
"jcw.mini_roadster.model_code" : 'SY51',
"jcw.mini_roadster.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/john_cooper_works/financial_services/index.html'),
"jcw.mini_roadster.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_roadster.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_roadster.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_roadster/john_cooper_works/model_filter_medium.jpg'),
"jcw.mini_roadster.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_roadster.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_roadster.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_roadster.model_name" : 'MINI John Cooper Works Roadster',
"jcw.mini_roadster.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_roadster/john_cooper_works/model_quickfacts.html'),
"jcw.mini_roadster.output_per_litre" : '97 kW/dmÂ³',
"jcw.mini_roadster.payload" : '290 kg',
"jcw.mini_roadster.range" : '685 km',
"jcw.mini_roadster.rear_brakes" : 'Scheibe',
"jcw.mini_roadster.rim_dimension" : '7J x 17 LM',
"jcw.mini_roadster.roof_color" : '',
"jcw.mini_roadster.seat_type" : '',
"jcw.mini_roadster.short_description" : '',
"jcw.mini_roadster.stroke_bore" : '85,8 x 77 mm',
"jcw.mini_roadster.tank_capacity" : '50 l',
"jcw.mini_roadster.tank_capacity_num" : '50',
"jcw.mini_roadster.top_speed" : '237 km/h',
"jcw.mini_roadster.top_speed_num" : '237',
"jcw.mini_roadster.transmission" : '6-Gang-Schaltgetriebe',
"jcw.mini_roadster.unladen_weight" : '1185 / 1260 kg',
"jcw.mini_roadster.unladen_weight_num" : '1185',
"jcw.mini_roadster.weight_ratio" : '7,6 kg/kW',
"jcw.mini_roadster.wheel_dimension_num" : '195/55 R16 87V RSC',
"jcw.mini_roadster.wheels" : '205/45 R17 84W',
"jcw.mini_clubman.acceleration_0_100" : '6,8 s',
"jcw.mini_clubman.acceleration_0_100_num" : '6.8',
"jcw.mini_clubman.acceleration_80_120" : '',
"jcw.mini_clubman.acceleration_80_120_num" : '',
"jcw.mini_clubman.allowed_axle_load_front_rear" : '',
"jcw.mini_clubman.basic_financing_price" : '309,00 â‚¬',
"jcw.mini_clubman.basic_financing_price_num" : '309.00',
"jcw.mini_clubman.basic_price" : '30.700 â‚¬',
"jcw.mini_clubman.basic_price_num" : '30700',
"jcw.mini_clubman.body_type" : 'HB',
"jcw.mini_clubman.charging_type" : 'twin scroll turbo',
"jcw.mini_clubman.co2_emission" : '167 g/km',
"jcw.mini_clubman.co2_emission_num" : '167',
"jcw.mini_clubman.color" : 'WA94',
"jcw.mini_clubman.color_line" : '4C1',
"jcw.mini_clubman.compression_recommended_fuel_type" : '10/91-98 ROZ :1',
"jcw.mini_clubman.cubic_capacity" : '1598 cmÂ³',
"jcw.mini_clubman.cubic_capacity_num" : '1598',
"jcw.mini_clubman.cushion_material" : 'ATP9',
"jcw.mini_clubman.cylinder_type_valve" : '4/Reihe/4',
"jcw.mini_clubman.dimensions" : '3.961 / 1.683 / 1.432 mm',
"jcw.mini_clubman.dimensions_num" : '3961/ 1683 / 1432',
"jcw.mini_clubman.drive_type" : '',
"jcw.mini_clubman.drive_type_num" : '',
"jcw.mini_clubman.elasticity" : '5,4 / 6,6 s',
"jcw.mini_clubman.elasticity_80_100_5" : '6,6 s',
"jcw.mini_clubman.elasticity_num" : '5.4',
"jcw.mini_clubman.engine" : 'John Cooper Works Clubman',
"jcw.mini_clubman.engine_hood_stripes" : '3AZ',
"jcw.mini_clubman.engine_num" : '',
"jcw.mini_clubman.engine_type" : '',
"jcw.mini_clubman.exterior_mirror" : '3A3',
"jcw.mini_clubman.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.299,87 EUR<br />Anzahlung in % 20,52<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 24.400,13 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 488,00 EUR<br />Darlehensgesamtbetrag 26.779,00 EUR<br />Effektiver Jahreszins 3,99 %<br />Zielrate 15.964,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"jcw.mini_clubman.financing_disclaimer_headline1" : '',
"jcw.mini_clubman.financing_disclaimer_headline2" : '',
"jcw.mini_clubman.folding_top_color" : '',
"jcw.mini_clubman.front_brakes" : 'Scheibe belÃ¼ftet (316) Ã˜ mm',
"jcw.mini_clubman.fuel_consumption_combined" : '7,2 l/100 km',
"jcw.mini_clubman.fuel_consumption_combined_num" : '7.2',
"jcw.mini_clubman.fuel_consumption_extra_urban" : '5,8 l/100 km',
"jcw.mini_clubman.fuel_consumption_extra_urban_num" : '5.8',
"jcw.mini_clubman.fuel_consumption_urban" : '9,5 l/100 km',
"jcw.mini_clubman.fuel_consumption_urban_num" : '9.5',
"jcw.mini_clubman.fuel_type" : 'Benzin',
"jcw.mini_clubman.fuel_type_num" : '',
"jcw.mini_clubman.id" : 'mini_clubman',
"jcw.mini_clubman.infomaterial_id" : '',
"jcw.mini_clubman.interior_surface" : '4CY',
"jcw.mini_clubman.luggage_capacity" : '260-930 l',
"jcw.mini_clubman.luggage_capacity_num" : '260',
"jcw.mini_clubman.market_attr1" : '',
"jcw.mini_clubman.market_attr2" : '',
"jcw.mini_clubman.market_attr3" : '',
"jcw.mini_clubman.max_output" : '155/211/6000 kW/PS/1/min',
"jcw.mini_clubman.max_output_num" : '155',
"jcw.mini_clubman.max_permissible_roof_load" : '75 kg',
"jcw.mini_clubman.max_permissible_roof_load_num" : '75',
"jcw.mini_clubman.max_permissible_weight" : '1.690 kg',
"jcw.mini_clubman.max_permissible_weight_num" : '1690',
"jcw.mini_clubman.max_torque" : '260(280)/1850-5600 Nm/1/min',
"jcw.mini_clubman.max_torque_num" : '260',
"jcw.mini_clubman.max_torque_overboost" : '280 Nm / 2.000-5.100 min-1',
"jcw.mini_clubman.max_torque_overboost_num" : '280',
"jcw.mini_clubman.max_towed_load" : '',
"jcw.mini_clubman.model_code" : 'ZG91',
"jcw.mini_clubman.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/financial_services/'),
"jcw.mini_clubman.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_clubman.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_clubman.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_medium.jpg'),
"jcw.mini_clubman.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_clubman.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_clubman.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"jcw.mini_clubman.model_name" : 'MINI John Cooper Works Clubman',
"jcw.mini_clubman.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/model_quickfacts.html'),
"jcw.mini_clubman.output_per_litre" : '97 kW/l',
"jcw.mini_clubman.payload" : '485 kg',
"jcw.mini_clubman.range" : '696 km',
"jcw.mini_clubman.rear_brakes" : 'Scheibe (280) Ã˜ mm',
"jcw.mini_clubman.rim_dimension" : '7,0J x 17 LM',
"jcw.mini_clubman.roof_color" : '3A3',
"jcw.mini_clubman.seat_type" : '481',
"jcw.mini_clubman.short_description" : '',
"jcw.mini_clubman.stroke_bore" : '85,8/77 mm',
"jcw.mini_clubman.tank_capacity" : '50 Liter',
"jcw.mini_clubman.tank_capacity_num" : '50',
"jcw.mini_clubman.top_speed" : '238 km/h',
"jcw.mini_clubman.top_speed_num" : '238',
"jcw.mini_clubman.transmission" : '',
"jcw.mini_clubman.unladen_weight" : '1205/1280 kg',
"jcw.mini_clubman.unladen_weight_num" : '1205',
"jcw.mini_clubman.weight_ratio" : '7,8 kg/kW',
"jcw.mini_clubman.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini_clubman.wheels" : '205/45 R 17 84 W RSC',
"mini_design_models.cooper_bayswater.acceleration_0_100" : '9,1 [10,4] s',
"mini_design_models.cooper_bayswater.acceleration_0_100_num" : '9.1',
"mini_design_models.cooper_bayswater.acceleration_80_120" : '',
"mini_design_models.cooper_bayswater.acceleration_80_120_num" : '',
"mini_design_models.cooper_bayswater.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_bayswater.basic_financing_price" : '229,00 â‚¬',
"mini_design_models.cooper_bayswater.basic_financing_price_num" : '229',
"mini_design_models.cooper_bayswater.basic_price" : '24.400 â‚¬',
"mini_design_models.cooper_bayswater.basic_price_num" : '24400',
"mini_design_models.cooper_bayswater.body_type" : 'CP',
"mini_design_models.cooper_bayswater.charging_type" : '',
"mini_design_models.cooper_bayswater.co2_emission" : '127 [150] g/km',
"mini_design_models.cooper_bayswater.co2_emission_num" : '127',
"mini_design_models.cooper_bayswater.color" : 'U851',
"mini_design_models.cooper_bayswater.color_line" : '4BA',
"mini_design_models.cooper_bayswater.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_bayswater.cubic_capacity" : '1.598 cmÂ³',
"mini_design_models.cooper_bayswater.cubic_capacity_num" : '1598',
"mini_design_models.cooper_bayswater.cushion_material" : 'FKE6',
"mini_design_models.cooper_bayswater.cylinder_type_valve" : '',
"mini_design_models.cooper_bayswater.dimensions" : '3723/ 1683 / 1407 mm',
"mini_design_models.cooper_bayswater.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.cooper_bayswater.drive_type" : 'Front',
"mini_design_models.cooper_bayswater.drive_type_num" : '',
"mini_design_models.cooper_bayswater.elasticity" : '9,6 / 12,1 s',
"mini_design_models.cooper_bayswater.elasticity_80_100_5" : '',
"mini_design_models.cooper_bayswater.elasticity_num" : '9.6',
"mini_design_models.cooper_bayswater.engine" : 'Cooper Bayswater',
"mini_design_models.cooper_bayswater.engine_hood_stripes" : '327',
"mini_design_models.cooper_bayswater.engine_num" : '',
"mini_design_models.cooper_bayswater.engine_type" : '',
"mini_design_models.cooper_bayswater.exterior_mirror" : '-',
"mini_design_models.cooper_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.903,97 EUR<br />Anzahlung in % 20,10<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.496,03 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 389,92 EUR<br />Darlehensgesamtbetrag 21.435,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 13.420,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_bayswater.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_bayswater.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_bayswater.folding_top_color" : '',
"mini_design_models.cooper_bayswater.front_brakes" : '',
"mini_design_models.cooper_bayswater.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini_design_models.cooper_bayswater.fuel_consumption_combined_num" : '5.4',
"mini_design_models.cooper_bayswater.fuel_consumption_extra_urban" : '4,6 [5,1] l/100 km',
"mini_design_models.cooper_bayswater.fuel_consumption_extra_urban_num" : '5.1',
"mini_design_models.cooper_bayswater.fuel_consumption_urban" : '6,9 [8,7] l/100 km',
"mini_design_models.cooper_bayswater.fuel_consumption_urban_num" : '6.9',
"mini_design_models.cooper_bayswater.fuel_type" : 'Benzin',
"mini_design_models.cooper_bayswater.fuel_type_num" : '',
"mini_design_models.cooper_bayswater.id" : 'cooper_bayswater',
"mini_design_models.cooper_bayswater.infomaterial_id" : '',
"mini_design_models.cooper_bayswater.interior_surface" : '4DA',
"mini_design_models.cooper_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_bayswater.luggage_capacity_num" : '160',
"mini_design_models.cooper_bayswater.market_attr1" : '',
"mini_design_models.cooper_bayswater.market_attr2" : '',
"mini_design_models.cooper_bayswater.market_attr3" : '',
"mini_design_models.cooper_bayswater.max_output" : '90/122/6000 kW/PS/1/min',
"mini_design_models.cooper_bayswater.max_output_num" : '90',
"mini_design_models.cooper_bayswater.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_bayswater.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_bayswater.max_permissible_weight" : '1525 kg',
"mini_design_models.cooper_bayswater.max_permissible_weight_num" : '1515',
"mini_design_models.cooper_bayswater.max_torque" : '160/4250 Nm/1/min',
"mini_design_models.cooper_bayswater.max_torque_num" : '160',
"mini_design_models.cooper_bayswater.max_torque_overboost" : '',
"mini_design_models.cooper_bayswater.max_torque_overboost_num" : '-',
"mini_design_models.cooper_bayswater.max_towed_load" : '',
"mini_design_models.cooper_bayswater.model_code" : 'SU31_7HU',
"mini_design_models.cooper_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/index.html'),
"mini_design_models.cooper_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_comparison.png'),
"mini_design_models.cooper_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_small.jpg'),
"mini_design_models.cooper_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_medium.jpg'),
"mini_design_models.cooper_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_bayswater.model_name" : 'MINI Cooper Bayswater',
"mini_design_models.cooper_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper.html'),
"mini_design_models.cooper_bayswater.output_per_litre" : '',
"mini_design_models.cooper_bayswater.payload" : '450 kg',
"mini_design_models.cooper_bayswater.range" : '',
"mini_design_models.cooper_bayswater.rear_brakes" : '',
"mini_design_models.cooper_bayswater.rim_dimension" : '5.5J x 15 LM',
"mini_design_models.cooper_bayswater.roof_color" : '382',
"mini_design_models.cooper_bayswater.seat_type" : '481',
"mini_design_models.cooper_bayswater.short_description" : '',
"mini_design_models.cooper_bayswater.stroke_bore" : '',
"mini_design_models.cooper_bayswater.tank_capacity" : '40 Liter',
"mini_design_models.cooper_bayswater.tank_capacity_num" : '40',
"mini_design_models.cooper_bayswater.top_speed" : '203 [197] km/h',
"mini_design_models.cooper_bayswater.top_speed_num" : '203',
"mini_design_models.cooper_bayswater.transmission" : '',
"mini_design_models.cooper_bayswater.unladen_weight" : '1075 / 1150 kg',
"mini_design_models.cooper_bayswater.unladen_weight_num" : '1075',
"mini_design_models.cooper_bayswater.weight_ratio" : '',
"mini_design_models.cooper_bayswater.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.cooper_bayswater.wheels" : '2RH',
"mini_design_models.cooper_d_bayswater.acceleration_0_100" : '9,7 [10,1] s',
"mini_design_models.cooper_d_bayswater.acceleration_0_100_num" : '9.7',
"mini_design_models.cooper_d_bayswater.acceleration_80_120" : '',
"mini_design_models.cooper_d_bayswater.acceleration_80_120_num" : '',
"mini_design_models.cooper_d_bayswater.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_d_bayswater.basic_financing_price" : '239,00 â‚¬',
"mini_design_models.cooper_d_bayswater.basic_financing_price_num" : '239',
"mini_design_models.cooper_d_bayswater.basic_price" : '26.100 â‚¬',
"mini_design_models.cooper_d_bayswater.basic_price_num" : '26100',
"mini_design_models.cooper_d_bayswater.body_type" : 'CP',
"mini_design_models.cooper_d_bayswater.charging_type" : '',
"mini_design_models.cooper_d_bayswater.co2_emission" : '99 [135] g/km',
"mini_design_models.cooper_d_bayswater.co2_emission_num" : '99',
"mini_design_models.cooper_d_bayswater.color" : 'WA93',
"mini_design_models.cooper_d_bayswater.color_line" : '4C2',
"mini_design_models.cooper_d_bayswater.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_d_bayswater.cubic_capacity" : '1.560 cmÂ³',
"mini_design_models.cooper_d_bayswater.cubic_capacity_num" : '1560',
"mini_design_models.cooper_d_bayswater.cushion_material" : 'FTGW',
"mini_design_models.cooper_d_bayswater.cylinder_type_valve" : '',
"mini_design_models.cooper_d_bayswater.dimensions" : '3723 / 1683 / 1407 mm',
"mini_design_models.cooper_d_bayswater.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.cooper_d_bayswater.drive_type" : 'Front',
"mini_design_models.cooper_d_bayswater.drive_type_num" : '',
"mini_design_models.cooper_d_bayswater.elasticity" : '7,4 / 9,2 s',
"mini_design_models.cooper_d_bayswater.elasticity_80_100_5" : '',
"mini_design_models.cooper_d_bayswater.elasticity_num" : '7.4',
"mini_design_models.cooper_d_bayswater.engine" : 'Cooper D Bayswater',
"mini_design_models.cooper_d_bayswater.engine_hood_stripes" : '327',
"mini_design_models.cooper_d_bayswater.engine_num" : '',
"mini_design_models.cooper_d_bayswater.engine_type" : '',
"mini_design_models.cooper_d_bayswater.exterior_mirror" : '382',
"mini_design_models.cooper_d_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.210,19 EUR<br />Anzahlung in % 19,96<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 20.889,81 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 417,80 EUR<br />Darlehensgesamtbetrag 22.981,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 14.616,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_d_bayswater.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_d_bayswater.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_d_bayswater.folding_top_color" : '',
"mini_design_models.cooper_d_bayswater.front_brakes" : '',
"mini_design_models.cooper_d_bayswater.fuel_consumption_combined" : '3,8 [5,1] l/100 km',
"mini_design_models.cooper_d_bayswater.fuel_consumption_combined_num" : '3.8',
"mini_design_models.cooper_d_bayswater.fuel_consumption_extra_urban" : '3,5 [4,1] l/100 km',
"mini_design_models.cooper_d_bayswater.fuel_consumption_extra_urban_num" : '',
"mini_design_models.cooper_d_bayswater.fuel_consumption_urban" : '4,2 [6,8] l/100 km',
"mini_design_models.cooper_d_bayswater.fuel_consumption_urban_num" : '4.2',
"mini_design_models.cooper_d_bayswater.fuel_type" : 'Diesel',
"mini_design_models.cooper_d_bayswater.fuel_type_num" : '',
"mini_design_models.cooper_d_bayswater.id" : 'cooper_d_bayswater',
"mini_design_models.cooper_d_bayswater.infomaterial_id" : '',
"mini_design_models.cooper_d_bayswater.interior_surface" : '-',
"mini_design_models.cooper_d_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_d_bayswater.luggage_capacity_num" : '160',
"mini_design_models.cooper_d_bayswater.market_attr1" : '',
"mini_design_models.cooper_d_bayswater.market_attr2" : '',
"mini_design_models.cooper_d_bayswater.market_attr3" : '',
"mini_design_models.cooper_d_bayswater.max_output" : '82/112/4000 kW/PS/1/min',
"mini_design_models.cooper_d_bayswater.max_output_num" : '82',
"mini_design_models.cooper_d_bayswater.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_d_bayswater.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_d_bayswater.max_permissible_weight" : '1540 kg',
"mini_design_models.cooper_d_bayswater.max_permissible_weight_num" : '1540',
"mini_design_models.cooper_d_bayswater.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_design_models.cooper_d_bayswater.max_torque_num" : '270',
"mini_design_models.cooper_d_bayswater.max_torque_overboost" : '-',
"mini_design_models.cooper_d_bayswater.max_torque_overboost_num" : '-',
"mini_design_models.cooper_d_bayswater.max_towed_load" : '',
"mini_design_models.cooper_d_bayswater.model_code" : 'SW31_7HU',
"mini_design_models.cooper_d_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"mini_design_models.cooper_d_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_comparison.png'),
"mini_design_models.cooper_d_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_small.jpg'),
"mini_design_models.cooper_d_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_d_medium.jpg'),
"mini_design_models.cooper_d_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_bayswater.model_name" : 'MINI Cooper D Bayswater',
"mini_design_models.cooper_d_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_d.html'),
"mini_design_models.cooper_d_bayswater.output_per_litre" : '',
"mini_design_models.cooper_d_bayswater.payload" : '450 kg',
"mini_design_models.cooper_d_bayswater.range" : '',
"mini_design_models.cooper_d_bayswater.rear_brakes" : '',
"mini_design_models.cooper_d_bayswater.rim_dimension" : '5.5J x 15 LM',
"mini_design_models.cooper_d_bayswater.roof_color" : '382',
"mini_design_models.cooper_d_bayswater.seat_type" : '481',
"mini_design_models.cooper_d_bayswater.short_description" : '',
"mini_design_models.cooper_d_bayswater.stroke_bore" : '',
"mini_design_models.cooper_d_bayswater.tank_capacity" : '40 Liter',
"mini_design_models.cooper_d_bayswater.tank_capacity_num" : '40',
"mini_design_models.cooper_d_bayswater.top_speed" : '197 [192] km/h',
"mini_design_models.cooper_d_bayswater.top_speed_num" : '197',
"mini_design_models.cooper_d_bayswater.transmission" : '',
"mini_design_models.cooper_d_bayswater.unladen_weight" : '1090 / 1165 kg',
"mini_design_models.cooper_d_bayswater.unladen_weight_num" : '1090',
"mini_design_models.cooper_d_bayswater.weight_ratio" : '',
"mini_design_models.cooper_d_bayswater.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.cooper_d_bayswater.wheels" : '2GC',
"mini_design_models.cooper_s_bayswater.acceleration_0_100" : '7 [7,2] s',
"mini_design_models.cooper_s_bayswater.acceleration_0_100_num" : '7',
"mini_design_models.cooper_s_bayswater.acceleration_80_120" : '6,6 / 8,4 s',
"mini_design_models.cooper_s_bayswater.acceleration_80_120_num" : '6.6',
"mini_design_models.cooper_s_bayswater.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_s_bayswater.basic_financing_price" : '279,00 â‚¬',
"mini_design_models.cooper_s_bayswater.basic_financing_price_num" : '279',
"mini_design_models.cooper_s_bayswater.basic_price" : '27.400 â‚¬',
"mini_design_models.cooper_s_bayswater.basic_price_num" : '27400',
"mini_design_models.cooper_s_bayswater.body_type" : 'CP',
"mini_design_models.cooper_s_bayswater.charging_type" : '',
"mini_design_models.cooper_s_bayswater.co2_emission" : '136 [149] g/km',
"mini_design_models.cooper_s_bayswater.co2_emission_num" : '136',
"mini_design_models.cooper_s_bayswater.color" : 'WB24',
"mini_design_models.cooper_s_bayswater.color_line" : '4C1',
"mini_design_models.cooper_s_bayswater.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_s_bayswater.cubic_capacity" : '1.598 cmÂ³',
"mini_design_models.cooper_s_bayswater.cubic_capacity_num" : '1598',
"mini_design_models.cooper_s_bayswater.cushion_material" : 'T8E1',
"mini_design_models.cooper_s_bayswater.cylinder_type_valve" : '',
"mini_design_models.cooper_s_bayswater.dimensions" : '3714 / 1683 / 1407 mm',
"mini_design_models.cooper_s_bayswater.dimensions_num" : '3714 / 1683 / 1407',
"mini_design_models.cooper_s_bayswater.drive_type" : 'Front',
"mini_design_models.cooper_s_bayswater.drive_type_num" : '',
"mini_design_models.cooper_s_bayswater.elasticity" : '5,6 / 7,0 s',
"mini_design_models.cooper_s_bayswater.elasticity_80_100_5" : '',
"mini_design_models.cooper_s_bayswater.elasticity_num" : '5.6',
"mini_design_models.cooper_s_bayswater.engine" : 'Cooper S Bayswater',
"mini_design_models.cooper_s_bayswater.engine_hood_stripes" : '329',
"mini_design_models.cooper_s_bayswater.engine_num" : '1.6',
"mini_design_models.cooper_s_bayswater.engine_type" : '',
"mini_design_models.cooper_s_bayswater.exterior_mirror" : '383',
"mini_design_models.cooper_s_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.516,52 EUR<br />Anzahlung in % 20,13<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 21.883,48 EUR<br />Sollzinssatz p.a.* 3,08%<br />BearbeitungsgebÃ¼hr 437,67 EUR<br />Darlehensgesamtbetrag 24.013,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 14.248,00 EUR<br />Zielrate in % 52<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_s_bayswater.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_s_bayswater.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_s_bayswater.folding_top_color" : '',
"mini_design_models.cooper_s_bayswater.front_brakes" : '',
"mini_design_models.cooper_s_bayswater.fuel_consumption_combined" : '5,8 [6,4] l/100 km',
"mini_design_models.cooper_s_bayswater.fuel_consumption_combined_num" : '5.8',
"mini_design_models.cooper_s_bayswater.fuel_consumption_extra_urban" : '5 [5,0] l/100 km',
"mini_design_models.cooper_s_bayswater.fuel_consumption_extra_urban_num" : '5',
"mini_design_models.cooper_s_bayswater.fuel_consumption_urban" : '7,3 [8,9] l/100 km',
"mini_design_models.cooper_s_bayswater.fuel_consumption_urban_num" : '7.3',
"mini_design_models.cooper_s_bayswater.fuel_type" : 'Benzin',
"mini_design_models.cooper_s_bayswater.fuel_type_num" : '',
"mini_design_models.cooper_s_bayswater.id" : 'cooper_s_bayswater',
"mini_design_models.cooper_s_bayswater.infomaterial_id" : '268466091',
"mini_design_models.cooper_s_bayswater.interior_surface" : '-',
"mini_design_models.cooper_s_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_s_bayswater.luggage_capacity_num" : '160',
"mini_design_models.cooper_s_bayswater.market_attr1" : '',
"mini_design_models.cooper_s_bayswater.market_attr2" : '',
"mini_design_models.cooper_s_bayswater.market_attr3" : '',
"mini_design_models.cooper_s_bayswater.max_output" : '135/184/5500 kW/PS/1/min',
"mini_design_models.cooper_s_bayswater.max_output_num" : '135',
"mini_design_models.cooper_s_bayswater.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_s_bayswater.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_s_bayswater.max_permissible_weight" : '1580 kg',
"mini_design_models.cooper_s_bayswater.max_permissible_weight_num" : '1580',
"mini_design_models.cooper_s_bayswater.max_torque" : '240(260)/1600 â€“ 5000 Nm/1/min',
"mini_design_models.cooper_s_bayswater.max_torque_num" : '240',
"mini_design_models.cooper_s_bayswater.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini_design_models.cooper_s_bayswater.max_torque_overboost_num" : '260',
"mini_design_models.cooper_s_bayswater.max_towed_load" : '',
"mini_design_models.cooper_s_bayswater.model_code" : 'SV31_7HU',
"mini_design_models.cooper_s_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_s/financial_services/index.html'),
"mini_design_models.cooper_s_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_comparison.png'),
"mini_design_models.cooper_s_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_small.jpg'),
"mini_design_models.cooper_s_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_s_medium.jpg'),
"mini_design_models.cooper_s_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_bayswater.model_name" : 'MINI Cooper S Bayswater',
"mini_design_models.cooper_s_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_s.html'),
"mini_design_models.cooper_s_bayswater.output_per_litre" : '',
"mini_design_models.cooper_s_bayswater.payload" : '450 kg',
"mini_design_models.cooper_s_bayswater.range" : '',
"mini_design_models.cooper_s_bayswater.rear_brakes" : '',
"mini_design_models.cooper_s_bayswater.rim_dimension" : '6.5 J x 16 LM',
"mini_design_models.cooper_s_bayswater.roof_color" : '383',
"mini_design_models.cooper_s_bayswater.seat_type" : '481',
"mini_design_models.cooper_s_bayswater.short_description" : '',
"mini_design_models.cooper_s_bayswater.stroke_bore" : '',
"mini_design_models.cooper_s_bayswater.tank_capacity" : '50 Liter',
"mini_design_models.cooper_s_bayswater.tank_capacity_num" : '50',
"mini_design_models.cooper_s_bayswater.top_speed" : '228 [223] km/h',
"mini_design_models.cooper_s_bayswater.top_speed_num" : '228',
"mini_design_models.cooper_s_bayswater.transmission" : '',
"mini_design_models.cooper_s_bayswater.unladen_weight" : '1130 / 1205 kg',
"mini_design_models.cooper_s_bayswater.unladen_weight_num" : '1130',
"mini_design_models.cooper_s_bayswater.weight_ratio" : '',
"mini_design_models.cooper_s_bayswater.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_design_models.cooper_s_bayswater.wheels" : '2GD',
"mini_design_models.cooper_sd_bayswater.acceleration_0_100" : '8,1 [8,4] s',
"mini_design_models.cooper_sd_bayswater.acceleration_0_100_num" : '8.1',
"mini_design_models.cooper_sd_bayswater.acceleration_80_120" : '6,6 / 8,4 s',
"mini_design_models.cooper_sd_bayswater.acceleration_80_120_num" : '6.6',
"mini_design_models.cooper_sd_bayswater.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_sd_bayswater.basic_financing_price" : '259,00 â‚¬',
"mini_design_models.cooper_sd_bayswater.basic_financing_price_num" : '259',
"mini_design_models.cooper_sd_bayswater.basic_price" : '28.400 â‚¬',
"mini_design_models.cooper_sd_bayswater.basic_price_num" : '28400',
"mini_design_models.cooper_sd_bayswater.body_type" : 'CP',
"mini_design_models.cooper_sd_bayswater.charging_type" : '',
"mini_design_models.cooper_sd_bayswater.co2_emission" : '114 [139] g/km',
"mini_design_models.cooper_sd_bayswater.co2_emission_num" : '114',
"mini_design_models.cooper_sd_bayswater.color" : 'WB24',
"mini_design_models.cooper_sd_bayswater.color_line" : '4C1',
"mini_design_models.cooper_sd_bayswater.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_sd_bayswater.cubic_capacity" : '1.995 cmÂ³',
"mini_design_models.cooper_sd_bayswater.cubic_capacity_num" : '1995',
"mini_design_models.cooper_sd_bayswater.cushion_material" : 'T8E1',
"mini_design_models.cooper_sd_bayswater.cylinder_type_valve" : '',
"mini_design_models.cooper_sd_bayswater.dimensions" : '3723 / 1683 / 1407 mm',
"mini_design_models.cooper_sd_bayswater.dimensions_num" : '3714 / 1683 / 1407',
"mini_design_models.cooper_sd_bayswater.drive_type" : 'Front',
"mini_design_models.cooper_sd_bayswater.drive_type_num" : '',
"mini_design_models.cooper_sd_bayswater.elasticity" : '6,6 / 7,8 s',
"mini_design_models.cooper_sd_bayswater.elasticity_80_100_5" : '',
"mini_design_models.cooper_sd_bayswater.elasticity_num" : '6.6',
"mini_design_models.cooper_sd_bayswater.engine" : 'Cooper SD Bayswater',
"mini_design_models.cooper_sd_bayswater.engine_hood_stripes" : '329',
"mini_design_models.cooper_sd_bayswater.engine_num" : '1.6',
"mini_design_models.cooper_sd_bayswater.engine_type" : '',
"mini_design_models.cooper_sd_bayswater.exterior_mirror" : '383',
"mini_design_models.cooper_sd_bayswater.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.704,37 EUR<br />Anzahlung in % 20,09<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.695,63 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 453,91 EUR<br />Darlehensgesamtbetrag 24.969,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 15.904,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_sd_bayswater.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_sd_bayswater.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_sd_bayswater.folding_top_color" : '',
"mini_design_models.cooper_sd_bayswater.front_brakes" : '',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_combined" : '4,3 [5,3] l/100 km',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_combined_num" : '4.3',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_extra_urban" : '3,9 [4,3] l/100 km',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_extra_urban_num" : '3.9',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_urban" : '5,1 [6,9] l/100 km',
"mini_design_models.cooper_sd_bayswater.fuel_consumption_urban_num" : '5.1',
"mini_design_models.cooper_sd_bayswater.fuel_type" : 'Diesel',
"mini_design_models.cooper_sd_bayswater.fuel_type_num" : '',
"mini_design_models.cooper_sd_bayswater.id" : 'cooper_sd_bayswater',
"mini_design_models.cooper_sd_bayswater.infomaterial_id" : '268466091',
"mini_design_models.cooper_sd_bayswater.interior_surface" : '-',
"mini_design_models.cooper_sd_bayswater.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_sd_bayswater.luggage_capacity_num" : '160',
"mini_design_models.cooper_sd_bayswater.market_attr1" : '',
"mini_design_models.cooper_sd_bayswater.market_attr2" : '',
"mini_design_models.cooper_sd_bayswater.market_attr3" : '',
"mini_design_models.cooper_sd_bayswater.max_output" : '105/143/4000 kW/PS/1/min',
"mini_design_models.cooper_sd_bayswater.max_output_num" : '135',
"mini_design_models.cooper_sd_bayswater.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_sd_bayswater.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_sd_bayswater.max_permissible_weight" : '1600 kg',
"mini_design_models.cooper_sd_bayswater.max_permissible_weight_num" : '1600',
"mini_design_models.cooper_sd_bayswater.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_design_models.cooper_sd_bayswater.max_torque_num" : '305',
"mini_design_models.cooper_sd_bayswater.max_torque_overboost" : '',
"mini_design_models.cooper_sd_bayswater.max_torque_overboost_num" : '',
"mini_design_models.cooper_sd_bayswater.max_towed_load" : '',
"mini_design_models.cooper_sd_bayswater.model_code" : 'SW71_7HU',
"mini_design_models.cooper_sd_bayswater.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_sd/financial_services/index.html'),
"mini_design_models.cooper_sd_bayswater.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_comparison.png'),
"mini_design_models.cooper_sd_bayswater.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_small.jpg'),
"mini_design_models.cooper_sd_bayswater.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_bayswater/framework/cooper_sd_medium.jpg'),
"mini_design_models.cooper_sd_bayswater.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_bayswater.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_bayswater.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_bayswater.model_name" : 'MINI Cooper SD Bayswater',
"mini_design_models.cooper_sd_bayswater.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_bayswater/model_quickfacts_cooper_sd.html'),
"mini_design_models.cooper_sd_bayswater.output_per_litre" : '',
"mini_design_models.cooper_sd_bayswater.payload" : '450 kg',
"mini_design_models.cooper_sd_bayswater.range" : '',
"mini_design_models.cooper_sd_bayswater.rear_brakes" : '',
"mini_design_models.cooper_sd_bayswater.rim_dimension" : '6.5 J x 16 LM',
"mini_design_models.cooper_sd_bayswater.roof_color" : '383',
"mini_design_models.cooper_sd_bayswater.seat_type" : '481',
"mini_design_models.cooper_sd_bayswater.short_description" : '',
"mini_design_models.cooper_sd_bayswater.stroke_bore" : '',
"mini_design_models.cooper_sd_bayswater.tank_capacity" : '40 Liter',
"mini_design_models.cooper_sd_bayswater.tank_capacity_num" : '40',
"mini_design_models.cooper_sd_bayswater.top_speed" : '215 [205] km/h',
"mini_design_models.cooper_sd_bayswater.top_speed_num" : '215',
"mini_design_models.cooper_sd_bayswater.transmission" : '',
"mini_design_models.cooper_sd_bayswater.unladen_weight" : '1150 / 1225 kg',
"mini_design_models.cooper_sd_bayswater.unladen_weight_num" : '1150',
"mini_design_models.cooper_sd_bayswater.weight_ratio" : '',
"mini_design_models.cooper_sd_bayswater.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_design_models.cooper_sd_bayswater.wheels" : '2GD',
"mini_design_models.cooper_highgate.acceleration_0_100" : '9,8 [11,1] s',
"mini_design_models.cooper_highgate.acceleration_0_100_num" : '9.8',
"mini_design_models.cooper_highgate.acceleration_80_120" : '11,6',
"mini_design_models.cooper_highgate.acceleration_80_120_num" : '11.6',
"mini_design_models.cooper_highgate.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_highgate.basic_financing_price" : '259,00 â‚¬',
"mini_design_models.cooper_highgate.basic_financing_price_num" : '259',
"mini_design_models.cooper_highgate.basic_price" : '28.800 â‚¬',
"mini_design_models.cooper_highgate.basic_price_num" : '28800',
"mini_design_models.cooper_highgate.body_type" : 'CA',
"mini_design_models.cooper_highgate.charging_type" : '',
"mini_design_models.cooper_highgate.co2_emission" : '133 [154] g/km',
"mini_design_models.cooper_highgate.co2_emission_num" : '133',
"mini_design_models.cooper_highgate.color" : 'A60',
"mini_design_models.cooper_highgate.color_line" : '4C3',
"mini_design_models.cooper_highgate.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_highgate.cubic_capacity" : '1.598 Liter',
"mini_design_models.cooper_highgate.cubic_capacity_num" : '1598',
"mini_design_models.cooper_highgate.cushion_material" : 'T9GK',
"mini_design_models.cooper_highgate.cylinder_type_valve" : '',
"mini_design_models.cooper_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_design_models.cooper_highgate.dimensions_num" : '3723 / 1683 / 1414',
"mini_design_models.cooper_highgate.drive_type" : 'Front',
"mini_design_models.cooper_highgate.drive_type_num" : '',
"mini_design_models.cooper_highgate.elasticity" : '10,5 s / 13,3 s',
"mini_design_models.cooper_highgate.elasticity_80_100_5" : '',
"mini_design_models.cooper_highgate.elasticity_num" : '10.5',
"mini_design_models.cooper_highgate.engine" : 'Cooper Cabrio Highgate',
"mini_design_models.cooper_highgate.engine_hood_stripes" : 'ohne',
"mini_design_models.cooper_highgate.engine_num" : '1.6',
"mini_design_models.cooper_highgate.engine_type" : '',
"mini_design_models.cooper_highgate.exterior_mirror" : '3AB',
"mini_design_models.cooper_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.905,18 EUR<br />Anzahlung in % 20,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 22.894,82 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 457,90 EUR<br />Darlehensgesamtbetrag 25.193,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 16.128,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_highgate.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_highgate.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_highgate.folding_top_color" : '',
"mini_design_models.cooper_highgate.front_brakes" : '',
"mini_design_models.cooper_highgate.fuel_consumption_combined" : '5,7 [6,6] l/100 km',
"mini_design_models.cooper_highgate.fuel_consumption_combined_num" : '5.7',
"mini_design_models.cooper_highgate.fuel_consumption_extra_urban" : '5,3 [5,3] l/100 km',
"mini_design_models.cooper_highgate.fuel_consumption_extra_urban_num" : '5.3',
"mini_design_models.cooper_highgate.fuel_consumption_urban" : '7,2 [8,9] l/100 km',
"mini_design_models.cooper_highgate.fuel_consumption_urban_num" : '7.2',
"mini_design_models.cooper_highgate.fuel_type" : 'Benzin',
"mini_design_models.cooper_highgate.fuel_type_num" : '',
"mini_design_models.cooper_highgate.id" : 'cooper_highgate',
"mini_design_models.cooper_highgate.infomaterial_id" : '',
"mini_design_models.cooper_highgate.interior_surface" : '4BD',
"mini_design_models.cooper_highgate.luggage_capacity" : '125 / 170 / 660',
"mini_design_models.cooper_highgate.luggage_capacity_num" : '125',
"mini_design_models.cooper_highgate.market_attr1" : '',
"mini_design_models.cooper_highgate.market_attr2" : '',
"mini_design_models.cooper_highgate.market_attr3" : '',
"mini_design_models.cooper_highgate.max_output" : '90/122/6000 kW/PS/1/min',
"mini_design_models.cooper_highgate.max_output_num" : '90',
"mini_design_models.cooper_highgate.max_permissible_roof_load" : '- / -',
"mini_design_models.cooper_highgate.max_permissible_roof_load_num" : '- / -',
"mini_design_models.cooper_highgate.max_permissible_weight" : '1595 kg',
"mini_design_models.cooper_highgate.max_permissible_weight_num" : '1595',
"mini_design_models.cooper_highgate.max_torque" : '160/4250 Nm/1/min',
"mini_design_models.cooper_highgate.max_torque_num" : '160',
"mini_design_models.cooper_highgate.max_torque_overboost" : '-',
"mini_design_models.cooper_highgate.max_torque_overboost_num" : '-',
"mini_design_models.cooper_highgate.max_towed_load" : '',
"mini_design_models.cooper_highgate.model_code" : 'ZN31_7HV',
"mini_design_models.cooper_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper/financial_services/index.html'),
"mini_design_models.cooper_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_comparison.png'),
"mini_design_models.cooper_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_small.jpg'),
"mini_design_models.cooper_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_medium.jpg'),
"mini_design_models.cooper_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_highgate.model_name" : 'MINI Cooper Cabrio Highgate',
"mini_design_models.cooper_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper.html'),
"mini_design_models.cooper_highgate.output_per_litre" : '',
"mini_design_models.cooper_highgate.payload" : '430 kg',
"mini_design_models.cooper_highgate.range" : '',
"mini_design_models.cooper_highgate.rear_brakes" : '',
"mini_design_models.cooper_highgate.rim_dimension" : '5.5J x 15 LM',
"mini_design_models.cooper_highgate.roof_color" : '-',
"mini_design_models.cooper_highgate.seat_type" : '481',
"mini_design_models.cooper_highgate.short_description" : '',
"mini_design_models.cooper_highgate.stroke_bore" : '',
"mini_design_models.cooper_highgate.tank_capacity" : '40 Liter',
"mini_design_models.cooper_highgate.tank_capacity_num" : '40',
"mini_design_models.cooper_highgate.top_speed" : '198 [191] km/h',
"mini_design_models.cooper_highgate.top_speed_num" : '198',
"mini_design_models.cooper_highgate.transmission" : '5-speed, manual, or as an option Continuously Variable automatic Transmission (CVT) with Steptronic mode',
"mini_design_models.cooper_highgate.unladen_weight" : '1165 / 1240 kg',
"mini_design_models.cooper_highgate.unladen_weight_num" : '1165',
"mini_design_models.cooper_highgate.weight_ratio" : '',
"mini_design_models.cooper_highgate.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.cooper_highgate.wheels" : '2GD',
"mini_design_models.cooper_d_highgate.acceleration_0_100" : '10,3 [10,7] s',
"mini_design_models.cooper_d_highgate.acceleration_0_100_num" : '10.3',
"mini_design_models.cooper_d_highgate.acceleration_80_120" : '',
"mini_design_models.cooper_d_highgate.acceleration_80_120_num" : '',
"mini_design_models.cooper_d_highgate.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_d_highgate.basic_financing_price" : '269,00 â‚¬',
"mini_design_models.cooper_d_highgate.basic_financing_price_num" : '269',
"mini_design_models.cooper_d_highgate.basic_price" : '30.450 â‚¬',
"mini_design_models.cooper_d_highgate.basic_price_num" : '30.450',
"mini_design_models.cooper_d_highgate.body_type" : 'CA',
"mini_design_models.cooper_d_highgate.charging_type" : '',
"mini_design_models.cooper_d_highgate.co2_emission" : '105 [140] g/km',
"mini_design_models.cooper_d_highgate.co2_emission_num" : '105',
"mini_design_models.cooper_d_highgate.color" : 'WB23',
"mini_design_models.cooper_d_highgate.color_line" : '4C3',
"mini_design_models.cooper_d_highgate.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_d_highgate.cubic_capacity" : '1.598 cmÂ³',
"mini_design_models.cooper_d_highgate.cubic_capacity_num" : '',
"mini_design_models.cooper_d_highgate.cushion_material" : 'T9GK',
"mini_design_models.cooper_d_highgate.cylinder_type_valve" : '',
"mini_design_models.cooper_d_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_design_models.cooper_d_highgate.dimensions_num" : '',
"mini_design_models.cooper_d_highgate.drive_type" : 'Front',
"mini_design_models.cooper_d_highgate.drive_type_num" : '',
"mini_design_models.cooper_d_highgate.elasticity" : '8,3 / 9,9 s',
"mini_design_models.cooper_d_highgate.elasticity_80_100_5" : '',
"mini_design_models.cooper_d_highgate.elasticity_num" : '8.3',
"mini_design_models.cooper_d_highgate.engine" : 'Cooper D Cabrio Highgate',
"mini_design_models.cooper_d_highgate.engine_hood_stripes" : 'ohne',
"mini_design_models.cooper_d_highgate.engine_num" : '',
"mini_design_models.cooper_d_highgate.engine_type" : '',
"mini_design_models.cooper_d_highgate.exterior_mirror" : '3AB',
"mini_design_models.cooper_d_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.132,50 EUR<br />Anzahlung in % 20,14<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 24.317,50 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 486,35 EUR<br />Darlehensgesamtbetrag 26.771,50 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 17.356,50 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_d_highgate.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_d_highgate.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_d_highgate.folding_top_color" : '',
"mini_design_models.cooper_d_highgate.front_brakes" : '',
"mini_design_models.cooper_d_highgate.fuel_consumption_combined" : '4,0 [5,3] l/100km',
"mini_design_models.cooper_d_highgate.fuel_consumption_combined_num" : '4',
"mini_design_models.cooper_d_highgate.fuel_consumption_extra_urban" : '3,7 [4,3] l/100km',
"mini_design_models.cooper_d_highgate.fuel_consumption_extra_urban_num" : '3.7',
"mini_design_models.cooper_d_highgate.fuel_consumption_urban" : '4,5 [7,0] l/100km',
"mini_design_models.cooper_d_highgate.fuel_consumption_urban_num" : '4.5',
"mini_design_models.cooper_d_highgate.fuel_type" : 'Diesel',
"mini_design_models.cooper_d_highgate.fuel_type_num" : '',
"mini_design_models.cooper_d_highgate.id" : 'cooper_d_highgate',
"mini_design_models.cooper_d_highgate.infomaterial_id" : '',
"mini_design_models.cooper_d_highgate.interior_surface" : '4BD',
"mini_design_models.cooper_d_highgate.luggage_capacity" : '125 / 170 / 660 Liter',
"mini_design_models.cooper_d_highgate.luggage_capacity_num" : '125',
"mini_design_models.cooper_d_highgate.market_attr1" : '',
"mini_design_models.cooper_d_highgate.market_attr2" : '',
"mini_design_models.cooper_d_highgate.market_attr3" : '',
"mini_design_models.cooper_d_highgate.max_output" : '82/112/4000 kW/PS/1/min',
"mini_design_models.cooper_d_highgate.max_output_num" : '82',
"mini_design_models.cooper_d_highgate.max_permissible_roof_load" : '- / -',
"mini_design_models.cooper_d_highgate.max_permissible_roof_load_num" : '',
"mini_design_models.cooper_d_highgate.max_permissible_weight" : '1630 kg',
"mini_design_models.cooper_d_highgate.max_permissible_weight_num" : '',
"mini_design_models.cooper_d_highgate.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_design_models.cooper_d_highgate.max_torque_num" : '270',
"mini_design_models.cooper_d_highgate.max_torque_overboost" : '',
"mini_design_models.cooper_d_highgate.max_torque_overboost_num" : '0',
"mini_design_models.cooper_d_highgate.max_towed_load" : '',
"mini_design_models.cooper_d_highgate.model_code" : 'ZR31_7HV',
"mini_design_models.cooper_d_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_d/financial_services/index.html'),
"mini_design_models.cooper_d_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_comparison.png'),
"mini_design_models.cooper_d_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_small.jpg'),
"mini_design_models.cooper_d_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_d_medium.jpg'),
"mini_design_models.cooper_d_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_highgate.model_name" : 'MINI Cooper D Cabrio Highgate',
"mini_design_models.cooper_d_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_d.html'),
"mini_design_models.cooper_d_highgate.output_per_litre" : '',
"mini_design_models.cooper_d_highgate.payload" : '430 kg',
"mini_design_models.cooper_d_highgate.range" : '',
"mini_design_models.cooper_d_highgate.rear_brakes" : '',
"mini_design_models.cooper_d_highgate.rim_dimension" : '',
"mini_design_models.cooper_d_highgate.roof_color" : '-',
"mini_design_models.cooper_d_highgate.seat_type" : '481',
"mini_design_models.cooper_d_highgate.short_description" : '',
"mini_design_models.cooper_d_highgate.stroke_bore" : '',
"mini_design_models.cooper_d_highgate.tank_capacity" : '40 Liter',
"mini_design_models.cooper_d_highgate.tank_capacity_num" : '',
"mini_design_models.cooper_d_highgate.top_speed" : '194 [190] km/h',
"mini_design_models.cooper_d_highgate.top_speed_num" : '194',
"mini_design_models.cooper_d_highgate.transmission" : '',
"mini_design_models.cooper_d_highgate.unladen_weight" : '1200 / 1275 kg',
"mini_design_models.cooper_d_highgate.unladen_weight_num" : '1200',
"mini_design_models.cooper_d_highgate.weight_ratio" : '',
"mini_design_models.cooper_d_highgate.wheel_dimension_num" : '195 / 55 R16',
"mini_design_models.cooper_d_highgate.wheels" : '2GC',
"mini_design_models.cooper_s_highgate.acceleration_0_100" : '7,3 [7,6] s',
"mini_design_models.cooper_s_highgate.acceleration_0_100_num" : '7.3',
"mini_design_models.cooper_s_highgate.acceleration_80_120" : '6,6 / 8,4 s',
"mini_design_models.cooper_s_highgate.acceleration_80_120_num" : '6.6',
"mini_design_models.cooper_s_highgate.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_s_highgate.basic_financing_price" : '299,00 â‚¬',
"mini_design_models.cooper_s_highgate.basic_financing_price_num" : '299',
"mini_design_models.cooper_s_highgate.basic_price" : '31.900 â‚¬',
"mini_design_models.cooper_s_highgate.basic_price_num" : '31900',
"mini_design_models.cooper_s_highgate.body_type" : 'CA',
"mini_design_models.cooper_s_highgate.charging_type" : '',
"mini_design_models.cooper_s_highgate.co2_emission" : '139 [153] g/km',
"mini_design_models.cooper_s_highgate.co2_emission_num" : '139',
"mini_design_models.cooper_s_highgate.color" : 'B28',
"mini_design_models.cooper_s_highgate.color_line" : '4C1',
"mini_design_models.cooper_s_highgate.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_s_highgate.cubic_capacity" : '1.598 Liter',
"mini_design_models.cooper_s_highgate.cubic_capacity_num" : '1598',
"mini_design_models.cooper_s_highgate.cushion_material" : 'FTGM',
"mini_design_models.cooper_s_highgate.cylinder_type_valve" : '',
"mini_design_models.cooper_s_highgate.dimensions" : '3729 / 1683 / 1414 mm',
"mini_design_models.cooper_s_highgate.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_design_models.cooper_s_highgate.drive_type" : 'Front',
"mini_design_models.cooper_s_highgate.drive_type_num" : '',
"mini_design_models.cooper_s_highgate.elasticity" : '6,2 / 7,9 s',
"mini_design_models.cooper_s_highgate.elasticity_80_100_5" : '',
"mini_design_models.cooper_s_highgate.elasticity_num" : '6.2',
"mini_design_models.cooper_s_highgate.engine" : 'Cooper S Cabrio Highgate',
"mini_design_models.cooper_s_highgate.engine_hood_stripes" : '327, 329, 3AK',
"mini_design_models.cooper_s_highgate.engine_num" : '1.6',
"mini_design_models.cooper_s_highgate.engine_type" : '',
"mini_design_models.cooper_s_highgate.exterior_mirror" : '383',
"mini_design_models.cooper_s_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.424,19 EUR<br />Anzahlung in % 20,14<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 25.475,81 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 509,52 EUR<br />Darlehensgesamtbetrag 28.010,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 17.545,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_s_highgate.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_s_highgate.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_s_highgate.folding_top_color" : '',
"mini_design_models.cooper_s_highgate.front_brakes" : '',
"mini_design_models.cooper_s_highgate.fuel_consumption_combined" : '6 [6,6] l/100km',
"mini_design_models.cooper_s_highgate.fuel_consumption_combined_num" : '6.0',
"mini_design_models.cooper_s_highgate.fuel_consumption_extra_urban" : '5,1 [5,1] l/100km',
"mini_design_models.cooper_s_highgate.fuel_consumption_extra_urban_num" : '5.1',
"mini_design_models.cooper_s_highgate.fuel_consumption_urban" : '7,5 [9,1] l/100km',
"mini_design_models.cooper_s_highgate.fuel_consumption_urban_num" : '7.5',
"mini_design_models.cooper_s_highgate.fuel_type" : 'Benzin',
"mini_design_models.cooper_s_highgate.fuel_type_num" : '',
"mini_design_models.cooper_s_highgate.id" : 'cooper_s_highgate',
"mini_design_models.cooper_s_highgate.infomaterial_id" : '',
"mini_design_models.cooper_s_highgate.interior_surface" : '4BC',
"mini_design_models.cooper_s_highgate.luggage_capacity" : '125 / 170 / 660 Liter',
"mini_design_models.cooper_s_highgate.luggage_capacity_num" : '125',
"mini_design_models.cooper_s_highgate.market_attr1" : '',
"mini_design_models.cooper_s_highgate.market_attr2" : '',
"mini_design_models.cooper_s_highgate.market_attr3" : '',
"mini_design_models.cooper_s_highgate.max_output" : '135/184/5500 kW/PS/1/min',
"mini_design_models.cooper_s_highgate.max_output_num" : '135',
"mini_design_models.cooper_s_highgate.max_permissible_roof_load" : '- / -',
"mini_design_models.cooper_s_highgate.max_permissible_roof_load_num" : '- / -',
"mini_design_models.cooper_s_highgate.max_permissible_weight" : '1660 kg',
"mini_design_models.cooper_s_highgate.max_permissible_weight_num" : '1660',
"mini_design_models.cooper_s_highgate.max_torque" : '240 (260)/1600 â€“ 5000 Nm/1/min',
"mini_design_models.cooper_s_highgate.max_torque_num" : '240',
"mini_design_models.cooper_s_highgate.max_torque_overboost" : '260/1700 @ 4.500 Nm/1/min',
"mini_design_models.cooper_s_highgate.max_torque_overboost_num" : '260',
"mini_design_models.cooper_s_highgate.max_towed_load" : '',
"mini_design_models.cooper_s_highgate.model_code" : 'ZP31_7HV',
"mini_design_models.cooper_s_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_s/financial_services/index.html'),
"mini_design_models.cooper_s_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_comparison.png'),
"mini_design_models.cooper_s_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_small.jpg'),
"mini_design_models.cooper_s_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_s_medium.jpg'),
"mini_design_models.cooper_s_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_highgate.model_name" : 'MINI Cooper S Cabrio Highgate',
"mini_design_models.cooper_s_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_s.html'),
"mini_design_models.cooper_s_highgate.output_per_litre" : '',
"mini_design_models.cooper_s_highgate.payload" : '430 kg',
"mini_design_models.cooper_s_highgate.range" : '',
"mini_design_models.cooper_s_highgate.rear_brakes" : '',
"mini_design_models.cooper_s_highgate.rim_dimension" : '6.5J x 16 LM',
"mini_design_models.cooper_s_highgate.roof_color" : '-',
"mini_design_models.cooper_s_highgate.seat_type" : '481',
"mini_design_models.cooper_s_highgate.short_description" : '',
"mini_design_models.cooper_s_highgate.stroke_bore" : '',
"mini_design_models.cooper_s_highgate.tank_capacity" : '50 Liter',
"mini_design_models.cooper_s_highgate.tank_capacity_num" : '50',
"mini_design_models.cooper_s_highgate.top_speed" : '225 [220] km/h',
"mini_design_models.cooper_s_highgate.top_speed_num" : '225',
"mini_design_models.cooper_s_highgate.transmission" : '6-speed, manual',
"mini_design_models.cooper_s_highgate.unladen_weight" : '1230 / 1305 kg',
"mini_design_models.cooper_s_highgate.unladen_weight_num" : '1230',
"mini_design_models.cooper_s_highgate.weight_ratio" : '',
"mini_design_models.cooper_s_highgate.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_design_models.cooper_s_highgate.wheels" : '2RU',
"mini_design_models.cooper_sd_highgate.acceleration_0_100" : '8,7 [8,9] s',
"mini_design_models.cooper_sd_highgate.acceleration_0_100_num" : '8.7',
"mini_design_models.cooper_sd_highgate.acceleration_80_120" : '6,6 / 8,4 s',
"mini_design_models.cooper_sd_highgate.acceleration_80_120_num" : '6.6',
"mini_design_models.cooper_sd_highgate.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_sd_highgate.basic_financing_price" : '299,00 â‚¬',
"mini_design_models.cooper_sd_highgate.basic_financing_price_num" : '299',
"mini_design_models.cooper_sd_highgate.basic_price" : '32.900 â‚¬',
"mini_design_models.cooper_sd_highgate.basic_price_num" : '32900',
"mini_design_models.cooper_sd_highgate.body_type" : 'CA',
"mini_design_models.cooper_sd_highgate.charging_type" : '',
"mini_design_models.cooper_sd_highgate.co2_emission" : '118 [143] g/km',
"mini_design_models.cooper_sd_highgate.co2_emission_num" : '118',
"mini_design_models.cooper_sd_highgate.color" : 'B28',
"mini_design_models.cooper_sd_highgate.color_line" : '4C1',
"mini_design_models.cooper_sd_highgate.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_sd_highgate.cubic_capacity" : '1.995 Liter',
"mini_design_models.cooper_sd_highgate.cubic_capacity_num" : '1995',
"mini_design_models.cooper_sd_highgate.cushion_material" : 'FTGM',
"mini_design_models.cooper_sd_highgate.cylinder_type_valve" : '',
"mini_design_models.cooper_sd_highgate.dimensions" : '3723 / 1683 / 1414 mm',
"mini_design_models.cooper_sd_highgate.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_design_models.cooper_sd_highgate.drive_type" : 'Front',
"mini_design_models.cooper_sd_highgate.drive_type_num" : '',
"mini_design_models.cooper_sd_highgate.elasticity" : '7,1 / 8,6 s',
"mini_design_models.cooper_sd_highgate.elasticity_80_100_5" : '',
"mini_design_models.cooper_sd_highgate.elasticity_num" : '6.6',
"mini_design_models.cooper_sd_highgate.engine" : 'Cooper SD Cabrio Highgate',
"mini_design_models.cooper_sd_highgate.engine_hood_stripes" : '327, 329, 3AK',
"mini_design_models.cooper_sd_highgate.engine_num" : '1.6',
"mini_design_models.cooper_sd_highgate.engine_type" : '',
"mini_design_models.cooper_sd_highgate.exterior_mirror" : '383',
"mini_design_models.cooper_sd_highgate.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 6.349,97 EUR<br />Anzahlung in % 19,30<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 26.550,03 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 531,00 EUR<br />Darlehensgesamtbetrag 29.218,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 18.753,00 EUR<br />Zielrate in % 57<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_sd_highgate.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_sd_highgate.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_sd_highgate.folding_top_color" : '',
"mini_design_models.cooper_sd_highgate.front_brakes" : '',
"mini_design_models.cooper_sd_highgate.fuel_consumption_combined" : '4,5 [5,4] l/100km',
"mini_design_models.cooper_sd_highgate.fuel_consumption_combined_num" : '4.5',
"mini_design_models.cooper_sd_highgate.fuel_consumption_extra_urban" : '4,0 [4,4] l/100km',
"mini_design_models.cooper_sd_highgate.fuel_consumption_extra_urban_num" : '4.0',
"mini_design_models.cooper_sd_highgate.fuel_consumption_urban" : '5,3 [7,1] l/100km',
"mini_design_models.cooper_sd_highgate.fuel_consumption_urban_num" : '5.3',
"mini_design_models.cooper_sd_highgate.fuel_type" : 'Diesel',
"mini_design_models.cooper_sd_highgate.fuel_type_num" : '',
"mini_design_models.cooper_sd_highgate.id" : 'cooper_sd_highgate',
"mini_design_models.cooper_sd_highgate.infomaterial_id" : '',
"mini_design_models.cooper_sd_highgate.interior_surface" : '4BC',
"mini_design_models.cooper_sd_highgate.luggage_capacity" : '125 - 660 Liter',
"mini_design_models.cooper_sd_highgate.luggage_capacity_num" : '125',
"mini_design_models.cooper_sd_highgate.market_attr1" : '',
"mini_design_models.cooper_sd_highgate.market_attr2" : '',
"mini_design_models.cooper_sd_highgate.market_attr3" : '',
"mini_design_models.cooper_sd_highgate.max_output" : '105/143/4000 kW/PS/1/min',
"mini_design_models.cooper_sd_highgate.max_output_num" : '105',
"mini_design_models.cooper_sd_highgate.max_permissible_roof_load" : '- / -',
"mini_design_models.cooper_sd_highgate.max_permissible_roof_load_num" : '- / -',
"mini_design_models.cooper_sd_highgate.max_permissible_weight" : '1680 kg',
"mini_design_models.cooper_sd_highgate.max_permissible_weight_num" : '1680',
"mini_design_models.cooper_sd_highgate.max_torque" : '305/1750 â€“ 2700 Nm/1/min',
"mini_design_models.cooper_sd_highgate.max_torque_num" : '305',
"mini_design_models.cooper_sd_highgate.max_torque_overboost" : '',
"mini_design_models.cooper_sd_highgate.max_torque_overboost_num" : '',
"mini_design_models.cooper_sd_highgate.max_towed_load" : '',
"mini_design_models.cooper_sd_highgate.model_code" : 'ZR71_7HV',
"mini_design_models.cooper_sd_highgate.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_sd/financial_services/index.html'),
"mini_design_models.cooper_sd_highgate.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_comparison.png'),
"mini_design_models.cooper_sd_highgate.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_small.jpg'),
"mini_design_models.cooper_sd_highgate.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_highgate/framework/cooper_sd_medium.jpg'),
"mini_design_models.cooper_sd_highgate.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_highgate.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_highgate.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_sd_highgate.model_name" : 'MINI Cooper SD Cabrio Highgate',
"mini_design_models.cooper_sd_highgate.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_cabrio_highgate/model_quickfacts_cooper_sd.html'),
"mini_design_models.cooper_sd_highgate.output_per_litre" : '',
"mini_design_models.cooper_sd_highgate.payload" : '430 kg',
"mini_design_models.cooper_sd_highgate.range" : '',
"mini_design_models.cooper_sd_highgate.rear_brakes" : '',
"mini_design_models.cooper_sd_highgate.rim_dimension" : '6.5J x 16 LM',
"mini_design_models.cooper_sd_highgate.roof_color" : '-',
"mini_design_models.cooper_sd_highgate.seat_type" : '481',
"mini_design_models.cooper_sd_highgate.short_description" : '',
"mini_design_models.cooper_sd_highgate.stroke_bore" : '',
"mini_design_models.cooper_sd_highgate.tank_capacity" : '40 Liter',
"mini_design_models.cooper_sd_highgate.tank_capacity_num" : '40',
"mini_design_models.cooper_sd_highgate.top_speed" : '210 [203] km/h',
"mini_design_models.cooper_sd_highgate.top_speed_num" : '210',
"mini_design_models.cooper_sd_highgate.transmission" : '6-speed, manual',
"mini_design_models.cooper_sd_highgate.unladen_weight" : '1250 / 1325 kg',
"mini_design_models.cooper_sd_highgate.unladen_weight_num" : '1250',
"mini_design_models.cooper_sd_highgate.weight_ratio" : '',
"mini_design_models.cooper_sd_highgate.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_design_models.cooper_sd_highgate.wheels" : '2RU',
"mini_design_models.one_75_baker_street.acceleration_0_100" : '10,5 [12,3] s',
"mini_design_models.one_75_baker_street.acceleration_0_100_num" : '10.5',
"mini_design_models.one_75_baker_street.acceleration_80_120" : '',
"mini_design_models.one_75_baker_street.acceleration_80_120_num" : '',
"mini_design_models.one_75_baker_street.allowed_axle_load_front_rear" : '',
"mini_design_models.one_75_baker_street.basic_financing_price" : '199,00 â‚¬',
"mini_design_models.one_75_baker_street.basic_financing_price_num" : '199',
"mini_design_models.one_75_baker_street.basic_price" : '20.800 â‚¬',
"mini_design_models.one_75_baker_street.basic_price_num" : '20800',
"mini_design_models.one_75_baker_street.body_type" : 'CP',
"mini_design_models.one_75_baker_street.charging_type" : '',
"mini_design_models.one_75_baker_street.co2_emission" : '127 [150] g/km',
"mini_design_models.one_75_baker_street.co2_emission_num" : '127',
"mini_design_models.one_75_baker_street.color" : 'M900',
"mini_design_models.one_75_baker_street.color_line" : '4C1',
"mini_design_models.one_75_baker_street.compression_recommended_fuel_type" : '',
"mini_design_models.one_75_baker_street.cubic_capacity" : '1.598 cmÂ³',
"mini_design_models.one_75_baker_street.cubic_capacity_num" : '1598',
"mini_design_models.one_75_baker_street.cushion_material" : 'APE1',
"mini_design_models.one_75_baker_street.cylinder_type_valve" : '',
"mini_design_models.one_75_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini_design_models.one_75_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.one_75_baker_street.drive_type" : 'Front',
"mini_design_models.one_75_baker_street.drive_type_num" : '',
"mini_design_models.one_75_baker_street.elasticity" : '12,1 / 15,3 s',
"mini_design_models.one_75_baker_street.elasticity_80_100_5" : '',
"mini_design_models.one_75_baker_street.elasticity_num" : '12.1',
"mini_design_models.one_75_baker_street.engine" : 'One Baker Street',
"mini_design_models.one_75_baker_street.engine_hood_stripes" : 'ohne',
"mini_design_models.one_75_baker_street.engine_num" : '',
"mini_design_models.one_75_baker_street.engine_type" : '',
"mini_design_models.one_75_baker_street.exterior_mirror" : '-',
"mini_design_models.one_75_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.055,38 EUR<br />Anzahlung in % 19,50<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 16.744,62 EUR<br />Sollzinssatz p.a.* 3,09%<br />BearbeitungsgebÃ¼hr 334,89 EUR<br />Darlehensgesamtbetrag 18.405,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 11.440,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.one_75_baker_street.financing_disclaimer_headline1" : '',
"mini_design_models.one_75_baker_street.financing_disclaimer_headline2" : '',
"mini_design_models.one_75_baker_street.folding_top_color" : '',
"mini_design_models.one_75_baker_street.front_brakes" : '',
"mini_design_models.one_75_baker_street.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini_design_models.one_75_baker_street.fuel_consumption_combined_num" : '5.4',
"mini_design_models.one_75_baker_street.fuel_consumption_extra_urban" : '4,4 [5,1] l/100 km',
"mini_design_models.one_75_baker_street.fuel_consumption_extra_urban_num" : '5.1',
"mini_design_models.one_75_baker_street.fuel_consumption_urban" : '7,2 [8,7] l/100 km',
"mini_design_models.one_75_baker_street.fuel_consumption_urban_num" : '7.2',
"mini_design_models.one_75_baker_street.fuel_type" : 'Benzin',
"mini_design_models.one_75_baker_street.fuel_type_num" : '',
"mini_design_models.one_75_baker_street.id" : 'one_75_baker_street',
"mini_design_models.one_75_baker_street.infomaterial_id" : '',
"mini_design_models.one_75_baker_street.interior_surface" : '-',
"mini_design_models.one_75_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.one_75_baker_street.luggage_capacity_num" : '160',
"mini_design_models.one_75_baker_street.market_attr1" : '',
"mini_design_models.one_75_baker_street.market_attr2" : '',
"mini_design_models.one_75_baker_street.market_attr3" : '',
"mini_design_models.one_75_baker_street.max_output" : '72/98/6000 kW/PS/1/min',
"mini_design_models.one_75_baker_street.max_output_num" : '72',
"mini_design_models.one_75_baker_street.max_permissible_roof_load" : '75 kg',
"mini_design_models.one_75_baker_street.max_permissible_roof_load_num" : '75',
"mini_design_models.one_75_baker_street.max_permissible_weight" : '1520 kg',
"mini_design_models.one_75_baker_street.max_permissible_weight_num" : '1520',
"mini_design_models.one_75_baker_street.max_torque" : '153/3000 Nm/1/min',
"mini_design_models.one_75_baker_street.max_torque_num" : '153',
"mini_design_models.one_75_baker_street.max_torque_overboost" : '-',
"mini_design_models.one_75_baker_street.max_torque_overboost_num" : '-',
"mini_design_models.one_75_baker_street.max_towed_load" : '',
"mini_design_models.one_75_baker_street.model_code" : 'SR31_7HT',
"mini_design_models.one_75_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/financial_services/index.html'),
"mini_design_models.one_75_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_comparison.png'),
"mini_design_models.one_75_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_small.jpg'),
"mini_design_models.one_75_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_medium.jpg'),
"mini_design_models.one_75_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_75_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_75_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_75_baker_street.model_name" : 'MINI One Baker Street',
"mini_design_models.one_75_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_one.html'),
"mini_design_models.one_75_baker_street.output_per_litre" : '',
"mini_design_models.one_75_baker_street.payload" : '450 kg',
"mini_design_models.one_75_baker_street.range" : '',
"mini_design_models.one_75_baker_street.rear_brakes" : '',
"mini_design_models.one_75_baker_street.rim_dimension" : '5.5J x 15 St',
"mini_design_models.one_75_baker_street.roof_color" : '-',
"mini_design_models.one_75_baker_street.seat_type" : 'Basis',
"mini_design_models.one_75_baker_street.short_description" : '-',
"mini_design_models.one_75_baker_street.stroke_bore" : '',
"mini_design_models.one_75_baker_street.tank_capacity" : '40 Liter',
"mini_design_models.one_75_baker_street.tank_capacity_num" : '40',
"mini_design_models.one_75_baker_street.top_speed" : '186 [181] km/h',
"mini_design_models.one_75_baker_street.top_speed_num" : '186',
"mini_design_models.one_75_baker_street.transmission" : '',
"mini_design_models.one_75_baker_street.unladen_weight" : '1070 / 1145 kg',
"mini_design_models.one_75_baker_street.unladen_weight_num" : '1070',
"mini_design_models.one_75_baker_street.weight_ratio" : '',
"mini_design_models.one_75_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.one_75_baker_street.wheels" : '2GA',
"mini_design_models.one_d_baker_street.acceleration_0_100" : '11,4 s',
"mini_design_models.one_d_baker_street.acceleration_0_100_num" : '11.4',
"mini_design_models.one_d_baker_street.acceleration_80_120" : '9,5  s / 11,8 s',
"mini_design_models.one_d_baker_street.acceleration_80_120_num" : '9.5',
"mini_design_models.one_d_baker_street.allowed_axle_load_front_rear" : '',
"mini_design_models.one_d_baker_street.basic_financing_price" : '209,00 â‚¬',
"mini_design_models.one_d_baker_street.basic_financing_price_num" : '209',
"mini_design_models.one_d_baker_street.basic_price" : '22.400 â‚¬',
"mini_design_models.one_d_baker_street.basic_price_num" : '22400',
"mini_design_models.one_d_baker_street.body_type" : 'CP',
"mini_design_models.one_d_baker_street.charging_type" : '',
"mini_design_models.one_d_baker_street.co2_emission" : '99 g/km',
"mini_design_models.one_d_baker_street.co2_emission_num" : '99',
"mini_design_models.one_d_baker_street.color" : 'U851, U850, WA95, WA94, WB22, M900, WA93, WB23, M857',
"mini_design_models.one_d_baker_street.color_line" : '4C1',
"mini_design_models.one_d_baker_street.compression_recommended_fuel_type" : '',
"mini_design_models.one_d_baker_street.cubic_capacity" : '1.560 cmÂ³',
"mini_design_models.one_d_baker_street.cubic_capacity_num" : '1560',
"mini_design_models.one_d_baker_street.cushion_material" : 'FKE1',
"mini_design_models.one_d_baker_street.cylinder_type_valve" : '',
"mini_design_models.one_d_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini_design_models.one_d_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.one_d_baker_street.drive_type" : 'Front',
"mini_design_models.one_d_baker_street.drive_type_num" : '',
"mini_design_models.one_d_baker_street.elasticity" : '9,5 / 11,8 s',
"mini_design_models.one_d_baker_street.elasticity_80_100_5" : '',
"mini_design_models.one_d_baker_street.elasticity_num" : '9.5',
"mini_design_models.one_d_baker_street.engine" : 'One D Baker Street',
"mini_design_models.one_d_baker_street.engine_hood_stripes" : 'ohne',
"mini_design_models.one_d_baker_street.engine_num" : '1.4',
"mini_design_models.one_d_baker_street.engine_type" : '',
"mini_design_models.one_d_baker_street.exterior_mirror" : '3AB',
"mini_design_models.one_d_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.542,60 EUR<br />Anzahlung in % 20,28<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 17.857,40 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 357,15 EUR<br />Darlehensgesamtbetrag 19.635,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 12.320,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.one_d_baker_street.financing_disclaimer_headline1" : '',
"mini_design_models.one_d_baker_street.financing_disclaimer_headline2" : '',
"mini_design_models.one_d_baker_street.folding_top_color" : '-',
"mini_design_models.one_d_baker_street.front_brakes" : '',
"mini_design_models.one_d_baker_street.fuel_consumption_combined" : '3,8 l/100 km',
"mini_design_models.one_d_baker_street.fuel_consumption_combined_num" : '3.8',
"mini_design_models.one_d_baker_street.fuel_consumption_extra_urban" : '3,5 l/100 km',
"mini_design_models.one_d_baker_street.fuel_consumption_extra_urban_num" : '3.5',
"mini_design_models.one_d_baker_street.fuel_consumption_urban" : '4,2 l/100 km',
"mini_design_models.one_d_baker_street.fuel_consumption_urban_num" : '4.2',
"mini_design_models.one_d_baker_street.fuel_type" : 'Diesel',
"mini_design_models.one_d_baker_street.fuel_type_num" : '',
"mini_design_models.one_d_baker_street.id" : 'one_d_baker_street',
"mini_design_models.one_d_baker_street.infomaterial_id" : '',
"mini_design_models.one_d_baker_street.interior_surface" : '4BD',
"mini_design_models.one_d_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.one_d_baker_street.luggage_capacity_num" : '160',
"mini_design_models.one_d_baker_street.market_attr1" : '',
"mini_design_models.one_d_baker_street.market_attr2" : '',
"mini_design_models.one_d_baker_street.market_attr3" : '',
"mini_design_models.one_d_baker_street.max_output" : '66/90/4000 kW/PS/1/min',
"mini_design_models.one_d_baker_street.max_output_num" : '99',
"mini_design_models.one_d_baker_street.max_permissible_roof_load" : '75 kg',
"mini_design_models.one_d_baker_street.max_permissible_roof_load_num" : '75',
"mini_design_models.one_d_baker_street.max_permissible_weight" : '1540 kg',
"mini_design_models.one_d_baker_street.max_permissible_weight_num" : '1540',
"mini_design_models.one_d_baker_street.max_torque" : '215/1750 â€“ 2500 Nm/1/min',
"mini_design_models.one_d_baker_street.max_torque_num" : '215',
"mini_design_models.one_d_baker_street.max_torque_overboost" : '-',
"mini_design_models.one_d_baker_street.max_torque_overboost_num" : '-',
"mini_design_models.one_d_baker_street.max_towed_load" : '',
"mini_design_models.one_d_baker_street.model_code" : 'SW11_7HT',
"mini_design_models.one_d_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/index.html'),
"mini_design_models.one_d_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_comparison.png'),
"mini_design_models.one_d_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_small.jpg'),
"mini_design_models.one_d_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/one_d_medium.jpg'),
"mini_design_models.one_d_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_d_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_d_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.one_d_baker_street.model_name" : 'MINI One D Baker Street',
"mini_design_models.one_d_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_one_d.html'),
"mini_design_models.one_d_baker_street.output_per_litre" : '',
"mini_design_models.one_d_baker_street.payload" : '450 kg',
"mini_design_models.one_d_baker_street.range" : '',
"mini_design_models.one_d_baker_street.rear_brakes" : '',
"mini_design_models.one_d_baker_street.rim_dimension" : '5.5J x 15 St',
"mini_design_models.one_d_baker_street.roof_color" : '-',
"mini_design_models.one_d_baker_street.seat_type" : '481',
"mini_design_models.one_d_baker_street.short_description" : '',
"mini_design_models.one_d_baker_street.stroke_bore" : '',
"mini_design_models.one_d_baker_street.tank_capacity" : '40 Liter',
"mini_design_models.one_d_baker_street.tank_capacity_num" : '40',
"mini_design_models.one_d_baker_street.top_speed" : '184 km/h',
"mini_design_models.one_d_baker_street.top_speed_num" : '184',
"mini_design_models.one_d_baker_street.transmission" : '',
"mini_design_models.one_d_baker_street.unladen_weight" : '1090 / 1165 kg',
"mini_design_models.one_d_baker_street.unladen_weight_num" : '1090',
"mini_design_models.one_d_baker_street.weight_ratio" : '',
"mini_design_models.one_d_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.one_d_baker_street.wheels" : '2GA',
"mini_design_models.cooper_baker_street.acceleration_0_100" : '9,1 [10,4] s',
"mini_design_models.cooper_baker_street.acceleration_0_100_num" : '9.1',
"mini_design_models.cooper_baker_street.acceleration_80_120" : '',
"mini_design_models.cooper_baker_street.acceleration_80_120_num" : '',
"mini_design_models.cooper_baker_street.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_baker_street.basic_financing_price" : '209,00 â‚¬',
"mini_design_models.cooper_baker_street.basic_financing_price_num" : '209',
"mini_design_models.cooper_baker_street.basic_price" : '23.100 â‚¬',
"mini_design_models.cooper_baker_street.basic_price_num" : '23100',
"mini_design_models.cooper_baker_street.body_type" : 'CP',
"mini_design_models.cooper_baker_street.charging_type" : '',
"mini_design_models.cooper_baker_street.co2_emission" : '127 [150] g/km',
"mini_design_models.cooper_baker_street.co2_emission_num" : '127',
"mini_design_models.cooper_baker_street.color" : 'U851',
"mini_design_models.cooper_baker_street.color_line" : '4BA',
"mini_design_models.cooper_baker_street.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_baker_street.cubic_capacity" : '1.598 cmÂ³',
"mini_design_models.cooper_baker_street.cubic_capacity_num" : '1598',
"mini_design_models.cooper_baker_street.cushion_material" : 'FKE6',
"mini_design_models.cooper_baker_street.cylinder_type_valve" : '',
"mini_design_models.cooper_baker_street.dimensions" : '3723/ 1683 / 1407 mm',
"mini_design_models.cooper_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.cooper_baker_street.drive_type" : 'Front',
"mini_design_models.cooper_baker_street.drive_type_num" : '',
"mini_design_models.cooper_baker_street.elasticity" : '9,6 / 12,1 s',
"mini_design_models.cooper_baker_street.elasticity_80_100_5" : '',
"mini_design_models.cooper_baker_street.elasticity_num" : '9.6',
"mini_design_models.cooper_baker_street.engine" : 'Cooper Baker Street',
"mini_design_models.cooper_baker_street.engine_hood_stripes" : '327',
"mini_design_models.cooper_baker_street.engine_num" : '',
"mini_design_models.cooper_baker_street.engine_type" : '',
"mini_design_models.cooper_baker_street.exterior_mirror" : '-',
"mini_design_models.cooper_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 4.900,24 EUR<br />Anzahlung in % 21,21<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 18.199,76 EUR<br />Sollzinssatz p.a.* 3,10%<br />BearbeitungsgebÃ¼hr 364,00 EUR<br />Darlehensgesamtbetrag 20.020,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 12.705,00 EUR<br />Zielrate in % 55<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_baker_street.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_baker_street.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_baker_street.folding_top_color" : '',
"mini_design_models.cooper_baker_street.front_brakes" : '',
"mini_design_models.cooper_baker_street.fuel_consumption_combined" : '5,4 [6,4] l/100 km',
"mini_design_models.cooper_baker_street.fuel_consumption_combined_num" : '5.4',
"mini_design_models.cooper_baker_street.fuel_consumption_extra_urban" : '4,6 [5,1] l/100 km',
"mini_design_models.cooper_baker_street.fuel_consumption_extra_urban_num" : '5.1',
"mini_design_models.cooper_baker_street.fuel_consumption_urban" : '6,9 [8,7] l/100 km',
"mini_design_models.cooper_baker_street.fuel_consumption_urban_num" : '6.9',
"mini_design_models.cooper_baker_street.fuel_type" : 'Benzin',
"mini_design_models.cooper_baker_street.fuel_type_num" : '',
"mini_design_models.cooper_baker_street.id" : 'cooper_baker_street',
"mini_design_models.cooper_baker_street.infomaterial_id" : '',
"mini_design_models.cooper_baker_street.interior_surface" : '4DA',
"mini_design_models.cooper_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_baker_street.luggage_capacity_num" : '160',
"mini_design_models.cooper_baker_street.market_attr1" : '',
"mini_design_models.cooper_baker_street.market_attr2" : '',
"mini_design_models.cooper_baker_street.market_attr3" : '',
"mini_design_models.cooper_baker_street.max_output" : '90/122/6000 kW/PS/1/min',
"mini_design_models.cooper_baker_street.max_output_num" : '90',
"mini_design_models.cooper_baker_street.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_baker_street.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_baker_street.max_permissible_weight" : '1525 kg',
"mini_design_models.cooper_baker_street.max_permissible_weight_num" : '1515',
"mini_design_models.cooper_baker_street.max_torque" : '160/4250 Nm/1/min',
"mini_design_models.cooper_baker_street.max_torque_num" : '160',
"mini_design_models.cooper_baker_street.max_torque_overboost" : '',
"mini_design_models.cooper_baker_street.max_torque_overboost_num" : '-',
"mini_design_models.cooper_baker_street.max_towed_load" : '',
"mini_design_models.cooper_baker_street.model_code" : 'SU31_7HT',
"mini_design_models.cooper_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/index.html'),
"mini_design_models.cooper_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_comparison.png'),
"mini_design_models.cooper_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_small.jpg'),
"mini_design_models.cooper_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_medium.jpg'),
"mini_design_models.cooper_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_baker_street.model_name" : 'MINI Cooper Baker Street',
"mini_design_models.cooper_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_cooper.html'),
"mini_design_models.cooper_baker_street.output_per_litre" : '',
"mini_design_models.cooper_baker_street.payload" : '450 kg',
"mini_design_models.cooper_baker_street.range" : '',
"mini_design_models.cooper_baker_street.rear_brakes" : '',
"mini_design_models.cooper_baker_street.rim_dimension" : '5.5J x 15 LM',
"mini_design_models.cooper_baker_street.roof_color" : '382',
"mini_design_models.cooper_baker_street.seat_type" : '481',
"mini_design_models.cooper_baker_street.short_description" : '',
"mini_design_models.cooper_baker_street.stroke_bore" : '',
"mini_design_models.cooper_baker_street.tank_capacity" : '40 Liter',
"mini_design_models.cooper_baker_street.tank_capacity_num" : '40',
"mini_design_models.cooper_baker_street.top_speed" : '203 [197] km/h',
"mini_design_models.cooper_baker_street.top_speed_num" : '203',
"mini_design_models.cooper_baker_street.transmission" : '',
"mini_design_models.cooper_baker_street.unladen_weight" : '1075 / 1150 kg',
"mini_design_models.cooper_baker_street.unladen_weight_num" : '1075',
"mini_design_models.cooper_baker_street.weight_ratio" : '',
"mini_design_models.cooper_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.cooper_baker_street.wheels" : '2RH',
"mini_design_models.cooper_d_baker_street.acceleration_0_100" : '9,7 [10,1] s',
"mini_design_models.cooper_d_baker_street.acceleration_0_100_num" : '9.7',
"mini_design_models.cooper_d_baker_street.acceleration_80_120" : '',
"mini_design_models.cooper_d_baker_street.acceleration_80_120_num" : '',
"mini_design_models.cooper_d_baker_street.allowed_axle_load_front_rear" : '',
"mini_design_models.cooper_d_baker_street.basic_financing_price" : '219,00 â‚¬',
"mini_design_models.cooper_d_baker_street.basic_financing_price_num" : '219',
"mini_design_models.cooper_d_baker_street.basic_price" : '24.800 â‚¬',
"mini_design_models.cooper_d_baker_street.basic_price_num" : '24800',
"mini_design_models.cooper_d_baker_street.body_type" : 'CP',
"mini_design_models.cooper_d_baker_street.charging_type" : '',
"mini_design_models.cooper_d_baker_street.co2_emission" : '99 [135] g/km',
"mini_design_models.cooper_d_baker_street.co2_emission_num" : '99',
"mini_design_models.cooper_d_baker_street.color" : 'WA93',
"mini_design_models.cooper_d_baker_street.color_line" : '4C2',
"mini_design_models.cooper_d_baker_street.compression_recommended_fuel_type" : '',
"mini_design_models.cooper_d_baker_street.cubic_capacity" : '1.560 cmÂ³',
"mini_design_models.cooper_d_baker_street.cubic_capacity_num" : '1560',
"mini_design_models.cooper_d_baker_street.cushion_material" : 'FTGW',
"mini_design_models.cooper_d_baker_street.cylinder_type_valve" : '',
"mini_design_models.cooper_d_baker_street.dimensions" : '3723 / 1683 / 1407 mm',
"mini_design_models.cooper_d_baker_street.dimensions_num" : '3723 / 1683 / 1407',
"mini_design_models.cooper_d_baker_street.drive_type" : 'Front',
"mini_design_models.cooper_d_baker_street.drive_type_num" : '',
"mini_design_models.cooper_d_baker_street.elasticity" : '7,4 / 9,2 s',
"mini_design_models.cooper_d_baker_street.elasticity_80_100_5" : '',
"mini_design_models.cooper_d_baker_street.elasticity_num" : '7.4',
"mini_design_models.cooper_d_baker_street.engine" : 'Cooper D Baker Street',
"mini_design_models.cooper_d_baker_street.engine_hood_stripes" : '327',
"mini_design_models.cooper_d_baker_street.engine_num" : '',
"mini_design_models.cooper_d_baker_street.engine_type" : '',
"mini_design_models.cooper_d_baker_street.exterior_mirror" : '382',
"mini_design_models.cooper_d_baker_street.financing_disclaimer" : 'Bei den Preisangaben handelt es sich um unverbindliche Empfehlungen des Herstellers inklusive 19% MwSt und exklusive ÃœberfÃ¼hrungskosten. Ã„nderungen und IrrtÃ¼mer vorbehalten. Verbindliche PreisauskÃ¼nfte gibt Ihnen gern Ihr MINI HÃ¤ndler.<br  /><br />Ziel-Finanzierung<br />Entspannt ans Ziel. Mit der MINI Ziel-Finanzierung erwerben Sie Ihren MINI und bleiben so finanziell flexibel. Am Vertragsende zahlen Sie die Schlussrate oder wÃ¤hlen eine attraktive Anschlussfinanzierung.<br  /><br />FINANZIERUNGSOPTION ZIEL-FINANZIERUNG<br />Anzahlung 5.218,03 EUR<br />Anzahlung in % 21,04<br />Laufzeit 36 Monate<br />Laufleistung p.a. 15.000 km<br />Ratenschutzversicherung nein<br />RSV PrÃ¤mie 0,00 EUR<br />Nettodarlehensbetrag 19.581,97 EUR<br />Sollzinssatz p.a.* 3,11%<br />BearbeitungsgebÃ¼hr 391,64 EUR<br />Darlehensgesamtbetrag 21.553,00 EUR<br />Effektiver Jahreszins 3,99%<br />Zielrate 13.888,00 EUR<br />Zielrate in % 56<br  /><br />Ziel-Finanzierung: Finanzierungskonditionen<br />Finanzielle FlexibilitÃ¤t Ã¼ber die gesamte Laufzeit. Bei der MINI Ziel-Finanzierung zahlen Sie als monatliche Raten lediglich die Zinsen des Darlehens und nur einen geringen Tilgungsanteil. Die HÃ¶he der monatlichen Raten steuern Sie Ã¼ber eine attraktive Laufzeit und eine Anzahlung auf Wunsch. Die fÃ¤llige Schlussrate bei Vertragsende kÃ¶nnen Sie auf einmal zahlen, oder Sie nutzen einfach die Vorteile einer attraktiven Anschlussfinanzierung. Willkommen am Ziel! Unser Tipp fÃ¼r Sie: die optionale Ratenschutzversicherung. Sie Ã¼bernimmt die Weiterzahlung der laufenden Finanzierungsraten bei ArbeitsunfÃ¤higkeit durch Krankheit, Unfall oder InvaliditÃ¤t ab dem 43. Tag nach Eintritt der ArbeitsunfÃ¤higkeit. Gesetzliche Lohnfortzahlung bis zum 42. Tag. (Ausnahme: Die Schlussrate der MINI Select Finanzierung bzw. der Ziel-Finanzierung). Im Todesfall sind alle noch ausstehenden Raten gedeckt.<br  /><br />Rechtlicher Hinweis<br />Bei dieser Berechnung handelt es sich um eine freibleibende und unverbindliche Musterkalkulation. Direkter Ansprechpartner ist Ihr MINI Partner. Er berÃ¤t Sie gerne ausfÃ¼hrlich und berechnet fÃ¼r Sie das passende Finanzierungsmodell. Ein Angebot der BMW Bank GmbH.<br />*gebunden fÃ¼r die gesamte Vertragslaufzeit.',
"mini_design_models.cooper_d_baker_street.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_d_baker_street.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_d_baker_street.folding_top_color" : '',
"mini_design_models.cooper_d_baker_street.front_brakes" : '',
"mini_design_models.cooper_d_baker_street.fuel_consumption_combined" : '3,8 [5,1] l/100 km',
"mini_design_models.cooper_d_baker_street.fuel_consumption_combined_num" : '3.8',
"mini_design_models.cooper_d_baker_street.fuel_consumption_extra_urban" : '3,5 [4,1] l/100 km',
"mini_design_models.cooper_d_baker_street.fuel_consumption_extra_urban_num" : '',
"mini_design_models.cooper_d_baker_street.fuel_consumption_urban" : '4,2 [6,8] l/100 km',
"mini_design_models.cooper_d_baker_street.fuel_consumption_urban_num" : '4.2',
"mini_design_models.cooper_d_baker_street.fuel_type" : 'Diesel',
"mini_design_models.cooper_d_baker_street.fuel_type_num" : '',
"mini_design_models.cooper_d_baker_street.id" : 'cooper_d_baker_street',
"mini_design_models.cooper_d_baker_street.infomaterial_id" : '',
"mini_design_models.cooper_d_baker_street.interior_surface" : '-',
"mini_design_models.cooper_d_baker_street.luggage_capacity" : '160 - 680 Liter',
"mini_design_models.cooper_d_baker_street.luggage_capacity_num" : '160',
"mini_design_models.cooper_d_baker_street.market_attr1" : '',
"mini_design_models.cooper_d_baker_street.market_attr2" : '',
"mini_design_models.cooper_d_baker_street.market_attr3" : '',
"mini_design_models.cooper_d_baker_street.max_output" : '82/112/4000 kW/PS/1/min',
"mini_design_models.cooper_d_baker_street.max_output_num" : '82',
"mini_design_models.cooper_d_baker_street.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_d_baker_street.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_d_baker_street.max_permissible_weight" : '1540 kg',
"mini_design_models.cooper_d_baker_street.max_permissible_weight_num" : '1540',
"mini_design_models.cooper_d_baker_street.max_torque" : '270/1750 â€“ 2250 Nm/1/min',
"mini_design_models.cooper_d_baker_street.max_torque_num" : '270',
"mini_design_models.cooper_d_baker_street.max_torque_overboost" : '-',
"mini_design_models.cooper_d_baker_street.max_torque_overboost_num" : '-',
"mini_design_models.cooper_d_baker_street.max_towed_load" : '',
"mini_design_models.cooper_d_baker_street.model_code" : 'SW31_7HT',
"mini_design_models.cooper_d_baker_street.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"mini_design_models.cooper_d_baker_street.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_comparison.png'),
"mini_design_models.cooper_d_baker_street.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_small.jpg'),
"mini_design_models.cooper_d_baker_street.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_baker_street/framework/cooper_d_medium.jpg'),
"mini_design_models.cooper_d_baker_street.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_baker_street.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_baker_street.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_d_baker_street.model_name" : 'MINI Cooper D Baker Street',
"mini_design_models.cooper_d_baker_street.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_baker_street/model_quickfacts_cooper_d.html'),
"mini_design_models.cooper_d_baker_street.output_per_litre" : '',
"mini_design_models.cooper_d_baker_street.payload" : '450 kg',
"mini_design_models.cooper_d_baker_street.range" : '',
"mini_design_models.cooper_d_baker_street.rear_brakes" : '',
"mini_design_models.cooper_d_baker_street.rim_dimension" : '5.5J x 15 LM',
"mini_design_models.cooper_d_baker_street.roof_color" : '382',
"mini_design_models.cooper_d_baker_street.seat_type" : '481',
"mini_design_models.cooper_d_baker_street.short_description" : '',
"mini_design_models.cooper_d_baker_street.stroke_bore" : '',
"mini_design_models.cooper_d_baker_street.tank_capacity" : '40 Liter',
"mini_design_models.cooper_d_baker_street.tank_capacity_num" : '40',
"mini_design_models.cooper_d_baker_street.top_speed" : '197 [192] km/h',
"mini_design_models.cooper_d_baker_street.top_speed_num" : '197',
"mini_design_models.cooper_d_baker_street.transmission" : '',
"mini_design_models.cooper_d_baker_street.unladen_weight" : '1090 / 1165 kg',
"mini_design_models.cooper_d_baker_street.unladen_weight_num" : '1090',
"mini_design_models.cooper_d_baker_street.weight_ratio" : '',
"mini_design_models.cooper_d_baker_street.wheel_dimension_num" : '175/65 R15 84H',
"mini_design_models.cooper_d_baker_street.wheels" : '2GC',
"mini_design_models.cooper_s_goodwood.acceleration_0_100" : '7,0 [7,2] s',
"mini_design_models.cooper_s_goodwood.acceleration_0_100_num" : '7',
"mini_design_models.cooper_s_goodwood.acceleration_80_120" : '6,6/8,4 s',
"mini_design_models.cooper_s_goodwood.acceleration_80_120_num" : '6.6',
"mini_design_models.cooper_s_goodwood.allowed_axle_load_front_rear" : '865/745 [890/745] kg',
"mini_design_models.cooper_s_goodwood.basic_financing_price" : '',
"mini_design_models.cooper_s_goodwood.basic_financing_price_num" : '236.52',
"mini_design_models.cooper_s_goodwood.basic_price" : '',
"mini_design_models.cooper_s_goodwood.basic_price_num" : '23100',
"mini_design_models.cooper_s_goodwood.body_type" : 'CP',
"mini_design_models.cooper_s_goodwood.charging_type" : '',
"mini_design_models.cooper_s_goodwood.co2_emission" : '136 [149] g/km',
"mini_design_models.cooper_s_goodwood.co2_emission_num" : '136',
"mini_design_models.cooper_s_goodwood.color" : 'WB24',
"mini_design_models.cooper_s_goodwood.color_line" : '4C1',
"mini_design_models.cooper_s_goodwood.compression_recommended_fuel_type" : '10,5/91â€“ 98 ROZ :1',
"mini_design_models.cooper_s_goodwood.cubic_capacity" : '1598 cmÂ³',
"mini_design_models.cooper_s_goodwood.cubic_capacity_num" : '1598',
"mini_design_models.cooper_s_goodwood.cushion_material" : 'T8E1',
"mini_design_models.cooper_s_goodwood.cylinder_type_valve" : '4/Reihe/4',
"mini_design_models.cooper_s_goodwood.dimensions" : '3729/1683/1407 mm',
"mini_design_models.cooper_s_goodwood.dimensions_num" : '3714 / 1683 / 1407',
"mini_design_models.cooper_s_goodwood.drive_type" : 'Front',
"mini_design_models.cooper_s_goodwood.drive_type_num" : '',
"mini_design_models.cooper_s_goodwood.elasticity" : '5,6/7,0 s',
"mini_design_models.cooper_s_goodwood.elasticity_80_100_5" : '7 s',
"mini_design_models.cooper_s_goodwood.elasticity_num" : '5.6',
"mini_design_models.cooper_s_goodwood.engine" : 'MINI INSPIRED BY GOODWOOD',
"mini_design_models.cooper_s_goodwood.engine_hood_stripes" : '329',
"mini_design_models.cooper_s_goodwood.engine_num" : '1.6',
"mini_design_models.cooper_s_goodwood.engine_type" : '',
"mini_design_models.cooper_s_goodwood.exterior_mirror" : '383',
"mini_design_models.cooper_s_goodwood.financing_disclaimer" : '',
"mini_design_models.cooper_s_goodwood.financing_disclaimer_headline1" : '',
"mini_design_models.cooper_s_goodwood.financing_disclaimer_headline2" : '',
"mini_design_models.cooper_s_goodwood.folding_top_color" : '',
"mini_design_models.cooper_s_goodwood.front_brakes" : '',
"mini_design_models.cooper_s_goodwood.fuel_consumption_combined" : '5.8 l/100 km',
"mini_design_models.cooper_s_goodwood.fuel_consumption_combined_num" : '5,8 [6,4] l/100 km',
"mini_design_models.cooper_s_goodwood.fuel_consumption_extra_urban" : '5,0 [5,0] l/100 km',
"mini_design_models.cooper_s_goodwood.fuel_consumption_extra_urban_num" : '5',
"mini_design_models.cooper_s_goodwood.fuel_consumption_urban" : '7,3 [8,9] l/100 km',
"mini_design_models.cooper_s_goodwood.fuel_consumption_urban_num" : '7.3',
"mini_design_models.cooper_s_goodwood.fuel_type" : 'Benzin',
"mini_design_models.cooper_s_goodwood.fuel_type_num" : '',
"mini_design_models.cooper_s_goodwood.id" : 'cooper_s_goodwood',
"mini_design_models.cooper_s_goodwood.infomaterial_id" : '268466091',
"mini_design_models.cooper_s_goodwood.interior_surface" : '-',
"mini_design_models.cooper_s_goodwood.luggage_capacity" : '160 - 680 l',
"mini_design_models.cooper_s_goodwood.luggage_capacity_num" : '160',
"mini_design_models.cooper_s_goodwood.market_attr1" : '',
"mini_design_models.cooper_s_goodwood.market_attr2" : '',
"mini_design_models.cooper_s_goodwood.market_attr3" : '',
"mini_design_models.cooper_s_goodwood.max_output" : '135/184/5500 kW/PS/1/min',
"mini_design_models.cooper_s_goodwood.max_output_num" : '135',
"mini_design_models.cooper_s_goodwood.max_permissible_roof_load" : '75 kg',
"mini_design_models.cooper_s_goodwood.max_permissible_roof_load_num" : '75',
"mini_design_models.cooper_s_goodwood.max_permissible_weight" : '1590 [1615] kg',
"mini_design_models.cooper_s_goodwood.max_permissible_weight_num" : '1590',
"mini_design_models.cooper_s_goodwood.max_torque" : '240(260)/1600 â€“ 5000 Nm/1/min',
"mini_design_models.cooper_s_goodwood.max_torque_num" : '240',
"mini_design_models.cooper_s_goodwood.max_torque_overboost" : '260/1600 â€“ 5000 Nm/1/min',
"mini_design_models.cooper_s_goodwood.max_torque_overboost_num" : '260',
"mini_design_models.cooper_s_goodwood.max_towed_load" : '',
"mini_design_models.cooper_s_goodwood.model_code" : 'SV31',
"mini_design_models.cooper_s_goodwood.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/finance/index.html'),
"mini_design_models.cooper_s_goodwood.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/modelcomparison_r56_goodwood.jpg'),
"mini_design_models.cooper_s_goodwood.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/r56_goodwood_small.jpg'),
"mini_design_models.cooper_s_goodwood.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/_common/_shared_files/product_presentation/mini_design_models/mini_goodwood/framework/r56_goodwood_medium.jpg'),
"mini_design_models.cooper_s_goodwood.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_goodwood.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_goodwood.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini_design_models.cooper_s_goodwood.model_name" : 'MINI INSPIRED BY GOODWOOD',
"mini_design_models.cooper_s_goodwood.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_design_models/mini_goodwood/model_quickfacts.html'),
"mini_design_models.cooper_s_goodwood.output_per_litre" : '',
"mini_design_models.cooper_s_goodwood.payload" : '450 kg',
"mini_design_models.cooper_s_goodwood.range" : '860 [780] km',
"mini_design_models.cooper_s_goodwood.rear_brakes" : '',
"mini_design_models.cooper_s_goodwood.rim_dimension" : '6,5 J x 16 LM',
"mini_design_models.cooper_s_goodwood.roof_color" : '383',
"mini_design_models.cooper_s_goodwood.seat_type" : '481',
"mini_design_models.cooper_s_goodwood.short_description" : '',
"mini_design_models.cooper_s_goodwood.stroke_bore" : '85,8/77,0 mm',
"mini_design_models.cooper_s_goodwood.tank_capacity" : '50 l',
"mini_design_models.cooper_s_goodwood.tank_capacity_num" : '50',
"mini_design_models.cooper_s_goodwood.top_speed" : '228 [223] km/h',
"mini_design_models.cooper_s_goodwood.top_speed_num" : '228',
"mini_design_models.cooper_s_goodwood.transmission" : '',
"mini_design_models.cooper_s_goodwood.unladen_weight" : '1215 [1240] kg',
"mini_design_models.cooper_s_goodwood.unladen_weight_num" : '1215',
"mini_design_models.cooper_s_goodwood.weight_ratio" : '',
"mini_design_models.cooper_s_goodwood.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_design_models.cooper_s_goodwood.wheels" : '195/55 R 16 87V'
};

var modelIdsByBodyTypeIds = {   
"mini"  :   ["one_55", "one_70", "one_75_baker_street", "one_d", "one_d_baker_street", "cooper", "cooper_bayswater", "cooper_baker_street", "cooper_d", "cooper_d_bayswater", "cooper_d_baker_street", "cooper_s", "cooper_s_bayswater", "cooper_s_goodwood", "cooper_sd", "cooper_sd_bayswater", "mini", "challenge"],
"mini_coupe"  :   ["cooper", "cooper_s", "cooper_sd", "mini_coupe"],
"mini_cabrio"  :   ["one", "cooper", "cooper_highgate", "cooper_d", "cooper_d_highgate", "cooper_s", "cooper_s_highgate", "cooper_sd", "cooper_sd_highgate", "mini_cabrio"],
"mini_roadster"  :   ["cooper", "cooper_s", "cooper_sd", "mini_roadster"],
"mini_clubman"  :   ["one", "one_d", "cooper", "cooper_d", "cooper_s", "cooper_sd", "mini_clubman"],
"mini_countryman"  :   ["one", "one_d", "cooper", "cooper_d", "cooper_d_all4", "cooper_s", "cooper_s_all4", "cooper_sd", "cooper_sd_all4"],
"jcw"  :   ["mini", "mini_coupe", "mini_cabrio", "mini_roadster", "mini_clubman"],
"mini_design_models"  :   ["cooper_bayswater", "cooper_d_bayswater", "cooper_s_bayswater", "cooper_sd_bayswater", "cooper_highgate", "cooper_d_highgate", "cooper_s_highgate", "cooper_sd_highgate", "one_75_baker_street", "one_d_baker_street", "cooper_baker_street", "cooper_d_baker_street", "cooper_s_goodwood"]
};


var bodyIdsToBodyName = {   
mini:'MINI'
,
mini_coupe:'MINI CoupÃ©'
,
mini_cabrio:'MINI Cabrio'
,
mini_roadster:'MINI Roadster'
,
mini_clubman:'MINI Clubman'
,
mini_countryman:'MINI Countryman'
,
jcw:'John Cooper Works'
,
mini_design_models:'Editionsmodelle'

};


var  max  = {   
"fuel_consumption_urban_num" : 9.6,
"co2_emission_num" : 169.0,
"seat_type" : 481.0,
"max_torque_overboost_num" : 280.0,
"roof_color" : 383.0,
"basic_financing_price_num" : 409.0,
"payload" : 460.0,
"luggage_capacity_num" : 350.0,
"cubic_capacity_num" : 1995.0,
"unladen_weight_num" : 1470.0,
"max_permissible_roof_load_num" : 75.0,
"acceleration_0_100_num" : 13.9,
"acceleration_80_120_num" : 13.5,
"fuel_consumption_combined_num" : 7.3,
"max_permissible_weight_num" : 1855.0,
"exterior_mirror" : 383.0,
"max_torque_num" : 305.0,
"basic_price_num" : 49900.0,
"elasticity_num" : 13.9,
"engine_hood_stripes" : 329.0,
"acceleration_80_120" : 11.6,
"top_speed_num" : 240.0,
"fuel_consumption_extra_urban_num" : 5.9,
"max_output_num" : 155.0,
"infomaterial_id" : 2.68472448E8,
"tank_capacity_num" : 50.0,
"engine_num" : 1.7
};

var  min  = {   
"fuel_consumption_urban_num" : 4.2,
"co2_emission_num" : 99.0,
"seat_type" : 481.0,
"max_torque_overboost_num" : 0.0,
"roof_color" : 382.0,
"basic_financing_price_num" : 139.0,
"payload" : 460.0,
"luggage_capacity_num" : 0.0,
"cubic_capacity_num" : 1560.0,
"unladen_weight_num" : 1070.0,
"max_permissible_roof_load_num" : 75.0,
"acceleration_0_100_num" : 6.1,
"acceleration_80_120_num" : 5.1,
"fuel_consumption_combined_num" : 3.8,
"max_permissible_weight_num" : 1380.0,
"exterior_mirror" : 382.0,
"max_torque_num" : 140.0,
"basic_price_num" : 30.45,
"elasticity_num" : 5.2,
"engine_hood_stripes" : 327.0,
"acceleration_80_120" : 11.6,
"top_speed_num" : 170.0,
"fuel_consumption_extra_urban_num" : 3.5,
"max_output_num" : 55.0,
"infomaterial_id" : 2.6846496E8,
"tank_capacity_num" : 40.0,
"engine_num" : 1.4
};




var fuelTypes = new Array();fuelTypes[0] = 'Benzin';
fuelTypes[1] = 'Diesel';
var driveTypes = new Array();driveTypes[0] = 'Front';
driveTypes[1] = '';

}catch(e){console.log('Error in model_data_js: ' + e.description);}

// ---- m_perso_mapping ----
try{ function PersoMapping(){ 

	var ret = {

		CONF_PERSO_ENGINE_PID: 2,
		CONF_PERSOENGINE_URL: window.location.protocol + "//perso.mini.com/persoengine",

		// ... controller url  --> Send Event
		CONF_PERSOENGINE_EVENT_CONTROLLER: "/servlet/event",

		// .. profile controller url --> Request profile
		CONF_PERSOENGINE_PROFILE_CONTROLLER: "/servlet/profile?pid=",

		CONF_PERSOENGINE_PROFILE_TYPE: "&rtyp=js",

		CONF_PERSO_CATEGORY_GROUP: "KA",
		
		CONF_PERSO_TIMEOUT: 2000,
		
		/**
		 * hierin wird die URL geparst und die Logik der Interone
		 * EventMatrix implementiert
		 */	
		get_event_type_for_current_url : function() {

			var financial_services =  /\/mini\/.*\/financial_services\/.*/;		//must be first becaous of subset of /\/mini\/.*/
	
			var news_events =   /\/news_events\/.*/;
			var minimalism =   /\/minmalism\/.*/;
			var community =   /\/community\/.*/;
			
			var model_filter =  /\/model_filter\/.*/;
			var model_comparison =  /\/model_comparison\/.*/;
			var mini =  /\/mini\/.*/;
			
			var service =   /\/service\/.*/;
			
			var finance =  /\/finance\/.*/;
			
			var accessories =  /\/accessories\/.*/;
			var lifestyleshop =  /\/lifestyleshop\/.*/;
			var my_accessories =  /\/my_accessories\/.*/;
			
			var used_cars =  /\/used_cars\/.*/;
			
			/*Download  Gallery - not yet implemented
			var download_product = 
			var download_brand = 
			*/
			
			var newsletter =  /\/newsletter\/.*/;
			
			var open_silo_rfi =  /\/contact\/information\/.*/;
			var finish_silo_rfi =  /\/contact\/confirmation\/.*formName\=rfi/;
			
			var open_silo_tda =  /\/contact\/test_drive\/.*/;
			var finish_silo_tda =  /\/contact\/confirmation\/.*formName\=tda/;
			
			var open_vco =  /\/configurator\/.*/;
			
			var open_ecom_rfo =  /\/contact\/quote\/.*/;
			
			var owners_lounge =  /\/owners_lounge\/.*/;
			

			var map_pattern_2_event = {
				financial_services : "E4",
				news_events : "E1",
				minimalism : "E1",
				community : "E1",
				model_filter : "E2",
				model_comparison : "E2",
				mini : "E2",
				service : "E3",
				finance : "E4",
				accessories : "E5",
				lifestyleshop : "E5",
				my_accessories : "E5",
				used_cars : "E6",
				newsletter : "E9",
				open_silo_rfi : "E12",
				finish_silo_rfi : "E13",
				open_silo_tda : "E15",
				finish_silo_tda : "E16",
				open_vco : "E17",
				open_ecom_rfo : "E18",
				owners_lounge : "E19"
			};
	
			for (var pattern in map_pattern_2_event ) {
				if (window.location.pathname.search(pattern)> -1) {
				
				
					return map_pattern_2_event[pattern];
				}
			}
	
			return "";  
		}
			};

	return ret;
}

var persoMap = PersoMapping();
}catch(e){console.log('Error in m_perso_mapping: ' + e.description);}

// ---- m_breadcrumb ----
try{ var faqMapping = new Array();
var bcOriginal;
var breadcrumbContainer;
var isContactPage;
var isFaqPage;
var isEcomPage;

// Max length from bredacrumb in pixels.
var MAX_BREDACRUMB_LENGTH = 550;

// Read query parameters
var query = getQueryParams();

function initBreadcrumb(breadcrumbContent){
	breadcrumbContainer = $(getBreadcrumbId());
	// Set breadcrumb content
	breadcrumbContainer.html(breadcrumbContent);
	
	// Remember original breadcrumb
	bcOriginal = breadcrumbContent;
	
	if(query.bcId === undefined)
		showBreadcrumb();
}

function trimBreadcrumb(){
	// trim deactivated QC#633 Problems in Safari
	return;
	try{
		var ul = $(getBreadcrumbId()+'>ul');
		var breadcrumbWidth = parseInt(ul.outerWidth(), 10);
		var i = 1;
		var maxLoops = 10;
		
		// Breadcrumb length should not exceed 550px.
		while(breadcrumbWidth > MAX_BREDACRUMB_LENGTH){
			if(maxLoops<=0)
				break;
			maxLoops--;
			
			var a = ul.find('a:nth('+i+')');
			a.text('...');
			i++;
			breadcrumbWidth = ul.outerWidth();
		}
	}
	catch(e){}
}

// Remove query parameter from footer links
function removeQueryParamFromLink(link){
	link.each( function(index){
		if ((typeof $(this) === 'undefined') || ($(this) == null))  return;
		var oldHref = $(this).attr('href');
		if (oldHref == null) return;
		var newHref = oldHref.split('?')[0];
		
		// Set new value for href
		$(this).attr('href', newHref);
	});
}

function showBreadcrumb(){
	// Set tracking information
	$(getBreadcrumbId()+'>ul>li>a').attr('data-tracking','linktype=text_bread');
	
	// Set breadcrumb visible
	breadcrumbContainer.show();
	
	// Trim breadcrumb to max 550px
	trimBreadcrumb();
	
	if(isContactPage){
		removeQueryParamFromLink($('#footer #footer_contact_id a'));
		removeQueryParamFromLink($('.quicklink a'));

		if(query.mod_nav == undefined || query.mod_nav == ''){
			// If contact page and no custom module navigation then hide module_navigation
			moduleNaviInitState = 'none';
			$('#left_menu').hide();
		}
		else{
			moduleNavigation.initModuleNav(true);
		}
	}
	else if(isFaqPage){
		// Init faq menu
		initFaqMenu(faqMapping);
		removeQueryParamFromLink($('.quicklink a'));
				
		$('#footer .footer_element').each(
			function(index){
				var elem = $(this);
				var elemId = elem.attr('id');
				
				// Do not remove param on contact link
				if(elemId == 'footer_contact_id')
					return;
					
				removeQueryParamFromLink(elem.find('a'));
			}
		);
	}
}
var faqLink = miniUrlFix.fixAbsoluteUrl('/faq/index.html');
function patchLink(link){
	// Patch link only if it goes to:
	// 1- A contact form
	// 2- A FAQ Page
	var pathname = link[0].pathname;
	
	if(typeof form_tracking[pathname] === 'undefined' && pathname.indexOf(faqLink)<0)
		return;

	var href = link.attr('href');
	var splits = href.split('?');
	var oldHref = splits[0];
	var oldParams = splits[1];
	var newParams = new Array();
	if(oldParams != undefined && oldParams != '')
		newParams.push(oldParams);
	
	if(window['module_navigation'] != undefined && module_navigation != ''){
		newParams.push('mod_nav='+miniUrlFix.fixAbsoluteUrl(module_navigation));
	}

	newParams.push('bcId='+window.location.pathname);

	var newHref = oldHref+'?' + (newParams.join('&'));
	link.attr('href', newHref);
	// Mark this link as patched
	link.attr('data-patched','1');
}

function getBreadcrumbId() {
  if(typeof isMobileDevice === 'function' && isMobileDevice()) {
    return '#mobile_breadcrumb';
  } else {
    return '#breadcrumb';
  }
}

$(document).ready(
	function(){
		//kfi script:
		if (typeof runInterStitial === 'function') {     
		    var mininsc = window.location.hostname;
			if (mininsc.indexOf("mini.de") > -1) {
				runInterStitial('6', 'mini');  
			}
			if (mininsc.indexOf("mini.com") > -1) {
				runInterStitial('4', 'mini');  
			}
			 
		}
	
		bcOriginal = $('#breadcrumb_for_seo').html();
		if(breadcrumbContainer==undefined){
			breadcrumbContainer = $(getBreadcrumbId());
		}
		
		// Append breadcrumb on each footer_element link and all call-to-action links except contact footer link
		// Append current module navigation path to contact link in footer and all call-to-action links
		isContactPage = $('#contact_intro_visible').length > 0;
		isFaqPage = $('#faq_container').length > 0;
		isEcomPage = $('.vco').length > 0 || $('.rfo').length > 0 || $('.rfci').length > 0;

		$('a').each(
			function(index){
				var link = $(this);
				
				// Append current module navigation path only if this is a call to action link
				// THIS DOES NOT APPLY FOR FAQ PAGES OR CONTACT LINK ON FOOTER
				if(link.parent('#footer_contact_id').length > 0){
					return;
				}
				
				var href = link.attr('href');
				
				if(typeof href === 'undefined' || href==='' || href==='#' || href.indexOf('javascript:')===0 || href.indexOf('mailto:')===0){
					// Ignore empty links, links starting with #, javascript: or mailto:
					return;
				}
				
				patchLink(link);
			}
		);
		
		// Patch other links that go to contact form or contact_dealer but are not
	
		// Modify breadcrumb according to refererer's breadcrumb if available
		if(query.bcId !== undefined && (isContactPage || isFaqPage || isEcomPage)){
			// THIS APPLIES ONLY ON CONTACT OR FAQ PAGES
			var referrerPageURL = query.bcId;
			// Referrer set --> Load page to get the breadcrumb
			var bcParam = $('<ul>');
			// TODO remove this line bcParam.load(referrerPageURL+' #breadcrumb_for_seo>ul',

			if(miniUrlFix.isPreview === true){
				var bcPageUrl = referrerPageURL;
			}
			else{
				var bcPageUrl = referrerPageURL + ';sticky_3kDk44d';
			}

			bcParam.load(bcPageUrl + ' #breadcrumb_for_seo>ul',
				function(){
					bcParam.find('.current').removeClass('current').addClass('current_imported');
			
					// If we are on FAQ Page --> Build oid array for FAQ by finding all visible <a> within bcParam
					if(isFaqPage){
						bcParam.find('li a').each(
							function(index){
								var oid = $(this).attr('data-oid');
								faqMapping.push(oid);
							}
						);
					}
					
					var bcPage = $(bcOriginal).find('.current').appendTo(bcParam);
					breadcrumbContainer.children('ul').html(bcParam.html());
					
					// Fix urls before showing
					miniUrlFix.doPartialFix(getBreadcrumbId()); 

					showBreadcrumb();
				}
			);
		}
		else{
			showBreadcrumb();
		}
	}
);

}catch(e){console.log('Error in m_breadcrumb: ' + e.description);}

// ---- lazyload ----
try{ function lazyLoadJavaScript(url){
	var fileref = document.createElement('script');
	fileref.setAttribute("type", "text/javascript");
	fileref.setAttribute("src", url);
	
	document.getElementsByTagName("head")[0].appendChild(fileref);
}

}catch(e){console.log('Error in lazyload: ' + e.description);}

// ---- m_information_table ----
try{ var infoTables = {};

$(document).ready(function(){
	if(jQuery('.information_table_container_parent').length === 0) return;

	// Korrigiere die Hoehe von den divs in information_table_col bei falls mode == 2_col_expandable
	positionTableDivs('');
	
	Cufon.replace('.teaser_component_link a', { hover: true });
	// Modify offset if not IE
	var newOffset = {};
	if(getInternetExplorerVersion() < 0)
		newOffset = {leftOffset:-1, topOffset:-1};
	else
		newOffset = {leftOffset:-1, topOffset:0};
		
	Cufon.replace('.information_table_headline', newOffset);
});

function positionTableDivs(selector){
	$(selector+' .2_col_expandable:visible').each(
		function(index){
			var table = $(this);
			// Do nothing if table has already been positioned
			if(table.attr('info_table_positioned') == 'true')
				return;
				
			table.find('.information_table_col:visible').each(
				function(ix) {
					var cell = $(this);						
					var cellHeight = cell.height();
					
					if(cellHeight > 18 && cellHeight <= 36)
						// Two lines of text
						cellHeight = 37;
					else if(cellHeight > 36 && cellHeight <= 54)
						// Three lines of text
						cellHeight = 56;
					else if(cellHeight > 54 && cellHeight <= 72)
						// Four lines of text
						cellHeight = 75;
						
					// Set the new height
					cell.css('height', cellHeight+'px');
				}
			);
			/* QC723*/
			table.find('.information_table_container:visible').each(
					function(ix) {
						var table = $(this);
						var tableId= table.attr('id');
						
						var secondColWidth = infoTables[tableId]['second_col_width'];
						var tableBorderWidth = infoTables[tableId]['table_border_width'];
						var tableWidth = infoTables[tableId]['table_width'];
						
						table.css('width', (secondColWidth - tableBorderWidth*2) + 'px');
						table.parent().css('width', secondColWidth + 'px');
						
						table.parent().prev().show();
					}
			);
			
			table.attr('info_table_positioned', 'true');
		}
	);
}

function initInfoTable(id, tableBorderWidth, tableWidth, firstColWidth, secondColWidth, teaserObjectWidth, maximizeText, minimizeText){
	infoTables[id] = {};
	infoTables[id]['table_border_width'] = tableBorderWidth;
	infoTables[id]['table_width'] = tableWidth;
	infoTables[id]['first_col_width'] = firstColWidth;
	infoTables[id]['second_col_width'] = secondColWidth;
	infoTables[id]['teaser_object_width'] = teaserObjectWidth;
	infoTables[id]['maximize_text'] = maximizeText;
	infoTables[id]['minimize_text'] = minimizeText;
}
	
function toogleTable(tableId, tgLink){
	var table = $('#'+tableId);
	var ft = table.find('.ft a');
	var link = $(tgLink);
	var status = link.attr('rel');
	
	var secondColWidth = infoTables[tableId]['second_col_width'];
	var tableBorderWidth = infoTables[tableId]['table_border_width'];
	var maximizeText = infoTables[tableId]['maximize_text'];
	var minimizeText = infoTables[tableId]['minimize_text'];
	var tableWidth = infoTables[tableId]['table_width'];
	
	if(status == 'MAX'){
		// Minimize table
		table.css('width', (secondColWidth - tableBorderWidth*2) + 'px');
		table.parent().css('width', secondColWidth + 'px');
		
		table.parent().prev().show();
		link.parents(".information_table_footer").find("a").attr('rel','MIN');
		ft.html(maximizeText);
		table.find('.toogle_icon').toggleClass('toogle_icon_close');
	}
	else{
		// Maximize table
		table.parent().prev().hide();
		table.css('width', (tableWidth - tableBorderWidth*2) + 'px');
		table.parent().css('width', tableWidth + 'px');
		
		link.parents(".information_table_footer").find("a").attr('rel','MAX');
		ft.html(minimizeText);
		table.find('.toogle_icon').toggleClass('toogle_icon_close');
	}
}
}catch(e){console.log('Error in m_information_table: ' + e.description);}

// ---- m_main_navigation ----
try{ var OsDetect = {
      init: function () {
        this.OS = this.searchString(this.dataOS) || "an unknown OS";
      },
      searchString: function (data) {
        for (var i=0;i<data.length;i++)  {
          var dataString = data[i].string;
          var dataProp = data[i].prop;
          this.versionSearchString = data[i].versionSearch || data[i].identity;
          if (dataString) {
            if (dataString.indexOf(data[i].subString) != -1)
              return data[i].identity;
          }
          else if (dataProp)
            return data[i].identity;
        }
      },
      dataOS : [
        {
          string: navigator.platform,
          subString: "Win",
          identity: "Windows"
        },
        {
          string: navigator.platform,
          subString: "Mac",
          identity: "Mac"
        },
        {
           string: navigator.userAgent,
           subString: "iPhone",
           identity: "iPhone/iPod"
        },
        {
           string: navigator.userAgent,
           subString: "iPod",
           identity: "iPhone/iPod"
        },
        {
          string: navigator.platform,
          subString: "Linux",
          identity: "Linux"
        }
      ]
     
    };
    OsDetect.init();

function isMobileUrlParam() {
	var mobile = false;
	try {
		mobile = jQuery.url.param("mobile");
	}
	catch(ex) {
		console.log("Exception while accessing mobile URL param: " + ex);
	}
	return mobile;
}

$(document).ready( function() {
	mainNavigation.initMainNav() ;       
});
    
$(window).resize(function() {
	mainNavigation.liquifyMainNav(); 
});
    
function MainNavigation(){ 
	var ret = {            
		mn: this,        
		OPEN_DELAY : 150, /* timeout in ms */
		OPEN_RETRY : 100, /* timeout in ms */
		CLOSE_DELAY : 800, /* timeout in ms */
		OPEN_SPEED : 50, /* speed of the animation for the menu */
		CLOSE_SPEED:0,
		ANIMATION : 'swing',
		actionTimer : null,
		items : new Array(null, null, null, null),
		isOpening : false,
		actionItem : null,
		level : 0,
    
    initMainNav:function() {
		if ($("#mainnav").length === 0) return;
		
		// Check for mobile devices
		if (typeof isMobileDevice === 'function' && isMobileDevice()) {
			buildMobileMenu();
		}
		Cufon.replace('.l1_text, .l1_text_hover, .error_component_headline, .error_component_link_standard' );
        
        
		$('.ul_level_1, .mobile_ul_level_1').mouseleave(function() {mainNavigation.setCloseTimer($(this).children('li:first'));});
     
    // QC1835
    if(typeof isMobileDevice === 'function' && isMobileDevice() || isMobileUrlParam()){
      $('.ul_level_1 li div:first-child, .ul_level_1 li span:first-child, .mobile_ul_level_1 li').click(function() {
        mainNavigation.setOpenTimer($(this).parent());
      });
    }else{ // not mobile main nav
      $('.ul_level_1 li, .mobile_ul_level_1 li').mouseenter(function() {
        mainNavigation.setOpenTimer(this);
      });
    }

		$('.ul_level_1 li, .mobile_ul_level_1 li').click(function(){
		  /* dummy click handler must be set to trigger iPhone to generate mouse move events */
		  mainNavigation.iPhoneDumyClickHandler();
		}); 
      
		this.liquifyMainNav() ;
		if( OsDetect.OS == 'Mac') {
			$('ul.ul_level_3, ul.ul_level_4, ul.ul_level_5').css('margin-top','-32.5px');
		}
		
    // QC1835
		if(typeof isMobileDevice === 'function' && isMobileDevice() || isMobileUrlParam()){
          $('li span[class*="_hover"], li div[class*="_hover"]').click(function(){
             $(this).parent().siblings().show();
             // deselect menue entry
             $(this).hide();
             $(this).siblings('div, span').show();
             // close all submenues
             $(this).parent().parent().children().each(function(index, liElement){
               $(liElement).find('ul').hide();
             });
             //$(this).parent().parent().parent().siblings().hide();
          });
        }
    },
    
    /* parse the level from style class, e.g. main_nav_level_1 */
    getLevel : function() {
        return  (this.actionItem.attr("class").split(" ")[0].split("_")[3]) - 1;
    },
    
    /* Open the submenu and stores the object, to close it later */
    openMainNavSubMenu : function() {
		if( miniSubsidiaryLayer ) {
			miniSubsidiaryLayer.hideLayer();
		}
		this.main_navigation_unhighlight();
		this.main_navigation_highlight();
		isOpening = true;
		
		/*Another submenu is selected*/
        if(this.actionItem.children('ul').length > 0){
			if(this.actionItem.children('ul').css('display') == 'none') {
				this.closeMainNavSubMenu();

                // cufonize submenue entries on demand, performance optimization
                if(this.actionItem.attr('title') !== 'cufonized' && getInternetExplorerVersion() < 0){
                    this.actionItem.attr('title', 'cufonized');
                    Cufon.replace(this.actionItem.children('ul').children('li').children('.submenu_text_hover, .submenu_text'));
                }

				this.items[this.level] = this.actionItem.children('ul').animate({ height: 'show' }, this.OPEN_SPEED, this.ANIMATION);
				if( this.level == 3 ) {
					this.items[this.level].css('left',(this.items[this.level].width()) + 'px');
					if($(window).width() < (this.items[this.level].offset().left + this.items[this.level].width())) { 
						this.items[this.level].css('left','-' + (this.items[this.level].outerWidth()) + 'px');
					}                    
				}
            }
            /* submenu is already open, close deeper submenus*/
            else {
				this.level = this.level+1;
				this.closeMainNavSubMenu();
            }
        }
        /* Another menu item, no submenu, is selected */
        else {
			this.closeMainNavSubMenu();
        }
        if(this.level === 0) {
          this.setAppletContentVisible(false);
          teaser.stopTeaserAutoChangeTimer();
        }
        isOpening = false;
        
        // QC1835
        if(typeof isMobileDevice === 'function' && isMobileDevice() || isMobileUrlParam()){
			if(this.actionItem.attr("class").indexOf('main_nav_has_submenu') >= 0){
				this.actionItem.siblings().hide();
			}
        }
    },

    /* Closes the menu level and all sublevel*/
    closeMainNavSubMenu : function() {
        for(var i = 3; i>=this.level; i-- ) {
            if( this.items[i] ) {                            
				this.items[i].animate({ height: 'hide' }, this.isOpening? 0 : this.CLOSE_SPEED, this.ANIMATION);
              
				// QC1835
				if(typeof isMobileDevice === 'function' && isMobileDevice() || isMobileUrlParam()){
					this.items[i].children('li').show();
				}
              
				this.items[i] = null;        
            }
        }
        if (this.level === 0 && !this.isOpening) {
			this.setAppletContentVisible(true);
        }
    },
    
    closeMainNav : function() {
      this.main_navigation_unhighlight();
      this.closeMainNavSubMenu();
      teaser.startTeaserAutoChangeTimer();
    },
    
    main_navigation_highlight : function() {
		if(this.level === 0 ) {
			this.actionItem.css('background-color','#FFFFFF');
			this.actionItem.children('.l1_text').hide();
			this.actionItem.children('.l1_text_hover').css('display', 'block');
			
			this.actionItem.children('.submenu_text:first').hide();
			/* The next line is for IE6 + 7 to avoid jumping links (bug)*/
			this.actionItem.children('.submenu_text_hover:first').css('display','inline-block');
			this.actionItem.children('.submenu_text_hover:first').css('display','block');
		}
		else {
			this.actionItem.children('.submenu_text').hide();
			/* The next line is for IE6 + 7 to avoid jumping links (bug)*/
			this.actionItem.children('.submenu_text_hover').css('display','inline-block');
			this.actionItem.children('.submenu_text_hover').css('display','block');
		}
    },
    
    main_navigation_unhighlight : function() {
		var parent = this.actionItem.parent();
		if(this.level === 0 ) {
			parent.children('li').css('background-color','#000000');
			parent.find('.l1_text_hover').hide();
			parent.find('.l1_text').css('display', 'block');
			
			parent.find('.submenu_text_hover:first').hide();
			/* The next line is for IE6 + 7 to avoid jumping links (bug)*/
			parent.find('.submenu_text:first').css('display','inline-block');
			parent.find('.submenu_text:first').css('display','block');
		}
		parent.find('.submenu_text_hover').hide();
		/* The next line is for IE6 + 7 to avoid jumping links (bug)*/
		parent.find('.submenu_text').css('display','inline-block');
		parent.find('.submenu_text').css('display','block');
    },
    
    setOpenTimer : function(item) {
      this.unsetActionTimer();
      this.actionItem = $(item);
      this.level = this.getLevel();
      this.actionTimer = window.setTimeout(function() { 
        mainNavigation.openMainNavSubMenu();
      }, this.OPEN_DELAY);
    },
    
    /* Starts a timer to close the menu delayed and closes the menu */
    setCloseTimer : function(item) {
		this.unsetActionTimer();
		this.actionItem = $(item);
		this.level = this.getLevel();
		this.actionTimer = window.setTimeout(function() { 
			mainNavigation.closeMainNav();
		}, this.CLOSE_DELAY);
    },

    /* resets the timers */
    unsetActionTimer : function() {
        if(this.actionTimer) {
            window.clearTimeout(this.actionTimer);
            this.actionTimer = null;
            this.actionItem = null;
            this.level = 0;
        }
    },
    
    /* dummy click handler must be set to trigger iPhone to generate mouse move events */
    iPhoneDumyClickHandler : function() {
        /* do nothing */
    },
    
    liquifyMainNav : function() {
          var winWidth=$(window).width();
          if( winWidth < 968 ) //min
              winWidth = 968;
          if( winWidth > 1220 ) //max
              winWidth = 1220;
          var winSizeDiff = 1220 - winWidth;
          var menuLeftOffset = winSizeDiff / 6.6;
          $('#mainnav').css('left',(270-menuLeftOffset) + 'px' );
          /*  move the 3 icons tell-a-friend, sound and print to the next line */
          if(winWidth < 1095) {
			$('.header_search_icons').addClass('header_search_icons_small');
          }
          else {
            $('.header_search_icons').removeClass('header_search_icons_small');
          }
    },
  
  /* Shows or hides the IFrame content with applet */
  setAppletContentVisible : function(visible){
      var ac = jQuery('.applet_content');
      var fi = jQuery('#iframe_fallback_image');

      if(ac.length === 0) return;

      if (visible){
        ac.css("visibility", "visible");
        fi.css("display", "none");        
      }
      else{
        ac.css("visibility", "hidden");
        fi.css("display", "block");
      }
    }
     };
     return ret;
}
mainNavigation = MainNavigation();

}catch(e){console.log('Error in m_main_navigation: ' + e.description);}

// ---- m_sharing ----
try{ /* These functions are used in the accessories showroom */
function greyLayer_show() {
  greyLayer.greyLayer_show();
}
function greyLayer_hide() {
  greyLayer.greyLayer_hide();
}

  $(document).ready( function() {
      sharing.initSharing();
    }
  );
  


function GreyLayer(){ 
    var obj = {
      greyLayer_show : function() {
        var scroll_width = $(document).width() + 'px';
        var scroll_height = $(document).height() + 'px';
        var inactiveBodyDiv = $('<div/>').attr('id','grey_layer');
        
        $('body').append(inactiveBodyDiv);
        $('#grey_layer').css('position', 'absolute');
        $('#grey_layer').css('top', '0px');
        $('#grey_layer').css('left', '0px');
        $('#grey_layer').css('z-index', '80');
        $('#grey_layer').css('background-color', '#000');
        $('#grey_layer').css('width', scroll_width);
        $('#grey_layer').css('height', scroll_height);
        $('#grey_layer').css('zoom', '1');
        $('#grey_layer').fadeTo(0, 0.5);
      },
      greyLayer_hide : function() {
          $('#grey_layer').remove();
      }
    };
    return obj;
  }
  greyLayer = GreyLayer();


function plusone_vote(obj){
    try{ // in case google changes the interface
        if(obj.state === 'on')
            miniTracking.trackLikeButtonAction('like', 'google_plus');
        else if(obj.state === 'off')
            miniTracking.trackLikeButtonAction('unlike', 'google_plus');
    }catch(error){
        // ignore
    }
}

function Sharing(){ 
      var obj = {
          sh : this,
timer : null,
DELAY : 500, 
SPEED : 100,

initSharing : function() {
  var sharing_tmpl_url;
  var hideForMobile;
  if(typeof isMobileDevice === 'function' && isMobileDevice()) {
	sharing_tmpl_url = getRelativeMasterPath( "_general/_obj/sharing_buttons_mobile.html")
	repositionSharingLayer();
	hideForMobile = true;
  }
  else {
	sharing_tmpl_url = getRelativeMasterPath( "_general/_obj/sharing_buttons.html" )
	hideForMobile = false;
  }
  

  if(((typeof(sharing_visible) !== 'undefined') && sharing_visible) || isAudioControlEnabled() || isPrintEnabled()) {
    jQuery.ajax( {
      url: sharing_tmpl_url,
      dataType: 'html',
      context: window.document,
      timeout: 1000, 
      async: false,
      success : function(data){
        jQuery('#headericons').html(sharing.extractBody( data ) );
        miniUrlFix.doPartialFix('#headericons');
		
		jQuery("#facebook_sharing_iframe").html(sharing.extractSharingIframes());
        
        // init fb api, register tracking handler
        var fbComponent = new facebookLikeButton();
        fbComponent.init(0, '');  // 0 = id of the fb like button in the sharing layer

		if (typeof(gPlusSize) !== 'undefined' && gPlusSize) {
			$("#sharing_gplus").html("<G:PLUSONE id=\"sharing_gplus_button\" size=\"" +gPlusSize+ "\" href=\"\" callback=\"plusone_vote\"></G:PLUSONE>");
            addLikeURLToGooglePlusButton('sharing_gplus_button');
			lazyLoadJavaScript("https://apis.google.com/js/plusone.js");
		}

        if (sharing_visible) {
          sharing.fill_sharing_layer();
        }
		
		
        if (isAudioControlEnabled() && !hideForMobile){			
          soundInit();
        }
        if(!hideForMobile && isPrintEnabled()) {			
			printInit();
        }
        if(isTAFEnabled()) {
          tellAFriendInit();
        }
        // Add tell a friend href attribute
        $('#taf a').attr('href', 'javascript:loadTellAFriendLayer();');
      } // success
    }); // ajax
  } 
  setSoundMute(getSoundMute());
  if (!isPrintEnabled() && typeof(print_visible) === 'undefined') {
	//Wenn der ZBS gedruckt wird
	addPrintCSS();
  }
},

getLangCodeForFB : function(){
    var langCode = "en";
	var countryCode = "GB";
	if ((topicCountry !== null) && (typeof(topicCountry) !== 'undefined')) {
		countryCode = topicCountry.toUpperCase();
	}
	if ((topicLanguage !== null) && (typeof(topicLanguage) !== 'undefined')) {
		langCode = topicLanguage.toLowerCase();
	}
	var fbLangCode = langCode + "_" + countryCode;
	switch(fbLangCode) {
		case "en_IE": 
			fbLangCode="en_GB";
			break;
		case "de_CH": 
			fbLangCode="de_DE";
			break;
		case "en_IE": 
			fbLangCode="en_GB";
			break;
		case "it_CH": 
			fbLangCode="it_IT";
			break;
		case "fr_CH": 
			fbLangCode="fr_FR";
			break;
		case "fr_BE": 
			fbLangCode="fr_FR";
			break;
		case "fr_LU": 
			fbLangCode="fr_FR";
			break;
		case "en_CA": 
			fbLangCode="en_GB";
			break;
		case "no_NO": 
			fbLangCode="nn_NO";
			break;
		case "en__MASTER": 
			fbLangCode="en_GB";
			break;
		case "de__MASTER":
			fbLangCode="de_DE";
			break;
	}
	return fbLangCode;
},

fill_sharing_layer : function(data){
    
  this.hideBookmark();
  $('.icon_share').show();
  Cufon.replace('.sharing_header, .sharing_others_text, .sharing_others_input_text, .sharing_icon a span');
  $('#sharing_link').val( window.location );
  
  $('.icon_share').hover(function(){sharing.openSharingLayer();}, function(){sharing.setSharingCloseTimer();});
  $('.sharing_container').hover(function(){sharing.unsetSharingCloseTimer();}, function(){sharing.setSharingCloseTimer();});
},

extractBody : function( htmlData ) {

    var start_i = htmlData.indexOf("<body>") + "<body>".length;
    var end_i = htmlData.indexOf("</body>");
    
    if (start_i>=0 && end_i>0)
      htmlData = htmlData.substring(start_i, end_i);
          
    return htmlData;
  },
  
extractSharingIframes : function() {
	$('#sharing_link').val(window.location);
	var sharingIframeResult = '<div id="facebook_like_button_0"><div class="fb-like" data-href="" data-send="false" data-layout="button_count" data-width="110" data-show-faces="false" data-action="like" data-colorscheme="dark"></div>';
	return sharingIframeResult;
  },

hideBookmark : function() {
  if(getInternetExplorerVersion() < 0) {
     $('#bookmark').css('display', 'none');
  }
},
icon_highlight : function() {
    var img = $('.icon_share').children('.icon_share_img');
	if ( (typeof(img.attr('src')) !== 'undefined') && img.attr('src')) {  
      img.attr('src', img.attr('src').replace('.png', '_active.png')); 
    }    
},
icon_unhighlight : function() {
    var img = $('.icon_share').children('.icon_share_img');
	if ( (typeof(img.attr('src')) !== 'undefined') && img.attr('src')) {  
		img.attr('src', img.attr('src').replace('_active.png', '.png')); 
	}
},
unsetSharingCloseTimer : function() {
    if( this.timer ) {
        window.clearTimeout(this.timer);
        this.timer = null;
    }
},
setSharingCloseTimer : function() {
   if(!isMobile) {
     this.timer = window.setTimeout(function(){sharing.closeSharingLayer();}, this.DELAY);
   }
},
closeSharingLayer : function() {
    this.icon_unhighlight();
    greyLayer.greyLayer_hide();
    $('.sharing_container').animate({ height: 'hide' }, this.SPEED, 'swing');
    if(typeof isMobileDevice === 'function' && isMobileDevice()) {
      // if taf is open don't show background
      if (!$('#tell_a_friend_layer').is(':visible')) {
        // Hide main stage module_nav and footer            
        $('.content_area_margins').show();
        $('#mobile_breadcrumb').show();
      }
    }
},
openSharingLayer : function() {
  mini_smartsearch_hideSmartSearch();
    this.unsetSharingCloseTimer();
    if($('.sharing_container').css('display') == 'none') {
      this.icon_highlight();
      greyLayer.greyLayer_show();
      $('.sharing_container').animate({ height: 'show' }, this.SPEED, 'swing');        
      if($(window).width() < 1095) { 
        $('.sharing_container').css('margin-left','-' + '223' + 'px');
      } else {
        $('.sharing_container').css('margin-left', '4' + 'px');
      }
      if(typeof isMobileDevice === 'function' && isMobileDevice()) {
        closeMobileMenu();
        repositionSharingLayer();
        $('.sharing_container .sharing_others').hide();
        // Hide main stage module_nav and footer            
        $('.content_area_margins').hide();
        $('#mobile_breadcrumb').hide();
        $('#mobileExtendedSearchContainer').hide();
      }
    }
},

shareSite : function(sharetype, title) {


  if(sharetype == 'facebook') {
    var facebooklink = "http://www.facebook.com/sharer.php?u=";
    facebooklink += removeAllURLParams($('#sharing_link').val());
    facebooklink += encodeURIComponent("?cm=UA.SI_FACEBOOK." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    facebooklink += "&t=";
    facebooklink += encodeURIComponent(title);
    window.open(facebooklink,"_blank","width=300,height=400,left=100,top=200");
    
  } else if (sharetype == 'digg') {
    var digglink = "http://digg.com/submit?phase=2&url=";
    digglink += removeAllURLParams($('#sharing_link').val());
    // getDCSExtValueForLikeButtons with true parameter returns only shortened WTcgn value
    digglink += encodeURIComponent("?cm=UA.SI_DIGG." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    digglink += "&title=";
    digglink += encodeURIComponent(title);
    window.open(digglink);
  } else if (sharetype == 'delicious') {
    var deliciouslink = "http://del.icio.us/post?v=2&url=";
    deliciouslink += removeAllURLParams($('#sharing_link').val());
    deliciouslink += encodeURIComponent("?cm=UA.SI_DELICIOUS." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    deliciouslink += "&title=";
    deliciouslink += encodeURIComponent(title);
    window.open(deliciouslink);
  } else if (sharetype == 'mrwong') {
    var mrwonglink = "http://www.misterwong.de/index.php?action=addurl&bm_url=";
    mrwonglink += removeAllURLParams($('#sharing_link').val());
    mrwonglink += encodeURIComponent("?cm=UA.SI_MRWONG." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    mrwonglink += "&bm_description=";
    mrwonglink += encodeURIComponent(title);
    window.open(mrwonglink);
  } else if (sharetype == 'twitter') {
    var twitterlink = "http://twitter.com/home?status=";
    twitterlink += encodeURIComponent(title + ": ");
    twitterlink += removeAllURLParams($('#sharing_link').val());
    twitterlink += encodeURIComponent("?cm=UA.SI_TWITTER." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    window.open(twitterlink);
  } else if (sharetype == 'myspace') {
    var myspacelink = "http://www.myspace.com/Modules/PostTo/Pages/?u=";
    myspacelink += removeAllURLParams($('#sharing_link').val());
    myspacelink += encodeURIComponent("?cm=UA.SI_MYSPACE." + getDCSExtValueForLikeButtons('like', 'facebook', true));
    myspacelink += "&t=";
    myspacelink += encodeURIComponent(title);
    window.open(myspacelink);
  } else if (sharetype == 'bookmark') {
    var favoritelink = $('#sharing_link').val();
    window.external.AddFavorite(favoritelink, title); 
  } else if (sharetype == 'becoming_a_fan') {
    window.open(title); // title = here URI
  }
}
  };
  return obj;
  }
  sharing = Sharing();
  
  /* Sound controlling*/
  var SOUNDMUTE_COOKIE_NAME = "mini_sound_mute";
  //displays sound icon
  function soundInit() {
    $('.icon_audio').show();
    $('.icon_audio').hover(function(){
      var img = $('.icon_audio').children('img');
        img.attr('src', img.attr('src').replace('.png', '_active.png'));
    },function(){
      var img = $('.icon_audio').children('img');
        img.attr('src', img.attr('src').replace('_active.png', '.png'));
    });
    $('.icon_audio').click(function(){setSoundMute(!getSoundMute());});    
  }
  
  function setSoundMuteValue (muted) {
     setSoundMuteCookie(muted)
     $('.player_component').flash(function() {
          if (typeof this.setSoundMute == 'function') {
              this.setSoundMute(muted);
          }
    });
    $('.flash_component').flash(function() {
        if (typeof this.setSoundMute == 'function') {
            this.setSoundMute(muted);
        }
    });
    $('.main_stage_area').flash(function() {
        if (typeof this.setSoundMute == 'function') {
            this.setSoundMute(muted);
        }
    });    
    // Spezialloesung fuer Zubehoer Showroom
    $('.zbs iframe').contents().find('#externalFrame').contents().find('.flash_component').flash(function() {
          if (typeof this.setSoundMute == 'function') {
              this.setSoundMute(muted);
          }
    });
	
	//video player
	if ($(".video_player video").length > 0)
		$(".video_player video").attr('muted', muted); 
  } 

  function setSoundMuteCookie(value) {
	$.cookie(SOUNDMUTE_COOKIE_NAME, value,  { path: '/', domain: getDomain(), expires: 3650 });    
  }
  function getSoundMute() {
    return $.cookie(SOUNDMUTE_COOKIE_NAME) === "true";
  }
  function setSoundMute(value) {
    if(value) {
      setSoundMuteValue (true);
      var img = $('.icon_audio').children('img');
    if(img.length > 0) {
        img.attr('src', img.attr('src').replace('_on_active.png', '_off_active.png'));
        img.attr('src', img.attr('src').replace('_on.png', '_off.png'));
    }
    }
    else {
      setSoundMuteValue (false);
      var img = $('.icon_audio').children('img');
    if(img.length > 0) {
        img.attr('src', img.attr('src').replace('_off_active.png', '_on_active.png'));
        img.attr('src', img.attr('src').replace('_off.png', '_on.png'));
    }
    } 
  }
  
  /* Tell a friend control */
  function tellAFriendInit() {
    $('.icon_tell_a_friend').show();
    $('.icon_tell_a_friend').hover(
      function(){
        var img = $(this).children('img');
        img.attr('src', img.attr('src').replace('.gif', '_active.gif'));
      },
      function(){
        var img = $(this).children('img');
        img.attr('src', img.attr('src').replace('_active.gif', '.gif'));
      }
    );
  }
  
  /* Print control */
  function printInit() {
    $('.icon_print').show();
    $('.icon_print').hover(function(){
      var img = $('.icon_print').children('img');
      img.attr('src', img.attr('src').replace('.png', '_active.png'));
    },function(){
      var img = $('.icon_print').children('img');
      img.attr('src', img.attr('src').replace('_active.png', '.png'));
    });
    $('.icon_print').click(function(){window.print();});
    addPrintCSS();
  }
  
  function addPrintCSS() {
	$("head").append("<link>");
      css = $("head").children(":last");
      css.attr({
        rel:  "stylesheet",
        type: "text/css",
        href: getVIPURL("../../../../_common/_css/print.css" ),
        media: "print"
      });
  }
  
function removeAllURLParams(string){
    var indexOfQuestionmark = string.indexOf('?');
    if(indexOfQuestionmark >= 0)
        string = string.substring(0,indexOfQuestionmark);
    return string;
}
}catch(e){console.log('Error in m_sharing: ' + e.description);}

// ---- m_module_navigation ----
try{ var moduleNaviSpeed = 250;
var moduleNaviStyle = 'linear';
var moduleNaviInitState;
var moduleNaviDelay = 0;
	// Achtung: im umschliessenden Dokument muessen folgende Variablen gesetzt sein:
	// var modulNaviInitState = modul_navigation_init_state.text // none, show, hide
	// var modulNaviDelay = modul_navigation_init_delay.text // in milliseconds

$(document).ready(
function() {
	////////// Modul Navigation ////////
	// Beim Laden der Seite anzeigen
	moduleNavigation.initModuleNav();

});

// Erweiterung slide Funktionen, horizontales Sliden
// Rechts, Links und Toggle
jQuery.fn.extend({ 
	slideRight: function(callback) {
					return this.each(function()	{ 
					jQuery(this).animate({ width: 'show' }, moduleNaviSpeed, moduleNaviStyle, callback); });},
	slideLeft: function(callback) { 
					return this.each(function() { 
					jQuery(this).animate({ width: 'hide' }, moduleNaviSpeed, moduleNaviStyle, callback); }); }
});

function ModuleNavigation() {
	var obj = {
		OPEN_DELAY : 150, /* timeout in ms */
		mn:this,
		actionTimer : null,
		
		initModuleNav:function(fromModNav) {
			// Read query parameters
			var query = getQueryParams();
			
			if (query.mod_nav === undefined && query.mod_nav === '' && (moduleNaviInitState === undefined || moduleNaviInitState == 'none')) {
				// No modul navigation sent through query parameter and moduleNaviInitState not set or 'none' --> Ignore
				return;
			}
			
			var modNavObj = this;
			var this_page = this.modulenavi_get_module_link_by_current_page();
			
			// Only main contact page has a visible contact_intro_optional section
			isContactPage = $('#contact_intro_visible').length > 0;
			
			if(isContactPage && fromModNav!==undefined && fromModNav===true && query.mod_nav !=undefined && query.mod_nav != ''){
				// Custom module navigation set in query param --> load it through ajax to override default module navigation
				
				// THIS APPLIES FOR CONTACT PAGES ONLY
				// Get first a in module navigation. This is the link to open or close the module navigation
				var close_module_navigation = $('#close_module_navigation');
				$('#module_navigation').load(miniUrlFix.fixAbsoluteUrl(query.mod_nav), 
					function(){
						// Make url absolute
						$('#module_navigation a').each(
							function(index){
								$(this).attr('href', miniUrlFix.fixAbsoluteUrl($(this).attr('href')));
							}
						);
						
						// Append close_module_navigation as child
						$('#module_navigation').prepend(close_module_navigation);
						
						// Rewrite this_page and set it to the vorletztes element from the breadcrumb
						var this_page_anchor = $('#breadcrumb .current_imported a');
						if(this_page_anchor.length>0){
							this_page = $('#breadcrumb .current_imported a').attr('href');
						}
						modNavObj._initModuleNav(this_page);
					}
				);
			}
			else{
				this._initModuleNav(this_page);
			}
											 
		},
		_initModuleNav: function(this_page) {
			this.modulenavi_set_active_elements(this_page);
			
			if (moduleNaviInitState == 'show') {				
				this.show_module_navigation();
			}
			// Beim Laden der Seite mit Verzgerung ausblenden
			if (moduleNaviDelay > 0) 
				setTimeout(function(){moduleNavigation.hide_module_navigation();}, moduleNaviDelay);
	
			$('#module_navigation_toggler').attr('href', 'javascript:void(0);');
			$('#module_navigation_toggler').hover(
				function(){
					moduleNavigation.setOpenTimer();
				},
				function(){
					moduleNavigation.unsetActionTimer();
				}
			);
			$('#close_module_navigation').attr('href', 'javascript:void(0);');
			$('#close_module_navigation').click(
				function(){
					moduleNavigation.hide_module_navigation();
				}
			);
                        if (!isMobile) {
			  $('.module_navigation_li').hover(
				function(){
					moduleNavigation.highLight(this);
				}, 
				function(){
					moduleNavigation.unhighLight(this);
				}
			  );
                        }
        
                // update username and dealername in module navigation
                var moduleNavAdditionalInfoDiv = $('#module_navigation_additional_info');
                if(moduleNavAdditionalInfoDiv.length > 0){			
                    // update username if available
                    if(typeof(userFirstName) !== 'undefined'){
                            moduleNavAdditionalInfoDiv.find('#username').html(userFirstName);
                            Cufon.replace('h1.teaser_component_h15_module_navigation, h1.teaser_component_h15_module_navigation span');
                    }
                    
                    // update dealername if dealer was selected
                    if(miniSubsidiary.isSubsidiarySelected()){
                        miniSubsidiary.onSubsidiaryReady(function(){
                            if(miniSubsidiary.getSubsidiaryName().length > 0)
                                moduleNavAdditionalInfoDiv.find('#dealername').html(miniSubsidiary.getSubsidiaryName());
                        });
                    }
                    
                    if (typeof(logInStatus) !== 'undefined') {
						moduleNavAdditionalInfoDiv.show();
					} 
                }
        
		},
		unsetActionTimer:function() {
			if( this.actionTimer ) {
	            window.clearTimeout(this.actionTimer);
	            this.actionTimer = null;
			}
		},
		setOpenTimer:function() {
			this.unsetActionTimer();
			this.actionTimer = window.setTimeout(function(){moduleNavigation.show_module_navigation();}, this.OPEN_DELAY);
		},
		show_module_navigation:function() {
			$('#module_navigation').slideRight(
				function() {
					$('ul.module_navigation_level_1').css('display','block');
					$('#module_navigation_toggler').css("visibility","hidden");
				}
			);
			if(navigator.appName != "Microsoft Internet Explorer"){
				Cufon.replace('.module_navigation_level_1 a');
			}
			Cufon.replace('.module_navigation li a.module_name_link');
	
			$('#model_selection').slideLeft();
		},
		hide_module_navigation:function() {
			$('ul.module_navigation_level_1').css('display','none');
			$('#module_navigation').slideLeft(
				function() {
					$('#module_navigation_toggler').css("visibility","visible");
				}
			);
		},
	
		/* displays the currently required elements within the module navigation */
		modulenavi_set_active_elements:function(module_link) {
			if(module_link === undefined || module_link === '')
				return;
				
			//jquery starts with selector ^=
      var currentElement = $("#module_navigation li > a[href^='" + module_link + "']:first"); //could select multiple entries
      if(isMobile === true){
        currentElement = $("#mobile_mainnav li > a[href^='" + module_link + "']:first");
      }
        
			
			// special handling for sub pages (only one sub topic supported, since
			// cancel condition for recursion is fragile) 
			// of a module that have no URL in module navigation and are
			// not found by the selector.
			if (currentElement.length == 0) {
				// get rid of extension to handle .html and .jsp
				var lastIndex = module_link.lastIndexOf(".");
				if (lastIndex != -1) {
					module_link = module_link.substring(0, lastIndex);
				}
				if (window.location.href.indexOf("mini2010_edit") != -1) {
					var file_path = module_link.split("/");
					if (file_path.length > 4) {
						module_link = file_path[0];
						for (var i = 1; i < file_path.length - 2; i++) {
							module_link = module_link + "/" + file_path[i];
						}
						module_link = module_link + "/" + file_path[file_path.length - 1];
						//modulenavi_set_active_elements(module_link);
						currentElement = $("li > a[href^='" + module_link + "']");
					}
				} else {
					//modulenavi_set_active_elements("../" + module_link);
					currentElement = $("li > a[href^='" + "../" + module_link + "']");
				}		
				// special handling for news details
				// e.g. there is no link in the module navigation to the details page http://localhost:41482/news_events/brand/new_mini_website/index.html 
				// but there is a link to the category page http://localhost:41482/news_events/brand/index.jsp
				// this link should be highlighted
				while (currentElement.length == 0&& module_link.length>1) {
					var ix2 = module_link.lastIndexOf("/");
					if (ix2<=0)
						break;
					var pagestring = module_link.substring(ix2);
					var prefixstring = module_link.substring(0,ix2);
					var ix1 = prefixstring.lastIndexOf("/");
					if (ix1<=0)
						break;
					prefixstring = prefixstring.substring(0,ix1);
					module_link = prefixstring + pagestring;
					currentElement = $("li > a[href^='"  + module_link + "']");
				}
				// end: special handling for news details				
			}
			
			if ( $(currentElement.parents(".module_navigation_ul")).length>0  ){
				$(currentElement.parents(".module_navigation_ul")).css('display','block');
				$(currentElement.parents(".module_navigation_li").children(".module_navigation_a_selected")).css('display','block');
				$(currentElement.parents(".module_navigation_li").children(".module_navigation_a_deselected")).css('display','none');
				$(currentElement.parents(".module_navigation_li")).addClass("show_always");
				$(currentElement.parent(".module_navigation_li").children(".module_navigation_ul")).css('display','block');
			}
			else
				$(".module_navigation ul").css('display','block');
		},
		
		/* determines the link of the current page within the module navigation */
		modulenavi_get_module_link_by_current_page:function() {
			var file_name = window.location.pathname;
			
			//cut url parameters and anchors
			var pos = file_name.indexOf("?");
			if (pos != -1) {
				file_name = file_name.substring(0,pos);
			}
			
			pos = file_name.indexOf("#");
			if (pos != -1) {
				file_name = file_name.substring(0,pos);
			}
						
			if (file_name.lastIndexOf("/") == (file_name.length -1)) {
				//our webserver automatically chose a welcome file, e.g. index.html which is not part of location.href
				//select a file within the current directory that starts with "index"
				file_name += "index";
			}
			
			return file_name;
		},
		
		highLight:function(item) {
			$(item).children(".module_navigation_a_selected").css('display','block');
			$(item).children(".module_navigation_a_deselected").css('display','none');
		},
		unhighLight:function(item) {
	
			if ( $(item).attr('class').indexOf("show_always") >0 )
				return;
	
			$(item).children(".module_navigation_a_selected").css('display','none');
			$(item).children(".module_navigation_a_deselected").css('display','block');
		},
		toggleSubMenu:function(item){
		    //nothing to do for mobile
			if(isMobile)
				return;
				
			var subMenu = $(item).parent(".module_navigation_li").children(".module_navigation_ul");
			//show(hide) subMenu
			subMenu.toggle();
			
			var subMenuVisible = $(subMenu).is(":visible");
			if (subMenuVisible){
			    //deselect Menu items with the same level
				$(item).parent().parent().children(".show_always").children(".module_navigation_a_selected").css('display','none');
				$(item).parent().parent().children(".show_always").children(".module_navigation_a_deselected").css('display','block');
				$(item).parent().parent().children(".show_always").removeClass("show_always");
				
				$(item).parents(".module_navigation_li").addClass("show_always");
				$(item).parent(".module_navigation_li").children(".module_navigation_a_selected").css('display','block');
				$(item).parent(".module_navigation_li").children(".module_navigation_a_deselected").css('display','none');
				
			}
			else{
              	$(item).parents(".module_navigation_li").removeClass("show_always");
				$(item).parent(".module_navigation_li").children(".module_navigation_a_selected").css('display','none');
				$(item).parent(".module_navigation_li").children(".module_navigation_a_deselected").css('display','block');
			}		
            			
		}
	};
	return obj;
}
moduleNavigation = ModuleNavigation();

}catch(e){console.log('Error in m_module_navigation: ' + e.description);}

// ---- m_model_navigation ----
try{ var isHomePage = false; // CR132

$(document).ready(function() {
	// CR132 - keep model nav open on homepage
	var startScenarioCookie = $.cookie(teaser.START_POINT_COOKIE_NAME);
 isHomePage = ($('div.main_stage_area').length > 0 && startScenarioCookie != null) ? true : false;		
	modelNavigation.initModelNav();

    // cufonize additional text headline
    if($('.module_navigation_additional_info').length > 0)
        Cufon.replace('h1.teaser_component_h15_module_navigation, h1.teaser_component_h15_module_navigation span');
}); 
function sn_configureModelNavigationMenu(id, flashFile, label, imgFile) {
	modelNavigation.sn_configureModelNavigationMenu(id, flashFile, label, imgFile);
}
function ModelNavigation() {
	var obj = {
		TIMEOUT: 150, /* timeout in ms */
		actionTimer : null,
		menuItem : null, /* menu object, if visible */
		subMenuItem : null, /* sub menu object, if visible */
		detailItem : null, /* detail view object, if visible */
		subMenuItemHighlighted : 0,
		sn_menuItemHighlighted : 0,
			
			initModelNav:function(){
				this.menuItem = $('#model_selection');
				this.subMenuItem = $('#model_selection_submenu_div');
				this.detailItem = $('#model_selection_submenu_details_div');

				/* Avoid jumping, when clicked*/
				var mst = jQuery('#model_selection_toggler');

				mst.attr('href', 'javascript:void(0);');
				
				/* Open the model menu, if the user is over the left "Select Model" icon */
				mst.hover(function(){modelNavigation.setOpenTimer(0,this);}, function(){modelNavigation.setCloseTimer(2);});
				
				/* Unset the action timer, if the user is over one of the three areas. On leaving set the timer to close the menu*/
				this.detailItem.hover(function(){modelNavigation.unsetTimer();},function(){modelNavigation.setCloseTimer(2);});
        
				/* On selecting a bodytype the submenu has to be opened */
				$('.modelnav_menu').hover(
						function(){modelNavigation.setOpenTimer(1,this);},
						function(){modelNavigation.setCloseTimer(1);});
				$('.modelnav_submenu_entry').hover(
						function(){modelNavigation.setOpenTimer(2,this);},
						function(){modelNavigation.setCloseTimer(2);});
				$('.modelnav_menu_first').hover(
						function(){
							modelNavigation.setOpenTimer(1,this);
							$('.modelnav_menu_first_unhighlighted').hide();
							$('.modelnav_menu_first_highlighted').show();
						},
						function(){
							modelNavigation.setCloseTimer(1);
							$('.modelnav_menu_first_unhighlighted').show();
							$('.modelnav_menu_first_highlighted').hide();
						}
					);

                /* menue behavior: handler opens link directly on the bodytype */
                $('#module_model_menu li.modelnav_menu.model_navigation_open_link').each(function(index, liElement){
                    $(liElement).mousedown(function(){
                        window.location = miniUrlFix.fixAbsoluteUrl($(liElement).attr('title'));
                    });
                });

				/* align the models vertical, this is done with adjusting the padding bottom */
				/* height of the modelnav 398px - height first element 25px - 39px x li elements */
				/* distribute remaining height to count of li elements + 1 */
				var empty_height = 398 - 25 - ((($('.modelnav_menu').length) - 1) * 39) ;
				var pad_bot = (Math.floor(empty_height / $('.modelnav_menu').length)) + 'px';
				$('.modelnav_menu, .modelnav_menu_first').css('padding-bottom',pad_bot);
				
				// CR132 - keep model nav open on homepage
				if(isHomePage && typeof(openModelNavigationOnHome) !== "undefined" && openModelNavigationOnHome !== null){
					if(openModelNavigationOnHome == true) window.setTimeout(function(){ modelNavigation.sn_openMenu();}, 1500);
					$('.modelnav_close_button').show();
				}		
			},
			
			unsetTimer:function( ) {
				if( this.actionTimer ) {
						window.clearTimeout(this.actionTimer);						
						this.actionTimer = null;
				}
			},
			
      setOpenTimer:function(level, elem) {

        if($(elem).hasClass('modelnav_bare_text')){
          // close details menu if necessary
          if(typeof(this.detailItem) != 'undefined' && this.detailItem != null){
            this.detailItem.slideLeft(); // function(){modelNavigation.closeMenu(0,stopClose);})
            this.detailItem.css('borderWidth','1px');
            this.detailItem.empty();
          }
          //return;
        }
        
        this.unsetTimer();
        
        if( level == 0) {
          this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openMenu();}, this.TIMEOUT);
          teaser.stopTeaserAutoChangeTimer();
        }
        else if ( level == 1  ) {
            this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openSubMenu(elem);}, this.TIMEOUT);
            teaser.stopTeaserAutoChangeTimer();
        }
        else if( level == 2 ) {
					this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openDetailMenu(elem);}, this.TIMEOUT);
				}
			},
			
			setCloseTimer:function(level, stopClose) {
				this.unsetTimer();
				this.actionTimer = window.setTimeout(
						function(){modelNavigation.closeMenu(level,stopClose !== undefined ? stopClose : -1);}, this.TIMEOUT);
			},
			
			sn_openMenu:function() { 
          moduleNavigation.hide_module_navigation();
          Cufon.replace('.modelnav_menu_first a');
          this.menuItem.slideRight(
            function() {	
              $('#module_navigation_toggler').css("visibility","visible");
              
            }
          );
			},			
			
			highlightMenu:function(elem) {
				if( this.sn_menuItemHighlighted ) {
					this.sn_menuItemHighlighted.flash(function() {
				          if (typeof this.showMouseLeave == 'function') {  
				        	  this.showMouseLeave();
			          }
			        }); 
					this.sn_menuItemHighlighted = null;
				}
				if( elem ) {
					this.sn_menuItemHighlighted = $(elem);
					this.sn_menuItemHighlighted.flash(function() {
			          if (typeof this.showMouseEnter == 'function') {
			        	  this.showMouseEnter();
			          }
			        });
				}
			},
		
			/* Open the submenu and store the object */
			sn_openSubMenu:function( elem) {
				
				this.closeMenu(2,1);

                // menue behavior
                if($(elem).hasClass('model_navigation_open_link')){
                    this.closeMenu(1,0);
                    this.highlightMenu(elem);
                }else if($(elem).hasClass('model_navigation_ignore_second_level')){
                    this.closeMenu(1,0);
                    this.highlightMenu(elem);
                    this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openDetailMenu(elem, true);}, this.TIMEOUT);
                }else{ // menue behavior end
                    this.highlightMenu(elem);
                    var subm = $(elem).find(".modelnav_submenu_container .modelnav_submenu");
                    if(subm.length > 0) {
                        
                        this.subMenuItem.empty();
                        this.subMenuItem.append(subm.clone(true));
                        if(navigator.appName != "Microsoft Internet Explorer"){
                            Cufon.replace('#model_selection_submenu_div .submenu_text_unhighlighted, #model_selection_submenu_div .submenu_text_highlighted');
                        }
                        
                        this.subMenuItem.slideRight();
                    }
                    else {
                        this.closeMenu(1,0);
                    }
                }
			},
		
			highlightSubmenu:function(elem) {
				if( this.subMenuItemHighlighted ) {
					$(this.subMenuItemHighlighted).children('.submenu_text_unhighlighted').show();
					$(this.subMenuItemHighlighted).children('.submenu_text_highlighted').hide();
					this.subMenuItemHighlighted = null;
				}
				if( elem ) {
					this.subMenuItemHighlighted = elem;
					$(this.subMenuItemHighlighted).children('.submenu_text_highlighted').show();
					$(this.subMenuItemHighlighted).children('.submenu_text_unhighlighted').hide();
				}
			},
				
			/* Open the detail view and stores the object, to close it later */
			sn_openDetailMenu:function(elemli, ignoreSecondLevelParam) {
                
                var ignoreSecondLevel = (typeof(ignoreSecondLevelParam) === 'undefined') ? false : true;

                if(this.subMenuItem.length > 0 && !this.subMenuItem.is(':visible') && !ignoreSecondLevel){
                    this.detailItem.hide();
                    return;
                }
                
                var qf_ur = $(elemli).children('.model_nav_quickfact_url');
                if(ignoreSecondLevel){
                    qf_ur = $(elemli);
                    modelNavigation.detailItem.css('left', '238px'); // move detail container to first menue level
                }else{
                    this.highlightSubmenu(elemli);
                    modelNavigation.detailItem.css('left', '437px'); 
                }

				if(qf_ur.length > 0 || ignoreSecondLevel) {
					var url =  miniUrlFix.fixAbsoluteUrl(qf_ur.attr('title'));
					var urlToLoad =  url;
					
					var location = window.location.href;
					var isHTTPS = (location.indexOf("https://") === 0);
					if(isDealerArea || isHTTPS)
						urlToLoad = urlToLoad + ";sticky_3kDk44d";
					
          if($(elemli).hasClass('modelnav_bare_text'))
            return;
          
					this.detailItem.load(urlToLoad + " .model_quickfacts_container",
						function(data) {
							var tmpSubMenuItem = $('#model_selection_submenu_div');
							if (tmpSubMenuItem.length > 0 && !tmpSubMenuItem.is(':visible') && !ignoreSecondLevel){
								$('#model_selection_submenu_details_div').hide();
								return;
							}
							
							if(navigator.appName != "Microsoft Internet Explorer"){
								Cufon.replace('.modelnav_detail h1, .modelnav_detail h2, .modelnav_detail a');
							}
							
							if($(this).children('.quickfacts_jcw').length>0){
								// Element with class quickfacts_jcw avalaible --> Remove border
								$(this).css('borderWidth','0px');
							}
							else{
								$(this).css('borderWidth','1px');
							}

							// Slide right
							$(this).slideRight();
							if($('.qf_disclaimer').length > 0 ) {
						        qf_disclaimer = QfDisclaimer();
						        // timeout required for chrome
						        window.setTimeout(function(){qf_disclaimer.qfdc_init();}, 1);
							}
							
							// Apply URLS Fix
							miniUrlFix.doPartialFix('#model_selection_submenu_details_div');

							for(var mdElem in modelData){
								if (modelData[mdElem] == url) {
									var paths = mdElem.split(".");
									var key1 = paths[0]; // body
									var key2 = paths[1]; // model
									var key = key1 + "." + key2 + "." + "financing_disclaimer";
									var data = modelData[key];
									if ((data !== null) && (typeof(data) !== 'undefined')) {
										if (data !=  '') {
										financingDisclaimer = FinancingDisclaimer();
										financingDisclaimer.init();
										$('.financing_disclaimer_body_content').html(data);
										$('.financing_disclaimer_open_image').css('display', 'inline');
										}
									}
									  
									// CR01 MINI Online Store Integration
									var onlineStorePrice = getOnlineStorePrice( key1 +"."+key2 +'.basic_price');
									if(onlineStorePrice !== null){ // set online store price in model navigation details page
										$('.modelnav_detail .content_quickfacts li span#model_quickfacts_basic_price').html(onlineStorePrice);
									}
									
									// CR06 MINI Online Store Integration Stock Availability
									var onlineStorePriceAvailable = isModelAvailableInStock( key1 +"."+key2 +'.basic_price');
									if(onlineStorePriceAvailable ){ // Show Link to Stock
										$('.modelnav_detail .links_quickfacts li#additional_link_dynamic').css("display","block");
									}
									
								  
									break;
								}
							}
						}
					);
				}
				else {
					this.closeMenu(2,1);
				}
						
				return true;
			},
		
			/* Closes the menu */
			closeMenu:function( level, stopClose, forceClose ) {
			
    
				if( level == 2 && stopClose < 2 ) {
					this.highlightSubmenu(null);
					if (this.detailItem.is(':visible')) {
						this.detailItem.slideLeft(function(){modelNavigation.closeMenu(1,stopClose);});
						this.detailItem.css('borderWidth','1px');
						this.detailItem.empty();
					}
					else {
						modelNavigation.closeMenu(1,stopClose);
					}
					return;
				}
				
				if( level == 1 && stopClose < 1 ) {

					this.highlightMenu(null);
          teaser.startTeaserAutoChangeTimer();
					/* just to be sure */
					this.detailItem.hide();
					if (this.subMenuItem.is(':visible')) {
						this.subMenuItem.slideLeft(function(){modelNavigation.closeMenu(0,stopClose);});
						this.subMenuItem.empty();
					}
					else {
						modelNavigation.closeMenu(0,stopClose);
					}
					return;
				}
				
				// CR132 - keep model nav open on homepage
				if(isHomePage && typeof(openModelNavigationOnHome) != "undefined" && openModelNavigationOnHome != null && typeof(forceClose) == 'undefined'){
					if(openModelNavigationOnHome == true) return;
				}
				
				if( level == 0 && stopClose < 0 ) {
					/* just to be sure */
					this.detailItem.hide();
					this.subMenuItem.hide();
					if( this.menuItem.is(':visible') ) {						
						this.menuItem.slideLeft();
            teaser.startTeaserAutoChangeTimer();
					}
				}
			},
			
		    /**
		     * Replaces a given DOM element specified by the given id by a flash object
		     * created from from the given label and flashFile.
		     * 
		     * @param id -
		     *          the id of the DOM element to be replaced.
		     * @param flashFile -
		     *          the path to the flash file (*.swf)
		     * @param label -
		     *          the label of the model
		     * @return
		     */
		    sn_configureModelNavigationMenu:function(id, flashFile, label, imgFile) {
		    	var flashvars = {
		    		       prm_country:'de',
		    		       prm_language:'de',
		    		       prm_label:label
		    		};
		
		    		var params = {
		    		quality: "high",
		    		allowFullScreen: "true",
		    		bgcolor: "#000000",
		    		wmode: "opaque",
		    		allowScriptAccess: "always"
		    		};
		
		    		var attributes = {};
		    		attributes.id = id+"flashObject";
		    		attributes.name = id+"flashObject";
		
		
		
		
		
		
				if(swfobject.hasFlashPlayerVersion("9.0.124")){
					swfobject.embedSWF(miniUrlFix.fixAbsoluteUrl(flashFile), id, "216px", "39px", "9.0.124", null, flashvars, params, attributes);
				} else if (imgFile) {
					var imgElement = document.createElement ('img')
					imgElement.setAttribute ('src', imgFile);
					document.getElementById(id).appendChild (imgElement);
				}
		    }
	};
	return obj;
}
// determines if the current page is the mini start page

modelNavigation = ModelNavigation();
}catch(e){console.log('Error in m_model_navigation: ' + e.description);}

// ---- m_quicklinks ----
try{ /**
 * Functions for Quicklinks (part of teaser_area_quicklinks)
 */

/**
 * Calculate the quicklink URL depending on maintained quicklink type and the
 * selected model code.
 * 
 * Requires a global variable (see global.js) that stores the model code. The
 * quicklink type is derived from the WCMS quicklink element during
 * statification.
 * 
 * @param link -
 *          the anchor DOM element
 * @param type -
 *          the maintained type of link (tda|eric|configurator|none)
 * @return the new URL or the passed URL if dependend variables are not set
 */
function getQuicklinkUrl(link, type) {
	
	if (modelCode !== null && modelCode !== '' && (type == 'tda' || type == 'eric' || type == 'configurator') ) {
		return link.href = link.href + '?model=' + modelCode;
	}
	return link.href;
}

/**
 * Removes certain quicklinks if they link to a request form that is not supported by the selected dealer.
 * The URL to supported form type mapping is defined in from_tracking array.
 */
function updateQuicklinks() {
	$(".quicklink_link").each(
		function() {
			if (isDealerArea && miniSubsidiary.isSubsidiarySelected()) {
				var url = $(this).attr("href");
				var index = url.indexOf("?");
				// cut any parameters from link
				if (index != -1) {
					url = url.substring(0, index);
				}
				var type = null;
				for (var elem in form_tracking) {
					if (url.match(elem + "$") || elem.match(url + "$")) {
						type = form_tracking[elem];
						break;
					}
				}
				if (type != null && !miniSubsidiary.supportsForm(type)) {
					$(this).parent().css("display", "none");
				}
			}
		}
	);
}

/**
 * quicklinkOverrides must be globally defined and initialized
 */
$(document).ready(function() {
	for (var elem in quicklinkOverrides) {
        $("#" + elem).replaceWith(quicklinkOverrides[elem]);
	}

	miniSubsidiary.onSubsidiaryReady(function() {
		updateQuicklinks();
	}); 
	
	Cufon.replace('.quicklinks_headline');
	Cufon.replace('.quicklink_link');
	
	$('.quicklink').hover(
      function() {
        $(this).addClass('quicklink_hover');
      }, 
      function() {
        $(this).removeClass('quicklink_hover');
      }
  );
 
});

$(window).resize(function() {
    var max_size = 1135;

    if ( $('.quicklink_lefttext').length > 0 ) {
      if ($(window).width() < max_size) {
        $('.quicklink_lefttext').hide();
      }   
      else {
        $('.quicklink_lefttext').show();
      }
    }

    if ( $('.facebook_like').length > 0 ) {
      if ($(window).width() < max_size) {
        $('.facebook_like').hide();
      }   
      else {
        $('.facebook_like').show();
      }
    }

  }
);

}catch(e){console.log('Error in m_quicklinks: ' + e.description);}

// ---- m_footer_extension ----
try{ /**
 * Functions for Footer Replacement
 */

/**
 * footerOverrides must be globally defined and initialized
 */
$(document).ready(function() {
 if(typeof(footerLegalNoticeOverride) !== 'undefined')  {
 $("#footer_legal_id").replaceWith(footerLegalNoticeOverride);
 }
 
 if(typeof(footerOverrides) !== 'undefined')  {
		for ( var elem in footerOverrides) {
			$("#" + elem).replaceWith(footerOverrides[elem]);
		}
	}
	
}); 
}catch(e){console.log('Error in m_footer_extension: ' + e.description);}

// ---- m_model_filter_control ----
try{ /*

	1- Modeldaten laden 
	2- Wertebereiche fï¿½r das control panel ermitteln
	3- divs befï¿½llen und mit start Werte initialisieren
	4- sliders Event slide abfangen
*/

	function dump(arr,level) {
		var dumped_text = "";
		if(!level) level = 0;

		//The padding given at the beginning of the line.
		var level_padding = "";
		for(var j=0; j<level+1; j++)
			level_padding += "    ";

		if(typeof(arr) == 'object') { //Array/Hashes/Objects
			for(var item in arr) {
				var value = arr[item];
				
				if(typeof(value) == 'object') { //If it is an array,
					dumped_text += level_padding + "'" + item + "' ...\n";
					dumped_text += dump(value,level+1);
				} else {
					dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
				}
			}
		}
		else { //Stings/Chars/Numbers etc.
			dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
		}
		return dumped_text;
	}
		
	function updateDisplay(filter_type){
		// Slider Callback aufrufen falls vorhanden
		if(callback_slider){
			callback_slider(model_filter_options, filter_type);
		}
	}
	
	var originalModelFilterOptions;
	var model_filter_options;
	var callback_slider;
	var callback_checkbox;
	
	function resetMF(){
		initModelFilterControlPanel(originalModelFilterOptions, true);
		setSelectorChecked(("#mf_model_type input[type='checkbox']"), originalModelFilterOptions.selected_model_types);
		setSelectorChecked(("#mf_fuel_type input[type='checkbox']"), originalModelFilterOptions.selected_fuel_types);
		setSelectorChecked(("#mf_drive_type input[type='checkbox']"), originalModelFilterOptions.selected_drive_types);
		
		// Trigger event to update checkbox display
		$('#mf_model_filter input').trigger('updateState');

		updateDisplay('');
	}
	
	function resetModelFilterControlPanel(pOpts){
		if(pOpts)
			initModelFilterControlPanel(pOpts, true);
		else
			resetMF();
			//initModelFilterControlPanel(originalModelFilterOptions, true);
	}
	
	function initModelFilter(pOptions, pCallback_slider, pCallback_checkbox){
		// Callbacks setzen
		callback_slider = pCallback_slider;
		callback_checkbox = pCallback_checkbox;
		
		initModelFilterControlPanel(pOptions);
	}
	
	function initModelFilterControlPanel(pOptions, reset){
		model_filter_options = jQuery.extend(true, {}, pOptions);
		
		// Update display
		updateDisplay();
		
		// Clone to keep a copy from the original values if not existing
		if(!originalModelFilterOptions)
			originalModelFilterOptions = jQuery.extend(true, {}, pOptions);
		
		var selected_model_types = model_filter_options.selected_model_types;
		
		// Init price slider
		if(mfSliders['mf_model_price_slider']===1){
			pushMFSlider('#mf_model_price_slider', model_filter_options.price_range, 
				function(selectedMin, selectedMax) { 
					model_filter_options.price_range.min = selectedMin; 
					model_filter_options.price_range.max = selectedMax; 
					updateDisplay('price');
				}, reset
			);
		}

		// Init Loan rate slider
		if(mfSliders['mf_model_loan_rate_slider']===1){
			pushMFSlider('#mf_model_loan_rate_slider', model_filter_options.loan_rate, 
				function(selectedMin, selectedMax) { 
					model_filter_options.loan_rate.min = selectedMin; 
					model_filter_options.loan_rate.max = selectedMax; 
					updateDisplay('loan_rate');
				}, reset
			);
		}

		// Init Fuel consumption slider
		if(mfSliders['mf_fuel_consumption_slider']===1){
			pushMFSlider('#mf_fuel_consumption_slider', model_filter_options.fuel_consumption, 
				function(selectedMin, selectedMax) { 
					model_filter_options.fuel_consumption.min = selectedMin; 
					model_filter_options.fuel_consumption.max = selectedMax; 
					updateDisplay('fuel_consumption');
				}, reset
			);
		}
		
		// Init engine slider
		if(mfSliders['mf_engine_slider']===1){
			pushMFSlider('#mf_engine_slider', model_filter_options.engine, 
				function(selectedMin, selectedMax) { 
					model_filter_options.engine.min = selectedMin; 
					model_filter_options.engine.max = selectedMax; 
					updateDisplay('engine');
				}, reset
			);
		}
		
		// Init max speed slider
		if(mfSliders['mf_max_speed_slider']===1){
			pushMFSlider('#mf_max_speed_slider', model_filter_options.max_speed, 
				function(selectedMin, selectedMax) { 
					model_filter_options.max_speed.min = selectedMin; 
					model_filter_options.max_speed.max = selectedMax; 
					updateDisplay('max_speed');
				}, reset
			);
		}
		
		// Init co2 slider
		if(mfSliders['mf_co2_slider']===1){
			pushMFSlider('#mf_co2_slider', model_filter_options.co2, 
				function(selectedMin, selectedMax) { 
					model_filter_options.co2.min = selectedMin; 
					model_filter_options.co2.max = selectedMax; 
					updateDisplay('co2');
				}, reset
			);
		}
		
		// Init luggage trunk slider
		if(mfSliders['mf_luggage_trunk_slider']===1){
			pushMFSlider('#mf_luggage_trunk_slider', model_filter_options.luggage_trunk, 
				function(selectedMin, selectedMax) { 
					model_filter_options.luggage_trunk.min = selectedMin; 
					model_filter_options.luggage_trunk.max = selectedMax; 
					updateDisplay('luggage_trunk');
				}, reset
			);
		}
		
		sliderTimer = window.setInterval("initMFSliders()", sliderTimeout);
			
		if(!reset){
			// Init model type checkboxes
			for(i=0; i<pOptions.model_types.length; i++){
				var elem = pOptions.model_types[i];
				
				var sValue = model_filter_options.selected_model_types[elem.value];
				var checked = '';
				
				if(sValue != null && sValue != undefined){
					checked = 'checked';
				}
				
        // check if body type should be displayed in the controls
        // doNotIgnoreCompleteBodyType is set in the model_filter template
        if(typeof(doNotIgnoreCompleteBodyType) != 'undefined' && doNotIgnoreCompleteBodyType != null && doNotIgnoreCompleteBodyType[elem.value] == true){
          $("#mf_model_type:visible > .cb").append('<input id="model_cb_'+i+'" type="checkbox" value="'+elem.value+'" '+checked+' name="mf_model_type"/>');
          $("#mf_model_type:visible > .cb").append('<label for="model_cb_'+i+'">'+elem.label+'&nbsp;</label>');
        }
      }
		
			// Init fuel type checkboxes
			for(i=0; i<pOptions.fuel_types.length; i++){
				var elem = pOptions.fuel_types[i];
				
				var sValue = model_filter_options.selected_fuel_types[elem.value];
				var checked = '';
				
				if(sValue != null && sValue != undefined){
					checked = 'checked';
				}
				
				$("#mf_fuel_type:visible > .cb").append('<input id="fuel_cb_'+i+'" type="checkbox" value="'+elem.value+'" '+checked+' name="mf_fuel_type"/>');
				$("#mf_fuel_type:visible > .cb").append('<label for="fuel_cb_'+i+'">'+elem.label+'&nbsp;</label>');
			}
			
			// Init drive type checkboxes
			for(i=0; i<pOptions.drive_types.length; i++){
				var elem = pOptions.drive_types[i];
				
				var sValue = model_filter_options.selected_drive_types[elem.value];
				var checked = '';
				
				if(sValue != null && sValue != undefined){
					checked = 'checked';
				}
				
				if (! document.getElementById("mf_drive_type_so") || 
				    (elem.value == document.getElementById("mf_drive_type_so").innerHTML)) {
					$("#mf_drive_type:visible > .cb").append('<input id="drive_cb_'+i+'" type="checkbox" value="'+elem.value+'" '+checked+' name="mf_drive_type"/>');
					$("#mf_drive_type:visible > .cb").append('<label for="drive_cb_'+i+'">'+elem.label+'&nbsp;</label>');
				}
			}
			
			initCheckbox("#mf_model_type:visible > .cb > input[type='checkbox']", model_filter_options.selected_model_types, populateModelType);
			initCheckbox("#mf_fuel_type:visible .cb > input[type='checkbox']", model_filter_options.selected_fuel_types, populateFuelType);
			initCheckbox("#mf_drive_type:visible .cb > input[type='checkbox']", model_filter_options.selected_drive_types, populateDriveType);
			
			// Replace checkboxes
			$('#mf_model_filter:visible input').customInput();
		}
	}

	function setSelectorChecked(selector, pValues){
		$(selector).each(function(index){this.checked=false;});
		for(var key in pValues){
			var value = pValues[key];
			$(selector+"[value='"+value+"']").attr("checked", true);
			
			$(selector+"[value='"+value+"']").trigger('updateState');
		}
	}
	
	function initCheckbox(selector, pValues, callback){
		// Reset selection
		$(selector).attr("checked", false);
		
		// Set checked values
		setSelectorChecked(selector, pValues);
		
		// register events on checkboxes
		$(selector).bind("click", callback);
	}

	function populateModelType(event){
		// Populate model_filter_options.selected_model_types with the list of all checked checkboxes
		
		// First clear the list
		//model_filter_options.selected_model_types = new Array(0);
		var currentElementValue = $(event.currentTarget).attr('value');
		var found = false;
		for(var m in model_filter_options.selected_model_types){
			if(m == currentElementValue){
				delete model_filter_options.selected_model_types[m];
				found = true;
				break;
			}
		}
		
		if(found === false){
			model_filter_options.selected_model_types[currentElementValue] = currentElementValue;
		}
		/*
		$("#mf_model_type .cb > input[type='checkbox']").each(
			function(i){
				var elemId = $(this).attr('id');
				var checked = true;
				//checked = (this.checked==true && elemId != currentElementId) || (this.checked==false && elemId == currentElementId);
				
				if(checked){
					model_filter_options.selected_model_types[this.value] = this.value;
				}
			}
		);
		*/
		// Reset control panel values
		//callback_checkbox(model_filter_options);
		
		// Update display
		updateDisplay('model_type');
	}
	
	function populateFuelType(event){
		// Populate model_filter_options.selected_fuel_types with the list of all selected checkboxes
		
		// First clear the list
		//model_filter_options.selected_fuel_types = new Array(0);
		
		var currentElementValue = $(event.currentTarget).attr('value');
		var found = false;
		for(var m in model_filter_options.selected_fuel_types){
			if(m == currentElementValue){
				delete model_filter_options.selected_fuel_types[m];
				found = true;
				break;
			}
		}
		
		if(found === false){
			model_filter_options.selected_fuel_types[currentElementValue] = currentElementValue;
		}
		
		//$("#mf_fuel_type .cb > input[type='checkbox']").each(function(i){if(this.checked){model_filter_options.selected_fuel_types[this.value] = this.value;}});
		
		// Update display
		updateDisplay('fuel_type');
	}
	
	function populateDriveType(event){
		// Populate model_filter_options.selected_fuel_types with the list of all selected checkboxes
		// First clear the list
		//model_filter_options.selected_fuel_types = new Array(0);
		
		var currentElementValue = $(event.currentTarget).attr('value');
		var found = false;
		for(var m in model_filter_options.selected_drive_types){
			if(m == currentElementValue){
				delete model_filter_options.selected_drive_types[m];
				found = true;
				break;
			}
		}
		
		if(found === false){
			model_filter_options.selected_drive_types[currentElementValue] = currentElementValue;
		}
		
		//$("#mf_fuel_type .cb > input[type='checkbox']").each(function(i){if(this.checked){model_filter_options.selected_fuel_types[this.value] = this.value;}});
		
		// Update display
		updateDisplay('drive_type');
	}

	
	/*
		selector: The css selector to identify the div to put the slider in
		minValue: The minimun value from the slider
		maxValue: The maximum value from the slider
		callback: The callback function to call after the slider value has changed
	*/
	var offsetUnit = 5;
	var imageWidth = 10;
	
	var lastValues = {};
	var sliderQueue = [];
	
	function pushMFSlider(selector, pOptions, callback, reset){
		var ieVersion = getInternetExplorerVersion();
		
		if(ieVersion>0 && ieVersion<7){
			// Queue inits on IE6
			var slider = 
			{
				'selector': selector,
				'options': pOptions,
				'callback': callback,
				'reset': reset
			}
			
			sliderQueue.push(slider);
		}
		else{
			// Otherwise init
			initMFSlider(selector, pOptions, callback, reset);
		}
	}
	
	var sliderTimeout = 10;
	var sliderTimer;
	
	function initMFSliders(){
		if(sliderQueue!== undefined && sliderQueue.length>0){
			var slider = sliderQueue.shift();
			initMFSlider(slider.selector, slider.options, slider.callback, slider.reset);
		}
		else{
			if(sliderTimer !== undefined && sliderTimer !== null){
				window.clearInterval(sliderTimer);
			}
			
			// Init tooltip
			$('#mf_control_panel a.ui-slider-handle').css('cursor','pointer').tooltip(
				{
					showURL: false,
					track: true,
					delay: 0,
					left: 0,
					top: -25,
					bodyHandler: function() { 
						var tooltipContent = $(this).attr("rel");
						return tooltipContent; 
					}
				}
			);
		}
	}
	
	function initMFSlider(selector, pOptionsParam, callback, reset){
		try{
			// Function zum initialisieren vom slider
			// Destroy ...
			//$(selector).slider('destroy');
			
			if($(selector).length === 0)
				return;
				
			var pOptions = jQuery.extend(true, {}, pOptionsParam);
		
			var sliderStep = 1;
			var minValue = 0;
			var maxValue = 0;
		
			if(pOptions.min)
				minValue = pOptions.min;
			
			if(pOptions.max)
				maxValue = pOptions.max;
			
			if(reset === true){
				// Reset slider
				$(selector).slider("values", 0, minValue);
				$(selector).slider("values", 1, maxValue);
				
				updateLabels(selector, {values: [minValue, maxValue]});
			}
			
			else{
				// Init last values
				lastValues[selector] = {};
				lastValues[selector]['values'] = new Array();
				lastValues[selector]['values'][0] = minValue;
				lastValues[selector]['values'][1] = maxValue;
				
				// And init again
				var sliderRange = true;
				
				$(selector).slider({
					range: sliderRange,
					min: minValue,
					max: maxValue,
					step: pOptions.step,
					values: [minValue, maxValue],
					
					slide: function(event, ui) {
						updateLabels(selector, ui);
					},
					
					stop: function(event, ui) {
						
						if(ui.values[0] < pOptions.min)
							ui.values[0] = pOptions.min;
						if(ui.values[1] < pOptions.min)
							ui.values[1] = pOptions.min;
							
						if(ui.values[0] > pOptions.max)
							ui.values[0] = pOptions.max;
						if(ui.values[1] > pOptions.max)
							ui.values[1] = pOptions.max;
						
						// Set new values
						$(selector).slider('values', 0, ui.values[0]);
						$(selector).slider('values', 1, ui.values[1]);
						
						var _minValue = ui.values[0];
						var _maxValue = ui.values[1];
						
						updateLabels(selector, ui);
						
						// Update only if either min value or max value has changed.
						if((lastValues[selector]['values'][0] != _minValue) || (lastValues[selector]['values'][1] != _maxValue)){
							callback(_minValue, _maxValue);
							
							// save last values
							lastValues[selector]['values'][0] = _minValue;
							lastValues[selector]['values'][1] = _maxValue;
						}
					}
				});
				
				// Default setzen
				var minText;
				var maxText;
                                minValue = checkMFNumber($(selector).attr('id'), minValue);	
                                maxValue = checkMFNumber($(selector).attr('id'), maxValue);	
				if(pOptions.unit_pos == 'LEFT'){
					minText = '<div class="symbol">'+minValue+'</div>' + '<div class="val">'+pOptions.unit+'</div>';
					maxText = '<div class="symbol">'+maxValue+'</div>' + '<div class="val">'+pOptions.unit+'</div>';
				}
				else{
					minText = '<div class="val">'+minValue+'</div>' + '<div class="symbol">'+pOptions.unit+'</div>';
					maxText = '<div class="val">'+maxValue+'</div>' + '<div class="symbol">'+pOptions.unit+'</div>';
				}
				
				$(selector + ' > a:first').after('<div class="unit"></div>');
				$(selector + ' > a:last').after('<div class="unit"></div>');
				
				if($(selector + ' > a:last').hasClass('ui-slider-handle-right') === false){
					$(selector + ' > a:last').addClass('ui-slider-handle-right');
				}
				
				// Set value
				$(selector + ' > div.unit:first').html(minText);
				$(selector + ' > div.unit:last').html(maxText);
				
				// Modify position for first div to match position from first a
				var leftPosition = $(selector + ' > a:first').position().left;
				var unitWidth = $(selector + ' div.unit:first .val').width() + $(selector + ' div.unit:first .symbol').width() + offsetUnit;
				
				$(selector + ' div.unit:first').css('left', leftPosition+'px');
				$(selector + ' div.unit:first').css('width', unitWidth+'px');
				
				// Modify position for last div to match position from last a with unitWidth px offset that is the text length + imageWidth that is the image width
				unitWidth = $(selector + ' div.unit:last .val').width() + $(selector + ' div.unit:last .symbol').width() + offsetUnit;
				leftPosition = $(selector).width() - unitWidth - imageWidth + 20;
				
				$(selector + ' div.unit:last').css('left', leftPosition+'px');
				$(selector + ' div.unit:last').css('width', unitWidth+'px');
				
				leftPosition = $(selector).width();
				$(selector + ' > a:last').css('left', (leftPosition)+'px');
				
				$(selector + ' > a:first').attr('rel', minValue);
				$(selector + ' > a:last').attr('rel', maxValue);
				
				$(selector + ' > .ui-slider-handle-right').css('left','100%');
				/*
				if(minValue == maxValue){
					// Disable if min and max are values the same
					$(selector).slider('disable');
					$(selector).parent().addClass('disabled');
				}
				else{
					$(selector).slider('enable');
					$(selector).parent().removeClass('disabled');
				}
				*/
			}
		}
		catch(err){
		}
	}

	function updateLabels(selector, ui){
		var minValue = ui.values[0];
		var maxValue = ui.values[1];

		$(selector + ' > a:first').attr('rel', minValue);
		$(selector + ' > a:last').attr('rel', maxValue);
	}

        function checkMFNumber(id, value) {
          if (id === 'mf_model_price_slider' || id === 'mf_model_loan_rate_slider' ||
                id === 'mf_fuel_consumption_slider') {
            if (value && divide_thousands_sign.length>0 && divide_decimal_sign.length>0)
              return updateNumberFormatMF(divide_thousands_sign, divide_decimal_sign, value);
          }
          return value;
        }

        function updateNumberFormatMF(deviderThousand, deviderDecimal, value) {
          value += ''; // toString()
          // Split integer
          var result = value.split('.');

          // isolate the integer & add enforced decimal point
          var left = result[0] + deviderDecimal;

          var regExp = new RegExp("(\\d)(\\d{3}(\\" + deviderThousand + "|\\" + deviderDecimal + "))");
          while (left.match(regExp)) {
            // insert thousands-separator before the three digits
            left = left.replace(regExp, "$1" + deviderThousand + "$2");
          }
          // plug the modified integer back in, removing the temporary decimal point
          result[0] = left.replace(deviderDecimal, "");
          if (result.length > 1)
            return result[0] + deviderDecimal + result[1];
          else
            return result[0];
        }	

}catch(e){console.log('Error in m_model_filter_control: ' + e.description);}

// ---- m_new_cars_gallery ----
try{ $.fn.centerInClientNewCars = function(options) {
    /// <summary>Centers the selected items in the browser window. Takes into account scroll position.
    /// Ideally the selected set should only match a single element.
    /// </summary>    
    /// <param name="fn" type="Function">Optional function called when centering is complete. Passed DOM element as parameter</param>    
    /// <param name="forceAbsolute" type="Boolean">if true forces the element to be removed from the document flow 
    ///  and attached to the body element to ensure proper absolute positioning. 
    /// Be aware that this may cause ID hierachy for CSS styles to be affected.
    /// </param>
    /// <returns type="jQuery" />
	
	if($('#m_gallery').length > 0)
			return;
    
	var opt = { forceAbsolute: false,
                container: window,    // selector of element to center in
                completeHandler: null
              };
    $.extend(opt, options);
   
    return this.each(function(i) {
        var el = $(this);
        var jWin = $(opt.container);
        var isWin = opt.container == window;

        // force to the top of document to ENSURE that 
        // document absolute positioning is available
        if (opt.forceAbsolute) {
            if (isWin)
                el.remove().appendTo("body");
            else
                el.remove().appendTo(jWin.get(0));
        }

        // have to make absolute
        el.css("position", "absolute");

        // height is off a bit so fudge it
        var heightFudge = isWin ? 2.0 : 1.8;

        var x = (isWin ? jWin.width() : jWin.outerWidth()) / 2 - el.outerWidth() / 2;
        var y = (isWin ? jWin.height() : jWin.outerHeight()) / heightFudge - el.outerHeight() / 2;

        var top = 180;//y + jWin.scrollTop();
		el.css("left", x + jWin.scrollLeft());
        el.css("top", top);

        // if specified make callback and pass element
        if (opt.completeHandler)
            opt.completeHandler(this);
    });
}

$(document).ready(
	function(){
		if($('#m_gallery').length > 0)
			return;
			
		// Perform replacement only if element with class .scrollableArea available on current page
		if($('.scrollableArea').length == 0)
			return;

		var mScrollingSpeed	= 2;
		// make it faster for IE (QC 2045)
		if (getInternetExplorerVersion() >0) {
		  mScrollingSpeed = 8;
	    }
	
		var options =
		{
			scrollingSpeed: mScrollingSpeed,
			mouseDownSpeedBooster: 3, 
			//autoScroll: "onstart", 
			autoScrollDirection: "endlessloop", 
			autoScrollSpeed: mScrollingSpeed, 
			visibleHotSpots: "onstart", 
			hotSpotsVisibleTime: 5
		};
		
		$('#zoom_container').centerInClientNewCars();
		options.displacement = 0;
		$('#galleryview_container .makeMeScrollable').smoothDivScroll(options);
		$('#galleryview_container .scrollableArea img:first').css('margin-left','0px');
		
		options.displacement = 0;
	
		$('#galleryview_container_zoom .makeMeScrollable').smoothDivScroll(options);
		$('#galleryview_container_zoom .scrollableArea img:first').css('margin-left','0px');
		
		// Add hover on both hot spots
		$('.scrollingHotSpotRight').hover(
			function(){
				$(this).addClass('scrollingHotSpotRightVisible');
				$(this).fadeTo('slow', 1);
			},
			function(){
				$(this).removeClass('scrollingHotSpotRightVisible');
				$(this).fadeTo('slow', 0);
			}
		);
		
		$('.scrollingHotSpotLeft').hover(
			function(){
				$(this).addClass('scrollingHotSpotLeftVisible');
				$(this).fadeTo('slow', 1);
			},
			function(){
				$(this).removeClass('scrollingHotSpotLeftVisible');
				$(this).fadeTo('slow', 0);
			}
		);
		
		if($('#galleryview_container .scrollableArea img').length < 7){
			// At least 7 images needed to enable scrolling on small view --> Remove scrolling
			$('#galleryview_container .scrollingHotSpotLeft, #galleryview_container .scrollingHotSpotRight').remove();
		}
		
		if($('#galleryview_container_zoom .scrollableArea img').length < 10){
			// At least 10 images needed to enable scrolling on zoom view --> Remove scrolling
			$('#galleryview_container_zoom .scrollingHotSpotLeft, #galleryview_container_zoom .scrollingHotSpotRight').remove();
		}
		
		// Add on click on images
		$('.scrollableArea img').click(
			function(){
				var newSrc = $(this).attr('src');
				var imageIndex = $(this).parent().find('img').index($(this));
				
				$(this).parents('.makeMeScrollable').siblings('.preview').find('img').fadeOut('medium', 
					function(){
						$(this).attr('src',newSrc);
						$(this).attr('data-image-index',imageIndex);
						$(this).fadeIn('medium');
					}
				);
				
				var titleDiv = $(this).parents('#zoom_container').find('.headline .title');
				if(titleDiv.length>0){
					updateTitleNewCars(imageIndex);
				}
			}
		);
		
		// Set the first image visible in the hotspot
		$('#galleryview_container .scrollableArea img:first').click();
		
		// Append zoom icon
		$('#galleryview_container .zoom_icon').click(
			function(){
				greyLayer_show();
				var imageSrc = $('#galleryview_container .preview img').attr('src');
				var imageIndex =$('#galleryview_container .preview img').attr('data-image-index');
				
				// Set z-index from zoomview to be z-index from grey layer + 1
				var zIndex = parseInt($('#grey_layer').css('z-index')) + 1;
				
				showGalleryZoomNewCars(zIndex, imageIndex);
				updateTitleNewCars(imageIndex);
			}
		);
	}
);

function updateTitleNewCars(imageIndex){
	var titleDiv = $('#zoom_container .headline .title');
	var allImages = $('#zoom_container .scrollableArea img');
	titleDiv.html(allImages.eq(imageIndex).attr('data-title'));
	
	// Update footer
	var imagePosition = parseInt(imageIndex)+1;
	var countImages = allImages.length;
	
	var replacedText = $('#zoom_container .footer_area .org').text().replace('#image_position#',imagePosition).replace('#count_images#',countImages);
	$('#zoom_container .footer_area .rep').text(replacedText);
		
	// Apply Cufon
	Cufon.replace('#zoom_container .headline .title');
}

function showGalleryZoomNewCars(zIndex, imageIndex){
	var currentImageSrc = $('#galleryview_container .preview img').attr('src')
	$('#galleryview_container_zoom .preview img').attr('src',currentImageSrc);
	$('#galleryview_container_zoom .scrollWrapper').scrollLeft(0);
	$('#galleryview_container_zoom .scrollWrapper').scrollLeft(72*imageIndex);
	
	// Update z-index from hotspot
	$('#galleryview_container_zoom .scrollingHotSpotLeft, #galleryview_container_zoom .scrollingHotSpotRight').css('z-index', zIndex+1);

	$('#zoom_container').css('z-index',zIndex);
	$('#zoom_container').css('visibility', 'visible');
}

function hideGalleryZoomNewCars(){
	var div = $('#zoom_container');
	div.css('visibility','hidden');
	greyLayer_hide();
	
	div.find('.preview img').attr('src', '');
}
}catch(e){console.log('Error in m_new_cars_gallery: ' + e.description);}

// ---- m_model_filter_logic ----
try{ /*
	NOTICE!!!!
	
	This file is used for both model filter and model comparison and requires the file model_data_js.js to be included before.
	The variable objectModelData is used in model comparison to retrieve informations related to model and types.
*/

function toObject(pModelData){
	var result = {};
	for(key in pModelData){
		var parts = key.split(".");
		
		try{
			// Set body and type to lower case
			parts[0] = parts[0].toLowerCase();
			parts[1] = parts[1].toLowerCase();
		}
		catch(err){
		}
		
		if(!result[parts[0]]){
			result[parts[0]] = {};
		}
		
		if(!result[parts[0]][parts[1]]){
			result[parts[0]][parts[1]] = {};
			
			// Build url directory for model
			result[parts[0]][parts[1]]['url_directory'] = (parts[0]+'/'+parts[1]+'/').toLowerCase();
		}
		
		result[parts[0]][parts[1]][parts[2]] = pModelData[key];
	}
	
	return result;
}

// Convert model data structure
var objectModelData;

// The default zoom level
var defaultZoomLevel = 1;
var isMaxZoomLevel = false;

// The highest zoom level
var highestZoomLevel = 5;
var animationDuration = 'slow';
var animationEasing = '';
var lastDataKey = '';
var current;


var previewContainer;
var previewContainerHeight = 404;
var bigContainer;
var realDataContainer;
var imageContainer;
var contentContainer;
var tempDataContainer;

var hoverCounter = 0;
var loadingPreview = false;
var closingPreview = false;
var previewLoaded = false;

// Width from the arrow image pointer in pixels
var arrowWidth = 14;

var previewCache = {};

// Positioning
var margin_right = new Array(1, 1);
var padding_left = new Array(10, 10);
var padding_top = new Array(5, 5);

// minimum divs on the page for zoomlevel, the zoomlevel is the index
//                 Zoomlevel   1    2
var divCount      = new Array(8,  1);
//max. divs per row
var maxDivsPerRow = new Array( 4, 2);
// width of each div
var divWidths     = new Array( 171, 349);
var divWidthsXPos     = new Array( 171, 349);

/* Apply padding left on divWidths */
for(var i=0; i<divWidths.length; i++){
	divWidths[i] = divWidths[i] - padding_left[i];
}

// heigth of each div
var divHeights    = new Array(109, 169);
var divHeightsYPos    = new Array(109, 169);

// Apply padding top on divHeights
for(var i=0; i<divHeights.length; i++){
	divHeights[i] = divHeights[i] - padding_top[i];
}

var imageWidths = new Array(118, 226);
var imageHeights = new Array(59, 110);

var lastZoomLevelClass = 'zoom_level';
var def_px = 'px';

// This method return all model body
function getModelBody(){
	var result = new Array();
	var _objectModelData = getObjectModelData();
	
	for(var mybody in _objectModelData){
		result[mybody] = mybody;
	}
	
	return result;
}
var objectModelDataInited = false;
function getObjectModelData(){
	if(objectModelDataInited==false)
		objectModelData = toObject(modelData);
	objectModelDataInited = true;
	
	return objectModelData;
}

// This method return all model type for a specific body
function getModelTypes(modelBody){
	var result = new Array();
	var _objectModelData = getObjectModelData();
	var resultData = _objectModelData[modelBody];
	
	if(typeof(resultData) != 'undefined'){
		for(var mytype in resultData){
			result[mytype] = resultData[mytype].model_name;
		}
	}

	return result;
}

// Update visible images according to selected options
function mf_update_display(pOptions, filter_type){
	// Make a copy from the objectModelData object to keep original values
	var _objectModelData = getObjectModelData();
	var modelDataCopy = jQuery.extend(true, {}, _objectModelData);
	var filter = '';
	if(filter_type != undefined)
		filter = filter_type;
	
	// Apply model type filter
	modelDataCopy = mf_filter_by_model_type(pOptions, modelDataCopy);
	
	// Apply fuel type filter
	modelDataCopy = mf_filter_by_fuel_type(pOptions, modelDataCopy);
	
	// Apply drive type filter
	modelDataCopy = mf_filter_by_drive_type(pOptions, modelDataCopy);

	// Apply price range filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.price_range.min, pOptions.price_range.max, 'basic_price_num', modelDataCopy);
	
	// Apply loan rate filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.loan_rate.min, pOptions.loan_rate.max, 'basic_financing_price_num', modelDataCopy);
	
	// Apply fuel consumption filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.fuel_consumption.min, pOptions.fuel_consumption.max, 'fuel_consumption_combined_num', modelDataCopy);
	
	// Apply engine filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.engine.min, pOptions.engine.max, 'max_output_num', modelDataCopy);
	
	// Apply max speed filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.max_speed.min, pOptions.max_speed.max, 'top_speed_num', modelDataCopy);
	
	// Apply co2 filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.co2.min, pOptions.co2.max, 'co2_emission_num', modelDataCopy);
	
	// Apply luggage trunk filter
	modelDataCopy = mf_filter_by_numerical_range(pOptions.luggage_trunk.min, pOptions.luggage_trunk.max, 'luggage_capacity_num', modelDataCopy);
	
	// do positioning
	mf_position_container(modelDataCopy);
}

function mf_filter_by_numerical_range(min, max, key, pModelDataCopy){
	
	for(type in pModelDataCopy){
		for(model in pModelDataCopy[type]){
			var value = parseFloat(pModelDataCopy[type][model][key]);
			if(value==='')
				value = 0;
				
			if(min > max)
				min = max;
				
			if(value < min || value > max){
				// Car value out of user selected range --> remove
				delete pModelDataCopy[type][model];
			}
		}
	}
	
	return pModelDataCopy;
}

function mf_filter_by_fuel_type(options, pModelDataCopy){
	var selected_fuel_types = options.selected_fuel_types_for_filter;
	
	for(t in options.selected_fuel_types){
		selected_fuel_types = options.selected_fuel_types;
		break;
	}

	for(model_body in pModelDataCopy){
		var bodyTypes = pModelDataCopy[model_body];
		for(model_type in bodyTypes){
			var found = false;
			for(fuelType in selected_fuel_types){
				if(pModelDataCopy[model_body][model_type].fuel_type == fuelType){
					found = true;
					break;
				}
			}
			
			if(!found){
				delete pModelDataCopy[model_body][model_type];
			}
		}
	}

	return pModelDataCopy;
}

function mf_filter_by_drive_type(options, pModelDataCopy){
	var selected_drive_types = options.selected_drive_types_for_filter;
	for(t in options.selected_drive_types){
		selected_drive_types = options.selected_drive_types;
		break;
	}

	for(model_body in pModelDataCopy){
		var bodyTypes = pModelDataCopy[model_body];
		for(model_type in bodyTypes){
			var found = false;
			for(driveType in selected_drive_types){
				if(pModelDataCopy[model_body][model_type].drive_type == driveType){
					found = true;
					break;
				}
			}
			if(!found){
				delete pModelDataCopy[model_body][model_type];
			}
		}
	}

	return pModelDataCopy;
}


function mf_filter_by_model_type(options, pModelDataCopy){
	var selected_model_types = options.selected_model_types_for_filter;
	
	for(t in options.selected_model_types){
		selected_model_types = options.selected_model_types;
		break;
	}
	
	for(type in pModelDataCopy){
		if(selected_model_types[type] != type){
			delete pModelDataCopy[type];
		}
	}
	
	return pModelDataCopy;
}

function mf_filter_model_type_updated(pOptions){
	// Compute min max
	
	pOptions = computeMinMaxValues(pOptions);
		
	resetModelFilterControlPanel(pOptions);
}

function computeMinMaxValues(pOptions){
	/*
	// Compute new min and max values when model type selection has been updated.
	
	// Make a copy from the objectModelData object to keep original values
	var modelDataCopy = jQuery.extend(true, {}, objectModelData);
	
	// Filter model types that have not been checked
	modelDataCopy = mf_filter_by_model_type(pOptions, modelDataCopy);
	
	var min = {};
	var max = {};
	
	for(type in modelDataCopy){
		for(model in modelDataCopy[type]){
			for(key in modelDataCopy[type][model]){
				var value = 0;
				try{
					value = parseFloat(modelDataCopy[type][model][key]);
					if(isNaN(value) || value+'' == 'NaN')
						// Value is not a number -- >ignore it
						continue;
				}
				catch(err){
					value = 0;
				}

				if(!min[key]){
					// Set initial minimum to the highest int value
					min[key] = Number.MAX_VALUE;
				}
				
				if(!max[key]){
					// Set initial maximum to the lowest int value
					max[key] = Number.MIN_VALUE;
				}
				
				min[key] = Math.min(min[key], value);
				max[key] = Math.max(max[key], value);
			}
		}
	}
	
	*/
	
	// Copy new values in the options
	if(min['basic_price_num']){
		pOptions.price_range.min = min['basic_price_num'];
	}
	else{
		pOptions.price_range.min = 0;
	}
	if(max['basic_price_num']){
		pOptions.price_range.max = max['basic_price_num'];
	}
	else{
		pOptions.price_range.max = 0;
	}
	
	if(min['basic_financing_price_num']){
		pOptions.loan_rate.min = min['basic_financing_price_num'];
	}
	else{
		pOptions.loan_rate.min = 0;
	}
	if(max['basic_financing_price_num']){
		pOptions.loan_rate.max = max['basic_financing_price_num'];
	}
	else{
		pOptions.loan_rate.max = 0;
	}
	
	if(min['fuel_consumption_combined_num'])
		pOptions.fuel_consumption.min = min['fuel_consumption_combined_num'];
	else
		pOptions.fuel_consumption.min = 0;
	
	if(max['fuel_consumption_combined_num'])
		pOptions.fuel_consumption.max = max['fuel_consumption_combined_num'];
	else
		pOptions.fuel_consumption.max = 0;
	
	if(min['max_output_num'])
		pOptions.engine.min = min['max_output_num'];
	else
		pOptions.engine.min = 0;
		
	if(max['max_output_num'])
		pOptions.engine.max = max['max_output_num'];
	else
		pOptions.engine.max = 0;

	if(min['top_speed_num'])
		pOptions.max_speed.min = min['top_speed_num'];
	else
		pOptions.max_speed.min = 0;
	
	if(max['top_speed_num'])
		pOptions.max_speed.max = max['top_speed_num'];
	else
		pOptions.max_speed.max = 0;
	
	if(min['co2_emission_num'])
		pOptions.co2.min = min['co2_emission_num'];
	else
		pOptions.co2.min = 0;
	
	if(max['co2_emission_num'])
		pOptions.co2.max = max['co2_emission_num'];
	else
		pOptions.co2.max = 0;
	
	if(min['luggage_capacity_num'])
		pOptions.luggage_trunk.min = min['luggage_capacity_num'];
	else
		pOptions.luggage_trunk.min = 0;
		
	if(max['luggage_capacity_num'])
		pOptions.luggage_trunk.max = max['luggage_capacity_num'];
	else
		pOptions.luggage_trunk.max = 0;
		
	return pOptions;
}

// Build initial div layout from model data
// for each model and body type
//
//<div id="clubman_clubman_coopers" class="filtered_preview">
//	<img src="[INITIAL_IMAGE]" />
//	<div id="clubman_clubman_coopers_description" class="description">[MODEL_NAME]<br />[PRICE]</div>
//</div>

$(document).ready(function(){
	//var mf = $('#mf_model_filter, .model_comparator');
	
	if(window['initModelData'] === true)
		objectModelData = getObjectModelData();
		
	//mf = $('#mf_model_filter');
	if(window['isModelFilter'] === true){
		previewContainer = $('#mf_preview');
		previewContainer.css('height', '0px');
		bigContainer = $('#filter_result_gallery');
		realDataContainer = $('#mf_real_data');
		imageContainer = $('#mf_preview_image');
		
		imageContainer.click(function(event){
			closePreview();
		});
		
		contentContainer = $('#mf_preview_content_content');
		tempDataContainer = $('#mf_temp_data');
	}

});

function mf_build_container() {
	// Apply Cufon only if not IE
	if(getInternetExplorerVersion() < 0)
		Cufon.replace('#filter_result_gallery div.desc_header');
}

function hidePreviewContainer(dataKey, cb){
	if(current != undefined){
		// Hide preview container
		if(previewContainer.css('display') != 'none'){
			
			// hide and reset financing_disclaimer
		        $('.financing_disclaimer_content_outermargins').css('display', 'none');
			$('.financing_disclaimer_content_outermargins').css('top', '');
			$('.financing_disclaimer_content_outermargins').css('left', '');
			$('.financing_arrow_container').css('top', '');      
			$('.financing_arrow_container').css('left', '');

			// Move divs underneath upwards
			toogleUnderneathDivs(false);
		
			// Update the height from the big container
			bigContainer.animate({height: '-='+previewContainerHeight});
		
			previewContainer.animate({height: 0}, animationDuration, 
				function(){
					$(this).hide('fast', 
						function(){
							previewLoaded = false;						
							if(typeof(cb) != 'undefined')
								cb(dataKey);
						}
					);
				}
			);
		}
		else{
			previewLoaded = false;
			if(typeof(cb) != 'undefined')
				cb(dataKey);
		}
	}
}

function positionPointerArrow(){
	var currentWidth = current.width();
	var currentLeft = current.position().left;
	
	// Arrow left position is currentLeft - currentWidth/2 - arrowWidth/2
	var arrowLeftPosition = currentLeft + currentWidth/2 - arrowWidth/2;
	
	$('#arrow_pointer').css('background-position', arrowLeftPosition+'px bottom');
}

function showPreviewContainer(dataKey, cb){
	// Move divs underneath downwards
	toogleUnderneathDivs(true);
	
	// Position pointer arrow
	positionPointerArrow();
	
	// Update the height from the big container
	bigContainer.animate({height: '+='+previewContainerHeight});
	
	// Show preview container
	previewContainer.animate({height: previewContainerHeight}, animationDuration, 
		function(){
			$(this).show('fast', 
				function(){
					$('#mf_preview .qf_disclaimer_body_scroll').jScrollPane({showArrows:true});
					$('#mf_preview .qf_disclaimer_body_scroll').css('visibility','visible');
					
					if(typeof(cb) != 'undefined') {
						cb(dataKey);
					}
					
					var keyPrice = dataKey + "." + "basic_price";
					// CR06 MINI Online Store Integration Stock Availability
					var onlineStorePriceAvailable = isModelAvailableInStock( keyPrice);
					if(onlineStorePriceAvailable ){ // Show Link to Stock
						$('.mf_preview .mf_preview_content_content .links_quickfacts li#additional_link_dynamic').css("display","block");
					}
									
					
					var key = dataKey + "." + "financing_disclaimer";
					
					var data = modelData[key];
					if ((data !== null) && (typeof(data) !== 'undefined')) {
						if (data !=  '') {
						      financingDisclaimer = FinancingDisclaimer();
						      financingDisclaimer.init();
						      $('.financing_disclaimer_body_content').html(data);
						      $('.financing_disclaimer_open_image').css('display', 'inline');
						}
					}
				}
			);
		}
	);
}

function closePreview(dataKey, cb){
	if(current != undefined){
		closingPreview = true;
		
		$('#filter_result_gallery div.filtered_preview_highlight').removeClass('filtered_preview_highlight').attr('title',$('.expand_text').text());
		$('#filter_result_gallery div.filtered_preview').fadeTo('fast', 1);
		//$('#filter_result_gallery div.filtered_preview .desc_header').fadeTo('fast', 1);
		
		hidePreviewContainer(dataKey, function(dKey){
			closingPreview = false;
			if(dKey != undefined && dKey !== '' && typeof(cb) != 'undefined')
				cb(dKey);
		});
	}
}

function toogleUnderneathDivs(expandForPreview){

	var currentRow = parseInt(current.attr('row'), 10);
	var nextRow = currentRow + 1;
	var displacement = '+='+previewContainerHeight;
	var allVisible = $('#filter_result_gallery div.filtered_preview:visible');
	
	if(expandForPreview === false){
		displacement = '-='+previewContainerHeight;
	}
	
	var animationQueue = []; // used to store all the animation params before starting the animation; solves initial animation slowdowns
	// Perform animation for either expanding or contracting preview by moving all rows underneath up or down
	for(var i=0;i<allVisible.length;i++){
		var elem = $(allVisible[i]);
		var elemRow = parseInt(elem.attr('row'), 10);
		
		if(elemRow >= nextRow){
			animationQueue.push(
				{
					element: elem,
					animation:
					{
						top: displacement
					}
				}
			);
		}
	}
	
	startAnimation(animationQueue);
}

function dataKeyToDivId(dataKey){
	return dataKeyToDivIdMapping[dataKey];
}

function loadPreviewMain(dataKey){

	loadingPreview = true;
	
	var divId = dataKeyToDivId(dataKey);
	
	current = $('#'+divId);
	
	if(lastDataKey == dataKey && previewLoaded){
		// Do nothing if dataKey has not changed and preview already loaded
		loadingPreview = false;
		closingPreview = false;
		return;		
	}
	
	lastDataKey = dataKey;
	
	// Fade others to 50%
	current.siblings('div.filtered_preview:visible').fadeTo('fast', 0.50);
	//current.siblings().find('.desc_header').fadeTo('fast', 0.50);

	current.addClass('filtered_preview_highlight').fadeTo('fast', 1);
	//current.find('.desc_header').fadeTo('fast', 1);
	
	// Set new top position
	var topPosition = current.height() + current.position().top;
	previewContainer.css('top', topPosition+'px');
	
	// Set new left position
	var leftPosition = 0;//$('.mf_model_filter').offset().left;
	previewContainer.css('left', leftPosition+'px');
	
	// Try first to get preview from the cache
	var content = getPreviewFromCache(dataKey);
	
	if(content != undefined && content !== ''){
		// Content is already in the cache
		// Set it into the tempDataContainer
		tempDataContainer.html(content);
		
		// Load preview
		loadPreviewContent(dataKey);
	}
	else{
	
		var quickfactsUrl = miniUrlFix.fixAbsoluteUrl(modelData[dataKey + '.model_quickfacts_link']);
		tempDataContainer.load(quickfactsUrl + " .modelnav_detail", 
			function() {
				// Save data into the cache
				savePreviewIntoCache(dataKey, tempDataContainer.html());
				
				// And load preview
				loadPreviewContent(dataKey);

			}
		);
	}
	
}

function savePreviewIntoCache(dataKey, content){
	previewCache[dataKey] = content;
}

function getPreviewFromCache(dataKey){
	return previewCache[dataKey];
}

function loadPreviewContent(dataKey){
	// Move divs into real data container
	// First empty container divs
	imageContainer.empty();
	contentContainer.empty();
	
	// Modify image to display model filter image
	var imageQuickfacts = tempDataContainer.find('.image_quickfacts');
	var tmpImg = imageQuickfacts.children('img');
	var newSrc = tmpImg.attr('data-mf_model_image');
	tmpImg.attr('src', newSrc).show();
	
	// Copy image into imageContainer
	imageContainer.append(imageQuickfacts);
	
	// Copy header and content into contentContainer
	contentContainer.append(tempDataContainer.find('.header_quickfacts'));
	contentContainer.append(tempDataContainer.find('.content_quickfacts').css('background-image','none'));
	contentContainer.append(tempDataContainer.find('.links_quickfacts'));
	contentContainer.append(tempDataContainer.find('.notice_quickfacts'));
	
	// Apply cufon
	Cufon.replace('#mf_preview_content .header_quickfacts h1, #mf_preview_content .header_quickfacts h2, #mf_preview_content .links_quickfacts a');
	
	// Apply URLS Fix
	miniUrlFix.doPartialFix('#mf_preview_content');
	
	var links = $('#mf_preview_content .links_quickfacts a');
	// Remove data-tracking linktype for the first <a>
	$(links[0]).removeAttr('data-tracking');
	// Update data-tracking linktype for the second <a>
	$(links[1]).attr('data-tracking','linktype=TC_VCO');
	
	// Show div
	showPreviewContainer(dataKey, function(dKey){
		loadingPreview = false;
		previewLoaded = true;
		current.attr('title','');
	});
}

function loadPreview(obj){
	var newKey = $(obj).attr('data-key');
	
	if(isMaxZoomLevel || loadingPreview || closingPreview || (current!=undefined && newKey == current.attr('data-key') && previewLoaded))
		// Do nothing if highest zoom level or a preview is beeing loaded or closed
		return;

	if(current != undefined && previewLoaded){
		// Close previous preview
		closePreview(newKey, loadPreviewMain);
	}
	else
		loadPreviewMain(newKey);
}

String.prototype.endsWith = function(suffix) {
	return this.match(suffix+"$") == suffix;
};

function cssImageDimensionNotSet(currentImage, zoomLevel){
	var w = currentImage.width();
	var h = currentImage.height();

	return w != imageWidths[zoomLevel] || h != imageHeights[zoomLevel];
}

function generateDisplayFilter(filteredModelData){
	// Build filter for list of divs to display
	var displayFilter = new Array();
	var hideFilter = new Array();
	var foundForShow = new Array();
	
	for(var k=0;k<allMFDiv.length;k++){
		var divId = allMFDiv[k];
		var domDivId = divId[2];
		
		if(typeof foundForShow[domDivId] !== 'undefined')
			continue;
		
		if(filteredModelData[divId[0]] !== undefined && filteredModelData[divId[0]][divId[1]] !== undefined){
			displayFilter.push('#'+domDivId);
			foundForShow[domDivId] = '1';
		}
	}
	
	for(var k=0;k<allMFDiv.length;k++){
		var divId = allMFDiv[k];
		var domDivId = divId[2];
		
		if(typeof foundForShow[domDivId] === 'undefined'){
			hideFilter.push('#'+domDivId);
		}
	}

	return {'displayFilter': displayFilter, 'hideFilter': hideFilter};
}

function getZoomLevel(countElements){
	// Get zoomlevel based on the number of container
	var zoomLevel = 0;
	for (var i = 0; i<divCount.length; i++) 
	{
		zoomLevel = i;
		if (countElements >= divCount[i]) 
		{
			break;
		}
	}
	
	return zoomLevel;
}

function avoid(a){
	a = a+1;
	return a;
}

function mf_position_container(filteredModelData) {            
	var column = 0;
	var row = 0;
	var imgIndex = 1;
	
	closePreview();
	
	// Build filter for list of divs to display
	var filters = generateDisplayFilter(filteredModelData)
	var displayFilterArray = filters.displayFilter;
	var hideFilterArray = filters.hideFilter;
	
	var countElements = displayFilterArray.length;
	var zoomLevel = getZoomLevel(countElements);
	var displayFilter = displayFilterArray.join(',');
	var hideFilter = hideFilterArray.join(',');
	
	imgIndex = zoomLevel+1;
	isMaxZoomLevel = (zoomLevel+1 == highestZoomLevel);
	avoid(0);
	var newZoomLevelClass = 'zoom_level_'+(imgIndex);
	if(lastZoomLevelClass != newZoomLevelClass){
		$('#filter_result_gallery').removeClass(lastZoomLevelClass).addClass(newZoomLevelClass);
	}
	
	lastZoomLevelClass = newZoomLevelClass;
	
	var animationQueue = []; // used to store all the animation params before starting the animation; solves initial animation slowdowns
	avoid(0);
	// Add animation to hide all divs that are not part of the filter
	if(hideFilterArray.length>0){
		var elementsToHide;
		if(countElements === 0)
			elementsToHide = $('div.filtered_preview:visible');
		else
			elementsToHide = $(hideFilter);
		
		if(pNoamin){
			// Perform no animation
			elementsToHide.hide();
		}
		else{
			animationQueue.push(
			{
				element: elementsToHide,
				animation:
				{
					opacity: 0
				},
				postCallback: function(){
					$(this).hide();
				}
			});
		}
	}
	avoid(0);
	// Reposition all elements that are part from the filter
	for(var t=0;t<displayFilterArray.length;t++){
				
		// update pictures according to zoom level
		//var dataKey = $(this).attr("id").replace('_', '.');	//replaces only first occurence
		//var imgAttribute = dataKey + '.model_filter_img_' + (zoomLevel+1);
		avoid(0);
		var _elem = $(displayFilterArray[t]);
		avoid(0);
		var dataKey = _elem.attr('data-key');

		var currentImage = _elem.children("img");
		var newImageSource = modelData[dataKey + '.model_filter_img_' + imgIndex];
		
		var animateSize = currentImage.attr('src') != newImageSource;// || cssImageDimensionNotSet(currentImage, zoomLevel);
		avoid(0);
		if(animateSize){
			if(pNoamin){
				currentImage.attr('src', newImageSource);
				currentImage.css(
				{
					'width': imageWidths[zoomLevel],
					'height': imageHeights[zoomLevel],
					'display': 'block'
				});
			}
			else{
				// Image has changed --> animate image and parent div to new width, height
				currentImage.attr('new-src', newImageSource);
				animationQueue.push(
				{
					element: currentImage,
					animation: {width: imageWidths[zoomLevel], height: imageHeights[zoomLevel]},
					postCallback: function(){
						$(this).attr('src', $(this).attr('new-src'));
						$(this).css(
						{
							'width': imageWidths[zoomLevel],
							'height': imageHeights[zoomLevel],
							'display': 'block'
						});
					}
				});
			}
		}
		else{
			currentImage.css(
			{
				'width': imageWidths[zoomLevel],
				'height': imageHeights[zoomLevel],
				'display': 'block'
			});
		}
		
		avoid(0);
		
		var xPos = column * divWidthsXPos[zoomLevel];
		if(column>0)
			xPos += margin_right[zoomLevel];
			
		var yPos = row * divHeightsYPos[zoomLevel];
		
		// Sets row as div attribute
		_elem.attr({'row': row, 'column': column, 'index': (row+1)*column});
		
		var animationParams = {opacity: 1,top: yPos + def_px,left: xPos + def_px};
		
		//if(animateSize){
			animationParams['width'] = divWidths[zoomLevel];
			animationParams['height'] = divHeights[zoomLevel];
		//}
		
		avoid(0);
		
		if(pNoamin){
			_elem.css(animationParams);
			_elem.show();
		}
		else{
			animationQueue.push(
			{
				element: _elem,
				animation: animationParams
			});
		}

		avoid(0);
		
		column++;
		if (column >= maxDivsPerRow[zoomLevel]) {
			column = 0;
			row++;
		}
	}
	
	avoid(0);
	row = Math.ceil(countElements/maxDivsPerRow[zoomLevel]);
	
	var nHeight = (row * divHeightsYPos[zoomLevel]);
	if(pNoamin){
		$('#filter_result_gallery').css('height', nHeight + def_px);
	}
	else{
		animationQueue.push(
		{
			element: $('#filter_result_gallery'),
			animation:
			{
				height: nHeight + def_px
			}
		});
	}
	avoid(0);
	if(!pNoamin){
		startAnimation(animationQueue);
	}
	avoid(0);
	pNoamin = false;
}

var _queue;
var queueTimeout = 20;
function startAnimation(animationQueue){
	
	for (i = 0; i < animationQueue.length; i++) {
		var anim = animationQueue[i];
		var options = 
		{
			'duration': animationDuration,
			'easing': animationEasing,
			'complete': anim.postCallback,
			'queue': false
		};
		anim.element.animate(anim.animation, options);
	}
	
	/*
	_queue = animationQueue;
	window.setTimeout("_startAnimation()", queueTimeout);
	*/
}

function _startAnimation(){
	if(_queue!== undefined && _queue.length>0){
		var anim = _queue.shift();
		var options = 
		{
			'duration': animationDuration,
			'easing': animationEasing,
			'complete': anim.postCallback,
			'queue': false
		};
		
		anim.element.animate(anim.animation, options);
		window.setTimeout("_startAnimation()", queueTimeout);
	}
}

// This is the end of the file
}catch(e){console.log('Error in m_model_filter_logic: ' + e.description);}

// ---- m_model_filter ----
try{ // getObjectModelData is declared in model_filter_logic.js file and contains all body and type information.
var mfObjectModelData = getObjectModelData();

function bodyExists(body){
	// Check if the body exists
	try{
		var tmp = mfObjectModelData[body];
		if(typeof(tmp)=='undefined' || tmp == undefined){
			// Body does not exists
			return false;
		}
	}
	catch(err){
		return false;
	}
	
	return true;
}

function initModelFilterApplication(){
  //webkit browsers have issues when application is not initialized on document ready
  //var sUserAgent = navigator.userAgent;
  //if (sUserAgent.indexOf("WebKit") !== -1) {
    $(document).ready(function(){
      startModelFilterApplication();
    });
  //}
  //else {
    //startModelFilterApplication();
  //}
}

function startModelFilterApplication(){

	var mf_ft = new Array();
	var ml_sl_ft = new Array();

	var mf_dt = new Array();
	var ml_sl_dt = new Array();
	var mf_sl_dt_display = new Array();

	// fuelTypes is defined in model_data_js.js
	for(var i=0; i<fuelTypes.length; i++){
		var tmp = {};
		tmp['label'] = fuelTypes[i];
		tmp['value'] = fuelTypes[i];
		
		mf_ft.push(tmp);
		ml_sl_ft[fuelTypes[i]] = fuelTypes[i];
	}
	
	// driveTypes is defined in model_data_js.js
	// If in the URL the request parameter 'mf_dt' is found, 
	// this URL value is preselected
	var mf_drive_type = getQueryParams()['mf_dt'];
	
	for(var i=0; i<driveTypes.length; i++){
		var tmp = {};
		tmp['label'] = driveTypes[i];
		tmp['value'] = driveTypes[i];

		mf_dt.push(tmp);
		ml_sl_dt[driveTypes[i]] = driveTypes[i];

		if ((typeof mf_drive_type !== 'undefined') && 
		    (driveTypes[i] === mf_drive_type)) {
			mf_sl_dt_display[driveTypes[i]] = driveTypes[i];
		}
	}

	var options = {
		model_types: [],
		selected_model_types: [],
		selected_model_types_for_filter: [],
		
		// Frage:  fuel_types: PflegeElement
		fuel_types: mf_ft,
		drive_types: mf_dt,
		selected_fuel_types: [],
		selected_drive_types: mf_sl_dt_display,
		selected_fuel_types_for_filter: ml_sl_ft,
		selected_drive_types_for_filter: ml_sl_dt,
		
		price_range:{step: 1, unit:price_unit, unit_pos:price_unit_position},
		loan_rate:{step: 1, unit:loan_rate_unit, unit_pos:loan_rate_unit_position},
		fuel_consumption:{step: 0.1, unit:fuel_consumption_unit, unit_pos:fuel_consumption_unit_position},
		engine:{step: 1, unit:engine_unit, convertion_rate:1.36, unit2:'hp', unit_pos:engine_unit_position},
		max_speed:{step: 1, unit: max_speed_unit, unit_pos: max_speed_unit_position},
		co2:{step: 1, unit:co2_unit, unit_pos:co2_unit_position},
		luggage_trunk:{step: 1, unit:luggage_capacity_unit, unit_pos:luggage_capacity_unit_position},
		debugDiv: 'debug'
	};

	// Get the body
	var body = miniBodyType;

	// Check if the body exists
	if(!bodyExists(body)){
		// body does not exist --> invalid body. Set body=''
		body = '';
	}
	
	// bodyIdsToBodyName is defined in model_data_js.js
	var i = 0;
	for (key in bodyIdsToBodyName) {
		options.model_types[i] = {label:bodyIdsToBodyName[key], value:key};
		options.selected_model_types_for_filter[key]=key;
		i++;
	}

	if(body != ''){
		// Set default body
		options.selected_model_types = new Array();
		options.selected_model_types[body] = body;
	}


	mf_build_container();
	initModelFilter(computeMinMaxValues(options), mf_update_display, mf_filter_model_type_updated);
	
	// Apply Cufon
	Cufon.replace('#mf_subheadline, #mf_headline, #mf_control_panel .mf_header, #mf_reset .teaser_component_link_standard', { hover: true });
	
	// First visible header in panel has padding-top: 0px
	$('#mf_control_panel div.mf_header:visible:first').css('padding-top','0px');
}
}catch(e){console.log('Error in m_model_filter: ' + e.description);}

// ---- m_teaser_component ----
try{ var version = getInternetExplorerVersion();

 // IE 6, 7
/* 
if (version > -1 && version < 8.0) {
	Cufon.replace('.teaser_component_h100', { leftOffset: -8, topOffset: -17 });
	Cufon.replace('.teaser_component_h80', { leftOffset: -5, topOffset: -13 });
	Cufon.replace('.teaser_component_h60', { leftOffset: -5, topOffset: -10 });
	Cufon.replace('.teaser_component_h50', { leftOffset: -4, topOffset: -8 });
	Cufon.replace('.teaser_component_h40', { leftOffset: -3, topOffset: -7 });
	Cufon.replace('.teaser_component_h30', { leftOffset: -3, topOffset: -5 });
	Cufon.replace('.teaser_component_h25', { leftOffset: -2, topOffset: -4 });
	Cufon.replace('.teaser_component_h20', { leftOffset: -2, topOffset: -3 });
	Cufon.replace('.teaser_component_h15', { leftOffset: -2, topOffset: -2 });
	Cufon.replace('.teaser_component_h13', { leftOffset: -1, topOffset: -3 });
	Cufon.replace('.teaser_component_h11', { leftOffset: -1, topOffset: -4 });

} else {
    // other browsers
	Cufon.replace('.teaser_component_h100', { leftOffset: -8, topOffset: -26 });
	Cufon.replace('.teaser_component_h80', { leftOffset: -6, topOffset: -19 });
	Cufon.replace('.teaser_component_h60', { leftOffset: -5, topOffset: -16 });
	Cufon.replace('.teaser_component_h50', { leftOffset: -4, topOffset: -14 });
	Cufon.replace('.teaser_component_h40', { leftOffset: -3, topOffset: -10 });
	Cufon.replace('.teaser_component_h30', { leftOffset: -3, topOffset: -8 });
	Cufon.replace('.teaser_component_h25', { leftOffset: -2, topOffset: -6 });
	Cufon.replace('.teaser_component_h20', { leftOffset: -2, topOffset: -5 });
	Cufon.replace('.teaser_component_h15', { leftOffset: -2, topOffset: -4 });
	Cufon.replace('.teaser_component_h13', { leftOffset: -1, topOffset: -3 });
	Cufon.replace('.teaser_component_h11', { leftOffset: -1, topOffset: -3 });
}
*/

// IE 6, 7

var fixLineHeightConfig = 
	{
		'11': true,
		'13': true,
		'15': true,
		'20': true,
		'25': true,
		'30': true,
		'40': true,
		'50': true,
		'60': true,
		'80': true,
		'100': true
	};
	
var miniIntFix = null;

function cufonReplaceHeadlines(prefix, pHover){

/*        if ($('.teaser_content_international') !== null) {
	  return;
        }
*/
	if (miniIntFix === null) {
		if ($(".mini_international").length > 0) {
			miniIntFix = ":not(.mini_international)"; //in IE, this selector slows down replacements by an extreme factor, so just use it on TMI pages
		}
		else {
			miniIntFix = "";
		}
	}
	if (version > -1 && version <= 8.0) {
		// IE 6, 7, 8 Browsers
		Cufon.replace(prefix+'.teaser_component_h100'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['100'], leftOffset: -2, topOffset: 5});
		Cufon.replace(prefix+'.teaser_component_h80'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['80'], leftOffset: -2, topOffset: 4});
		Cufon.replace(prefix+'.teaser_component_h60'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['60'], leftOffset: -2, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h50'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['50'], leftOffset: -2, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h40'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['40'], leftOffset: -1, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h30'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['30'], leftOffset: -1, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h25'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['25'], leftOffset: 0, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h20'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['20'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h15'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['15'], leftOffset: 0, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h13'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['13'], leftOffset: 0, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h11'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['11'], leftOffset: 0, topOffset: 2});
	} 
	else
	{
		// other browsers
		Cufon.replace(prefix+'.teaser_component_h100'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['100'], leftOffset: -2, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h80'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['80'], leftOffset: -1, topOffset: -1});
		Cufon.replace(prefix+'.teaser_component_h60'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['60'], leftOffset: -1, topOffset: 0});
		Cufon.replace(prefix+'.teaser_component_h50'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['50'], leftOffset: 0,topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h40'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['40'], leftOffset: 0, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h30'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['30'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h25'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['25'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h20'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['20'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h15'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['15'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h13'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['13'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h11'+miniIntFix, {hover: pHover, fixLineHeight:fixLineHeightConfig['11'], leftOffset: -1, topOffset: 2});
	}
	
	Cufon.replace(prefix+'.teaser_component_link:not(.mini_international)', { hover: true });
}

/*Section for price communication*/

var priceCommunicationCache = {};

function MINIPriceCommunication(id, type){
	
	var _this = this;
	_this.id = id;
	priceCommunicationCache[_this.id] = new Array();
	_this.type = type;
	_this.cufonReplace = (typeof Cufon === 'function' && typeof Cufon.replace === 'function');
	
	var ieVersion = getInternetExplorerVersion();
	if(ieVersion > -1){
		if(ieVersion>7)
			_this.browserName = 'ie8';
		else
			_this.browserName = 'ie';
	}
	else if(navigator.appName.toLowerCase()==='opera')
		_this.browserName = 'opera';
	else if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1)
		_this.browserName = 'chrome'
	else
		_this.browserName = 'noie';
	
	// Amount of elements to be replaced with cufon
	var ELEMENTS_COUNT = 3;
	
	// Configuration for the top offset
	var TOPOFFSET_CONFIG = 
	{
		'ie': {
			1: {'text_1-top': 15, 'text_3-top': 14},
			2: {'text_1-top': 58, 'text_3-top': 58}
		},
		'ie8': {
			1: {'text_1-top': 16, 'text_3-top': 17},
			2: {'text_1-top': 65, 'text_3-top': 66}
		},
		'noie': {
			1: {'text_1-top': 17, 'text_3-top': 18},
			2: {'text_1-top': 67, 'text_3-top': 68}
		},
		'chrome': {
			1: {'text_1-top': 14, 'text_3-top': 17},
			2: {'text_1-top': 65, 'text_3-top': 67}
		},
		'opera': {
			1: {'text_1-top': 15, 'text_3-top': 15},
			2: {'text_1-top': 62, 'text_3-top': 62}
		}
	};
	
	// Callback to be notified when cufon replacement has occured
	this.onElementReplaced = function(element){
		priceCommunicationCache[_this.id].push(element);

		if(priceCommunicationCache[_this.id].length === ELEMENTS_COUNT){
			fixComponent();
		}
	};
	
	// Method to start positioning the elements
	this.start = function(){
		var priceContent = $('#'+_this.id+' .text_2 h1').html();
		
		if(_this.cufonReplace){
			Cufon.replace('#'+_this.id+' .text_1 h1, #'+_this.id+' .text_2 h1, #'+_this.id+' .star h1');
		}
		else{
			fixComponent();
		}
	};
	
	function fixComponent(){
		var p = $('#'+_this.id);

		var text_1 = p.children('.text_1');
		var text_2 = p.children('.text_2');
		var star = p.children('.star');
		var afterStar = p.children('.after_text_2_star');
		var text_3 = p.children('.text_3');
		
		var text1Offset = text_1.offset();
		var text2Offset = text_2.offset();
		var starOffset = star.offset();
		var afterStarOffset = afterStar.offset();
		var text3Offset = text_3.offset();
		
		if(text1Offset.top === text2Offset.top){
			// text_1 and text_2 elements are on same lines --> Apply margin-top on text_1
			text_1.css('top', TOPOFFSET_CONFIG[_this.browserName][_this.type]['text_1-top']+'px');
		}
		
		if(text2Offset.top === starOffset.top){
			// Set the height from star the same as the height from text_2
			star.css('height', text_2.height()+'px');
		}
		
		if(starOffset.top === text3Offset.top){
			// Set the height from star the same as the height from text_3
			star.css('height', text_3.height()+'px');
		}
		
		if(starOffset.top === afterStarOffset.top){
			// star and after_text_2_star elements are on same lines --> Set height from after_text_2_star to the same height as star
			afterStar.css('height', star.height()+'px');
		}
		else if(afterStarOffset.top === text3Offset.top){
			// after_text_2_star and text_3 elements are on same lines --> Set height from after_text_2_star to the same height as text_3
			afterStar.css('height', text_3.height()+'px');
		}
		
		if(text2Offset.top === text3Offset.top){
			// text_2 and text_3 elements are on same lines --> Apply margin-top on text_3
			text_3.css('top', TOPOFFSET_CONFIG[_this.browserName][_this.type]['text_3-top']+'px');
		}
		
		p.css('top','0px');
	}
}

$(document).ready(
	function(){

		$('.teaser_component_mixed_headline').next('.clearing').hide();
    
    // SEO: close expandable teaser after document was loded (keep it open for robots)
    $('#content_area div.tc_expandable_content').hide();
    
		//  ie8_fix() {
		if (getInternetExplorerVersion() > 7) {
			$(".teaser_component").each(function(index) {
				var bckimg = $(this).find(".teaser_component_l1").css('background-image') ;
				if (bckimg!=undefined && bckimg!=null && bckimg!='none' && bckimg!='NONE' ) {
					$(this).find(".teaser_component_copy_standard").css('padding-top','20px') ;
				}
			});
		}
	}
);

cufonReplaceHeadlines('', false);

/** Appends url parameters of the current location to an html anchor element*/
function appendParams(ankerElement){
	var page_params = getPageUrlVars();
	var targetLink = ankerElement.href;
	
	for (var i = 0; i < page_params.length; i++){
		targetLink = addParam(targetLink, page_params[i][0], page_params[i][1], false);
	}
	ankerElement.href = targetLink;
}

/* open close expandable teaser component */
function tcToggleExpandable(clickedLink){
  var link = $(clickedLink);
  var linkSibling = link.siblings(':first'); // whether open or close link
  var expandableContent = link.parent().parent().parent().parent().find('.tc_expandable_content');
  if(expandableContent.is(':visible')){
    expandableContent.hide();
  }else{
    expandableContent.show();
  }
  link.hide();
  linkSibling.show();
}
}catch(e){console.log('Error in m_teaser_component: ' + e.description);}

// ---- m_country_select_component ----
try{ /*Cufon.replace('.country_sel a');
Cufon.replace('.country_sel_region_head');

var LANG_COOKIE_OPTIONS = { path: '/', expires: 999 };
LANG_COOKIE_OPTIONS['domain'] = getDomain();
var urlLangVals = window.location.href.split("/");
var urlLangPart = urlLangVals[3];
if (urlLangPart.length === 2) {
    var langCookieVal = urlLangPart +  ',' + urlLangVals[0] + "/" + urlLangVals[1] + "/" + urlLangVals[2] + "/" + urlLangVals[3] + "/";
    if($.cookie("geo-targeting") !== langCookieVal) {
        $.cookie("geo-targeting", langCookieVal, LANG_COOKIE_OPTIONS);
    }
}*/

function countrySelectCheckDealer() {
  return;
  if (miniSubsidiary.isSubsidiarySelected()) {
    miniSubsidiary.onSubsidiaryReady(function() {
      // Get all visibles countries and languages
      $('.country_sel_a[style*=z-index]').each(function() {
         // Get language from href, because somebody forgot to code the language to url. Thanks.
         var array = $(this).find('a').attr('href').split('/');         
         var lang = array[array.length-1];
         var found = false;
         // Compare to stored language
         for (var supportedLang in miniSubsidiary.getSupportedLanguages()) {
           if (supportedLang === lang) { 
             found = true;
             break;
           }
         } 
         if (!found) {
           $(this).removeAttr('style');
         }
      });
    });
  }
}



}catch(e){console.log('Error in m_country_select_component: ' + e.description);}

// ---- m_faq ----
try{ // JavaScript Document

    var faq;
    var current_category;
    var override_module_navi=true;    
    
    /** called by m_breadcrumb.js to init a faq category*/
    function initFaqMenu(bcOids) {
        console.log('initFaqMenu called: bcOids=' + bcOids);
        
    	if(typeof faq_init_content == 'function') {//is this a faq page?
			faq_init_content();
			faq_init(getCategoryByBreadcrumbArray(bcOids));
		} 	
    }
    
    function getCategoryByBreadcrumbArray(bcOids) {
        console.log('getCategoryByBreadcrumbArray called: bcOids=' + bcOids);  
        
		for (var z = bcOids.length - 1; z >= 0; z--) {
			var bc_entry_oid = bcOids[z];
			
			var category = topic_mappings[bc_entry_oid];
			if (category != null) {				
				return category;
			}
		}
		//not found, return first category:
		return faq.categories[0].id;
    }
    
	function faq_init(topic_id) {    
        console.log('faq_init called: topic_id=' + topic_id);  
          
        faq_cat(topic_id);
        current_category = topic_id;
        if(override_module_navi) {
        	faq_build_module_navigation();
        	faq_set_active_elements();
        	$(".module_navigation_level_1 > *").show();
        }
        // NO CUFON for LINKlist Cufon.replace('.faq_root_question > a');     
    }
    
    function faq_set_active_elements() {
        console.log('faq_set_active_elements called');  
        
		var this_category_link = "javascript:faq_cat('" + current_category + "');";
		$(".module_navigation_ul").hide();
		$(".module_navigation_li").removeClass("show_always");		
		$(".module_navigation_a_deselected").show();
		$(".module_navigation_a_selected").hide();
		moduleNavigation.modulenavi_set_active_elements(this_category_link);
    }
    
    /** sets the subheadline of faq */
    function updateHeadline(headline) {
		$(".teaser_component > h1:last").html(headline);
		if(navigator.appName != "Microsoft Internet Explorer"){
		    Cufon.replace('.teaser_component > h1:last');
		}
    }
    
    function faq_cat(topic_id) {    
    
        console.log('faq_cat called: topic_id=' + topic_id);  
         
        var questionDiv;
        var answerDiv;
        var categoryHeadline;
        var firstQuestion = 0;
        var category_found = false;
        
        $("#faq_answers > div").hide();
        $("#faq_answers").hide();
        $("#faq_questions > ul > li").hide();        
        
        outer: for(var i=0; i<faq.categories.length; i++) {
            if (faq.categories[i].id == topic_id) {
                // gefunden!!!                
                updateHeadline(faq.categories[i].title);                
                category_found = true;
                break;
            } else if (faq.categories[i].subcategories.length > 0) {
                for(var j=0; j<faq.categories[i].subcategories.length; j++) {
                    if (faq.categories[i].subcategories[j].id == topic_id) {
						current_category = topic_id;
                        updateHeadline(faq.categories[i].subcategories[j].title);                        
                        category_found = true;
                        break outer;
                    }
                }
            }
        }
        
        if (category_found) {
			current_category = topic_id;
			if(override_module_navi) {
				faq_set_active_elements();
			}
        }
        
        for(var i=0; i<faq.questions.length; i++) {
            if (faq.questions[i].category_id === topic_id) {
                
		$('#' + faq.questions[i].question_id+'Li').show();
				
                if (firstQuestion === 0) {
	            $("#faq_answers").show();
                    faq_show_answer(faq.questions[i].question_id);
                    firstQuestion = 1;
                }                
            }    
	    }
      if (typeof isMobile !== 'undefined' && isMobile) {
        closeMobileMenu();
        $('#mobile_mainnav .module_navigation_ul').show();
      }
    }
    
     function faq_show_answer(question_id) {
        console.log('faq_show_answer called: question_id=' + question_id);  
                
        $("#faq_answers > div").hide();
        $('#answer_' + question_id).show();
        $('#answer_question_' + question_id).show();
        
        $('#faq_questions li.faq_current_question').each(function(index) {
          $(this).removeClass('faq_current_question');
        });

        $('#' + question_id + "Li").addClass('faq_current_question');
        // NO CUFON for LINKlist Cufon.refresh('.faq_root_question > a');
        //$('#' + question_id + ' > div').show();
     }
    
    function faq_build_module_navigation() {
        console.log('faq_build_module_navigation called');  
            
        $(".module_navigation_level_1 > *").remove().hide();
        var categoryLink;
        var categoryId;
        var subcategoryId;

        for(var i=0; i<faq.categories.length; i++) {
            categoryId = faq.categories[i].id;
            categoryLink = '<li id="' + categoryId + '" class="module_navigation_li">';
			categoryLink = categoryLink +'<a class="module_navigation_a_deselected" href="javascript:faq_cat('+ "'" + categoryId + "'" + ');">' + faq.categories[i].title + '</a>'; 
			//double buffering
			categoryLink = categoryLink +'<a class="module_navigation_a_selected" href="javascript:faq_cat('+ "'" + categoryId + "'" + ');">' + faq.categories[i].title + '</a>'; 
			if (faq.categories[i].subcategories.length > 0) {
                categoryLink = categoryLink + '<ul class="module_navigation_ul module_navigation_level_3">';
                for(var j=0; j<faq.categories[i].subcategories.length; j++) {
                    subcategoryId = faq.categories[i].subcategories[j].id;
                    categoryLink = categoryLink + '<li class="module_navigation_li" id=' + subcategoryId + '>';
                    categoryLink = categoryLink +'<a class="module_navigation_a_deselected" href="javascript:faq_cat('+ "'" + subcategoryId + "'" + ');">' + faq.categories[i].subcategories[j].title + '</a>';
                    //double buffering
                    categoryLink = categoryLink +'<a class="module_navigation_a_selected" href="javascript:faq_cat('+ "'" + subcategoryId + "'" + ');">' + faq.categories[i].subcategories[j].title + '</a>';
                    categoryLink = categoryLink + '</li>'; 
                }
                categoryLink = categoryLink + '</ul>';
            }
			
			categoryLink = categoryLink + '</li>';
        
            $(".module_navigation_level_1").append(categoryLink);        
	    }	    
	    if(navigator.appName != "Microsoft Internet Explorer"){
	           Cufon.replace('.module_navigation_level_1 a');
	    }
	    //(no longer)needs to be performed again after module navigation was created
	    //$('.module_navigation_li').hover(highLight, unhighLight); 
    }

}catch(e){console.log('Error in m_faq: ' + e.description);}

// ---- m_smart_search ----
try{ var MINI_SMARTSEARCH_INPUT_ID = "fastSearchText";
var mini_smartsearch_extended = false;
var headerSearch = false;
var mini_smartsearch_lastSearchTerm = '';
var mini_smartsearch_searcher;
var mini_smartsearch_searcher_extended;
var mini_smartsearch_searchResultsPerPage;
var mini_smartsearch_fastSearchControl;
var mini_smartsearch_fastSearchKey;
var mini_smartsearch_minimumSearchLength;
var mini_smartsearch_maxSearchResults;
var noResultsString;
var extendedSearchPage;
var isMobile = false;
var mini_smartsearch_extendedSearchNode = '';
var mini_smartsearch_orgSearchNode = '';

function StringBuffer() { 
    this.buffer = []; 
} 

StringBuffer.prototype.append = function append(string) { 
    this.buffer.push(string); 
    return this; 
}; 

StringBuffer.prototype.toString = function toString() { 
    return this.buffer.join(""); 
}; 
  
function mini_smartsearch_copyValue(e){
  // Get the search term
  var query = mini_smartsearch_inputText.attr('value');

  if((query.length >= mini_smartsearch_minimumSearchLength) && (mini_smartsearch_lastSearchTerm != query)) {
    if((typeof(console) !== 'undefined') && (console !== null)) {
        console.log('MINI search Query: ' + query);
    }
        
    var input = jQuery('#' + MINI_SMARTSEARCH_INPUT_ID);
    headerSearch = (mini_smartsearch_inputText.attr('name') == 'q');
    
    // Search term length is valid --> copy and trigger search
    input.val(query);
    input.trigger('keyup');
  }

  mini_smartsearch_lastSearchTerm = query;
  
  // close the sharing/tell a friend if a search is initiated
  if ( (typeof(sharing) !== 'undefined') && sharing) {  
    sharing.closeSharingLayer();
  }
  if (typeof closeTellAFriendLayer == 'function') {
	closeTellAFriendLayer();
  }
}

function setSearchField(e){
   // Get the search term
  mini_smartsearch_inputText = $('input[name="q"]');
  headerSearch = true;
  mini_smartsearch_extended = false;

}
  
function mini_smartsearch_searchDone(sc, searcher){
  if((typeof(console) !== 'undefined') && (console !== null)) {
      console.log('MINI search found ' + searcher.results.length + ' results');
  }
  
  if (isMobile) {
    // Emulate extended search
    headerSearch = false;
    mini_smartsearch_extended = true;
  }
  
  // Clear old results
  var resultsNode;
  var resultsNodeId;
  if (headerSearch){
    mini_smartsearch_searcher = searcher;
    resultsNodeId = 'fastSearchResults';
    resultsNode = jQuery('#'+resultsNodeId);
    
  }
  else{
    mini_smartsearch_searcher_extended = searcher;
    resultsNodeId = 'fastSearchDivExtended';
    resultsNode = jQuery('#'+resultsNodeId+' .fastSearchResults');
  }
  resultsNode.html('');
  
  var resultsFound = searcher.results && searcher.results.length > 0;
  if (resultsFound) {
    
    // Notify Tracking Service
    if (searcher.cursor) {
      if (typeof miniTracking !== 'undefined' && typeof miniTracking === 'object' && typeof miniTracking.searchStarted === 'function'){
        miniTracking.searchStarted(searcher.Ye, searcher.cursor.estimatedResultCount);
      }
      else {
        // Register to be notified when mini tracking object will be ready
        $(window).bind('minitrackingready', {searchWord: searcher.Ye, searchHits: searcher.cursor.estimatedResultCount}, function(event, miniTrackingObject){
          miniTrackingObject.searchStarted(event.data.searchWord, event.data.searchHits);
        });
      }
    }
  
    var lastIndex = mini_smartsearch_maxSearchResults;
    if((searcher.results.length < mini_smartsearch_maxSearchResults) || (mini_smartsearch_extended && !headerSearch))
      // In extended mode we display all results from the list.
      lastIndex = searcher.results.length;
    
    lastIndex = lastIndex-1;
    
    for (var i = 0; i <= lastIndex; i++) {
      var result = searcher.results[i];
      var resultItemContainer = new StringBuffer(); 
      var aLink = result.unescapedUrl;
      var headline = new StringBuffer().append('<div class="searchHeadline"><a href="').append(aLink);
      if ($('#extendedSearchContainer').length > 0) {
        headline = headline.append('" onclick="miniTracking.handleLinkClickEvent(this)" data-tracking="linktype=div_AS">');
      }
      else {
        headline = headline.append('" onclick="miniTracking.handleLinkClickEvent(this)" data-tracking="linktype=div_QS">');
      }
      headline = headline.append(result.titleNoFormatting).append('</a></div>').toString();
      var desc = $('<div/>').html(result.content).text();
      var description = new StringBuffer().append('<div class="searchdesc">').append(desc).append('</div>').toString();
      
      // Append results
      if(i===0)
        // First result
        resultItemContainer.append('<li class="first searchResultItem">');
      else if(i == lastIndex)
        // Last result
        resultItemContainer.append('<li class="last searchResultItem">');
      else
        resultItemContainer.append('<li class="any searchResultItem">');
    
      //append headline and description    
      var divNormal = new StringBuffer().append('<div class="normal">');
      divNormal.append(headline).append(description).append('</div>');
      var divHover = new StringBuffer().append('<div class="divHover">');
      divHover.append(headline).append(description).append('</div>');
      
      resultItemContainer.append(divNormal.toString()).append(divHover.toString()).append('</li>');
      resultsNode.append($(resultItemContainer.toString()));
    }
    
    // Register hover event on item with class searchResultItem
    if (!isMobile) {
      $('#'+resultsNodeId+' .searchResultItem').hover(
        function(){
          $(this).children('.normal').hide();
          $(this).children('.divHover').show();
        },
        function(){
          $(this).children('.normal').show();
          $(this).children('.divHover').hide();
        }
      );
    } // isMobile
  }
  
  else{
    // No results found
    resultsNode.html('<div class="noResults">' + noResultsString + '</div>');
    
    jQuery('#fastSearchViewAllResults').hide();
  }
    
  if(mini_smartsearch_extended && !headerSearch){
    // We are in extended search mode --> fill pagination
    
    // Clear pagination first
    jQuery('.fastSearchPaging').html('');
    if(searcher.cursor && searcher.cursor.pages && searcher.cursor.pages.length > 1){
      var count = searcher.cursor.pages.length;
      var currentPage = -1;
      if (count > 1) {
        jQuery('.fastSearchPaging').append('<a href="javascript:void(0)">&lt;&lt;&nbsp;</a>');
      }
      for(var j=0; j<count; j++){
        var c = '';
        
        if(searcher.cursor.currentPageIndex == j) {
          c = 'currentpage';
          currentPage = j;          
        }
          var pipe = (j < (count-1))? '<span>' + '&nbsp;' + '|' + '&nbsp;' + '</span>' : '';  
        jQuery('.fastSearchPaging').append('<a href="javascript:void(0)" onclick="searchGotoPage('+j+')" class="'+c+'">'+(j+1) +'</a>'+pipe);
      }
      if (count > 1) {
        jQuery('.fastSearchPaging').append('<a href="javascript:void(0)" onclick="searchGotoPage('+(currentPage+1)+')">&nbsp;&gt;&gt;</a>');
        jQuery('.fastSearchPaging a:first').click(function(){
          var index = currentPage > 0 ? currentPage-1 : 0;
          searchGotoPage(index);
        });  
        if (currentPage === 0) {
          $('.fastSearchPaging:first a:first').hide();
          $('.fastSearchPaging:last a:first').hide();
        } else if (10 == currentPage+1) {
          $('.fastSearchPaging:first a:last').hide();
          $('.fastSearchPaging:last a:last').hide();  
        }
        else {
          $('.fastSearchPaging:first a:first').show();
          $('.fastSearchPaging:last a:first').show();
            $('.fastSearchPaging:first a:last').show();
          $('.fastSearchPaging:last a:last').show();        
        }
      }
    }
    
    var endIndex = 0;
    var totalResults = 0;
    var currentPageIndex = 0;
    
    if(resultsFound){
      totalResults = searcher.cursor.estimatedResultCount;
      currentPageIndex = searcher.cursor.currentPageIndex+1;
      searcher.cursor.estimatedResultCount;
      
      if(typeof searcher.cursor.pages[searcher.cursor.currentPageIndex+1] !== 'undefined'){
        // There is a next page available
        endIndex = searcher.cursor.pages[searcher.cursor.currentPageIndex+1].start;
      }
      else{
        // No next page available --> endIndex = currentPage start + total results
        endIndex = parseInt(searcher.cursor.pages[searcher.cursor.currentPageIndex].start) + lastIndex + 1;
        if(endIndex > totalResults)
          totalResults = endIndex;
      }
    }
    
    // Show result headline (i.e. page 1. 1 of 10 Results.)
    var tmpText = $('#fastSearchResultLeftHidden').html();
    tmpText = tmpText.replace('{0}', currentPageIndex);
    $('#fastSearchResultLeft').html(tmpText);
    tmpText = $('#fastSearchResultRightHidden').html();
    tmpText = tmpText.replace('{0}', endIndex);
    tmpText = tmpText.replace('{1}', totalResults);
    $('#fastSearchResultRight').html(tmpText);
    Cufon.replace('#fastSearchResultLeft, #fastSearchResultRight');
    // Add meta tag viewport
    /*var meta = $('meta[name="viewport"]');
    if(meta.length===0){
      meta = $('<meta/>').attr('name', 'viewport').attr('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0 user-scalable=no');
      $('head').append(meta);
    }*/
  }

  // Show results
  if (headerSearch){
    if(resultsFound){
      Cufon.replace('#fastSearchDiv .searchHeadline a');
      
      if(searcher.results.length > mini_smartsearch_maxSearchResults){
        var queryParameter = $('input[name="q"]').val();
        
        // Display View All Results link only if more than mini_smartsearch_maxSearchResults results available
        if($('.extendedsearch').length>0){
          jQuery('#fastSearchViewAllResults a').click(
            function(event){
              // Track event
              miniTracking.handleLinkClickEvent(event);
              // We are in the extended search page already. Trigger extended search
              mini_smartsearch_hideSmartSearch();
              headerSearch = false;
              mini_smartsearch_inputText = $('input[name="qx"]');
              mini_smartsearch_extended = true;
              mini_smartsearch_inputText.val(queryParameter);
              defaultExtendedText = queryParameter;
              // Trigger search
              mini_smartsearch_copyValue(null);
            }
          );
        }
        
        // Build redirect link to extended search page
        var url = extendedSearchPage + '#' + encodeURIComponent(queryParameter);
        jQuery('#fastSearchViewAllResults a').attr('href', url);
        
        jQuery('#fastSearchViewAllResults').show();
        Cufon.replace('#fastSearchDiv #fastSearchViewAllResults a');
      }
      else{
        jQuery('#fastSearchViewAllResults').hide();
      } 
    }
    else{
      Cufon.replace('#fastSearchDiv .noResults');
    }    
    
    jQuery('#fastSearchDiv').show();
    position_resultsDiv_Header();
    setAppletVisible(false);
    
    $('#search_image').attr('src', close_image);
  }
  else{
    if(resultsFound){
      Cufon.replace('#fastSearchDivExtended .searchHeadline a');
      Cufon.replace('.fastSearchPaging a', {hover:true});
    }
    else{
      Cufon.replace('#fastSearchDivExtended .noResults');
    }
    
    jQuery('#fastSearchDivExtended').show();
    if (isMobile) {
      closeMobileMenu();
      // hide main stage
      $('.content_area_margins').hide();
      $('#mobile_breadcrumb').hide();
      // show search result
      $('#mobileExtendedSearchContainer').show();
    }
  }  
}

function searchGotoPage(i){
  headerSearch = false;
  mini_smartsearch_inputText = $('input[name="qx"]');
  mini_smartsearch_extended = true;
  mini_smartsearch_searcher_extended.gotoPage(i);
}


function position_resultsDiv_Header(){
  // If we are not in extended search mode --> reposition results div.
  var offset = mini_smartsearch_inputText.offset();

  var topPos = offset.top + mini_smartsearch_inputText.height() + 2 + 11;
  var leftPos = offset.left - 112;

  if((typeof(console) !== 'undefined') && (console !== null)) {
      console.log('MINI search position ' + topPos + '/' + leftPos);
  }
  
  jQuery('#fastSearchDiv').css({
    top: topPos,
    left: leftPos
  });
}

function mini_smartsearch_mobileClose() {
  $('#mobileExtendedSearchContainer').hide();
  // Show main stage
  $('.content_area_margins').show();
  $('#mobile_breabcrumb').show();
  // Add meta tag viewport
  var meta = $('meta[name="viewport"]');
  if(meta.length===0){
    meta = $('<meta/>').attr('name', 'viewport').attr('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0 user-scalable=yes');
    $('head').append(meta);
  }

}

function mini_smartsearch_searchEngineLoaded(){
  if((typeof(console) !== 'undefined') && (console !== null)) {
      console.log('MINI search engine loaded');
  }
  
  if (isMobile) {
    var node = $('<div/>').attr('id','mobileExtendedSearchContainer');
    $('#fastSearchDiv').parent().append(node);
    
    $('#mobileExtendedSearchContainer').load(getRelativeMasterPath("search/extended_search.html") + ' #extendedSearchContainer', function() {
      $('#extendedSearchContainer form').remove();
      $('#mobileExtendedSearchContainer').hide();
      // create a close button for the search layer
      node = $('<div/>').attr('id','mobileSearchClose')
      $('<a/>').attr('class','mobileSearchCloseLink').attr('title','Close').attr('href','javascript:mini_smartsearch_mobileClose();').html('x').appendTo(node);
      $('#extendedSearchContainer').prepend(node);
    });
  } 
  
  mini_smartsearch_fastSearchControl =
    new google.search.CustomSearchControl(mini_smartsearch_fastSearchKey);
  mini_smartsearch_fastSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);

  mini_smartsearch_fastSearchControl.setSearchCompleteCallback(null, mini_smartsearch_searchDone);

  var drawOptions = new google.search.DrawOptions();
  drawOptions.setInput(document.getElementById(MINI_SMARTSEARCH_INPUT_ID));
  drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_LINEAR);
    
  mini_smartsearch_fastSearchControl.draw('fastSearchResults', drawOptions);
  
  mini_smartsearch_fastSearchControl.setNoResultsString(noResultsString);
  jQuery('#search_image').bind('click',
    function(){
      if($('input[name="q"]').val() !== window['searchFieldLabel']){
        headerSearch = true;
        mini_smartsearch_extended = false;
        mini_smartsearch_inputText = $('input[name="q"]');
        mini_smartsearch_copyValue(null);     
      }
    }
  );
  
  if(mini_smartsearch_extended === false && !isMobile){
    mini_smartsearch_inputText.bind('keyup', mini_smartsearch_copyValue);
    
    // Position results div below search input field in fast search mode
    position_resultsDiv_Header();
    
    // On resize event, reposition results div
    jQuery(window).resize(position_resultsDiv_Header);
  }
  else{
    // We are in extended search mode. Trigger search on enter in search text field ...
    // ... click on  button
    jQuery('#fastSearchSubmit').bind('click',
      function(){
        headerSearch = false;
        mini_smartsearch_extended = true;
        mini_smartsearch_inputText = $('input[name="qx"]');
        window.location.hash = encodeURIComponent(mini_smartsearch_inputText.val());
        mini_smartsearch_copyValue(null);
      }
    );
    
    // Init amount search results per page. This is in a hidden field with id searchResultsPerPage
    if(jQuery('#searchResultsPerPage'))
      mini_smartsearch_searchResultsPerPage = google.search.Search[jQuery('#searchResultsPerPage').attr('value')];
    
    if(mini_smartsearch_searchResultsPerPage === ''){
      // Init default
      mini_smartsearch_searchResultsPerPage = google.search.Search.LARGE_RESULTSET;
    }
    
    // Set amount of results to return per page
    mini_smartsearch_fastSearchControl.setResultSetSize(mini_smartsearch_searchResultsPerPage);
    
    // Set default value and trigger search if default value available from hash in the page URI
    var query = window.location.hash;
    if(query != undefined && query!= ''){
      try{
        query = decodeURIComponent(query.split('#')[1]);
        mini_smartsearch_inputText.val(query);
        defaultExtendedText = query;
        // Trigger search
        mini_smartsearch_copyValue(null);
      }
      catch(err){}
    }
  }
}

function mini_smartsearch_hideSmartSearch(){
  jQuery('#fastSearchDiv').hide();
  setAppletVisible(true);
  // Reset last search term
  mini_smartsearch_lastSearchTerm = '';
  // Set search field
  setSearchField(null);
  
  $('#search_image').attr('src', search_image);
}

function setAppletVisible(visible){
  var ac = jQuery('.applet_content');
  var fi = jQuery('#iframe_fallback_image');

  if(ac.length === 0) return;

  if (visible){
    ac.css("visibility", "visible");
    fi.css("display", "none");        
  }
  else{
    ac.css("visibility", "hidden");
    fi.css("display", "block");
  }
}

function mini_smartsearch_loadSearchEngine(){
  google.load('search', '1', {'callback' : mini_smartsearch_searchEngineLoaded});
}

function clearText(){
  if($(this).val() == searchFieldLabel)
    $(this).val('');
}

function setDefaultText(){
  if($(this).val() === '')
    $(this).val(searchFieldLabel);
}

var search_image;
var close_image = getRelativeWebsiteRootPath('_common/_img/01_framework/icon_close_search.png');


function startSearch(){
    // Lazyload google search
    lazyLoadJavaScript(window.location.protocol+'//www.google.com/jsapi?client='+ googleMapsKey + '&callback=googleApiLoaded');
    
    // Check if extended search (input with name qx must be available)
    mini_smartsearch_inputText = jQuery('input[name="qx"]');
    search_image = jQuery('#search_image').attr('src');
    
    if(mini_smartsearch_inputText.length > 0){
      mini_smartsearch_extended = true;
      headerSearch = false;
      
      $('.extendedsearch').parent().submit(
        function() {
          headerSearch = false;
          mini_smartsearch_extended = true;
          mini_smartsearch_inputText = $('input[name="qx"]');
          window.location.hash = encodeURIComponent(mini_smartsearch_inputText.val());
          mini_smartsearch_copyValue(null);
          return false;
        }
      );
      
      // Move the fastSearchDiv to the end of the extended search container.
      // Extended search container is the div with the id "extendedSearchContainer"
      
      //register click event for the input searchfield
      $('input[name="q"]').bind('click', setSearchField).bind('keyup', mini_smartsearch_copyValue);
      
    }
    else{
      mini_smartsearch_extended = false;
      headerSearch = true;
      
      mini_smartsearch_inputText = jQuery('input[name="q"]');
            
      if((mini_smartsearch_inputText.length === 0) && (typeof(console) !== 'undefined') && (console !== null)) {
          console.log('smart search popup mode');
      }
    }
    
    $('input[name="q"]').parent().submit(
      function() {
        headerSearch = true;
        mini_smartsearch_extended = false;
        mini_smartsearch_lastSearchTerm = '';
        mini_smartsearch_inputText = $('input[name="q"]');
        mini_smartsearch_copyValue(null);
        return false;
      }
    );
      
    //register remove-event for deleting the value of the search inputfield
    if (window['searchFieldLabel'] != undefined)
      $('input[name="q"]').val(searchFieldLabel).attr('data-default', searchFieldLabel).blur(setDefaultText).focus(clearText);
    
    // Monitor onclick event outside from the popup for fast search
    $(document).click(function(event) {
      if($('#fastSearchDiv').css('display') != 'none'){
        var $target = jQuery(event.target);

        var close = $target.attr('name') != 'q' && $target.attr('id') != 'fastSearchDiv';
        
        $target.parents().map(
          function() {
            if(jQuery('#fastSearchDiv').css('display') != 'none'){
              // Results div is visible
              close = close && (this.id != 'fastSearchDiv') && $target.attr('name') != 'q';
            }
          }
        );

        if(close){
          mini_smartsearch_hideSmartSearch();
        }
      }
    });
}

function initSearch(){
  var ieVersion = getInternetExplorerVersion();
  if(ieVersion>=6 && ieVersion<7){
    // IF IE6 start search on document ready
    $(document).ready(function(){
      startSearch();
    });
  }
  else{
    // Start search
    startSearch();
  }
}

$(document).ready(function(){
    // Check if mobile device
    if (typeof isMobileDevice === 'function' && isMobileDevice()) {
      isMobile = true;
    }
    
    // First check if we are on a search page.
    var searchPage = $('input[name="q"], input[name="qx"]');
    if(searchPage.length == 0){
      // We are not on a search page --> return;
      return;
    }
    
    mini_smartsearch_inputText = jQuery('input[name="qx"]');
    if(mini_smartsearch_inputText.length > 0){
      //nothing todo
      return;
    }
    else
      startSearch();
      if((typeof(console) !== 'undefined') && (console !== null)) {
        console.log('MINI search set up started');
      }
    }
);

}catch(e){console.log('Error in m_smart_search: ' + e.description);}

// ---- m_sitemap ----
try{ function miniCreateSitemap(sitemapDivSelector){
  // set up logger
  var logger = false;
  if((typeof(console) !== 'undefined') && (console !== null)) {
    logger = console;
  }

  if(logger){
    logger.log('Creating sitemap for ' + sitemapDivSelector);
  }
  
  var smap = {
      
      logger: logger,
      
      sitemapDivSelector: sitemapDivSelector,
      
      mainNavLevel1Selector: '#mainnav ul.ul_level_1',
      
      sitemapDom: null,
      
      /**
       * @param ul This is the ul tag from the main navigation which
       * should be parsed.
       * @return Returns a list of navigation entries.
       */
      _parseMainNavTree: function(ul){
        var smap = this;
    
        // se is a list of sitemap entries
        var se = new Array();
    
        jQuery(ul).children('li').each(function(index, e){
          var li = jQuery(e);
          
          var entry = {};
          
          var lic = li.children('div, span, a');
          if(lic.length > 0){
            var caption = jQuery(li.children()[0]).clone();
            caption.attr('class', '');
            var domElement = caption.get();
            
            // Check if this is a <a> tag
            if(domElement.length>0 && domElement[0].nodeName.toLowerCase() === 'a'){
              // Add tracking requirement
              caption.attr('data-tracking', 'linktype=text_sitemap');
            }
            
            entry['caption'] = caption;
          }
          else{
            entry['caption'] = '';
          }
          
          // search for submenus
          entry['submenus'] = smap._parseMainNavTree(li.children('ul'));
          
          se.push(entry);
        });
        
        return se;
      },
      
      parseMainNav: function(){
        if(this.logger){
          this.logger.log('Parse sitemap for ' + this.sitemapDivSelector
              + ' from ' + this.mainNavLevel1Selector);
        }
        
        var ul = jQuery(this.mainNavLevel1Selector);
        
        this.sitemapDom = this._parseMainNavTree(ul);
      },
      
      _createSiteMapElement: function(domE, depth){
        var e = document.createElement('ul');
        // e.css('list-style-image',getVIPURL("../../../../_common/_img/01_framework/link_arrow_grey_11.png"));

        var ec = document.createAttribute('class');
        ec.nodeValue = 'sm_lvl_' + depth;
        e.setAttributeNode(ec);
        
        // var sty = document.createAttribute('style');
        // sty.nodeValue = 'sm_lvl_' + depth;
        // e.setAttributeNode(sty);
        
        for(var i = 0; i < domE.length; ++i){
          var sDomE = domE[i];
          
          var se = document.createElement('li');

          var sec = document.createAttribute('class');
          sec.nodeValue = 'sm_lvl_' + depth + '_li' + ' sm_lvl_' + depth + '_li_'+ i;
          se.setAttributeNode(sec);
          
          jQuery(se).append(sDomE.caption);
          
          if(sDomE.submenus && (sDomE.submenus.length > 0)){
            var sme = this._createSiteMapElement(sDomE.submenus, depth + 1);
            
            se.appendChild(sme);
          }
          
          e.appendChild(se);
        }
        
        return e;
      },
      
      _createClearingElement: function(){
        var e = document.createElement('div');
        
        var c = document.createAttribute('class');
        c.nodeValue = 'clearing';
        e.setAttributeNode(c);
        
        return e;
      },
      
      render: function(){
        if(this.logger){
          this.logger.log('Render sitemap for ' + this.sitemapDivSelector);
        }
        
        var smc = jQuery(this.sitemapDivSelector);
        
        var sm = this._createSiteMapElement(this.sitemapDom, 0);
        smc.append(sm);
        
        var c = this._createClearingElement();
        smc.append(c);

		$(".sm_lvl_1_li > span").parent().css('padding-bottom','0');
        $(".sm_lvl_1_li > span").parent().each(function() {
          var elem = $(this).find('.sm_lvl_2_li:last');
          elem.css('border-bottom', '1px solid #3B3939'); 
          elem.css('padding-bottom', '12px');
        });
        Cufon.replace(this.sitemapDivSelector + ' > ul > li > div');
        Cufon.replace('.sitemap_header_left');
      },
      
      validate: function(){
        if(!this.sitemapDom){
          this.parseMainNav();
        }
        
        this.render();
      }
  };
  
  return smap;
}

function miniSitemapNSC(){
  document.write($('#breadcrumb ul li:first a').html());
}


}catch(e){console.log('Error in m_sitemap: ' + e.description);}

// ---- m_quickfacts_component ----
try{ var qfTimer = null;
var qfHeight;

$(document).ready(function() {
  if ($(".quickfacts_component").length === 0) return;
  
   /* fade quick facts out after 10 seconds QC 787*/
  var quickfacts_timeout = 10000;
  qfHeight = $(".quickfacts_container").parent().css("height");
  
  $(".qf_second_layer").show();
  $('.qf_disclaimer_body_scroll').css('visibility','visible');
  $('.qf_disclaimer_body_scroll').jScrollPane({showArrows:true}); // scrollable

  var qfLinksDiv = 0;
  if(typeof($('.qf_link_div').height()) === 'number')
    qfLinksDiv = parseInt($('.qf_link_div').height());
  $('.qf_disclaimer_body_scroll').height( parseInt($(".padding_div").height()) - parseInt($(".padding_div ul").height()) - parseInt($(".qf_header h3").height()) - qfLinksDiv);
  $(".qf_second_layer").hide();
  
  //remove show layer of 2nd quickfacts component:
  $(".qf_second_layer").children(".quickfacts_component_show").remove();
  
  $(".quickfacts_close").click(function() {
    if ( (typeof(qfHeight) !== 'undefined') && qfHeight) {  
       $(".quickfacts_container").parent().css("height", "40px");
    }
  
      miniTracking.handleLinkClickEvent(this);
      $(".qf_second_layer").hide();
      if(qfTimer != null){
        clearTimeout(qfTimer);
        
      qfTimer = null;
      
  }
   
	changeToDYKTeaser(0, true);//no fade out
    
  });

  $(".quickfacts_show").click(function() {
    if ( (typeof(qfHeight) !== 'undefined') && qfHeight) {  
       $(".quickfacts_container").parent().css("height", qfHeight);
    }
  
    miniTracking.handleLinkClickEvent(this);
	//hide 'did you know?' teaser
	
    if ($(".slideshow").length > 0) {
		$(".slideshow").hide();
	}
  
	if ($(this).attr("class").indexOf("2nd_level") !== -1) {
		$(".qf_second_layer").show();
		$(".qf_second_layer").children(".quickfacts_container").show();
		$(".quickfacts_component_show").hide();
	}
	else {
		$(this).parents('.quickfacts_component_show').hide(1, function(){    
			$(".quickfacts_container").show();
		});
	}
   
	
  });
  

  /* Use MINI font for headline and close link */
  Cufon.replace('.quickfacts_component h3');
  Cufon.replace('.qf_link', {hover:true});

  qfTimer = setTimeout("changeToDYKTeaser(0, false)", quickfacts_timeout);
});//document ready

/* CR132: Don't close quickfacts if template attribute 'close_after_timeout' 
 * is set to false. The containers of the quickfact components are marked with
 * the class 'do_not_close_after_timeout'.
 */
function changeToDYKTeaser(fade_threshold, close_after_timeout) {
  // CR132
  if(!close_after_timeout && $('.quickfacts_container:first').attr('class').indexOf('do_not_close_after_timeout') >= 0) return;
  
  $(".quickfacts_container").hide(1,
    function(){
      $(".quickfacts_show").parents('.quickfacts_component_show').show();
    }
  );
    
  //show 'did you know?' teaser  
  if ($(".slideshow").length > 0) {
    startAllSlideshows();
    $(".slideshow").show();
  }
}
  

var oldZIndex = 1;
/** called by turntable flash */
function hideQuickfacts() {
	if(qfTimer !== null){
		clearTimeout(qfTimer);
		changeToDYKTeaser(0, true);		
		qfTimer = null;
	}
	
	oldZIndex = $(".quickfacts_container").parent().parent().children(":first").css('z-index');
	console.log("oldZIndex: " + oldZIndex);
	//$(".quickfacts_container").parent().parent().children(":first").css('z-index','100');
	$(".quickfacts_container").parent().parent().children(":first").css('z-index','0');
	//$(".slideshow").hide();
}

/** called by turntable flash */
function showQuickfacts() {

	$(".quickfacts_container").parent().parent().children(":first").css('z-index',oldZIndex);
	//$(".quickfacts_container").parent().show();
	//$(".slideshow:1").show();
	
}
}catch(e){console.log('Error in m_quickfacts_component: ' + e.description);}

// ---- m_news ----
try{ $(document).ready( function() {

		Cufon.replace('.rss_list_link a', { hover: true });
		
		news_obj.init(); 
		/****************** fetch rating   ***********************************/
		if (!isNewsRatingEnabled())
			return;
		
		if (news_obj.locale === null || news_obj.locale.length==0) {
			if (isPhase2()) {
				try {
					$('.news_rss_feeds' ).show();
				} catch (e){;}
			}
			return;
		}

		$('#rating_form' ).show();
		$('#news_rating_spacer').show();
		$('.rating_form' ).show();
		$('.news_rss_feeds' ).show();
		
		news_obj.previous_cookie_value = news_obj.get_rating_cookie();
		
		var the_request = news_obj.rating_servlet_path + "?oid=" + news_obj.news_oid + "&locale="+news_obj.locale+"&root_path="+news_obj.root_path;
		
		news_obj.init_after_oids();

		if (news_obj.previous_cookie_value>=0) {
				
			$.ajax({							// just let the server synchroize xml and database 
				url: the_request,
				dataType: 'jsonp',
				jsonp: 'jsonp_callback',
				success: news_obj.set_rating_from_cookie,
				error: news_obj.set_rating_from_cookie
			});
		}
		else {

			$.ajax({
				url: the_request,
				dataType: 'jsonp',
				jsonp: 'jsonp_callback',
				success: news_obj.set_rating_from_server
			});
		}

    // update news teaser rating
    $('input.news_teaser_rating_star').rating(); // init ratings
    // set rating from cookie
    var ratingCookie = JSON.parse($.cookie(news_obj.TOPNEWS_COOKIE_NAME));
    if(typeof(ratingCookie) !== "undefined"){
        $.each(ratingCookie, function(name, value){
            var newsTeaserRating = $('#var\\.'+name.replace('var.', '')+' input.news_teaser_rating_star');
            if(newsTeaserRating.length > 0){
                newsTeaserRating.rating('enable');
                newsTeaserRating.rating('select', value+0);
                newsTeaserRating.rating('disable');
            }
        });
    }
});

function News(){ 
	var ret = {

	COOKIE_NAME: "MINI_NEWS_RATING",
	TOPNEWS_COOKIE_NAME: "MINI_NEWS_RATING_TOPNEWS", // overall cookie for news overview AND news details
	TIMER_INTERVALL: 7000,
	rating_servlet_path: "",    // initialized in news_rating.jsp = "http://localhost:8080/mini-2010/news_rating
	news_servlet_path : "",     // initialized in news_detail_navigation.jsp = "http://localhost:8080/mini-2010/news_navigation
	locale : "",    		    // initialized in news_detail_navigation.jsp = getVIPURL("../../../../_master/en/news_events/newspool.xml");
	root_path : "",    		    // initialized in news_detail_navigation.jsp = /dealer/mustermann/news_events
	news_oid : 0,  				// initialized in news_detail_navigation.jsp and news_rating.jsp = e.g. 5379;
	number_of_topstories : 0,   // initialized in news_teaser_overview:  1..3 
	auto_change_position : 1,   // initialized in news_teaser_overview: 
	timer_id : 0, 
	cur_topstory_id : 1,
	previous_cookie_value : 0,
	in_progress : false,
	topstory_starrating : new Array(),
	news_oids : new Array(), // is filled in 12346 Template
	expiration_in_minutes : 3600, // Cookie expiration in minutes, 24h
	cookie_options: {},
		
	init : function() {
		Cufon.replace('.white_heading, .white_heading, .news_navigation_right, .news_navigation_left');

		if (this.number_of_topstories>1)
			if( $("#topstory_1").find('.player_component') === null || $("#topstory_1").find('.player_component').length == 0 )  
				this.timer_id = window.setInterval( function(){news_obj.auto_change_topstory();}, this.TIMER_INTERVALL);
				// the audio- videoplayer start automatically if available. otherwise we start a timer to autochange

    var date = new Date();
    date.setTime(date.getTime() + (this.expiration_in_minutes * 60 * 1000));
    domainWOSub = document.domain;
    try{ // defensive prog
      domainWOSub = "." + document.domain.split(".")[1] + "." + document.domain.split(".")[2];
    }catch(ex){
      domainWOSub = document.domain;
    }
    this.cookie_options = {expiration: date, path: '/', domain: domainWOSub}
    
    // set cookie
    if($.cookie(this.TOPNEWS_COOKIE_NAME) == null){
      $.cookie(this.TOPNEWS_COOKIE_NAME, '{}', this.cookie_options);
    }
		
		if (this.locale === null || this.locale.length==0 || this.news_servlet_path === null || this.news_servlet_path.length==0 )
			return;
			
		this.news_servlet_path+="?locale="+this.locale+"&root_path="+this.root_path;
		this.news_servlet_path+="&oid="+this.news_oid;
		this.news_servlet_path+="&script=true";

		$.ajax({
			url: this.news_servlet_path,
			dataType: 'jsonp',
			jsonp: 'jsonp_callback',
			success: this.disable_previous_next  // function () { news_obj.disable_previous_next(); }
		});  // ajax		
	},
	
	bulgArray : function(array){
    var tmpArray = new Array();
      for(i = 0, j = 0; i < array.length; i++){
        if(typeof(array[i]) != "undefined"){
          tmpArray[j] = array[i];
          j++; 
        }
      }
    return tmpArray;
	},
	
	init_after_oids : function() {
    this.topstory_starrating = this.bulgArray(this.topstory_starrating);
    if(this.news_oids.length > 0){
      try{
        var rating = JSON.parse($.cookie(this.TOPNEWS_COOKIE_NAME))["var." + this.news_oids[0]];
        if(typeof(rating) == "undefined")
          rating = this.topstory_starrating[0];
      }catch(ex){
        rating = this.topstory_starrating[0];
      }
      $('.star-rating-control').rating('select', rating, false);
    }
	},
	
	get_rating_cookie : function() {
			
			try{
        var rating = JSON.parse($.cookie(this.TOPNEWS_COOKIE_NAME))["var." + news_obj.news_oid];
        if(typeof(rating) == "undefined")
          return -1;
        else
          return rating;
      }catch(ex){
        return -1;
      }
			
			/*var prev_cookie_complete = $.cookie(news_obj.COOKIE_NAME);
			
			if (prev_cookie_complete == null)
				return 0;  // no cookies yet
			var splitted = prev_cookie_complete.split( "," );
			
			if (splitted==null || splitted.length==0)
				return 0;
			
			var i=0;
			for ( i=0; i<splitted.length; i++ ) {
				if (splitted[i]!=null && splitted[i].length>0) {
					var name_val = splitted[i].split("=");
					if (name_val !=null && name_val.length>1) {
						if (name_val[0]==this.news_oid)
							return name_val[1];
					}
				}
			}			
			return 0;*/
	},
	
	add_or_update_rating_cookie : function(new_val) {
			var prev_cookie_complete = $.cookie(news_obj.COOKIE_NAME);
			var found = false;
			
			$.cookie(news_obj.COOKIE_NAME, news_obj.news_oid+"="+new_val, COOKIE_OPTIONS);
			
			if (prev_cookie_complete == null)
				return ;  // no cookies yet
			var splitted = prev_cookie_complete.split( "," );
			
			if (splitted==null || splitted.length==0)
				return ;
			
			var i=0;
			var	new_cal_cookie_val = "";
			
			for ( i=0; i<splitted.length; i++ ) {
				if (splitted[i]!=null && splitted[i].length>0) {
					var name_val = splitted[i].split("=");
					if (name_val !=null && name_val.length>1) {
						if (name_val[0]==this.news_oid) {
							name_val[1] = new_val;
							found = true;
						}
						new_cal_cookie_val+= name_val[0] + "=" + name_val[1] + ",";
					}
				}
			}			
			
			if (found=false) 
				new_cal_cookie_val = prev_cookie.concat(','+news_obj.news_oid+"="+new_val);
				
			var COOKIE_OPTIONS = { path: '/', expires: 999 };
			$.cookie(news_obj.COOKIE_NAME, new_cal_cookie_val, COOKIE_OPTIONS);
	},
	
		
	disable_previous_next : function (news) {
		// news.news_urls[0]  is javascript received from the server
		if ( news.news_urls[0].length<=0 )
			$(".link2previous" ).hide();
		if ( news.news_urls[1].length<=0 )
			$(".link2next" ).hide();
	},

	change_page : function(pageNum) {
	
			if (isNewsRatingEnabled()) {
				news_obj.change_page_with_rating(pageNum);
				return;
			}

		window.location.href=window.location.pathname+'?page=' +pageNum;
	},
	
	/// phase 2
	change_page_with_rating : function(pageNum) {
		window.location.href= window.location.pathname+'?page=' +pageNum + 
							 '&sort='+document.getElementById('news_combo_form').news_sorting.value+
							 '&filter='+document.getElementById('news_combo_form').year_filter.options[document.getElementById('news_combo_form').year_filter.selectedIndex].text;
	},

	set_rating_from_server : function (res) {
		var temp = Math.round(res.rating);
		if (temp>0 && news_obj.news_oids.length == 0)
			$('.star-rating-control').rating('select',temp-1, false);
	},
	
	set_rating_from_cookie : function (res) {
		$('.star-rating-control').rating('select', news_obj.previous_cookie_value, false);
	},

	start_mm_player_or_timer : function (topstory_id) {
		if (this.start_mm_player(topstory_id)==false){
			clearInterval(this.timer_id); // savety
			this.timer_id = window.setInterval( function(){news_obj.auto_change_topstory();}, this.TIMER_INTERVALL);
		}
	},

	start_mm_player : function (topstory_id) {
		if( $("#topstory_" +topstory_id).find('.player_component').length > 0 ) {
			$("#topstory_" +topstory_id).find('.player_component').flash(function() {
		          if (typeof this.startPlayback == 'function') {
		        	  this.startPlayback();
		          }
	        });
      	  return true;
		}
		return false;
	},

	stop_mm_player : function (topstory_id) {
	
		if( $("#topstory_" +topstory_id).find('.player_component').length > 0 ) {
			$("#topstory_" +topstory_id).find('.player_component').flash(function() {
		          if (typeof this.stopPlayback == 'function') {
		        	  
		        	  try {
		        		  this.stopPlayback();
		        	  }
		        	  catch( ignore_it ){  // ignore it
		        	  }
	          }
	        });
		}
	},
	
	// i is based on 1
	fadeout_in_ori : function (new_topstory_id, i)  {
	
		clearInterval(this.timer_id);
		this.stop_mm_player(i);
		
		for ( var x = 1; x <=this.number_of_topstories ; x++ )
			if (x != this.cur_topstory_id)
				$("#topstory_" +i).hide();
		
		$("#topbutt_" +i).removeClass('news_pageing_button_selected');
		$("#topbutt_" +i).addClass('news_pageing_button');
		$("#topstory_" +i).fadeOut("slow", function() {
												if (i<news_obj.number_of_topstories)
													news_obj.fadeout_in (  new_topstory_id, i+1 );
												else {
		
													$("#topbutt_" +new_topstory_id).removeClass('news_pageing_button');
													$("#topbutt_" +new_topstory_id).addClass('news_pageing_button_selected');
		
													console.log("fade in "  + new_topstory_id + "  i =" +i );
													$("#topstory_" +new_topstory_id).fadeIn("slow", function() {
														news_obj.start_mm_player_or_timer(new_topstory_id);
													}
													);
												}
											});
	},

	fadeout_in : function (new_topstory_id)  {
	
		if (this.in_progress)
			return;
		
		this.in_progress = true;
		
		clearInterval(this.timer_id);
		this.stop_mm_player(this.cur_topstory_id);
		
		for ( var x = 1; x <= this.number_of_topstories; x++ ) {
			if (x != this.cur_topstory_id) 
				$("#topstory_" + x).hide();

			// zuerst mal alle Buttons auf deselected setzen
			$("#topbutt_" + x).removeClass('news_pageing_button_selected');
			$("#topbutt_" + x).addClass('news_pageing_button');
		}
				
		$("#topstory_" + this.cur_topstory_id).fadeOut("slow", function() {

                                        console.log("fade in "  + new_topstory_id  );
                                        $("#topstory_" + new_topstory_id).fadeIn("slow", function() {
                                        		// button auf selected setzen
	                                            $("#topbutt_" +new_topstory_id).removeClass('news_pageing_button');
	                                            $("#topbutt_" +new_topstory_id).addClass('news_pageing_button_selected');
                                        		news_obj.cur_topstory_id = new_topstory_id;
                                                news_obj.start_mm_player_or_timer(new_topstory_id);
                                                news_obj.in_progress = false;
												// ###############
												if (isNewsRatingEnabled()) { // Achtung: topstory_starrating  wird im Server/Backend gefÃƒÂ¼llt!
                          
                          var rating = -1;
                          try{
                            rating = JSON.parse($.cookie(news_obj.TOPNEWS_COOKIE_NAME))["var." + news_obj.news_oids[new_topstory_id-1]];
                            if(typeof(rating) == "undefined"){
                              rating = news_obj.topstory_starrating[new_topstory_id-1];
                            }
													}catch(ex){ // cookie not set -> show server data
                            rating = news_obj.topstory_starrating[new_topstory_id-1];
													}
                          
													if (rating < 0){
														$('input').rating('drain');
													}else{
														$('input').rating('select', rating, false);
													}
												}
												// ###############
                                        }
                                        );
                        });
	},
	
	auto_change_topstory : function () {
		
		clearInterval(this.timer_id);
		
		if (this.number_of_topstories<=1)
			return;  // savety
			
		this.auto_change_position = 1 + this.auto_change_position % this.number_of_topstories;
		this.change_top_story(this.auto_change_position, this.news_oid );
	},

	change_top_story : function ( topstory_id, oid ) {
		this.auto_change_position = topstory_id;
		this.news_oid = oid;
		
		this.fadeout_in(topstory_id);
	}, 
	
	// helper for the news overview
	add_options: function ( selectbox, texts, sel_text ) {

		var sel_index = 0;
		for ( var i=0; i<texts.length; i++ ){
			var optn = document.createElement("OPTION");
			optn.text = texts[i];
			optn.value = texts[i];
			if (sel_text==texts[i])
				sel_index=i+1;  // index0=alle	
			selectbox.options.add(optn);
		}
		selectbox.selectedIndex=sel_index;
		if (selectbox.internalCombobox != undefined)
			selectbox.internalCombobox.update();
	}


	} // ret
	;
   	return ret;
} // function news
news_obj = News();


/******************  do rating   ***********************************/
$(function(){
 $('.auto-submit-star').rating({
	 callback: function(value, link){
	 
		// 'this' is the hidden form element holding the current value
		// 'value' is the value selected
		// 'element' points to the link element that received the click.
		
		//var previous_value = news_obj.previous_cookie_value;
		//news_obj.add_or_update_rating_cookie(value);
		
		
	  
	  var oid = 0;
		if(news_obj.news_oids.length == 0){
      oid = news_obj.news_oid;
    }else{
      var currentTopNews = $("div.topstory[style*='display: block']").attr("id").split("_")[1];
      oid = news_obj.news_oids[currentTopNews-1];
		}
		
		try{
      var cookie = JSON.parse($.cookie(news_obj.TOPNEWS_COOKIE_NAME));
      var prevCookieValue = cookie["var." + oid];
      cookie["var." + oid] = value-1;
      if(typeof(prevCookieValue) === 'undefined'){
          prevCookieValue = -1;
      }
      
      $.cookie(news_obj.TOPNEWS_COOKIE_NAME, JSON.stringify(cookie), news_obj.cookie_options) // var. = no numbers for var names in JS
      
      // update news teaser
      var newsTeaserRating = $('#var\\.' + oid +' input.news_teaser_rating_star');
      if(newsTeaserRating.length > 0){
          newsTeaserRating.rating('enable');
          newsTeaserRating.rating('select', value-1);
          newsTeaserRating.rating('disable');
      }

    }catch(ex){}
    // prevCookie removes multiple ratings from the same user
		var the_request = news_obj.rating_servlet_path + "?oid=" + oid + 
						  "&previous_rating="+ prevCookieValue +"&new_rating=" + value;
						  
		$.ajax({
			url: the_request,
			dataType: 'jsonp',
			jsonp: 'jsonp_callback',
			success: function (data) { ; }  // nothing to be done
		});

		   // To submit the form automatically:
		   //this.form.submit();
		   // To submit the form via ajax:
		   //$(this.form).ajaxSubmit();
	  	}
 	 });
});

}catch(e){console.log('Error in m_news: ' + e.description);}

// ---- m_slideshow ----
try{ var slideshows = new Array();

function Slideshow(id, transitionSpeed, transitionInterval) {
    this.id = id;
    this.transitionSpeed = transitionSpeed;
    this.transitionInterval = transitionInterval;
    this.running = false;
}

/** starts all slideshows which have been registered in the variable slideshows */
function startAllSlideshows() {
	for (var i = 0; i < slideshows.length; i++) {
		var show = slideshows[i];
		if (! show.running) {
			startSlideShow(show.id, show.transitionSpeed, show.transitionInterval);
			show.running = true;
		}
	}
}


function startSlideShow(id, transitionSpeed, transitionInterval){

  // default Options
  var options = { delay: 1000,
                  speed: transitionSpeed,
                  timeout: transitionInterval
                 };
   
  // QC 2066: DYT has no transparent background. 
  // There's a different behavior between jquery.cycle.2.94 and jquery.cycle.lite.1.0
  if ( $.browser.msie && $.browser.version <= 8.0 ) {  
    options.cleartypeNoBg = true;
  }

  // MINI Yours IE fix
  if($('.tab_options_container').length > 0 && $.browser.msie && $.browser.version <= 8.0){
    options.fit = 1;
    options.width = 1260;
    options.cleartype = true;
    options.cleartypeNoBg = true;
  }

  $('#'+id).cycle(
    options
  );
  $('#'+id).show();
}

function showSlide(id, slideId, numberElements) {
	for (var i = 0; i < numberElements; i++) {
		if (i == slideId) {
			$('#'+id + '_' + i).css('opacity', '1');
			$('#'+id + '_' + i).show();
			if( !$('#paging_link_'+id + '_' + i).hasClass("slideshow_paging_link_selected") ) {
				$('#paging_link_'+id + '_' + i).removeClass("slideshow_paging_link");
				$('#paging_link_'+id + '_' + i).addClass("slideshow_paging_link_selected");
			}
		} else {
      var slide = $('#'+id + '_' + i);
      // stop playing video
      if(slide.css("display") == 'block'){
        stopPlayingVideo(id +"_"+ i);
      }
      slide.hide();
			if( !$('#paging_link_'+id + '_' + i).hasClass("slideshow_paging_link") ) {
				$('#paging_link_'+id + '_' + i).addClass("slideshow_paging_link");
				$('#paging_link_'+id + '_' + i).removeClass("slideshow_paging_link_selected");
			}
		}
	}
}

function stopAllSlideshows() {
	for (var i = 0; i < slideshows.length; i++) {
		var show = slideshows[i];
		stopSlideShow(show.id);
		show.running = false;
	}
}

function stopSlideShow(id){
	$('#'+id).cycle('stop');
}

/* stop playing video if slide was hidden, IE fix */
function stopPlayingVideo(slide_id){
  if( $("#" + slide_id).find('.player_component').length > 0 ) {
    $("#"+ slide_id).find('.player_component').flash(function() {
      if (typeof this.stopPlayback == 'function') {
        try {
          this.stopPlayback();
        }catch( ignore_it ){  
          // ignore it
        }
      }
    });
  }
}

Cufon.replace('.slideshow_component a', { hover: true });

/* CR167: clickable DYK teaser*/
function processDYKTeaser(slideIDs) {

    for(var i=0; i < slideIDs.length; i++){

        var firstLink = $("#"+slideIDs[i] + " a:first");
        if (firstLink.length > 0) {
            $("#"+slideIDs[i]).css("cursor", "pointer");
            $("#"+slideIDs[i]).bind('click', function(event){
                var pageToLoad;
                var $target = $(event.target);
                if( $target.is("a") === true ) {
                  pageToLoad = $target.attr("href");
                }else {
                  pageToLoad = $(this).find('a:first').attr("href");
                }
                window.location.href = pageToLoad;
            });
        }

    }
}
}catch(e){console.log('Error in m_slideshow: ' + e.description);}

// ---- m_disclaimer ----
try{ /* Disclaimer Component of Financial Services*/
var scrollable = false;
	
$(window).load( function() { // use load to determine img widths
	$('.disclaimer').each(
		function(index){
			if($(this).children('.disclaimer_container').length > 0){
				var container = $(this);
				// Add a specific class as identifier
				var tick = Math.floor(Math.random()*1000000);
				var containerClass = 'disclaimer_'+tick+'_'+index;
				
				container.addClass(containerClass);
				var disclaimer = new Disclaimer(container, containerClass);
				//if(container.is(':visible')){
        disclaimer.init();
				//}
			}
		}
	);
});

 function FinancingDisclaimer() {
	var obj = {
		dc : this,
		dc_placed: 'no', 
		dc_disclaimer_to_show : '.financing_disclaimer_content_outermargins',
		
		init  : function () {
		  $(".financing_disclaimer_open_link").mouseover(function(){ financingDisclaimer.dc_show_disclaimer();});
		  $('.financing_dc_close_link').click(function(){ financingDisclaimer.dc_hide_disclaimer();});
		},
		
		dc_show_disclaimer : function() {
		
		$(this.dc_disclaimer_to_show).show();
		if(this.dc_placed === 'no') {
		  setFinancingDisclaimerPosition();
		  this.dc_placed = 'yes';
		}
		$('.financing_disclaimer_body_scroll').jScrollPane({showArrows:true});
		},

		dc_hide_disclaimer : function() {
		   $(this.dc_disclaimer_to_show).hide();
		}

	};
	return obj;   
  }

  function setFinancingDisclaimerPosition(){
	var topPosLnk = $('div.financing_disclaimer_open_link').offset().top;
	var leftPosLnk = $('div.financing_disclaimer_open_link').offset().left;
	var cntOffst = $('div.financing_disclaimer_content_outermargins').offset();
	var topPosCnt = cntOffst.top;
	var leftPosCnt = cntOffst.left;  
	var topPos = topPosLnk - topPosCnt - 35 - 40;
	var leftPos = leftPosLnk - leftPosCnt; 
	var containerWidth = $('.financing_disclaimer_content_outermargins').width();
  
	$('.financing_disclaimer_content_outermargins').css('top', topPos + 'px');
		  $('.financing_disclaimer_content_outermargins').css('left', leftPos - containerWidth - 4 + 'px');
	$('.financing_arrow_container').css('top', 39 +'px');      
	$('.financing_arrow_container').css('left',  containerWidth - 10 + 'px');
  }

function Disclaimer(_container, _containerClass) {
	var _this = this;
	_this.inited = false;
	_this.container = _container;
	if(typeof _container[0] !== 'undefined' && typeof _container[0].disclaimer === 'undefined'){
		_container[0].disclaimer = _this;
	}
	
	_this.containerClass = _containerClass;
	_this.containerPrefix = '.'+_containerClass+' ';
	
	 /* timeout in ms */
	_this.dc_timeout = 300;
	_this.dc_timer = 0;
	_this.dc_disclaimer_to_show = _this.containerPrefix + '.disclaimer_content_outermargins';
	_this.dc_disclaimer_to_hide = '.disclaimer_content_outermargins';
	
	this.init = function() {
		if(_this.inited)
			return;

		Cufon.replace(_this.containerPrefix + ' .disclaimer_open_link_cufon, '+_this.containerPrefix+' .disclaimer_body_headline');
		$(_this.containerPrefix + ' .disclaimer_open_link').hover(
			function(){
				_this.dc_show_disclaimer();
			},
			function(){
				_this.dc_setTimer();
			}
		);

		$(_this.dc_disclaimer_to_show).hover(
			function(){
				_this.dc_unsetTimer();
			},
			function(){
			}
		);
		
		$(_this.containerPrefix + ' .dc_close_link').click(
			function(){
				_this.dc_hide_disclaimer();
			}
		);
		
		var drf = $(_this.containerPrefix + '.disclaimer_right_false');
		// fix jquery bug .position() is undefined when container is not visible
		var positionLeft = 0;
		try{ positionLeft = $(_this.containerPrefix + ' .disclaimer_open_link img').position().left }catch(ex){ positionLeft = 0; }
		if (drf.length <= 0){
			var width = positionLeft + $(_this.containerPrefix + '.disclaimer_open_link img').width() + 10;
			_this.container.css('width', width + 'px');
		}
		else{
			var marginLeft = drf.children('.disclaimer_content_outermargins').width() + 8;
			drf.css('margin-left', '-' + marginLeft + 'px');
		}
		
		_this.inited = true;
	};
	
	this.dc_set_position = function(){
		var heightDisclaimer = $(_this.containerPrefix + '.disclaimer_content_outermargins').height();
		var availableHeight = $('#teaser_area_quicklinks').offset().top - $(_this.containerPrefix + 'div.disclaimer_open_link').offset().top;

		if (availableHeight < heightDisclaimer){
			var topPos = (heightDisclaimer - 35);
			var topPosN = -(topPos);
			$(_this.containerPrefix + '.disclaimer_content_outermargins').css('top', topPosN +'px');
			$(_this.containerPrefix + '.arrow_container').css('top', topPos+'px');
			$(_this.containerPrefix + '.arrow_container').css('left', '0');
		}
		
		if ($(_this.containerPrefix + '.disclaimer_right_false').length > 0){
			var leftPos = $(_this.containerPrefix + '.disclaimer_content_outermargins').width() - 10;
			$(_this.containerPrefix + '.arrow_container').css('left', leftPos+ 'px');
		}
	};
	
	this.dc_show_disclaimer = function(){
	
	   $(".disclaimer_content_outermargins").hide();  // cs: cash vs. loan: gegen die ï¿½berlappung von Disclaimern
	
	   _this.dc_unsetTimer();
	   _this.dc_set_position();
	   
	   $(_this.dc_disclaimer_to_show).show();
	   if(scrollable)
		   $(_this.containerPrefix + '.disclaimer_body_scroll').jScrollPane({showArrows:true});
	};

	this.dc_hide_disclaimer = function(){
	   $(_this.dc_disclaimer_to_show).hide();
	};

	this.dc_setTimer = function(){
		_this.dc_timer = window.setTimeout(_this.dc_hide_disclaimer, _this.dc_timeout);
	};

	this.dc_unsetTimer = function(){
		if (_this.dc_timer) {
			window.clearTimeout(_this.dc_timer);
			_this.dc_timer = null;
		}
	};
}

function setPosition(){
	var heightDisclaimer = $('.disclaimer_content_outermargins').height();
	var availableHeight = $('#teaser_area_quicklinks').offset().top - $('div.disclaimer_open_link').offset().top;

	if (availableHeight < heightDisclaimer){
		var topPos = (heightDisclaimer - 35);
		var topPosN = -(topPos);
		$('.disclaimer_content_outermargins').css('top', topPosN +'px');
		$('.arrow_container').css('top', topPos+'px');			
		$('.arrow_container').css('left', '0');
	}
	
	if ($(".disclaimer_right_false").length > 0){
		var leftPos = $('.disclaimer_content_outermargins').width() - 10;
		$('.arrow_container').css('left', leftPos+ 'px');
	}
}

/* Quickfacts Disclaimer*/
function QfDisclaimer() {
	var obj = {
			qfdc : this,
			
			qfdc_init : function() {
			   $('.qf_disclaimer_body_scroll').jScrollPane({showArrows:true});
			   $('.qf_disclaimer_body_scroll').css('visibility','visible');
			}
	};
	return obj;     
}

}catch(e){console.log('Error in m_disclaimer: ' + e.description);}

// ---- jquery.swfobject.1-1-1.min ----
try{ // jQuery SWFObject v1.1.1 MIT/GPL @jon_neal
// http://jquery.thewikies.com/swfobject
(function(f,h,i){function k(a,c){var b=(a[0]||0)-(c[0]||0);return b>0||!b&&a.length>0&&k(a.slice(1),c.slice(1))}function l(a){if(typeof a!=g)return a;var c=[],b="";for(var d in a){b=typeof a[d]==g?l(a[d]):[d,m?encodeURI(a[d]):a[d]].join("=");c.push(b)}return c.join("&")}function n(a){var c=[];for(var b in a)a[b]&&c.push([b,'="',a[b],'"'].join(""));return c.join(" ")}function o(a){var c=[];for(var b in a)c.push(['<param name="',b,'" value="',l(a[b]),'" />'].join(""));return c.join("")}var g="object",m=true;try{var j=i.description||function(){return(new i("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version")}()}catch(p){j="Unavailable"}var e=j.match(/\d+/g)||[0];f[h]={available:e[0]>0,activeX:i&&!i.name,version:{original:j,array:e,string:e.join("."),major:parseInt(e[0],10)||0,minor:parseInt(e[1],10)||0,release:parseInt(e[2],10)||0},hasVersion:function(a){a=/string|number/.test(typeof a)?a.toString().split("."):/object/.test(typeof a)?[a.major,a.minor]:a||[0,0];return k(e,a)},encodeParams:true,expressInstall:"expressInstall.swf",expressInstallIsActive:false,create:function(a){if(!a.swf||this.expressInstallIsActive||!this.available&&!a.hasVersionFail)return false;if(!this.hasVersion(a.hasVersion||1)){this.expressInstallIsActive=true;if(typeof a.hasVersionFail=="function")if(!a.hasVersionFail.apply(a))return false;a={swf:a.expressInstall||this.expressInstall,height:137,width:214,flashvars:{MMredirectURL:location.href,MMplayerType:this.activeX?"ActiveX":"PlugIn",MMdoctitle:document.title.slice(0,47)+" - Flash Player Installation"}}}attrs={data:a.swf,type:"application/x-shockwave-flash",id:a.id||"flash_"+Math.floor(Math.random()*999999999),width:a.width||320,height:a.height||180,style:a.style||""};m=typeof a.useEncode!=="undefined"?a.useEncode:this.encodeParams;a.movie=a.swf;a.wmode=a.wmode||"opaque";delete a.fallback;delete a.hasVersion;delete a.hasVersionFail;delete a.height;delete a.id;delete a.swf;delete a.useEncode;delete a.width;var c=document.createElement("div");c.innerHTML=["<object ",n(attrs),">",o(a),"</object>"].join("");return c.firstChild}};f.fn[h]=function(a){var c=this.find(g).andSelf().filter(g);/string|object/.test(typeof a)&&this.each(function(){var b=f(this),d;a=typeof a==g?a:{swf:a};a.fallback=this;if(d=f[h].create(a)){b.children().remove();b.html(d)}});typeof a=="function"&&c.each(function(){var b=this;b.jsInteractionTimeoutMs=b.jsInteractionTimeoutMs||0;if(b.jsInteractionTimeoutMs<660)b.clientWidth||b.clientHeight?a.call(b):setTimeout(function(){f(b)[h](a)},b.jsInteractionTimeoutMs+66)});return c}})(jQuery,"flash",navigator.plugins["Shockwave Flash"]||window.ActiveXObject);
}catch(e){console.log('Error in jquery.swfobject.1-1-1.min: ' + e.description);}

// ---- jquery.jScrollPane ----
try{ /* Copyright (c) 2009 Kelvin Luck (kelvin AT kelvinluck DOT com || http://www.kelvinluck.com)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * 
 * See http://kelvinluck.com/assets/jquery/jScrollPane/
 * $Id: jScrollPane.js 90 2010-01-25 03:52:10Z kelvin.luck $
 */

/**
 * Replace the vertical scroll bars on any matched elements with a fancy
 * styleable (via CSS) version. With JS disabled the elements will
 * gracefully degrade to the browsers own implementation of overflow:auto.
 * If the mousewheel plugin has been included on the page then the scrollable areas will also
 * respond to the mouse wheel.
 *
 * @example jQuery(".scroll-pane").jScrollPane();
 *
 * @name jScrollPane
 * @type jQuery
 * @param Object	settings	hash with options, described below.
 *								scrollbarWidth	-	The width of the generated scrollbar in pixels
 *								scrollbarMargin	-	The amount of space to leave on the side of the scrollbar in pixels
 *								wheelSpeed		-	The speed the pane will scroll in response to the mouse wheel in pixels
 *								showArrows		-	Whether to display arrows for the user to scroll with
 *								arrowSize		-	The height of the arrow buttons if showArrows=true
 *								animateTo		-	Whether to animate when calling scrollTo and scrollBy
 *								dragMinHeight	-	The minimum height to allow the drag bar to be
 *								dragMaxHeight	-	The maximum height to allow the drag bar to be
 *								animateInterval	-	The interval in milliseconds to update an animating scrollPane (default 100)
 *								animateStep		-	The amount to divide the remaining scroll distance by when animating (default 3)
 *								maintainPosition-	Whether you want the contents of the scroll pane to maintain it's position when you re-initialise it - so it doesn't scroll as you add more content (default true)
 *								tabIndex		-	The tabindex for this jScrollPane to control when it is tabbed to when navigating via keyboard (default 0)
 *								enableKeyboardNavigation - Whether to allow keyboard scrolling of this jScrollPane when it is focused (default true)
 *								animateToInternalLinks - Whether the move to an internal link (e.g. when it's focused by tabbing or by a hash change in the URL) should be animated or instant (default false)
 *								scrollbarOnLeft	-	Display the scrollbar on the left side?  (needs stylesheet changes, see examples.html)
 *								reinitialiseOnImageLoad - Whether the jScrollPane should automatically re-initialise itself when any contained images are loaded (default false)
 *								topCapHeight	-	The height of the "cap" area between the top of the jScrollPane and the top of the track/ buttons
 *								bottomCapHeight	-	The height of the "cap" area between the bottom of the jScrollPane and the bottom of the track/ buttons
 *								observeHash		-	Whether jScrollPane should attempt to automagically scroll to the correct place when an anchor inside the scrollpane is linked to (default true)
 * @return jQuery
 * @cat Plugins/jScrollPane
 * @author Kelvin Luck (kelvin AT kelvinluck DOT com || http://www.kelvinluck.com)
 */

(function($) {

$.jScrollPane = {
	active : []
};
$.fn.jScrollPane = function(settings)
{
	settings = $.extend({}, $.fn.jScrollPane.defaults, settings);

	var rf = function() { return false; };
	
	return this.each(
		function()
		{
			var $this = $(this);
			var paneEle = this;
			var currentScrollPosition = 0;
			var paneWidth;
			var paneHeight;
			var trackHeight;
			var trackOffset = settings.topCapHeight;
			var $container;
			
			if ($(this).parent().is('.jScrollPaneContainer')) {
				$container = $(this).parent();
				currentScrollPosition = settings.maintainPosition ? $this.position().top : 0;
				var $c = $(this).parent();
				paneWidth = $c.innerWidth();
				paneHeight = $c.outerHeight();
				$('>.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown, >.jScrollCap', $c).remove();
				$this.css({'top':0});
			} else {
				$this.data('originalStyleTag', $this.attr('style'));
				// Switch the element's overflow to hidden to ensure we get the size of the element without the scrollbars [http://plugins.jquery.com/node/1208]
				$this.css('overflow', 'hidden');
				this.originalPadding = $this.css('paddingTop') + ' ' + $this.css('paddingRight') + ' ' + $this.css('paddingBottom') + ' ' + $this.css('paddingLeft');
				this.originalSidePaddingTotal = (parseInt($this.css('paddingLeft')) || 0) + (parseInt($this.css('paddingRight')) || 0);
				paneWidth = $this.innerWidth();
				paneHeight = $this.innerHeight();
				$container = $('<div></div>')
					.attr({'className':'jScrollPaneContainer'})
					.css(
						{
							'height':paneHeight+'px', 
							'width':paneWidth+'px'
						}
					);
				if (settings.enableKeyboardNavigation) {
					$container.attr(
						'tabindex', 
						settings.tabIndex
					);
				}
				$this.wrap($container);
				$container = $this.parent();
				// deal with text size changes (if the jquery.em plugin is included)
				// and re-initialise the scrollPane so the track maintains the
				// correct size
				$(document).bind(
					'emchange', 
					function(e, cur, prev)
					{
						$this.jScrollPane(settings);
					}
				);
				
			}
			trackHeight = paneHeight;
			
			if (settings.reinitialiseOnImageLoad) {
				// code inspired by jquery.onImagesLoad: http://plugins.jquery.com/project/onImagesLoad
				// except we re-initialise the scroll pane when each image loads so that the scroll pane is always up to size...
				// TODO: Do I even need to store it in $.data? Is a local variable here the same since I don't pass the reinitialiseOnImageLoad when I re-initialise?
				var $imagesToLoad = $.data(paneEle, 'jScrollPaneImagesToLoad') || $('img', $this);
				var loadedImages = [];
				
				if ($imagesToLoad.length) {
					$imagesToLoad.each(function(i, val)	{
						$(this).bind('load readystatechange', function() {
							if($.inArray(i, loadedImages) == -1){ //don't double count images
								loadedImages.push(val); //keep a record of images we've seen
								$imagesToLoad = $.grep($imagesToLoad, function(n, i) {
									return n != val;
								});
								$.data(paneEle, 'jScrollPaneImagesToLoad', $imagesToLoad);
								var s2 = $.extend(settings, {reinitialiseOnImageLoad:false});
								$this.jScrollPane(s2); // re-initialise
							}
						}).each(function(i, val) {
							if(this.complete || this.complete===undefined) { 
								//needed for potential cached images
								this.src = this.src; 
							} 
						});
					});
				};
			}

			var p = this.originalSidePaddingTotal;
			var realPaneWidth = paneWidth - settings.scrollbarWidth - settings.scrollbarMargin - p;

			var cssToApply = {
				'height':'auto',
				'width': realPaneWidth + 'px'
			}

			if(settings.scrollbarOnLeft) {
				cssToApply.paddingLeft = settings.scrollbarMargin + settings.scrollbarWidth + 'px';
			} else {
				cssToApply.paddingRight = settings.scrollbarMargin + 'px';
			}

			$this.css(cssToApply);

			var contentHeight = $this.outerHeight();
			var percentInView = paneHeight / contentHeight;
			
			var isScrollable = percentInView < .99;
			$container[isScrollable ? 'addClass' : 'removeClass']('jScrollPaneScrollable');

			if (isScrollable) {
				$container.append(
					$('<div></div>').addClass('jScrollCap jScrollCapTop').css({height:settings.topCapHeight}),
					$('<div></div>').attr({'className':'jScrollPaneTrack'}).css({'width':settings.scrollbarWidth+'px'}).append(
						$('<div></div>').attr({'className':'jScrollPaneDrag'}).css({'width':settings.scrollbarWidth+'px'}).append(
							$('<div></div>').attr({'className':'jScrollPaneDragTop'}).css({'width':settings.scrollbarWidth+'px'}),
							$('<div></div>').attr({'className':'jScrollPaneDragBottom'}).css({'width':settings.scrollbarWidth+'px'})
						)
					),
					$('<div></div>').addClass('jScrollCap jScrollCapBottom').css({height:settings.bottomCapHeight})
				);
				
				var $track = $('>.jScrollPaneTrack', $container);
				var $drag = $('>.jScrollPaneTrack .jScrollPaneDrag', $container);
				
				
				var currentArrowDirection;
				var currentArrowTimerArr = [];// Array is used to store timers since they can stack up when dealing with keyboard events. This ensures all timers are cleaned up in the end, preventing an acceleration bug.
				var currentArrowInc;
				var whileArrowButtonDown = function() 
				{
					if (currentArrowInc > 4 || currentArrowInc % 4 == 0) {
						positionDrag(dragPosition + currentArrowDirection * mouseWheelMultiplier);
					}
					currentArrowInc++;
				};

				if (settings.enableKeyboardNavigation) {
					$container.bind(
						'keydown.jscrollpane',
						function(e) 
						{
							switch (e.keyCode) {
								case 38: //up
									currentArrowDirection = -1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 40: //down
									currentArrowDirection = 1;
									currentArrowInc = 0;
									whileArrowButtonDown();
									currentArrowTimerArr[currentArrowTimerArr.length] = setInterval(whileArrowButtonDown, 100);
									return false;
								case 33: // page up
								case 34: // page down
									// TODO
									return false;
								default:
							}
						}
					).bind(
						'keyup.jscrollpane',
						function(e) 
						{
							if (e.keyCode == 38 || e.keyCode == 40) {
								for (var i = 0; i < currentArrowTimerArr.length; i++) {
									clearInterval(currentArrowTimerArr[i]);
								}
								return false;
							}
						}
					);
				}

				if (settings.showArrows) {
					
					var currentArrowButton;
					var currentArrowInterval;

					var onArrowMouseUp = function(event)
					{
						$('html').unbind('mouseup', onArrowMouseUp);
						currentArrowButton.removeClass('jScrollActiveArrowButton');
						clearInterval(currentArrowInterval);
					};
					var onArrowMouseDown = function() {
						$('html').bind('mouseup', onArrowMouseUp);
						currentArrowButton.addClass('jScrollActiveArrowButton');
						currentArrowInc = 0;
						whileArrowButtonDown();
						currentArrowInterval = setInterval(whileArrowButtonDown, 100);
					};
					$container
						.append(
							$('<a></a>')
								.attr(
									{
										'href':'javascript:;', 
										'className':'jScrollArrowUp', 
										'tabindex':-1
									}
								)
								.css(
									{
										'width':settings.scrollbarWidth+'px',
										'top':settings.topCapHeight + 'px'
									}
								)
								.html('Scroll up')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = -1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf),
							$('<a></a>')
								.attr(
									{
										'href':'javascript:;', 
										'className':'jScrollArrowDown', 
										'tabindex':-1
									}
								)
								.css(
									{
										'width':settings.scrollbarWidth+'px',
										'bottom':settings.bottomCapHeight + 'px'
									}
								)
								.html('Scroll down')
								.bind('mousedown', function()
								{
									currentArrowButton = $(this);
									currentArrowDirection = 1;
									onArrowMouseDown();
									this.blur();
									return false;
								})
								.bind('click', rf)
						);
					var $upArrow = $('>.jScrollArrowUp', $container);
					var $downArrow = $('>.jScrollArrowDown', $container);
				}
				
				if (settings.arrowSize) {
					trackHeight = paneHeight - settings.arrowSize - settings.arrowSize;
					trackOffset += settings.arrowSize;
				} else if ($upArrow) {
					var topArrowHeight = $upArrow.height();
					settings.arrowSize = topArrowHeight;
					trackHeight = paneHeight - topArrowHeight - $downArrow.height();
					trackOffset += topArrowHeight;
				}
				trackHeight -= settings.topCapHeight + settings.bottomCapHeight;
				$track.css({'height': trackHeight+'px', top:trackOffset+'px'})
				
				var $pane = $(this).css({'position':'absolute', 'overflow':'visible'});
				
				var currentOffset;
				var maxY;
				var mouseWheelMultiplier;
				// store this in a seperate variable so we can keep track more accurately than just updating the css property..
				var dragPosition = 0;
				var dragMiddle = percentInView*paneHeight/2;
				
				// pos function borrowed from tooltip plugin and adapted...
				var getPos = function (event, c) {
					var p = c == 'X' ? 'Left' : 'Top';
					return event['page' + c] || (event['client' + c] + (document.documentElement['scroll' + p] || document.body['scroll' + p])) || 0;
				};
				
				var ignoreNativeDrag = function() {	return false; };
				
				var initDrag = function()
				{
					ceaseAnimation();
					currentOffset = $drag.offset(false);
					currentOffset.top -= dragPosition;
					maxY = trackHeight - $drag[0].offsetHeight;
					mouseWheelMultiplier = 2 * settings.wheelSpeed * maxY / contentHeight;
				};
				
				var onStartDrag = function(event)
				{
					initDrag();
					dragMiddle = getPos(event, 'Y') - dragPosition - currentOffset.top;
					$('html').bind('mouseup', onStopDrag).bind('mousemove', updateScroll);
					if ($.browser.msie) {
						$('html').bind('dragstart', ignoreNativeDrag).bind('selectstart', ignoreNativeDrag);
					}
					return false;
				};
				var onStopDrag = function()
				{
					$('html').unbind('mouseup', onStopDrag).unbind('mousemove', updateScroll);
					dragMiddle = percentInView*paneHeight/2;
					if ($.browser.msie) {
						$('html').unbind('dragstart', ignoreNativeDrag).unbind('selectstart', ignoreNativeDrag);
					}
				};
				var positionDrag = function(destY)
				{
					$container.scrollTop(0);
					destY = destY < 0 ? 0 : (destY > maxY ? maxY : destY);
					dragPosition = destY;
					$drag.css({'top':destY+'px'});
					var p = destY / maxY;
					$this.data('jScrollPanePosition', (paneHeight-contentHeight)*-p);
					$pane.css({'top':((paneHeight-contentHeight)*p) + 'px'});
					$this.trigger('scroll');
					if (settings.showArrows) {
						$upArrow[destY == 0 ? 'addClass' : 'removeClass']('disabled');
						$downArrow[destY == maxY ? 'addClass' : 'removeClass']('disabled');
					}
				};
				var updateScroll = function(e)
				{
					positionDrag(getPos(e, 'Y') - currentOffset.top - dragMiddle);
				};
				
				var dragH = Math.max(Math.min(percentInView*(paneHeight-settings.arrowSize*2), settings.dragMaxHeight), settings.dragMinHeight);
				
				$drag.css(
					{'height':dragH+'px'}
				).bind('mousedown', onStartDrag);
				
				var trackScrollInterval;
				var trackScrollInc;
				var trackScrollMousePos;
				var doTrackScroll = function()
				{
					if (trackScrollInc > 8 || trackScrollInc%4==0) {
						positionDrag((dragPosition - ((dragPosition - trackScrollMousePos) / 2)));
					}
					trackScrollInc ++;
				};
				var onStopTrackClick = function()
				{
					clearInterval(trackScrollInterval);
					$('html').unbind('mouseup', onStopTrackClick).unbind('mousemove', onTrackMouseMove);
				};
				var onTrackMouseMove = function(event)
				{
					trackScrollMousePos = getPos(event, 'Y') - currentOffset.top - dragMiddle;
				};
				var onTrackClick = function(event)
				{
					initDrag();
					onTrackMouseMove(event);
					trackScrollInc = 0;
					$('html').bind('mouseup', onStopTrackClick).bind('mousemove', onTrackMouseMove);
					trackScrollInterval = setInterval(doTrackScroll, 100);
					doTrackScroll();
					return false;
				};
				
				$track.bind('mousedown', onTrackClick);
				
				$container.bind(
					'mousewheel',
					function (event, delta) {
						delta = delta || (event.wheelDelta ? event.wheelDelta / 120 : (event.detail) ?
-event.detail/3 : 0);
						initDrag();
						ceaseAnimation();
						var d = dragPosition;
						positionDrag(dragPosition - delta * mouseWheelMultiplier);
						var dragOccured = d != dragPosition;
						return !dragOccured;
					}
				);

				var _animateToPosition;
				var _animateToInterval;
				function animateToPosition()
				{
					var diff = (_animateToPosition - dragPosition) / settings.animateStep;
					if (diff > 1 || diff < -1) {
						positionDrag(dragPosition + diff);
					} else {
						positionDrag(_animateToPosition);
						ceaseAnimation();
					}
				}
				var ceaseAnimation = function()
				{
					if (_animateToInterval) {
						clearInterval(_animateToInterval);
						delete _animateToPosition;
					}
				};
				var scrollTo = function(pos, preventAni)
				{
					if (typeof pos == "string") {
						// Legal hash values aren't necessarily legal jQuery selectors so we need to catch any
						// errors from the lookup...
						try {
							$e = $(pos, $this);
						} catch (err) {
							return;
						}
						if (!$e.length) return;
						pos = $e.offset().top - $this.offset().top;
					}
					ceaseAnimation();
					var maxScroll = contentHeight - paneHeight;
					pos = pos > maxScroll ? maxScroll : pos;
					$this.data('jScrollPaneMaxScroll', maxScroll);
					var destDragPosition = pos/maxScroll * maxY;
					if (preventAni || !settings.animateTo) {
						positionDrag(destDragPosition);
					} else {
						$container.scrollTop(0);
						_animateToPosition = destDragPosition;
						_animateToInterval = setInterval(animateToPosition, settings.animateInterval);
					}
				};
				$this[0].scrollTo = scrollTo;
				
				$this[0].scrollBy = function(delta)
				{
					var currentPos = -parseInt($pane.css('top')) || 0;
					scrollTo(currentPos + delta);
				};
				
				initDrag();
				
				scrollTo(-currentScrollPosition, true);
			
				// Deal with it when the user tabs to a link or form element within this scrollpane
				$('*', this).bind(
					'focus',
					function(event)
					{
						var $e = $(this);
						
						// loop through parents adding the offset top of any elements that are relatively positioned between
						// the focused element and the jScrollPaneContainer so we can get the true distance from the top
						// of the focused element to the top of the scrollpane...
						var eleTop = 0;
						
						while ($e[0] != $this[0]) {
							eleTop += $e.position().top;
							$e = $e.offsetParent();
						}
						
						var viewportTop = -parseInt($pane.css('top')) || 0;
						var maxVisibleEleTop = viewportTop + paneHeight;
						var eleInView = eleTop > viewportTop && eleTop < maxVisibleEleTop;
						if (!eleInView) {
							var destPos = eleTop - settings.scrollbarMargin;
							if (eleTop > viewportTop) { // element is below viewport - scroll so it is at bottom.
								destPos += $(this).height() + 15 + settings.scrollbarMargin - paneHeight;
							}
							scrollTo(destPos);
						}
					}
				)
				
				
				if (settings.observeHash) {
					if (location.hash && location.hash.length > 1) {
						setTimeout(function(){
							scrollTo(location.hash);
						}, $.browser.safari ? 100 : 0);
					}
					
					// use event delegation to listen for all clicks on links and hijack them if they are links to
					// anchors within our content...
					$(document).bind('click', function(e){
						$target = $(e.target);
						if ($target.is('a')) {
							var h = $target.attr('href');
							if (h && h.substr(0, 1) == '#' && h.length > 1) {
								setTimeout(function(){
									scrollTo(h, !settings.animateToInternalLinks);
								}, $.browser.safari ? 100 : 0);
							}
						}
					});
				}
				
				// Deal with dragging and selecting text to make the scrollpane scroll...
				function onSelectScrollMouseDown(e)
				{
				   $(document).bind('mousemove.jScrollPaneDragging', onTextSelectionScrollMouseMove);
				   $(document).bind('mouseup.jScrollPaneDragging',   onSelectScrollMouseUp);
				  
				}
				
				var textDragDistanceAway;
				var textSelectionInterval;
				
				function onTextSelectionInterval()
				{
					direction = textDragDistanceAway < 0 ? -1 : 1;
					$this[0].scrollBy(textDragDistanceAway / 2);
				}

				function clearTextSelectionInterval()
				{
					if (textSelectionInterval) {
						clearInterval(textSelectionInterval);
						textSelectionInterval = undefined;
					}
				}
				
				function onTextSelectionScrollMouseMove(e)
				{
					var offset = $this.parent().offset().top;
					var maxOffset = offset + paneHeight;
					var mouseOffset = getPos(e, 'Y');
					textDragDistanceAway = mouseOffset < offset ? mouseOffset - offset : (mouseOffset > maxOffset ? mouseOffset - maxOffset : 0);
					if (textDragDistanceAway == 0) {
						clearTextSelectionInterval();
					} else {
						if (!textSelectionInterval) {
							textSelectionInterval  = setInterval(onTextSelectionInterval, 100);
						}
					}
				}

				function onSelectScrollMouseUp(e)
				{
				   $(document)
					  .unbind('mousemove.jScrollPaneDragging')
					  .unbind('mouseup.jScrollPaneDragging');
				   clearTextSelectionInterval();
				}

				$container.bind('mousedown.jScrollPane', onSelectScrollMouseDown);

				
				$.jScrollPane.active.push($this[0]);
				
			} else {
				$this.css(
					{
						'height':paneHeight+'px',
						'width':paneWidth-this.originalSidePaddingTotal+'px',
						'padding':this.originalPadding
					}
				);
				$this[0].scrollTo = $this[0].scrollBy = function() {};
				// clean up listeners
				$this.parent().unbind('mousewheel').unbind('mousedown.jScrollPane').unbind('keydown.jscrollpane').unbind('keyup.jscrollpane');
			}
			
		}
	)
};

$.fn.jScrollPaneRemove = function()
{
	$(this).each(function()
	{
		$this = $(this);
		var $c = $this.parent();
		if ($c.is('.jScrollPaneContainer')) {
			$this.css(
				{
					'top':'',
					'height':'',
					'width':'',
					'padding':'',
					'overflow':'',
					'position':''
				}
			);
			$this.attr('style', $this.data('originalStyleTag'));
			$c.after($this).remove();
		}
	});
}

$.fn.jScrollPane.defaults = {
	scrollbarWidth : 10,
	scrollbarMargin : 5,
	wheelSpeed : 18,
	showArrows : false,
	arrowSize : 0,
	animateTo : false,
	dragMinHeight : 1,
	dragMaxHeight : 99999,
	animateInterval : 100,
	animateStep: 3,
	maintainPosition: true,
	scrollbarOnLeft: false,
	reinitialiseOnImageLoad: false,
	tabIndex : 0,
	enableKeyboardNavigation: true,
	animateToInternalLinks: false,
	topCapHeight: 0,
	bottomCapHeight: 0,
	observeHash: true
};

// clean up the scrollTo expandos
$(window)
	.bind('unload', function() {
		var els = $.jScrollPane.active; 
		for (var i=0; i<els.length; i++) {
			els[i].scrollTo = els[i].scrollBy = null;
		}
	}
);

})(jQuery);
}catch(e){console.log('Error in jquery.jScrollPane: ' + e.description);}

// ---- jquery.mousewheel ----
try{ /* Copyright (c) 2006 Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 *
 * $LastChangedDate: 2007-12-20 09:02:08 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4265 $
 *
 * Version: 3.0
 * 
 * Requires: $ 1.2.2+
 */

(function($) {

$.event.special.mousewheel = {
	setup: function() {
		var handler = $.event.special.mousewheel.handler;
		
		// Fix pageX, pageY, clientX and clientY for mozilla
		if ( $.browser.mozilla )
			$(this).bind('mousemove.mousewheel', function(event) {
				$.data(this, 'mwcursorposdata', {
					pageX: event.pageX,
					pageY: event.pageY,
					clientX: event.clientX,
					clientY: event.clientY
				});
			});
	
		if ( this.addEventListener )
			this.addEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
		else
			this.onmousewheel = handler;
	},
	
	teardown: function() {
		var handler = $.event.special.mousewheel.handler;
		
		$(this).unbind('mousemove.mousewheel');
		
		if ( this.removeEventListener )
			this.removeEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
		else
			this.onmousewheel = function(){};
		
		$.removeData(this, 'mwcursorposdata');
	},
	
	handler: function(event) {
		var args = Array.prototype.slice.call( arguments, 1 );
		
		event = $.event.fix(event || window.event);
		// Get correct pageX, pageY, clientX and clientY for mozilla
		$.extend( event, $.data(this, 'mwcursorposdata') || {} );
		var delta = 0, returnValue = true;
		
		if ( event.wheelDelta ) delta = event.wheelDelta/120;
		if ( event.detail     ) delta = -event.detail/3;
//		if ( $.browser.opera  ) delta = -event.wheelDelta;
		
		event.data  = event.data || {};
		event.type  = "mousewheel";
		
		// Add delta to the front of the arguments
		args.unshift(delta);
		// Add event to the front of the arguments
		args.unshift(event);

		return $.event.handle.apply(this, args);
	}
};

$.fn.extend({
	mousewheel: function(fn) {
		return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
	},
	
	unmousewheel: function(fn) {
		return this.unbind("mousewheel", fn);
	}
});

})(jQuery);
}catch(e){console.log('Error in jquery.mousewheel: ' + e.description);}

// ---- m_dealer_layer ----
try{ // JavaScript Document

var mainNavId = '#mainnav'; 

/* flag to indicate that the extInfoWindow is ready */
var extInfoReady = false;

function loadExtinfoWindow() {
  /*$.getScript(getRelativeWebsiteRootPath("_common/_js/extinfowindow.js"), function() {
    extInfoReady = true;
  });*/
}

MiniSubsidiaryLayer = function() {

  /**
   * Cookie name 
   * @final
   */  
  var COOKIE_NAME = "miniSubsidiarySelectionShown";
  
  /**
   * unique id to easily manipulate DOM 
   * @final
   */
  var SELECT_DEALER_LIST_ITEM_ID = "selectDealerListItem" ;
  
  /**
   * cookie is accessible from / and expires never
   * @final
   */
  var COOKIE_OPTIONS = { path: '/', expires: 999 };
  if (getDomain().length > 0) COOKIE_OPTIONS['domain'] = getDomain();

  /**
   * Duration to fadeIn and fadeOut the subsidiary layer  (in ms)
   * @final
   */
  var FADE_TIME = 1000;

  /**
   * Number of visitits (3) till the layer will be displayed
   * @final
   */
  var MAX_NUM_OF_VISITS = 3;

  /**
   * Duration in ms after the dealer disappears.
   * @final
   */
  var TIMEOUT_LAYER = 15000;

  /**
   * Returns if a cookie was already set (subsidiary layer was already shown). 
   *
   * @return true if a cookie exists, otherwise false.
   */
  this.hasCookie = function() {
    return ($.cookie(COOKIE_NAME) && $.cookie(COOKIE_NAME).length > 0);
  };

  /**
   * This method counts how many times a dealer layer was called.
   * Precondition: Homepage is actual page and no dealer is selected
   * Creates a cookie if the cookie does not exists. Counts visits and increments the counter. If the maximum number
   * of visits is reached (MAX_NUM_OF_VISITS) the layer will no be shown to the user anymore.
   *
   */
  this.countVisit = function() {
    if (!isMiniRoot) return;
    
    if (miniSubsidiary.isSubsidiarySelected()) 
      return;
    
    if (!this.hasCookie()) {
      // Save a new cookie
      $.cookie(COOKIE_NAME, "0", COOKIE_OPTIONS);
    }
    if (this.hasCookie()) {
      var result = $.cookie(COOKIE_NAME);
      if (result < MAX_NUM_OF_VISITS && (typeof isMobileDevice !== 'function' || !isMobileDevice())) { //  one more time
        result++;
        $.cookie(COOKIE_NAME, result, COOKIE_OPTIONS);
        // show layer
        $("#dealerLayer").css('display','block').css('opacity',0).animate({opacity:1}, FADE_TIME);
        countSubsidiaries();
        // Fade layer out after FADE_TIME
        setTimeout(function() {
          $("#dealerLayer").fadeOut(FADE_TIME);
        }
        , TIMEOUT_LAYER);
      }
    }
  };
  
  /** Returns true if the dealer layer should be displayed, otherwise false.
    * Its true if we don't have a cookie or we have a cookie and the number of visits < 3 and we
    * are on the homepage (miniRoot). 
    *
    * @return true if the dealer layer should be displayed, otherwise false.
    */
  this.displayLayer = function() {
    if (miniSubsidiary.isSubsidiarySelected()) 
      return false;
    else if (!this.hasCookie() || ($.cookie(COOKIE_NAME) < MAX_NUM_OF_VISITS && isMiniRoot))
      return true;
    else // should never happen 
    return false;
  };
  
   /**
    * Displays the dealer layer 
    */
  this.showLayer = function() {
    if (this.displayLayer) {      
      $("#dealerLayer").fadeIn(FADE_TIME);
    }
  };
  
   /**
    * Hide the dealer layer 
    */  
  this.hideLayer = function() {
    $("#dealerLayer").hide();
  };
  
  /**
   * Method to update Dealer Menu.
   * Requests modul_navigation.html and manipulates the menu structure (replace class to fit menu
   * structure and collect only menu entries of the first menu level)
   * Manipulates also the path for none develop environments. The beginning of the path will be 
   * replaced with the dealer entry directory.
   */
  this.updateMenu = function() {	
    if (miniSubsidiary.isSubsidiarySelected()) {
      miniSubsidiary.onSubsidiaryReady(function() {

        // Check if dealer supports the actual language
        var supportsLanguage = false;
        for (var key in miniSubsidiary.getSupportedLanguages()) {
          if (key === topicLanguage) { // support language
            supportsLanguage = true;
          }        
        } // for
        // Show empty menu
        if (supportsLanguage === false || (typeof(load_dealer_navigation) !== "undefined" && !load_dealer_navigation)) {
          miniSubsidiaryLayer.showEmptyMenu();
          return;
        }      

        var url = miniSubsidiary.getUrl() ;
        
        // Default show select dealer entry
        var selectDealerLink = $("#menuSelectDealer li").attr("id", SELECT_DEALER_LIST_ITEM_ID); 
        // CR01 2011 Online Store: remove submenue/add-line if necessary
        miniSubsidiaryLayer.removeSubmenue();
        $(mainNavId + ' .ul_level_2:last').append(selectDealerLink);
        if(getInternetExplorerVersion() < 0){
          Cufon.replace(mainNavId + ' .ul_level_2:last a', {hover:true});
        }    
        $(mainNavId + ' .ul_level_2:last > li[id="'+ SELECT_DEALER_LIST_ITEM_ID +'"]').hover( 
          function() {mainNavigation.setOpenTimer(this); },
          function() {mainNavigation.setCloseTimer(this);}
        );
        
        // Get module navigation
        $.get(url+ "module_navigation.html", function(data) {
          
          $(mainNavId + ' .ul_level_2:last > li[id="'+ SELECT_DEALER_LIST_ITEM_ID +'"]').remove();
          
          // Prepend dealer name and town
          var li = $('<li/>').addClass('main_nav_level_2_subsidiary');
          li.append($('<div/>').attr('id', 'menuSubsidaryName').html(miniSubsidiary.getSubsidiaryName()));
          li.append($('<div/>').attr('id', 'menuSubsidaryTown').html(miniSubsidiary.getSubsidiaryTown()));
          $(mainNavId + ' .ul_level_2:last').append(li);
      
          // select all anchor tag on menu level 1
          data = $(data).find('ul.module_navigation_level_1 li > a.module_navigation_a_selected').not('ul.module_navigation_level_2 a');
          // replace all classes and add class submenu_text
          $(data).removeClass().addClass('submenu_text');
          $(data).css('display', 'none');
      
          // append to dom
          $(mainNavId + ' .ul_level_2:last').append(data);
      
          // prepend li element and duplicate each menu entry
          $(mainNavId + ' .ul_level_2:last li.main_nav_level_2_subsidiary').nextAll().each(function() {
            var line = $('<li/>').addClass('main_nav_level_2');
            line.append($(this).clone().css('display', 'block'));

            // cs: bug tracking
            line.find("a").attr("data-tracking","linktype=nav_main");
            $(this).attr("data-tracking","linktype=nav_main");

            $(this).removeClass().addClass('submenu_text_hover');
            line.insertBefore(this);
            line.append(this);
          });
          
          
          // Prepend 'Change Dealer' menu entry
          li = $('<li>').addClass('main_nav_level_2_select_dealer');
          li.append($('#menuChangeDealer'));
          li.insertAfter(mainNavId + ' .main_nav_level_2_subsidiary');
          $('#menuChangeDealer').css('visibility','');
  
          // Fix URLs
          miniUrlFix.doPartialFix(mainNavId + ' .ul_level_2:last');
          
          // Update MyMini Menu Link
          $(mainNavId + ' .ul_level_2 a.mydealer').attr('href', miniSubsidiary.getUrl());
          
          // Update Sitemap
          updateSitemap();
          
          // Render Cufon
          if(getInternetExplorerVersion() < 0) {
            Cufon.replace(mainNavId + ' .ul_level_2:last .submenu_text, ' + mainNavId + ' .ul_level_2:last .submenu_text_hover');
          }
  
          // Emulate menu behavior
          $(mainNavId + ' .ul_level_2:last > li.main_nav_level_2_subsidiary').nextAll().hover(
            function() { mainNavigation.setOpenTimer(this); },
            function() {mainNavigation.setCloseTimer(this); }
          );
        });  // get(module_navigation.html)
      }, function() { // errorCallback
        miniSubsidiaryLayer.showEmptyMenu();
      }); // onSubsidiaryReady
    }
  };

  /** 
   * Show empty dealer menu. No dealer is selected.
   */
  this.showEmptyMenu = function() {
    var selectDealerLink = $("#menuSelectDealer li").attr("id", SELECT_DEALER_LIST_ITEM_ID); // CR01
    // CR01 2011 Online Store: remove submenue/add-line if necessary
    this.removeSubmenue();
    $(mainNavId + ' .ul_level_2:last').append(selectDealerLink); // CR01
      
    // Update Sitemap
    updateSitemap();
        
    // Render Cufon
    if(getInternetExplorerVersion() < 0){
      Cufon.replace(mainNavId + ' .ul_level_2:last a', {hover:true});
    }
    $(mainNavId + ' .ul_level_2:last > li[id="'+ SELECT_DEALER_LIST_ITEM_ID +'"]').hover( // CR01
      function() {mainNavigation.setOpenTimer(this); },
      function() {mainNavigation.setCloseTimer(this);}
    );
  }

  /** 
   * Deletes the referenced submenue if it should not be displayed. // CR01 2011 Online Store
   */
  this.removeSubmenue = function() {
    try{
      if(typeof(showSubmenue4) !== "undefined" && showSubmenue4){
        // add horizontal line 
        $(mainNavId + ' .ul_level_2:last').append($("<div>").addClass("main_nav_subsidiary_separator").html("&nbsp;"));
        return;
      }
    }catch(ex){}
    
    // remove
    $(mainNavId + ' .ul_level_2:last').html("");
  }

  /**
   * Initializes the C2B Service and finds subsidiaries around the current location.
   * 1. Get current location (AKAMAI)   
   * 2. Call count dealers from C2B
   * 3. Update Dealer Layer
   * special case no coords no layer
   *
   * @return true if a cookie exists, otherwise false.
   */
  var countSubsidiaries = function() {    
    // Get geodata
    miniSubsidiary.getCurrentLocation(function(data) {
  
    var distBranchCode = $('#dealerLayerService').val();
  
      // Load c2b and other scripts
      jQuery.ajaxSetup({cache: true}); // enable cache
      //$.getScript(C2BScript_Infobox, function(){ // get infobox.js
        //$.getScript(C2BScript_Extdragg, function(){ // extdraggableobject.js
          //$.getScript(C2BScript_Search, function(){ // get C2B_LocalSearch.js
            $.getScript(C2BScript, function(){ // get C2B_DealerLocator.js
          
        c2bDealerLocator.init(
        {
          "baseURL" : C2BBaseUrl,
          "brand" : "MINI",
          "key" : "MINI_DLO",
          "country" : topicCountry === '_master' ? 'DE' : topicCountry.toUpperCase(),
          "language" : topicCountry === '_master' ? 'de' : 'de', //topicLanguage.toLowerCase(),
          "maxDealerSubsidiary" : 200      
        },
        function()
        {
          if (data) {
            c2bDealerLocator.countDealerSubsidiaries(
            {
              "radius" : 50,
              "lat" : data.lat,
              "lng" : data.long,
              "distributionBranchCode" : distBranchCode
            }
            , function(count) {updateDealerLayer(count);});
          }
          else {
            // distributionBranchCode is defined in dealerlayer_component
            c2bDealerLocator.countDealerSubsidiaries({"distributionBranchCode" : distBranchCode}, function(count) {updateDealerLayer(count);});
          }
        }); // init DLO
          }); // .getScript(C2B_DealerLocator.js)
        //}); // .getScript(C2B_LocalSearch.js)
      //}); // extdraggableobject.js
    //}); // get infobox.js
    }); // .getCurrentLocation
  
  };
  
  /**
    * Update dealer layer. This method is called when subsidiaries are found around a specific geolocation.
    * 1. Hide initialization text
    * 2. Show "Choose from x dealer around ..."
    * 
    */
  function updateDealerLayer(count) {
    if (count > 0) {
      var s = $("#dealerLayerResult a").text().replace("{1}", count);
      $("#dealerLayerResult a").text(s);
      $("#dealerLayerInit").hide();
      $("#dealerLayerResult").show();
    }
    else {
      $("#dealerLayerInit").hide();
      $("#dealerLayerResultZero").show();
    }
  };
  
}

    // Apend Dealer Menu entry to sitemap on sitemap page
function updateSitemap() {
  var sitemap = $('.sitemap');
  if (sitemap.length>0) {
    //var menuEntries = $("#menuSelectDealer").children();
    //var menuEntries = $("#mainnav:.main_nav_level_1:last:.ul_level_2").children();
    if($('#selectDealerListItem').length > 0){
      var menuEntries = $('#selectDealerListItem');
    }else{
      var menuEntries = $(mainNavId + ' .main_nav_level_1:last > ul > li.main_nav_level_2_select_dealer').nextAll("li");
    }
    if(typeof(showSubmenue4) === "undefined" || !showSubmenue4){ //false for se
		//get rid of the 4th menu if we don't need it
		$(".sm_lvl_0_li:last > ul").remove();
	}
    for (var i=0; i < menuEntries.length; i++) {          
      var e = document.createElement('ul');
  
      var ec = document.createAttribute('class');
      ec.nodeValue = 'sm_lvl_1';
      e.setAttributeNode(ec);
      
      var se = document.createElement('li');
      var sec = document.createAttribute('class');
      sec.nodeValue = 'sm_lvl_1_li';
      se.setAttributeNode(sec);
      
      var sa = document.createElement('a');
      var sal = document.createAttribute('href');
      sal.nodeValue = $(menuEntries[i]).find('.submenu_text').attr("href");
      sa.setAttributeNode(sal);
      sa.appendChild(document.createTextNode($(menuEntries[i]).find('.submenu_text').text()));
  
      
      se.appendChild(sa);
      e.appendChild(se);
      
      $(".sm_lvl_0_li:last").append(e);
    }    
    $(".sm_lvl_0_li_3").show();
    // Update tracking information
    if(typeof miniTracking === 'object' && typeof miniTracking.registerClickEvent === 'function'){
      // Rewrite data-tracking linktype to 'text_sitemap'
      $('.sm_lvl_0_li:last a').attr('data-tracking','linktype=text_sitemap');
    }
  }
};

/**
 * Static variable for accessing mini subsidiary
 * @static
 */
var miniSubsidiaryLayer = new MiniSubsidiaryLayer();
var layerTimer;

function initMaps() {
  
  if(jQuery(mainNavId).length === 0) return;

  // Insert dealer into body tag 
  var selector = $("body");
      
  /* C2B expects google_maps parameter. */
  if (miniSubsidiaryLayer.displayLayer()) {  
    //$('<div/>').attr('id', 'tmp_map').css('display','none').appendTo(selector);
  }
  
  // Load dealer layer (dealer layer contains 'select dealer' entry thats why we need it every time
  $('<div/>').attr('id','dealerLayer').css('display','none').appendTo(selector);
  
  var currentUrl = window.location.href;
  if (currentUrl.indexOf("wcms20.bmwgroup.com") > -1 && $.browser.msie) {
    //wcms returns dealer_layer.html (next ajax call) in iso8859-1 encoding
    //this is not supported by ie which fails with "Systemfehler -1072896658", therefore:
    return;
  }
  $("#dealerLayer").load(getRelativeMasterPath("select_dealer/dealer_layer.html") + ' #dealerLayerContent', function() {
    // add css styles
    $("#dealerLayer").css('left', $("#dealerLayerContent").css('left'));
    $("#dealerLayer").css('top', $("#dealerLayerContent").css('top'));
    $("#dealerLayer").css('width', $("#dealerLayerContent").css('width'));
      
    // Fix url path
    jQuery('#dealerLayer a').each(function(e){
      miniUrlFix.fixUrlAttribute(this, 'href');
    });    

    if (typeof isMobileDevice === 'function' && isMobileDevice()) {
      mainNavId = '#mobile_mainnav';
    }

    // Update Dealer menu   
    if (!miniSubsidiary.isSubsidiarySelected()) {
      miniSubsidiaryLayer.showEmptyMenu();
    }      
    else {
      miniSubsidiaryLayer.updateMenu();
    }    
    
    if (miniSubsidiaryLayer.displayLayer()) {
      // Count visit and show layer
      miniSubsidiaryLayer.countVisit();
    }

  });
}

// If the URL parameter "sub" exists, the dealer must be saved as subsidiary
// The parameter "sub" is a combination with department id underscore outlet id.
$(document).ready(function() {
       var dealer_key = getRequestParameter("sub");
       if (dealer_key !== null) {
          miniSubsidiary = new MiniSubsidiary();
          miniSubsidiary.saveSubsidiary(dealer_key);
       }
});



}catch(e){console.log('Error in m_dealer_layer: ' + e.description);}

// ---- m_dealer ----
try{  
var c2bSelectDealerText;
var c2bLocUnknownErr;
var c2bLocNotUniqueErr;
var c2bLocOutsideErr;
var c2bNoResultsFound;
var c2bTooManyResults;
var c2bGeneralErr;
var distFVehicles;
var distTPartsService;
var distSMobileService;
var distGUsedCars;

var c2bMapImage;
var c2bSatelliteImage;
var c2bTerrainImage;

var enableBoldHomepage;

var geoCoord1;
var geoCoord2;
var geoCoord3;
var geoCoord4;
var geoCoord5;
var imgDirDealer = '_common/_img/01_framework/dealer/';

var showDistanceToDealers = true;

// include javascript libraries from the proper environment
var c2BEnvironment = '';
if(getDeploymentType() === 'EDIT' || getDeploymentType() === 'QA')
    c2BEnvironment = '-i';

var C2BBaseUrl  = 'https://c2b-services'+ c2BEnvironment +'.bmw.com/c2b-localsearch/services/DealerLocatorService/';
var C2BScript = 'https://c2b-services'+ c2BEnvironment +'.bmw.com/c2b-localsearch/static/localsearch/v2/scripts/C2B_DealerLocator.min.js';
var C2BScript_Infobox = 'https://c2b-services'+ c2BEnvironment +'.bmw.com/c2b-localsearch/static/localsearch/v2/scripts/infobox_packed.js';
var C2BScript_Extdragg = 'https://c2b-services'+ c2BEnvironment +'.bmw.com/c2b-localsearch/static/localsearch/v2/scripts/extdraggableobject_packed.js';


var distBranches = new Array();

function c2bDealerInit(mapImage, satelliteImage, terrainImage, selectDealerText, locUnknownErr, locNotUniqueErr, locOutsideErr,
  generalError, distF, distT, distS, distG, subsidiaryDir, enableCountrySearch, enableBoldHomepage, noResultsFound, tooManyResults, 
  coordNorth, coordSouth, coordEast, coordWest, showDistanceToDealers, rezoomAfterSearch) {
    var dealerMap = new Object();
    
    this.enableBoldHomepage = enableBoldHomepage;
    this.showDistanceToDealers = showDistanceToDealers;
    c2bMapImage = mapImage != '' ? mapImage : null;
    c2bSatelliteImage = satelliteImage != '' ? satelliteImage : null;
    c2bTerrainImage = terrainImage != '' ? terrainImage : null;
    
    c2bSelectDealerText = selectDealerText;
    c2bLocUnknownErr = locUnknownErr;
    c2bLocNotUniqueErr = locNotUniqueErr;
    c2bLocOutsideErr = locOutsideErr;
    c2bNoResultsFound = noResultsFound;
    c2bTooManyResults = tooManyResults;
    c2bGeneralErr = generalError;
    distBranches['F'] = distF;
    distBranches['T'] = distT;
    distBranches['S'] = distS;
    distBranches['G'] = distG;
    subsidiaryDir = miniSubsidiary.getDir(subsidiaryDir);
    
    var hasCountryBounds = (coordNorth !== '' && coordSouth !== '' && coordEast !== '' && coordWest !== '');
    miniSubsidiary.getCurrentLocation(function(data) {
    // Load c2b and other scripts
    jQuery.ajaxSetup({cache: true}); // enable cache
    $.getScript(C2BScript_Infobox, function(){ // get infobox.js
      $.getScript(C2BScript_Extdragg, function(){ // extdraggableobject.js
       //$.getScript(C2BScript_Search, function(){ // get C2B_LocalSearch.js
        $.getScript(C2BScript, function(){ // get C2B_DealerLocator.js
     
        c2bDealerLocator.init(
        {
          "baseURL" : C2BBaseUrl,
          "brand" : "MINI",
          "key" : "MINI_DLO",
          "country" : topicCountry === '_master' || topicCountry === '_master2' ? 'DE' : topicCountry.toUpperCase(),
          "language" : topicCountry === '_master' || topicCountry === '_master2'  ? 'de' : 'de',
          "map" : "subsidiary_map",
          "maxDealerSubsidiary" : 200,
          "countryBounds":  hasCountryBounds ? {"north" : coordNorth, "south" : coordSouth, "east" : coordEast, "west" : coordWest } : "",
          "callbackHighlightDealer" : function( key )
          {
              c2bDealerLocator.highlightDealer(
              {
                  "key" : key,
                  "text" : getDealerInfoText(key)
              } );
              Cufon.replace(".infoBox .c2bDlCSelectDealer");
          },
          "callbackDealerOffices" : updateDealers,
          "callbackHandleError" : errorHandler,
          "locationNotUniqueBehaviour" : c2bDealerLocator.LocationNotUniqueBehaviour.IGNORE,
          "zoomOutAdjustment": rezoomAfterSearch,
          "displayOptions" :
          {
              "markerIcon" :
              {
                  image : getRelativeWebsiteRootPath(imgDirDealer + 'image.png'),
                  shadow : getRelativeWebsiteRootPath(imgDirDealer + 'shadow.png'),
                  iconSize : [43,53],
                  shadowSize : [70,53],
                  iconAnchor : [0,53],
                  infoWindowAnchor : [0,0],
                  printImage : getRelativeWebsiteRootPath(imgDirDealer + 'printImage.gif'),
                  mozPrintImage : getRelativeWebsiteRootPath(imgDirDealer + 'mozPrintImage.gif'),
                  printShadow : getRelativeWebsiteRootPath(imgDirDealer + 'printShadow.gif'),
                  transparent : getRelativeWebsiteRootPath(imgDirDealer + 'transparent.png'),
                  imageMap : [11,0,16,1,23,2,23,3,23,4,23,5,23,6,23,7,23,8,23,9,23,10,23,11,23,12,23,13,23,14,23,15,23,16,23,17,23,18,23,19,23,20,23,21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,0,52,0,51,0,50,0,49,0,48,0,47,0,46,0,45,0,44,0,43,0,42,0,41,0,40,0,39,0,38,0,37,0,36,0,35,0,34,0,33,0,32,0,31,0,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0]
              },
              "infoBox" :
              {
                closeBoxURL : getRelativeWebsiteRootPath(imgDirDealer + 'close_button.gif'),
                closeBoxMargin: "6px",
                pixelOffset: [ -100, -60 ],
                boxClass: "infoBox",
                boxStyle:
                  {
                    width: "200px"
                  },
                infoBoxClearance: [ 20, 20 ]
              },
              "mapTypeDisplay" :
              {
                  "mapImage" : c2bMapImage,
                  "satelliteImage" : c2bSatelliteImage,
                  "terrainImage" : c2bTerrainImage
              }
          }
        },
        function()
        {
          jQuery("#search_spinner").show();
          if (data) { // geodata available
            
            // prefilter dealers depending on the selected service in the DLO controller
            var comboValueObject = getComboValue();
            
            // Geocoord is part of actual NSC or master/master2
            if (topicCountry.toUpperCase() === data.country_code || topicCountry === '_master' || topicCountry === '_master2') {
              c2bDealerLocator.searchDealerSubsidiaries(
              {
                "lat" : data.lat, "lng" : data.long, "radius" : 50, "locationNotUniqueBehaviour": c2bDealerLocator.LocationNotUniqueBehaviour.IGNORE,
                "distributionBranchCode" : comboValueObject.distributionBranchCode,
                "service" : comboValueObject.service
              },
              updateDealers);
            }
            // Gecoord outside NSC (i.e geocoord is munich and nsc is mini.it)
            else {
              // this flag can be maintained in the dealer page
              if (hasCountryBounds) {
                c2bDealerLocator.searchDealerSubsidiaries({"countryBounds":  {"north" : coordNorth, "south" : coordSouth, "east" : coordEast, "west" : coordWest}, 
                "locationNotUniqueBehaviour": c2bDealerLocator.LocationNotUniqueBehaviour.IGNORE, 
                "distributionBranchCode" : comboValueObject.distributionBranchCode,
                "service" : comboValueObject.service }, updateDealers); 
              }
              else if (enableCountrySearch) {
                c2bDealerLocator.searchDealerSubsidiaries({"location": topicCountry, 
                                  "locationNotUniqueBehaviour": c2bDealerLocator.LocationNotUniqueBehaviour.IGNORE,
                                  "distributionBranchCode" : comboValueObject.distributionBranchCode,
                                  "service" : comboValueObject.service }, updateDealers);
              }        
            }      
          }
          else if (topicCountry === '_master' || topicCountry === '_master2') {
            //c2bDealerLocator.searchDealerSubsidiaries({ "location": 'DE'}, updateDealers);
          } 
          else { // no geodata available (edit or mobile device)
            //c2bDealerLocator.searchDealerSubsidiaries({ "location": topicCountry.toUpperCase()}, updateDealers);
          }
      jQuery("#search_spinner").hide();
        } 
        ); // init 
        
        }); // .getScript(C2B)
       //}); // get C2B_LocalSearch.js
      }); // extdraggableobject.js
    }); // get infobox.js
    }); // .getCurrentLocation     
}

function dealerSearchSubmit()
{
  $("#subsidiary_result_overview").empty();
  $("#search_spinner").show();
  var comboValueObject = getComboValue();

  var name = jQuery.trim(jQuery("#subsidiary_name").attr( "value" ));
  var location = jQuery.trim(jQuery("#subsidiary_town").attr("value"));
  
  var localDisplay = true // default
  if(name !== ''){
    localDisplay = false;
  }
  
  c2bDealerLocator.searchDealerSubsidiaries(
  {
    "name" : name,
    "location" : location,
    "distributionBranchCode" : comboValueObject.distributionBranchCode,
    "service" : comboValueObject.service,
    "locationNotUniqueBehaviour": c2bDealerLocator.LocationNotUniqueBehaviour.IGNORE,
    "localDisplay" : localDisplay
  },
  updateDealers );
}

function getComboValue(){
  var values = {"distributionBranchCode": "",
                "service": ""};
  var comboValue = jQuery.trim(jQuery("#subsidiary_service").attr("value"));
  var distributionBranchCode = "";
  var service = "";
  
  if (comboValue ==  "F" || comboValue == "T" || comboValue == "G") {
    values.distributionBranchCode = comboValue;
  }
  if (comboValue == "1" || comboValue == "2" || comboValue == "3" || comboValue == "4") {
    values.service = comboValue;
  }
  return values;
}


function updateDealers( dealers )
{
  updateGoogleMaps();
  $("#search_spinner").hide();
  if (dealers.length <= 0) return;
  
  dealerMap = new Object();
  var frag = "<ol class='c2bDlCDealer' >";
  jQuery.each( dealers, function(i, dealer)
  {
    dealerMap[ dealer.key ] = dealer;
    var infoText = getDealerInfoText(dealer.key);
    
    frag += "<li>";
    frag += "<div id='" + dealer.key + "' class='c2bDlCName'>" + dealer.name + "</div>";
    if( dealer.distance >= 0 && ( showDistanceToDealers === undefined || showDistanceToDealers ) ) {
      frag += "<div class='c2bDlCDistance'>" + dealer.distance.toFixed(1) + " km</div>";
    }
    if (miniSubsidiary.isAddressOverwritten(dealer.key)) {
      frag += "<div class='c2bDlCStreet'>" + subsidiariesOverwrite['d'+dealer.key].addressRow2 + "</div>";
      frag += subsidiariesOverwrite['d'+dealer.key].addressRow3 + " " + subsidiariesOverwrite['d'+dealer.key].addressRow4;
    }
    else {
      frag += "<div class='c2bDlCStreet'>" + dealer.street + "</div>";
	  if (dealer.zip == null || dealer.zip == "null") {		
		frag += dealer.city;
	  } else {
		frag += dealer.zip + " " + dealer.city;
	  }
    }
    frag += "<p id='info_window_services'>";
    frag += getDealerServices(dealer);
    frag += "</p>";

    if (miniSubsidiary && miniSubsidiary.isSubsidiaryDefined(dealer.key)) {
      frag += "<a class='c2bDlCSelectDealer' href='javascript:void(0)' data-tracking='linktype=TC_T' onclick=\"miniSubsidiary.saveSubsidiary('" + dealer.key + "')\"> &gt; " + c2bSelectDealerText + "</a>";
    }
    frag += "</li>";
  } );
  frag += "</ol>"; 
  // Add subsidiary list 
  $("#subsidiary_result_overview").html(frag);
  $('.mini-pane').css('overflow', 'auto');
  
  showDottedLine();

  // assign onclick event to all subsidiaries 
  $("#subsidiary_control .c2bDlCDealer li").click(function() {
    var id = $(this).find('.c2bDlCName').attr('id');
    c2bDealerLocator.highlightDealer({key: id, text:getDealerInfoText(id)});
    Cufon.replace("#info_window_contents .c2bDlCSelectDealer");
  });
  
  $('#subsidiary_result_overview').jScrollPane({showArrows:true});
  var version = getInternetExplorerVersion();
  var isIe6 = version > -1 && version < 7;
  if(isIe6){
    $('#subsidiary_result_overview').jScrollPane({showArrows:true});
  }
}

/**
 *
 * @param key DPID_OUTLETID
 */
function getDealerInfoText(key)
{
  var dealer = dealerMap[key];
  if (dealer) {
    var  result = new StringBuffer();
    result.append("<div>");
    result.append("<p id='info_window_dealer_name' style='line-height:17px' dpid='" + dealer.key + "'><b>").append(dealer.name).append("</b><br />");

    if (miniSubsidiary.isAddressOverwritten(dealer.key)) {
      result.append(subsidiariesOverwrite['d'+dealer.key].addressRow2).append("<br />");
      result.append(subsidiariesOverwrite['d'+dealer.key].addressRow3).append(" ");
      result.append(subsidiariesOverwrite['d'+dealer.key].addressRow4);
    }
    else {
	  if (dealer.zip == null || dealer.zip == "null") {	
		result.append(dealer.street).append("<br />").append(" ").append(dealer.city);
	  } else {
		result.append(dealer.street).append("<br />").append(dealer.zip).append(" ").append(dealer.city);
	  }
    }
  
    if (dealer.homepage && dealer.homepage.length > 0) {
      var homepage = dealer.homepage;
      if (homepage.search("http") === -1) {
        homepage = "http://" + homepage;
      }
      result.append("<br />");
      result.append("<a href='").append(homepage).append("' style='color:#000000");
      if (enableBoldHomepage) result.append(";font-weight:bold");
      result.append("'>").append("&gt; ").append(homepage).append("</a>");
    }
    if (dealer.phone.length > 0 || dealer.fax.length > 0) {
      var address = $('<p/>').attr('id', 'info_window_address');
      address.append("Tel: " + dealer.phone);
      if (dealer.phone.length > 0) address.append("<br/>");
      address.append("Fax: " + dealer.fax); 
      address = $('<p/>').append(address);
      result.append(address.html());
    }
    result.append("<p id='info_window_services'>");
    result.append(getDealerServices(dealer));
    result.append("</p>");
    if ((topicCountry === 'es' || topicCountry === '_master') 
        && miniSubsidiary && $('#info_window_contents :visible').length > 0) {
      miniSubsidiary.showRoutePlannerAndEcom(key);
    }
    if (miniSubsidiary && miniSubsidiary.isSubsidiaryDefined(key)) {
      result.append("</p><br/><a class='c2bDlCSelectDealer' href='javascript:void(0)'");
      result.append(" onclick=miniSubsidiary.saveSubsidiary('").append(dealer.key).append("')> &gt; ");
      result.append(c2bSelectDealerText).append("</a>");
    }
    result.append("</div>");
    return result.toString();
  }
  else return "";
}

function getDealerServices(aDealer) {

  if (aDealer.distributionBranches == undefined) {
    return '';
  }
  else if (typeof(aDealer.distributionBranches) == 'string') {
    return (distBranches[aDealer.distributionBranches]);
  }
  else if (typeof(aDealer.distributionBranches) == 'object')  {

  if (aDealer.distributionBranches.length <= 0) return '';

  result = new StringBuffer();
  var needComma = false;
  // New cars
  for (var i = 0; i < aDealer.distributionBranches.length; ++i) {
    var dist = distBranches[aDealer.distributionBranches[i]];
    if (dist !== undefined && aDealer.distributionBranches[i] === 'F') { // ignore mobile Services (S)
      if (needComma) result.append(", ");
      result.append(dist);
      needComma = true;
    }
  }
  // Used cars
  for (var i = 0; i < aDealer.distributionBranches.length; ++i) {
    var dist = distBranches[aDealer.distributionBranches[i]];
    if (dist !== undefined && aDealer.distributionBranches[i] === 'G') { // ignore mobile Services (S)
      if (needComma) result.append(", ");
      result.append(dist);
      needComma = true;
    }
  }
  // Service, Parts
  for (var i = 0; i < aDealer.distributionBranches.length; ++i) {
    var dist = distBranches[aDealer.distributionBranches[i]];
    if (dist !== undefined && aDealer.distributionBranches[i] === 'T') { // ignore mobile Services (S)
      if (needComma) result.append(", ");
      result.append(dist);
      needComma = true;
    }
  }

  return result.toString();
  }
  else return '';
}

function errorHandler( error )
{
  var sel = "#subsidiary_result_overview";
  var p = $("<p/>").addClass("c2bError");
  $("#search_spinner").hide();
  showDottedLine();
  if (error.type == "LOCATION_NOT_FOUND") {
    $(sel).html(p.text(c2bLocUnknownErr));
  }
  else if (error.type == "LOCATION_NOT_UNIQUE") {
    $(sel).html(p.text(c2bLocNotUniqueErr));
  }
  else if (error.type == "NO_RESULTS_FOUND") {
    $(sel).html(p.text(c2bNoResultsFound));
  }
  else if (error.type == "LOCATION_OUTSIDE_COUNTRY") {
    $(sel).html(p.text(c2bLocOutsideErr));
  }
  else if (error.type == "TOO_MANY_RESULTS") {
    $(sel).html(p.text(c2bTooManyResults));
  }
  else {
    $(sel).html(p.text(c2bGeneralErr));
  }
}

function showDottedLine() {
  $('#dotted_line_top').css('visibility', 'visible');
  $('#dotted_line_bottom').css('visibility', 'visible');
}

function updateGoogleMaps() {
  // hide google logo
  $("#logocontrol").css("visibility", "hidden");
  // hide use terms
  $(".terms-of-use-link").css("display", "none");
}

function StringBuffer() { 
    this.buffer = []; 
} 

StringBuffer.prototype.append = function append(string) { 
    this.buffer.push(string); 
    return this; 
}; 

StringBuffer.prototype.toString = function toString() { 
    return this.buffer.join(""); 
}; 

// -----------------------------------------------------------------------------------------------
// MINI Dealer object
MiniSubsidiary = function() {
  /**
   * Cookie name 
   * @final
   */
  var SUBSIDIARY_COOKIE = "miniSubsidiary";
  
  /**
   * cookie is accessible from / and expires never
   * @final
   */
  var COOKIE_OPTIONS = { path: '/', expires: 999 };
  if (getDomain().length > 0) COOKIE_OPTIONS['domain'] = getDomain();
  
  
  /**
   * Path for subsidiary data
   * @private
   */
  var SUBSIDIARY_PATH = "/_data/_dealer_data/";
        
  /**
   * subsidiary object
   * @private
   */
  var subsidiary = null;
  
  /**
   * Array with registered callback method. If a subsidiary record is loaded completly they will be informed
   * @private
   */
  var callbackArray = new Array();
  
  /**
   * Flag to indicate if the json file is loading.
   * @private
   */
  var dataLoading = false;
  
  this.notifyTracking = function(value){
  if(typeof miniTracking !== 'undefined' && typeof miniTracking === 'object' && typeof miniTracking.dealerSelected === 'function'){
    miniTracking.dealerSelected(value);
  }
  else{
  // Register to be notified when mini tracking object will be ready
    $(window).bind('minitrackingready', {dealerId: value}, function(event, miniTrackingObject){
      miniTrackingObject.dealerSelected(event.data.dealerId);
    });
  }
  };
  
  /**
   * Persists a subsidiary cookie. The cookie contains the distribution partner id and the outlet id.
   * (i.e. 12345_1)
   *
   * @param value Cookie value. Must be a valid distribution partner id underscore outlet id
   */
  this.saveSubsidiary = function(value) {
    // Persist cookie
    if (miniSubsidiary.getCookieValue() !== value) {
      
      $.cookie(SUBSIDIARY_COOKIE, value, COOKIE_OPTIONS);
      subsidiary = null;
      
      // Notify Tracking Service if available
      miniSubsidiary.notifyTracking(value);
    }
    
    
    // No redirects if we are not on select dealer
    if ($('#subsidiary_service_locator').length < 1) return;

    // 1. contact page was last page => go back
    if (typeof selectedService !== 'undefined' && selectedService) {
      history.back();
    }
    // 2. news and event was last page => go back
    else if (typeof module !== 'undefined' && module){
      // The news_events page must NOT be taken from the browser cache. It has to be requested and recalculated by the server a new!
      if ( module.length>5 && module.substring(0,5) == "news:" ) {
        location.href=module.substring(5)+"?z=" + Math.random();
      }
      else {
        history.back();
      }
    }
    // 3. redirect to dealer start page
    else {
      miniSubsidiary.onSubsidiaryReady(function() {
        // Redirect to dealer main directory
        var url = miniSubsidiary.getUrl();
        var loc = window.location.href;
        if (loc.indexOf(url) === -1 ) {
          //window.location.href = url;
          gotoURLWithReferrer(url);
        }
      }, null, value);
    }
  };

  /**
   * Returns if a subsidiary is already selected (checks if a cookie exists). 
   *
   * @return true if a dealer cookie exists, otherwise false.
   */
  this.isSubsidiarySelected = function() {
      return ($.cookie(SUBSIDIARY_COOKIE) !== null && $.cookie(SUBSIDIARY_COOKIE).length > 0);
  };
  
  /**
   * Returns the subsidiary cookie value (distribution partner id and the outlet id)
   *
   * @return dealer cookie value (distribution partner id and the outlet id)
   */
  this.getCookieValue = function() {
    return $.cookie(SUBSIDIARY_COOKIE);
  };
  
  /**
   * Loads a single subsidiary and informs when the objects loads successfully.
   *
   * @param callback Callback function called on success with dealer object as parameter
   * @param errorCallback If an error occures this callback will be called (optional)
   * @param Distribution partner ID _ outlet ID (optional)
   */
  this.onSubsidiaryReady = function(callback, errorCallback, id) {
  
    var version = getInternetExplorerVersion();
    var isIe6 = version > -1 && version < 7;
    if(isIe6){
      debugOutput=false;
    }
    else {
      debugOutput=false;
    }
  
    if (!callback) return;
    
    if (this.isSubsidiarySelected()) {
      if (subsidiary !== null) {
        callback();
      }
      else {
        callbackArray.push(callback);  
        if (!dataLoading) {
          dataLoading = true;          
          var tmpUrl = miniUrlFix.fixAbsoluteUrl(SUBSIDIARY_PATH);
          if (typeof id === 'undefined') {
            tmpUrl = tmpUrl + this.getCookieValue() + ".js";
          }
          else {
            tmpUrl = tmpUrl + id + '.js';
          }
          
          $.ajax({
            url: tmpUrl,
            dataType: 'json',
            contentType: "application/x-javascript; charset=utf-8",
            error: function (XMLHttpRequest, textStatus, errorThrown) {
              // unable to find cookie. In this case we delete the cookie.
              subsidiary = null;
              $.cookie(SUBSIDIARY_COOKIE, null, { path: '/', domain: getDomain() });
              if (typeof errorCallback === 'function') errorCallback();
              
            },
            success: function(data) {
              //logMsg("onSubsidiaryReady: success");
              subsidiary = data.subsidiary;
              dataLoading = false;
              executeCallbacks();
            }
            });
        }
      }
    }    
  };
  
  /**
   * Loads a single a specific subsidiary.
   * Ugly solution for spanish NSC.
   *
   * @param Distribution partner ID _ outlet ID 
   */
  this.showRoutePlannerAndEcom = function(id) {
  
    var tmpUrl = miniUrlFix.fixAbsoluteUrl(SUBSIDIARY_PATH);
    if (typeof id === 'undefined') {
      tmpUrl = tmpUrl + this.getCookieValue() + ".js";
    }
    else {
      tmpUrl = tmpUrl + id + '.js';
    }
          
    $.ajax({
      url: tmpUrl,
      dataType: 'json',
      contentType: "application/x-javascript; charset=utf-8",
      error: function (XMLHttpRequest, textStatus, errorThrown) {
      },
      success: function(data) {
        var id = data.subsidiary.distributionpartnerid + '_' + data.subsidiary.outletid;

        if ($('#info_window_dealer_name').attr('dpid') !== id) return;
        if (data.subsidiary.ecom_url !== undefined && data.subsidiary.ecom_url.length > 0) {
          var ecomNode = $('<p/>');
          ecomNode.append($('<a/>').addClass('cufon_link').attr('href', data.subsidiary.ecom_url).html(' &gt; ' + ecom_label));
          ecomNode.insertAfter('#info_window_services');
        }
        if (data.subsidiary.route_planner_url !== undefined && data.subsidiary.route_planner_url.length > 0) {
          var routeNode = $('<p/>');
          routeNode.css('margin-top', '6px');
          routeNode.append($('<a/>').addClass('cufon_link').attr('href', data.subsidiary.route_planner_url).html(' &gt; ' + route_planner_label));
          routeNode.insertAfter('#info_window_services');
        }
        Cufon.replace('.cufon_link');
      }
    });
  };


  /**
   * Method to check if a selected subsidiary (stored as cookie) belongs to this NSC.
   * Iterates over all defined subsidaries and returns true if the subsidiary, stored
   * in the cookie was found.
   *
   * @param id distribution partner id undersore outlet id
   * @return true if subsidiary is known otherwise false.
   */
  this.isSubsidiaryDefined = function(id) {
    if (subsidiaries == undefined) return false;
    for (var i = 0; i < subsidiaries.length; i++) {
      if (subsidiaries[i] === id)
        return true;
    }
    return false;
  };
  
  /**
   * Return the actual subsidiary name and address as string. If no actual dealer is available the result is an empty string.
   *
   * @return subsidiary subsidiary name and address.
   */
  this.getSubsidiaryString = function() {
    var result = "";
    if (!subsidiary) return result;
    
    result = subsidiary.subsidiaryname ? subsidiary.subsidiaryname + "<br />" : "<br />";
    result += subsidiary.street ? subsidiary.street : "";	
    result += subsidiary.zipcode ? ", " + subsidiary.zipcode : "";
    result += subsidiary.town ? " " + subsidiary.town : "";
    return result;    
  };

  /**
   * Return if the subsidiary supports the given form type.
   *
   * @return true if the subsidiary supports the given form type, otherwise false.
   */
  this.supportsForm = function(formType) {
    if (subsidiary) {
      // Unknown form type means dealer supports it
      if (subsidiary.requestservices[formType] === undefined) {
        return true;
      }      
      else {
        return subsidiary.requestservices[formType].available;
      }
    }
    return false;
  };

  /**
   * Return if the subsidiary supports any form type.
   *
   * @return true if the subsidiary supports a form type, otherwise false.
   */
  this.supportsAnyForm = function() {  
    if (subsidiary) {
      for (var key in subsidiary.requestservices) {
        if (this.supportsForm(key)) return true;
      }
    }
    return false;
  };

  this.getSubsidiaryPriceByService = function(serviceType) {
    return subsidiary ? subsidiary.services[serviceType].price : "";
  };
  
  /**
   * Returns the distribution partner id (i.e. 12345)
   *
   * @return distribution partner id
   */
  this.getDistributionPartnerId = function() {
    if (this.isSubsidiarySelected()) {
      var cookieValue = this.getCookieValue();
      return cookieValue.split('_')[0];
    }
  };

  /**
   * Returns the subsidiary outlet id (i.e. 01)
   *
   * @return outlet id
   */
  this.getOutletId = function() {
    if (this.isSubsidiarySelected()) {
      var cookieValue = this.getCookieValue();
      return cookieValue.split('_')[1];
    }
  };

  this.getId = function() {
    if (this.isSubsidiarySelected()) {
      return getDistributionPartnerId + '_' + getOutletId;
    }
    else return '';
  }
  
  /**
   * Returns the goldmine id
   *
   * @return goldmine id
   */
  this.getGoldmineId = function() {
      return subsidiary ? subsidiary.goldmineid : "";
  };

  /**
   * Returns the subsidiary name id
   *
   * @return subsidiary name
   */
  this.getSubsidiaryName = function() {
      return subsidiary ? subsidiary.subsidiaryname : "";
  };
  
  /**
   * Returns the subsidiary town
   *
   * @return subsidiary town
   */
  this.getSubsidiaryTown = function() {
      return subsidiary ? subsidiary.town : "";
  };
  
  /**
   * Returns the select dealer page for a specific subsidiary
   *
   * @return select dealer page url
   */
  this.getSelectDealerPage = function() {
      return subsidiary ? subsidiary.selectdealerpage : "";
  };

  /**
   * @return true, if the dealer has a valid used car branch
   */
  this.hasUsedCarsBranch = function() {
      return subsidiary != null && subsidiary.distributionbranches.branch_g.available;
  };

  /**
   * @return true, if the dealer has a valid new car branch
   */
  this.hasNewCarsBranch = function() {
      return subsidiary != null && subsidiary.distributionbranches.branch_f.available;
  };

  /**
   * @return true, if the dealer has a valid service branch
   */
  this.hasServiceBranch = function() {
      return subsidiary != null && subsidiary.distributionbranches.branch_s.available;
  };

  /**
   * @return true, if the dealer has a valid accessories branch
   */
  this.hasAccessoriesBranch = function() {
      return subsidiary != null && subsidiary.distributionbranches.branch_t.available;
  };

  /**
   * @return true, if the dealer has a valid news branch
   */
  this.hasNewsBranch = function() {
      return subsidiary != null && subsidiary.distributionbranches.branch_n;
  };

  /**
   * @return List with supported languages by this dealer.
   */  
  this.getSupportedLanguages = function() {
      return subsidiary != null && subsidiary.supportlanguages;  
  };

  /**
   * Check if the address should be overwritten.
   * @return True if the address will be overwritten, otherwise false.
   */  
  this.isAddressOverwritten = function(dpid) {
    if (typeof subsidiariesOverwrite === 'undefined') return false;
    // for all dpid's
    for (i in subsidiariesOverwrite) {
      if (i === 'd'+dpid) return true;        
    }
    return false;  
  };

  
  /**
   * Executes all stored callback methods.
   * @private
   */
  var executeCallbacks = function() {
    while (callbackArray.length > 0) {
      callback = callbackArray.pop();
      callback();
    }
  };
  
  /**
   * Returns for file name http://blah/index.html http://blah/
   * @public
   */
  this.getDir = function(url) {
    url = miniUrlFix.fixAbsoluteUrl(url);      

    // remove index.html 
    var end = url.lastIndexOf("/");
    if (end > 0) {
      url = url.substring(0, end+1);
      return url;
    }
    else return url;
  }
  
  /**
   * Return the actual dealer subsidiary internal url. 
   * Point to the subsidiary root directory.
   * e.g. http://wcms20.bmwgroup.com/mini2010_edit/_master/en/dealer/ah_mustermann
   *
   * @return dealer subsidiary internal url.
   */
  this.getUrl = function() {
    if (subsidiary) {
      for (var key in subsidiary.supportlanguages) {
        var url = subsidiary.supportlanguages[key].url;
        url = miniUrlFix.fixAbsoluteUrl(url);
        // Check if the dealer supports actual language
        if (key === topicLanguage) { // support language
          // redirect to dealer page => language does not change
          return this.getDir(url);
        }        
      } // for
      // dealer does not support the language, redirect to the first defined language
      for (var key in subsidiary.supportlanguages) {
        var url = subsidiary.supportlanguages[key].url;
        url = miniUrlFix.fixAbsoluteUrl(url);
        return this.getDir(url);
      } // for
    } // if
  };
  
  /**
   * Return the contact team entry page. 
   *
   * @return contact and team url.
   */
  this.getTeamContactUrl = function() {
    return subsidiary ? subsidiary.contactTeamPage : "";
  };
  
  /**
   * Get geocoords from AKAMAI.
   * @public
   *
   * @returns Data object with lat, long value if geodata available, null otherwise.
   */
  this.getCurrentLocation = function(callback) { 
  
    $.ajax({url: miniUrlFix.fixAbsoluteUrl('/_common/_js/geotargeting.jsp') + '?r=' + (((1+Math.random())*0x10000)|0).toString(16), dataType: "json", success: function(data) {
      if (data && typeof data.lat !== 'undefined' && typeof data.long !== 'undefined') {
        callback(data);        
      } else {
        callback(null);
      }
    }, error:  function() {
      callback(null);
    }}); 
  };
  
};

/**
 * Static variable for accessing mini subsidiary
 * @static
 */
var miniSubsidiary = new MiniSubsidiary();

/**
 * change subsidiary site
 */
function changeSubsidiary(subsidiaryUrl){
  if (subsidiaryUrl != window.location.href){
    //window.location.href = subsiDiaryURL;
    gotoURLWithReferrer(subsidiaryUrl);
  }
}

// unload google maps to prevent memory leaks in IE
// not neccessary after migration to maps v3
/*$(window).unload(function() {
  if(typeof GUnload == 'function') {
     GUnload();
  }  
});*/


}catch(e){console.log('Error in m_dealer: ' + e.description);}

// ---- m_contact_team ----
try{ function contactTeamInit(mapImage, satelliteImage, terrainImage) {

  Cufon.replace('#contact_team .teaser_component_link a', {hover:true});
  var dealerMap = new Object();
  
    // Load c2b and other scripts, paths are set in m_dealer.js
    jQuery.ajaxSetup({cache: true}); // enable cache
    $.getScript(C2BScript_Infobox, function(){ // get infobox.js
      $.getScript(C2BScript_Extdragg, function(){ // extdraggableobject.js
       //$.getScript(C2BScript_Search, function(){ // get C2B_LocalSearch.js
        $.getScript(C2BScript, function(){ // get C2B_DealerLocator.js

    c2bDealerLocator.init(
    {
        "baseURL" : C2BBaseUrl,    
        "brand" : "MINI",
        "key" : "MINI_DLO",
        "country" : topicCountry === '_master' ? 'DE' : topicCountry.toUpperCase(),
        "language" : topicLanguage === 'en' ? 'de' : 'de', //topicLanguage.toLowerCase(),
        "map" : "subsidiary_map",
        "maxDealerSubsidiary" : 200,
        "callbackHighlightDealer" : function(key)
        {
            c2bDealerLocator.highlightDealer(
            {
                "key" : key,
                "text" : getMapInfoText(key)
            } );
            
        },
        "callbackDealerOffices" : updateDealer,
        "callbackHandleError" : errorHandler,
        "displayOptions" :
        {
            "markerIcon" :
            {
                image : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/image.png'),
                shadow : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/shadow.png'),
                iconSize : [43,53],
                shadowSize : [70,53],
                iconAnchor : [0,53],
                infoWindowAnchor : [0,0],
                printImage : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/printImage.gif'),
                mozPrintImage : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/mozPrintImage.gif'),
                printShadow : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/printShadow.gif'),
                transparent : getRelativeWebsiteRootPath('_common/_img/01_framework/dealer/transparent.png'),
                disableScrollWheelZoom: true,
                imageMap : [11,0,16,1,23,2,23,3,23,4,23,5,23,6,23,7,23,8,23,9,23,10,23,11,23,12,23,13,23,14,23,15,23,16,23,17,23,18,23,19,23,20,23,21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,0,52,0,51,0,50,0,49,0,48,0,47,0,46,0,45,0,44,0,43,0,42,0,41,0,40,0,39,0,38,0,37,0,36,0,35,0,34,0,33,0,32,0,31,0,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0]
            },
            "infoBox" :
             {
                closeBoxURL : getRelativeWebsiteRootPath(imgDirDealer + 'close_button.gif'), // imgDirDealer is defined in m_dealer.js
                closeBoxMargin: "6px",
                pixelOffset: [ -100, -60 ],
                boxClass: "infoBox",
                boxStyle:
                  {
                    width: "200px"
                  },
                infoBoxClearance: [ 20, 20 ]
             },
            "mapTypeDisplay" :
            {
                "mapImage" : mapImage,
                "satelliteImage" : satelliteImage,
                "terrainImage" : terrainImage
            }
        }
    },
    function() {
    c2bDealerLocator.searchDealerSubsidiary(
      'subsidiary_map',
      {
        "distributionPartnerId" : dpid,
        "outletId" : outletid,
        "radius" : 5
      },
      updateDealer);            
    });
        }); // .getScript(C2B)
       //}); // .getScript_Search(C2B)
      }); // extdraggableobject.js
    }); // get infobox.js
}

/**
 * Used as callback method to store a found subsidiary
 * @param tmpDealer
 */
function updateDealer(aDealer)
{
  updateGoogleMaps();
  dealer = aDealer;
}

/**
 * Used as callback method to show the google maps layer within the google maps.
 * Called when the user clicks on the MINI flag symbol
 * @param key
 */
function getMapInfoText(key)
{
  if (dealer)  {
    var result = "<div><p style=line-height:17px><b style=line-height:17px>" + dealer.name + "</b><br />" + dealer.street + "<br />" + dealer.zip + " " + dealer.city + "";
    if (dealer.homepage && dealer.homepage.length > 0) {
      result += "<br />&gt; <a href="+ dealer.homepage +" style=color:black>" + dealer.homepage + "</a>";
    }
    result += "</div>";
    return result;
  }
  else return "";
}

/**
 * Methode to update contacts in product presentation->contact and team.
 * @param seletedIndex show this category and hide all other contact categories
 * @public
 */
function updateContacts(selectedIndex) {
  // for each contact category
  $("#contact_team .contact_category").each(function(index) {
    // if seleted index == 0 show all, hide all categories except the one which is selected
    if (selectedIndex !== 0 && index !== selectedIndex-1) {
      $(this).hide();
    }
    // and show the selected one
    else {
      $(this).show();
    }
  });
}


}catch(e){console.log('Error in m_contact_team: ' + e.description);}

// ---- m_contact ----
try{ 
var hintContainer;
var errorHintContainer;

var formValidationUrl;
var formName;
var formSelector;
var VALIDATE_ACTION = 'validate_form';
var hintBottomOffset = 18;

$(document).ready(function(){
  if ($("#contact_intro").length === 0 && $("#rfiContainer").length === 0) return; //no contact page or contact iframe
  
  if ($("#contact_intro").length === 0 && $("#rfiContainer").length > 0) {
	//a form component which is not embedded by a contact page, display the form:
	$(".contact").show();
	$("#rfiContainer").css("margin-bottom", "0px");
  }
  
  // Register click on body to identify clicks to close dropdown
  $('body').click(function(event){
	var e = $(event.target);
	if(e.hasClass('selectBoxTitle') || e.parent('.selectBoxTitle').length>0)
		return;
		
	$('div.selectBoxDropdown').css('visibility','hidden');
  });
  
  formName = $('input[name="formName"]').val();
  formSelector = 'form[name="'+formName+'"]';
  
  // Register focus and blur handlers on input fields...
  var selector = formSelector+' .input_hint';
  $(selector).hover(_displayHint);
  
  selector = formSelector+' input:text, '+formSelector+' input:password, '+ formSelector+'input:checkbox, '+formSelector+' input:radio, '+formSelector+' select, '+formSelector+' textarea';
  $(selector).blur(_validateInput);
  $(selector).focus(closeSelectBoxes);

  // Div ids for all SILO dynamic elements that are rendered through javascript MUST be entered here
  var selector2 = '#prefcontact, #addresstype, #series, #bodytype, #car_brand, #plannedpurchasedate, #salutation, #title, #carbrand_text, #carmodel_text, #carconstruction, #carcount, #testdrive_day, #testdrive_month, #testdrive_year, #testdrive_daytime, #service_main_category, #marketing_allowed_container, #service_sub_category, #mileage, #car_build_year, #vin, #vehicle_fleet_size, #amount_of_minis, #r58_dealer_selection, #grosskunden_role';

  // Populate div for hint icon
  $(selector + ', ' + selector2).each(function(){
    var elem = $(this);

    var cl = '';
    if(elem.siblings('.infoTextContainer').hasClass('.infoTextContainer')){
      if(elem.siblings('.infoTextContainer').html() != '')
        elem.parents('.input_container').addClass('hint');
    }
  });
  
  // And on specific elements
  $(selector2).each(function(){
    attachEventOnSpecificElement($(this).attr('id'));
  });
  
  hintContainer = $('<div/>').attr('class','inputhint');
  errorHintContainer = $('<div/>').attr('class','inputhint error').attr('id','inputhint_error');
  
  // Initialise form values
  var languageCode = $('input[name="languageCode"]').val();
  var countryCode = $('input[name="countryCode"]').val();
  
  formValidationUrl = getRelativeMasterPath('contact/validate_form.jsp') + '?country=' + countryCode + '&language=' + languageCode + '&formName=' + formName;

  hintContainer.append($('<div/>').attr('class','imghint')).append($('<div/>').attr('class','texthint'));
  errorHintContainer.append($('<div/>').attr('class','imghint')).append($('<div/>').attr('class','texthint'));

  // Append hint container to <body>
  hintContainer.hide();
  errorHintContainer.hide();
  $('body').append(hintContainer);
  $('body').append(errorHintContainer);
  
  // Apply cufon
  Cufon.replace('.contact_headline, #contact_intro h2, .highlight_tab_title, .highlight_tab_title a, #defaultAnchorButton, #defaultAnchorButtonDark');
  Cufon.replace('#dealer_invitation_link', { hover: true });
  
  // Position all hint icons bg image
  /* this method makes no sense, therefore, remove (2011-04-19, mpfaehler)
  $('.input_hint').each(function(){
    var hintBGTopOffset = $(this).parent().height() - hintBottomOffset;
    var hintHeight = $(this).parent().height();
    
    $(this).css('background-position','7px 3px');
    $(this).css('height', '21px');
    $(this).css('margin-top', '17px');//+hintHeight-21+'px');
  });
  */
  
  if (window['preselected_contact_id'] != undefined) {
    preselectContactData(preselected_contact_id);
  }
  
  setPreselectedValues();
	
  setDealerId();
  setWishlist();
  setLeadContext();  
  
  if (window['clearError'] != undefined) {
		clearErrors(clearError);
  }
  
  // show general error information in case of validation errors  
  if ($(".contact div[class*='error']").length > 0) {
	displayGeneralError(true);
  }
  else {
	displayGeneralError(false);
  }  
});

//set dealer id into form if available
function setDealerId() {
  if (miniSubsidiary != null && miniSubsidiary.isSubsidiarySelected()) {
	miniSubsidiary.onSubsidiaryReady(function() {
		var dealerId = miniSubsidiary.getDistributionPartnerId();
		var mappedDealerId = dealerId;
		var outletId = miniSubsidiary.getOutletId();
		if ((typeof(preselected_contact_id) !== 'undefined') && (preselected_contact_id !== null)) {
			if (preselected_contact_id === "tda") {
				//special case for NL
				mappedDealerId = mapDealerId(dealerId, outletId);	
				outletId = mapSubsidiaryId(dealerId, outletId);
			}
		}
		$("#element_req_partner input").attr("value", mappedDealerId);
		$("#element_req_outlet_id input").attr("value", outletId);
		console.log('Set dealer id '+ mappedDealerId + '_' + outletId + ' within form.');    
	}, function() {
		//error callback
		console.log('Error loading dealer data.');
	}); 
  }
}

//set contents of leadContext cookie into form
function setLeadContext() { 
	var leadContext = $.cookie('LEADCONTEXT');
	if (leadContext !== null) {
		if ($("#element_req_lead_context").length > 0) {
			$("#element_req_lead_context input").attr("value", leadContext);
			console.log('Set req_leadContext to '+ leadContext);
		}
		if ($("#element_lead_context").length > 0) {
			$("#element_lead_context input").attr("value", leadContext);
			console.log('Set leadContext to '+ leadContext);
		}
		if ($("#element_subscription_lead_context").length > 0) {
			$("#element_subscription_lead_context input").attr("value", leadContext);
			console.log('Set subscription_leadContext to '+ leadContext);
		}
	}   
}

function showFirstErrorMessage(){
	var firstContainerWithError = $('.input_container.error:first');
	
	if(firstContainerWithError.length==1){
		// Display first container with error
		var errorText = firstContainerWithError.attr('rel');
		
		if(errorText != undefined && errorText != ''){
			var inputName = firstContainerWithError.attr('id').replace(/element_/,"");
			var htmlInput = $('[name="'+inputName+'"]');
			displayHint(htmlInput, errorText, true);
		}
	}
}

//set cookie information of accessories wishlist:
function setWishlist() {
	var wishArea = $("#element_a_wishlist textarea");
	if (wishArea.length === 0) return;
	
	var cookie = decodeURIComponent($.cookie("MiniWishlist"));
	
	//replace all plus signs
	cookie = cookie.replace(/\+/g," ");
	
	//cookie format:
	//productId;description, non-relevant infos and line-breaks | productId2;description, non-relevant...
	if (cookie.length > 0) {
		var wishlist = "";
		while (true) {
			var productCode = cookie.indexOf(';');
			if (productCode === -1) break;
			
			wishlist += cookie.substring(0, productCode) + ": ";
			cookie = cookie.substring(productCode, cookie.length);
			
			var descriptionEnd = cookie.indexOf(',');
			if (descriptionEnd === -1) break;
			
			wishlist += cookie.substring(1, descriptionEnd) + "\n";
			
			var accessoryEnd = cookie.indexOf('|');
			if (accessoryEnd === -1) break;
			cookie = cookie.substring(accessoryEnd+1, cookie.length);			
		}
		wishArea.attr("value", wishlist);
		console.log('m_contact: Inserted wishlist into form');
	}	
}

// show general error information in case of validation errors
function displayGeneralError(value) {
  if (value) {
	// next line deactivated by m.pfaehler on 2010-06-08 as this message is not required
    //$("#general_error_info").show();
    $("#contact_intro .mandatory").css('color','#f00').css('font-weight','bold');
    $("#form_mandatory").css('color','#f00').css('font-weight','bold');
    $("#form_mandatory_top_component").css('color','#f00').css('font-weight','bold'); // mandatory note below process steps
  }
  else {
	// next lines deactivated by m.pfaehler on 2010-06-08 as this branch is not required
    //$("#general_error_info").hide();
    //$("#contact_intro .mandatory").css('color','#ccc');
  }
}

function attachEventOnSpecificElement(element){
  $('#'+element+' .selectboxEntry').click(function(){
    validateInput($('input[name="'+element+'"]').get());
  });
}

/*
  Display a hint to the user
*/
function _displayHint(event){
  var inputName = $(this).attr('rel');
  // Special treatment for date of birth
  if(inputName == 'dateofbirth')
    inputName = 'edit_year';
	
  if(inputName === 'streetandnumber')
    inputName = 'street';

  if(inputName === 'street_and_number_company')
    inputName = 'street_company';
	
  if(inputName === 'zipandcity')
    inputName = 'zipcode';

  if(inputName === 'zip_and_city_company')
    inputName = 'zipcode_company';
    
  var htmlInput = $('[name="'+inputName+'"]');

  var inputContainer = htmlInput.parents('.input_container');
  
  // fix for grosskunden form checkbox group
  if(inputName == "mini_body_types_grosskunden"){ // checkboxes are deeper inside the parent element
    inputContainer = $('#element_mini_body_types_grosskunden');
    htmlInput = inputContainer.find('div.input_content');
  }

  if(inputContainer.hasClass('error') || inputName == "mini_body_types_grosskunden"){
    // If the parent container has class error --> The field has an error --> Display that error
    // The error is saved in the rel attribute from the parent
    var errorText = inputContainer.attr('rel');
    if(errorText != undefined && errorText != '')
      displayHint(htmlInput, errorText, true);
  }
  else if(!inputContainer.hasClass('ok')){
    // The parent container does not have the class error and does not have the class ok --> Display the standard hint
    displayHint(htmlInput);
  }
}

var hintOffsetTop = -2;
var hintOffsetLeft = -18 - 2;
var hideHintTimer = null;
var waitBeforeCloseErrorHint = 10000;
var hintToDisplay = null;

function displayHint(htmlInput, text, isErrorHint) {
  displayHintWithErrorText(htmlInput, text, isErrorHint, true);
}

function displayHintWithErrorText(htmlInput, text, isErrorHint, displayErrorHint){
  var elem = $(htmlInput);
  var content;
  var inputContainer = elem.parents('.input_container');
  
  // Close the current hint
  closeHint();
    
  hintToDisplay = hintContainer;
  
  if(isErrorHint){
    hintToDisplay = errorHintContainer;
    // Remove ok class on input container
    inputContainer.removeClass('ok');
    // And set error class on input container if error hint
    inputContainer.addClass('error');
  }
  
  if(text)
    content = text;
  else if(!isErrorHint)
    // Content comes from the child from inputContainer with the class infoTextContainer
    content = inputContainer.find('.infoTextContainer').html();
  
  if(content == '' || content == undefined)
    // Do nothing if content is empty
    return;
  
  
  // Compute hint position relative to current element (this) position
  var left = inputContainer.offset().left + inputContainer.width();
  left = left + hintOffsetLeft;
  
  var top = 0;
  try{
    if(elem.attr('name') == elem.parent().attr('id')){
    // Special treatment for fields that are generated through javascript
      top = elem.parent().offset().top;
    }
    else{
      top = elem.offset().top;
    }
  }
  catch(err){}
  
  if(top<=0)
    top = elem.parent().offset().top;
  
  top = top + hintOffsetTop;
  
  hintToDisplay.css('left', left+'px');
  hintToDisplay.css('top', top+'px');
  
  // Set text
  hintToDisplay.children('.texthint').html(content);
  if (displayErrorHint === true) {
    // fade in
    hintToDisplay.fadeIn();  
    hideHintTimer = window.setTimeout("closeHint()", waitBeforeCloseErrorHint);
  }
  else {
    hintToDisplay.css('dispay', 'none');
    hintToDisplay.children('.imghint').css('dispay', '');  
  }
}

function closeHint(){
  if(hintToDisplay != null){
    hintToDisplay.hide();
    hintToDisplay = null;
  }
  
  if(hideHintTimer != null){
    window.clearTimeout(hideHintTimer);
    hideHintTimer = null;
  }
}

function closeSelectBoxes(event){
    $(".selectBoxDropdown").css('visibility', 'hidden');
}

/*
  Validates the input field ad display a success or error message
*/
function _validateInput(event){
  
  var htmlInput = $(this).get();
  
  validateInput(htmlInput);
}

function validateInput(htmlInput){
  validateInputAsynchron(htmlInput, true, null, true);
}

// Validates the input from silo
// Params: 
// htmlInput: htmlInput of the form element
// callAscyn and siloData: 
// If callAscyn is true then the data is read from SILO via a asynchronous call
// otherwise the data of parameter siloData is taken
// displayErrorHint: if this value is true, the hint text is fadein, otherwise only the hint image is shown
function validateInputAsynchron(htmlInput, callAscyn, siloData, displayErrorHint){
  // Hide hint container
  $('.inputhint').hide();
  
  var elem = $(htmlInput);
  var elemName = elem.attr('name');
  
  // Check if all sibling input are filled
  var allSiblingsFilled = elem.val() != '';
  var anySiblings = false;
  var siblingsSelector = '';
  var siblings;
  // Special treatment for testdrive appointment date
  if(elemName=='testdrive_day' || elemName=='testdrive_month' || elemName=='testdrive_year' || elemName=='testdrive_daytime'){
    siblingsSelector = 'input[name="testdrive_day"], input[name="testdrive_month"], input[name="testdrive_year"], input[name="testdrive_daytime"]';
    siblings = $(siblingsSelector);
  }
  else{
    siblingsSelector = 'input, select, textarea';
    siblings = elem.siblings(siblingsSelector);
  }
  
  siblings.each(function(){
    anySiblings = true;
    if($(this).val() == ''){
      allSiblingsFilled = false;
    }
  });
  
  var inputContainer = elem.parents('.input_container');
  
  // Do nothing if all siblings are not filled and parent is error
  if(allSiblingsFilled == false && anySiblings){
    elem.parents('.input_container').removeClass('ok').removeClass('error');
    return;
  }
    
  var formData = {};
  
  // Build form data object
  $(formSelector+' input, '+formSelector+' select, '+formSelector+' textarea').each(function(){
    var inputName = $(this).attr('name');
    var inputValue = $(this).val();
    
    formData[inputName] = inputValue;
  });
  
  // 1- Validate the whole form async
  if (callAscyn === true) {
    $.ajax({
        url: formValidationUrl,
        data: formData,
        type: 'POST',
        dataType: 'xml',
        success: function(data, textStatus, XMLHttpRequest){
            validateInputWithData(data, elem, inputContainer, elemName, htmlInput, displayErrorHint);
        }
    });
  } else {   
    validateInputWithData(siloData, elem, inputContainer, elemName, htmlInput, displayErrorHint);
  }
}

// helper function: called in function validateInputAsynchron. See in function validateInputAsynchron for parameter descriptions
function validateInputWithData(data, elem, inputContainer, elemName, htmlInput, displayErrorHint) {
          // 2- Lookup if the given htmlInput name is part of the errors returned from the server
          var error = $(data).find('error[element_name="'+elemName+'"]');
          var errorText = error.attr('text');
          var errorFound = error.length>0;
          
          if(!errorFound){
            // In case no error found Lookup if any sibling input is part of the errors returned from the server
            
            // Special treatment for testdrive appointment date
            if(elemName=='testdrive_day' || elemName=='testdrive_month' || elemName=='testdrive_year' || elemName=='testdrive_daytime'){
              var elems = new Array();
              elems.push('testdrive_day');
              elems.push('testdrive_month');
              elems.push('testdrive_year');
              elems.push('testdrive_daytime');
              elems.push('firstdateoftestdrive');
              
              for(var i=0; i<elems.length; i++){
                error = $(data).find('error[element_name="'+elems[i]+'"]');
                errorText = error.attr('text');
                
                errorFound = error.length>0;
                if(errorFound)
                  // Error found --> break
                  break;
              }
            }
            else{
              elem.siblings('input, select, textarea').each(function(){
                var elemName = $(this).attr('name');
                error = $(data).find('error[element_name="'+elemName+'"]');
                errorText = error.attr('text');
                
                errorFound = error.length>0 || errorFound;
              });
            }
          }
          
          if(errorFound){
            // Error found
            // 3- Save error text
            inputContainer.attr('rel', errorText);

            // 4- Display error hint
            displayHintWithErrorText(htmlInput, errorText, true, displayErrorHint);
            
            /* Change class for all fields that were ok before the request and are now error*/
            $(formSelector+' .ok input, '+formSelector+' .ok select, '+formSelector+' .ok textarea').each(function(){
              var elemName = $(this).attr('name');
              
              if($(data).find('error[element_name="'+elemName+'"]').length>0){
                $(this).parents('.input_container').removeClass('ok').addClass('error');
              }
            });
          }
          else{
            // No error found --> Remove error and ok class if any and set ok class on parent if content available
            inputContainer.removeClass('error');
            inputContainer.removeClass('ok');
            
            // Remove error text
            inputContainer.attr('rel', '');
            
            if(elem.val() != '' && elem.val() != undefined && (inputContainer.hasClass('mandatory') || inputContainer.hasClass('error')))
              inputContainer.addClass('ok');
			  
			var elems = new Array();
			if(elemName=='testdrive_day' || elemName=='testdrive_month' || elemName=='testdrive_year' || elemName=='testdrive_daytime'){
				elems.push('testdrive_day');
				elems.push('testdrive_month');
				elems.push('testdrive_year');
				elems.push('testdrive_daytime');
				elems.push('firstdateoftestdrive');
			}
            
            /* Change class for all fields that were error before the request and are now no error*/
            $(formSelector+' .error input, '+formSelector+' .error select, '+formSelector+' .error textarea').each(function(){
              var elemName = $(this).attr('name');
			  var anyError = false;
			  
			  // Special treatment for testdrive appointment date
			  if(elemName=='testdrive_day' || elemName=='testdrive_month' || elemName=='testdrive_year' || elemName=='testdrive_daytime'){
				  for(var i=0; i<elems.length; i++){
					var error = $(data).find('error[element_name="'+elems[i]+'"]');
					anyError = error.length>0;

					if(anyError)
					  // Error found --> break
					  break;
				  }
			  }
			  else{
				anyError = $(data).find('error[element_name="'+elemName+'"]').length>0;
			  }
              
              if(!anyError){
                $(this).parents('.input_container').removeClass('error');//.addClass('ok');
              }
            });
            
          }
}

// This function validates all given input of the form and displays
// the hint class
function validateAllInput() {
  //select series 'M' if tda.series is part of form:
  if ($("#series input").length > 0 && $("#bodytype input").val() === "") {
	setOption('M','M','series',true,45);
	setTimeout(function() {
		//the ajax call caused by setOption may be slower than the one below. This would result in a missing validation error.
		//We therefore set a validation error here (it's an error case anyway)
		if ($('#element_bodytype').hasClass("mandatory")) {			
			$('#element_bodytype').addClass("error");
		}
	}, 700);	
  }

  // read silo data for all form elemens
  var formData = {};
  $(formSelector+' input, '+formSelector+' select, '+formSelector+' textarea').each(function(){
    var inputName = $(this).attr('name');
    var inputValue = $(this).val();
    
    formData[inputName] = inputValue;
  });
  
  $.ajax({
    url: formValidationUrl,
    data: formData,
    type: 'POST',
    dataType: 'xml',
    success: function(data, textStatus, XMLHttpRequest){
       // Build form data object
       $(formSelector+' input, '+formSelector+' select, '+formSelector+' textarea').each(function() {
           var htmlInput = $(this).get();  
           validateInputAsynchron(htmlInput, false, data, false);
       });
       }
    }
  );
}

/** Uses a hidden field ('cb_counter') to store the number of checked infomaterial boxes for SiLo validation  */      
function updateCounter(img, hidden_field) {
  var checked = $("input[name='" + hidden_field + "']").attr('value');
  var counterElement = document.getElementsByName("cb_counter")[0];
          
  var counter = counterElement.value;
  if (counter == null) {
    counter = 0;
  }
    
  if (checked != "true") {
    counter++;
  }
  else {
    counter--;
  }
  counterElement.value = counter;
  if (counter == 0) {
    counterElement.value = "";
  }
  
  if(!img.id) {
    img = document.getElementById(img);
  }        
  
  setCheckbox(img,hidden_field,hidden_field);
}

/** Resets the hidden field cb_counter (after refresh) */
function resetCounter() {
  var counterElement = document.getElementsByName("cb_counter")[0];
  counterElement.value = "";
  checkValidationError();
}

/** Restores the value of a infomaterial checkbox after a validation or page reload*/
function setChecked(box) {
  var imgId = $("#" + box +"_container > img").attr('id');
  updateCounter(imgId,box);
}

function setPreselectChecked(infomat_id) {
  $("input[name^='material_id_']").each(function(index) {
    if ($(this).attr("value") == infomat_id) {
      var material_id = $(this).next().attr("value");
      setChecked("ecom_rfi_material_"+material_id);
    }
  });


}

/* flag: true if no information material was selected */
var infoValidationError = false;      
function checkValidationError() {
  var counter_classes = $("#element_cb_counter").attr("class");      
  if (counter_classes.indexOf("error") != -1) infoValidationError = true;
}      
    
/* Renders a checkbox for eCOM information materials */
function renderBox(index, name) {
  checkValidationError();
  fe_ecom_rfi_material = new FormElement("some_id", "ecom_rfi_material_"+index, name, "", "", "");
  fe_ecom_rfi_material.options=["false","false","true","true"];
  fe_ecom_rfi_material.setAttribute("zIndex", "50");
  fe_ecom_rfi_material.hasError=infoValidationError; 
  fe_ecom_rfi_material.changeValueEvent="notifyValue";
  
  //var imgBox = $("#ecom_rfi_material_" + index + "_container > img");
  //var imgId = imgBox.attr('id'); 
  var onClickHandler = "updateCounter(this, 'ecom_rfi_material_" + index + "');";
  
  renderCheckbox(fe_ecom_rfi_material, onClickHandler);
  if (infoValidationError) {
    $("#ecom_rfi_material_" + index + "_container").addClass("error");
  }
  else {
    $("#ecom_rfi_material_" + index + "_container").removeClass("error");
  }       
  
  //$(document).ready(function() {
    //alert($("#"+imgId).attr('onclick'));
	
    //$("#"+imgId).attr('onclick', "updateCounter('"+imgId+"', 'ecom_rfi_material_" + index + "');");
    /*
	$("#"+imgId).click(function() {
        setCheckbox(this, "'ecom_rfi_material_" + index + "'", "'ecom_rfi_material_" + index + "'");
        updateCounter("'"+imgId+"'", "'ecom_rfi_material_" + index + "'");
    });
	*/
    //alert($("#"+imgId).attr('onclick'));
  //});
}

/** part of bmw_scriptlib.js */

var currentState, currentDisplayState;
function setVisibility(elementId, visibilityValue, displayValue, initialSet){
  if (typeof elementId != 'object') {
    elementId = document.getElementById(elementId);
  }
  if (elementId) {
    if (typeof visibilityValue == 'undefined' && typeof displayValue == 'undefined') {
      currentState = getDivInformation(elementId, 'visibility');
      currentDisplayState = getDivInformation(elementId, 'display');
      if (currentState == '') {
        if (initialSet) {
          currentState = 'visible';
        } else {
          currentState = 'hidden';
        }
      }
      if (currentDisplayState == '') {
        if (initialSet) {
          currentDisplayState = initialSet;
        } else {
          currentDisplayState = 'none';
        }
      }
      if (currentState == 'hidden') {
        // close all comboboxes
        $(".selectBoxDropdown").css('visibility', 'hidden');
        elementId.style.visibility = 'visible';
      } else if (currentState == 'visible') {
        elementId.style.visibility = 'hidden';
      }
      if (currentDisplayState == 'none') {
        elementId.style.display = 'block';
        elementId.style.visibility = 'visible';
      } else if (currentDisplayState == 'block' || currentDisplayState == 'inline') {
        elementId.style.display = 'none';
      }
    } else if (visibilityValue == 1) {
      elementId.style.visibility = 'visible';
    } else if (visibilityValue == 0) {
      elementId.style.visibility = 'hidden';
    }
    if (displayValue) {
      elementId.style.display = displayValue;
    }
  }
}


function setClassName(elementId, newClassName){
  if (typeof elementId != 'object') {
    elementId = document.getElementById(elementId);
  }
  if (elementId) {
    elementId.className = newClassName;
  }
}

function getDivInformation(elementId, attributeName){
  divInformation = [];
  if (typeof elementId != 'object') {
  elementId = document.getElementById(elementId);
  }
  if (elementId) {
  divInformation['offsetLeft'] = elementId.offsetLeft;
  divInformation['offsetTop'] = elementId.offsetTop;
  divInformation['styleLeft'] = parseInt(elementId.style.left, 10);
  divInformation['styleTop'] = parseInt(elementId.style.top, 10);
  divInformation['width'] = elementId.offsetWidth;
  divInformation['height'] = elementId.offsetHeight;
  divInformation['visibility'] = elementId.style.visibility;
  divInformation['display'] = elementId.style.display;
  divInformation['zIndex'] = elementId.style.zIndex;
  return divInformation[attributeName];
  }
}

/** part of bmw_scriptlib.js */
function writeIntoLayer(elementId, content){
  if (typeof elementId != 'object') {
    elementId = document.getElementById(elementId);
  }
  if (elementId) {
    elementId.innerHTML = content;
  }
}

/** Sets the selectedIndex property of a select box based on the value property of the option */
function setSelectedIndex(select_box, option_value) {
  for (var i = 0; i < select_box.options.length; i++) {
    if (select_box.options[i].value == option_value) {
      select_box.selectedIndex = i;
      return true;
    }
  }
  return false;
}

/** Returns the main contact id for a given subcontact id (or "none" if no main category is available)*/
function getMainTopicId(contact_id) {
  for (var i = 0; i < frameArray.length; i++) {
        for (var y = 0; y < frameArray[i].subtopics.length; y++) {
      if (frameArray[i].subtopics[y].id == contact_id) {
        return frameArray[i].id;
      }
        }
    }
    return "none";
}

/** called to preselect a contact type */
function preselectContactData(preselected_contact_id) {
  // set the entry within the combobox:
  var main_select_box = document.getElementsByName("contact_options")[0];
  var is_main_topic = setSelectedIndex(main_select_box, preselected_contact_id);
  if (! is_main_topic) {
    var main_topic_id = getMainTopicId(preselected_contact_id);
    setSelectedIndex(main_select_box, main_topic_id);
    var is_subtopic = setSelectedIndex(document.getElementsByName("contact_subtopic_options")[0], preselected_contact_id);
    if (is_subtopic) {
      $(".contact_subtopic").css("display", "block");
    }
  }
  // show the iframe:
  console.log('m_contact: Preselected contact type ' + preselected_contact_id);
  updateFrame(preselected_contact_id);
}

var dropSelectTimers = {};
dropSelectTimers['model_list'] = {};
dropSelectTimers['model_list']['timeout'] = 500;
dropSelectTimers['model_list']['steps'] = 4;
dropSelectTimers['model_list']['current_step'] = 0;

/** Preselects service categories and tda models */
function setPreselectedValues() {
  var service_category_1 = getRequestParameter("service_category_1");
  var service_category_2 = getRequestParameter("service_category_2");
  
  setSiloDropSelectValue("service_main_category", service_category_1);
  setSiloDropSelectValue("service_sub_category", service_category_2);
  
  var body_type = getRequestParameter("body_type");
  var model = getRequestParameter("model");  

  // get silo body type
  //var key = body_type + '.' + model + '.body_type';
  //var siloBodyType = modelData[key];
  
  // get model code
  //key = body_type + '.' + model + '.model_code';
  //var modelCode =  modelData[key];
  
  // Perform this only if div id #bodytype is  available
  var bt = $('#bodytype');
  if(bt.length > 0 && typeof body_type != 'undefined') {
    setSiloDropSelectValue("bodytype", body_type);
    
	dropSelectTimers['model_list']['timer'] = setInterval("setSiloDropSelectValue('model_list','"+model+"')", dropSelectTimers['model_list']['timeout']);
    //setSiloDropSelectValue("model_list", model);
    // not required as directly called by above function
    //setOption(getSiloDropSelectValue("bodytype", siloBodyType), siloBodyType, 'bodytype', true, 494);
  }
}

/** Sets a selection with a drop select rendered by SiLo */
function setSiloDropSelectValue(dropselect_name, new_value) {
  if (new_value == null) return;
  
  if (window['dropSelects'] == undefined
    || dropSelects == null || dropSelects[dropselect_name] == null) {
    return;
  }

  var options = dropSelects[dropselect_name].options;
  var found = false;
  
  for (var i = 1; i < options.length; i=i+2) {
    if (options[i] == new_value) {
      setOption(options[i-1], options[i], dropselect_name, true, 500);
	  found = true;
    }
  }
  
	if(typeof dropSelectTimers[dropselect_name] !== 'undefined'){
		if(found){
			window.clearInterval(dropSelectTimers[dropselect_name]['timer']);
		}
		else{
			if(dropSelectTimers[dropselect_name]['current_step'] >= dropSelectTimers[dropselect_name]['steps']){
				window.clearInterval(dropSelectTimers[dropselect_name]['timer']);
			}
			else{
				dropSelectTimers[dropselect_name]['current_step']++;
			}
		}
	}
}

/** Gets a model name for the value for the drop select rendered by SiLo */
function getSiloDropSelectValue(dropselect_name, value) {

  if (value == null) return;

  if (window['dropSelects'] == undefined
    || dropSelects == null || dropSelects[dropselect_name] == null) {
    return;
  }

  var options = dropSelects[dropselect_name].options;
  
  for (var i = 1; i < options.length; i=i+2) {
    if (options[i] == value) {
      return options[i-1];
    }
  }  
}


/** part for contact.jsp */
function FrameContent(id, content_page_url, dealer_required, subtopics) {
	/* used to have an iframe url which is no longer required */
    this.id = id;
    this.content_page_url = addCurrentPageUrlParams(content_page_url);
    this.dealer_required = dealer_required;
    this.subtopics = subtopics;
}

/** Appends any url params in window.location href to the given url */
function addCurrentPageUrlParams(url) {
  var url_vars = getPageUrlVars();
  return buildUrlFromParams(url, url_vars);
}

function updateFrame(selectedValue, combobox) {
    if (selectedValue == "none") return;
    for (var i = 0; i < frameArray.length; i++) {
        if (selectedValue == frameArray[i].id) {      
            var obj = frameArray[i];
                        
            if (redirectToDifferentFormPage(obj)) {
        return;
            }
            $('#iframe_content_id').html("");
            if (combobox == 0 && $(".contact_subtopic").css("display") == "block") {
                    $(".contact_subtopic").css("display", "none");
            }
            else if (obj.subtopics.length > 0) {
                $(".contact_subtopic").css("display", "block");
                return;
            }
            
			checkRulesAndRenderForm(obj);      
            break;    
        }
    }
}

/** redirects to (basically) the same page with a different url if the preselected form_id is different from the selected form id */ 
function redirectToDifferentFormPage(current_form) {
  if (window['preselected_contact_id'] != undefined) {
    if (preselected_contact_id != current_form.id) {
      console.log('m_contact: Redirecting to different form page');   
	  //window.location.href=appendBackLinkName(current_form.content_page_url);
	  //use next line instead of above line if eCOM supports https backlinks
	  var url = appendBackLinkUrl(appendBackLinkName(current_form.content_page_url));
	  gotoURLWithReferrer(url);
      //window.location.href=appendBackLinkUrl(appendBackLinkName(current_form.content_page_url));
      return true;
    }
  }
  return false;
}

/* appends the backLinkUrl to a given url */
function appendBackLinkUrl(url) {
	return addParam(url, "backLinkUrl", window.location.href);
}


/**
 *  Renders current_form (within an iframe or in a new window)
 */  
function renderForm(current_form) {
	console.log('m_contact: Setting current form visible');   
	$(".contact").show();
	
	// Display first error message
	showFirstErrorMessage();

	/*
		old iframe based code
          var frameId = current_form.id;            
            if (current_form.new_window) {                
        window.location = appendBackLinkName(current_form.iframe_url);
            }            
            else {
                iframeids = frameId;        
        $('#iframe_placeholder').hide();
        $('#iframe_content_id').attr("style", "");
        $("#iframe_content_id").append("<iframe id=" + frameId + " name=" + frameId + " style='background:none;background-color:#000000' allowTransparency='true' frameborder='0' width='100%'  height='0%'/>"); 
        $('#'+frameId).attr("src", current_form.iframe_url);
        $('#'+frameId).attr("scrolling", "no");
        iframeids = frameId;
        $(document).ready(function() {
          resizeCaller();
        });

            }   
        */
}

/** removes all error classes for children of the selector and replaces error images with standard images */
function clearErrors(selector) { 
	$(selector).find(".error").removeClass('error');
    $(selector + " img").each(function(index) {
		var src = $(this).attr('src');
		src = src.replace('_error', '');
		$(this).attr('src', src);    
	});
}

function showConfirmationComponent() { 
	$(document).ready(function() {
		var compIdentifier = "#customConfirmationComponent";
		if (typeof(confirmationComponentNo) !== "undefined") {
			//we can have multiple confirmation components (e.g. closedroom registration/profile)
			compIdentifier += confirmationComponentNo;
			if (typeof(confComponentHook) === "function") {
				confComponentHook();
			}
		}
		$(compIdentifier).show();
		$(".contact").hide();
		highlightProcessStep(3);
	});
}

/** 
  * redirects to a confirmation page based on the value of marketing_allowed
  * The urls taken from js variables confirm_page_allow and confirm_page_disallow
  * i.e. confirm_pages must be defined before this function is called (contact forms)
  */
function redirectToConfirmationPage(marketing_allowed, trackingParams) { 
  console.log('m_contact: Redirecting to confirmation page'); 
  var confirm_page = confirm_page_disallow;  
  if (marketing_allowed) {
    confirm_page = confirm_page_allow;
  }
  
  for (var param in trackingParams) {
	//adds tracking parameters as url parameters
	confirm_page = addParam(confirm_page, param, trackingParams[param]);
  }
  gotoURLWithReferrer(confirm_page);
  //window.location.href = confirm_page;
}


/** 
 *  Displays a form according to business rules
 */
function checkRulesAndRenderForm(current_form) { 
 
  var dealer_selected = miniSubsidiary.isSubsidiarySelected(); 
  if (dealer_selected) {
    miniSubsidiary.onSubsidiaryReady(function() { 
      displayDealerSection(current_form, miniSubsidiary.getSubsidiaryString());
      
      if (! current_form.dealer_required) {
        //nsc form, simply render form
        console.log('m_contact: Displaying nsc form (dealer selected)');        
        renderForm(current_form);
        return;
      }
      
      if (miniSubsidiary.supportsForm(current_form.id)) {
        //normal case for dealer requests, simply render form
        console.log('m_contact: Displaying supported dealer form');
        renderForm(current_form);
        return;
      }

      if (miniSubsidiary.supportsAnyForm()) {
        //dealer supports online requests in general but not this particular one -> inform user
        console.log('m_contact: Current dealer does not support form');
        $("#dealer_change_text").html("<p class=\"copy\" style=\"color: #F00\">" + request_not_supported_text + "</p>");
      }
      else {
        //dealer does not support online requests -> redirect to contact and team page (get link from main navigation)        
        console.log('m_contact: Current dealer does not support forms, redirecting to contact and team page');
        if (window.location.href.indexOf("mini2010_") !== -1) {
		  gotoURLWithReferrer(miniSubsidiary.getTeamContactUrl());
          //window.location = miniSubsidiary.getTeamContactUrl();
        }
        else {
		  location.replace(location.protocol + "//"+ location.host + miniSubsidiary.getTeamContactUrl());
          //window.location = location.host + miniSubsidiary.getTeamContactUrl();
        }        
      }
	}, function() {
		//error callback
		console.log('Error loading dealer data.');
		displayDealerSelectInfo(current_form);
	}); 
  }
  else {
	displayDealerSelectInfo(current_form);
  }
}

function displayDealerSelectInfo(current_form) {
	//always show dealer selection
    displayDealerSection(current_form, null);
    if (! current_form.dealer_required) {
      //nsc form
      console.log('m_contact: Displaying nsc form (no dealer selected)');
      renderForm(current_form);
    }
}

/** fills and displays the dealer section within the contact page based on a user's dealer */
function displayDealerSection(current_form, subsidiaryString) {
  var content = "<div class=\"mini_line_dot\">&nbsp;</div>";  

  if (subsidiaryString != null) {
    content += "<div id=\"dealer_change_text\"><p class=\"copy\">" + dealer_change_intro + "</p></div>";
    content += "<h2>" + selected_dealer_headline + "</h2>";
    content += "<div class=\"dealer_text_left\"><p class=\"copy\">" + subsidiaryString + "</p></div>";
    content += "<div class=\"dealer_selection_right \"><a class=\"teaser_component_link_standard\" href=\"" + appendSelectedService(appendBackLinkName(dealer_select_link)) + "\">" + dealer_change_text + "</a></div>";
  }
  else {  
    content += "<div id=\"dealer_change_text\"></div>"; //used for display of not supported message
    content += "<h2>" + selected_dealer_headline + "</h2>";
    content += "<div class=\"dealer_text_left\"><p class=\"copy\">" + dealer_select_intro + "</p></div>";
    content += "<div class=\"dealer_selection_right \"><a class=\"teaser_component_link_standard\" href=\"" + appendSelectedService(appendBackLinkName(dealer_select_link)) + "\">" + dealer_select_link_text + "</a></div>";  
  }  
  content += "<div class=\"clearing\">&nbsp;</div>";
  content += "<div class=\"mini_line_dot\">&nbsp;</div>";
  $("#dealer_select_area").html(content);  
  
  Cufon.replace("#dealer_select_area > h2");   
  Cufon.replace(".dealer_selection_right > a", { hover: true });
}

/** Appends the selected entry within the form  */
function appendSelectedService(url) {
  if (window['preselected_contact_id'] != undefined) {
    url = addParam(url, "selectedService", preselected_contact_id);
  }
  return url;
}

/** Highlights a form step which is located outside the form itself (e.g. mini international order form) */
function highlightProcessStep(step) {
	$(document).ready(function() {  
		if (step < 3) {
			$("#mini_international_form_step_"+step).addClass("active");
		}
		else {			
			$(".mini_international_form_steps_inactive").css("color", "#ffffff");
		}	
	});
}


}catch(e){console.log('Error in m_contact: ' + e.description);}

// ---- m_contact_forms_elements ----
try{ 
function FormElement(id, name, elementLabel, elementValue, editor, defaultText) {
	this.id = id;
	this.name = name;
	this.elementLabel = elementLabel;
	this.elementValues = new Array();
	this.elementValue = "";
	if((typeof elementValue == "object") && ( elementValue instanceof Array)) {
		this.elementValues = elementValue;
		if (this.elementValues.length > 0) {
			this.elementValue = this.elementValues[0];
		}
	} else {
		this.elementValue = String(elementValue);
		this.elementValues.push(this.elementValue);
	}
	this.editor = editor;
	this.defaultText = defaultText;
	this.options = new Array();
	this.attributes = new Array();
	// init the unset values...
	this.hintText = null;
	this.hasError = false;
	this.hasInfo = false;
	this.isReadonly = false;
	this.isDisplayedAsText = false;
	this.isHidden = false;
	this.mandatory = false;
	this.multiValued = false;
	this.changeValueEvent = null;
}
FormElement.prototype.addOption = function(name, value) {
    this.options.push(name);
    this.options.push(value);
};
FormElement.prototype.hasOptions = function() {
    return this.options.length > 0;
};
FormElement.prototype.getOptionCount = function() {
    if (this.options.length <= 0) return 0;
    return this.options.length / 2;
};
FormElement.prototype.getSelectedOptionIndex = function() {
	if (this.options.length <= 0) return 0;
	if (this.elementValue == "") return 0;
	for (i=0; i<this.options.length; i=i+2) {
		if (this.options[i+1] == this.elementValue) {
			return i / 2;
		}
	}
	return 0;
};
FormElement.prototype.setAttribute = function(name, value) {
	for (i=0; i<this.attributes.length; i=i+2) {
		if (this.attributes[i]==name) {
			this.attributes[i+1] = value;
			return;
		}
	}
	this.attributes.push(name);
	this.attributes.push(value);
};
FormElement.prototype.getAttribute = function(name) {
	for (i=0; i<this.attributes.length; i=i+2) {
		if (this.attributes[i]==name) {
			return this.attributes[i+1];
		}
	}
	return null;
};
FormElement.prototype.hasAttribute = function(name) {
	for (i=0; i<this.attributes.length; i=i+2) {
		if (this.attributes[i]==name) {
			return true;
		}
	}
	return false;
};
FormElement.prototype.hasChangeValueEvent = function() {
	return this.changeValueEvent != null && this.changeValueEvent != "";
};
FormElement.prototype.toString = function() {
	return this.name + "=" + this.elementValue;
};

}catch(e){console.log('Error in m_contact_forms_elements: ' + e.description);}

// ---- m_contact_forms_functions ----
try{   selectBoxes = new Array();
  directOrder = new Array();
  function selectBoxNotify(formField){}
  function setOption( text, value, formField, notify, index ){
    formFieldValue = value;
    activeText = text;
    setVisibilityOnly( 'selectBoxContent'+formField, 0, 'none' );
    writeIntoLayer( 'selectedValue' + formField, text );
    if( typeof(getDOMForm()) !== "undefined" ) {
      getDOMForm()[formField].value = formFieldValue;
    }
    if( notify ) {
      selectBoxNotify( formField, formFieldValue, index );
    }
  }

  function writeSelectBox( formField, keyValueArray, zIndex, elementWidth, visibleEntries, selectedValue, notify, error, readonly, direction, elementClass ) {
	  var formValue = "";
	  entryFound = false;
	  var pulldownImage  = pulldownGif;
	  if( error == true ){
	    pulldownImage = pulldownErrorGif;
	  }
	  for( i=0; i < keyValueArray.length; i++ ){
	    if( keyValueArray[i+1] == selectedValue ){
	      selectText = keyValueArray[i];
	      formValue  = keyValueArray[i+1];
	      entryFound = true;
	      break;
	    }
	    i++;
	  }
	  if( !entryFound ){
	    selectText = keyValueArray[0];
	    formValue  = keyValueArray[1];
	  }
	  selectBoxes.push( formField );
	  directOrder[formField] = false;
	  selectBox = '';
	  deep = (visibleEntries * 16) + 14;
	  elementClass = ( elementClass != undefined )? elementClass:"";
	  if( readonly == true ){
	    selectBox += '<input type="text" class="defaultReadonly '+elementClass+'" readonly="readonly" value="' + selectText + '" '+'/'+'>';
	    selectBox += '<input type="hidden" name="' + formField + '" value="' + formValue + '" '+'/'+'>';
	  }else{
			selectBox += '<div id="'+ formField +'" class="selectBoxContainer '+elementClass+'" style="z-index:' + zIndex +';">';
			selectBox += '<div class="selectBoxTitle" onClick="setVisibilityOnly(\'selectBoxContent' + formField + '\');" onMouseover="directOrder[\'' + formField + '\']=true;" onMouseout="directOrder[\'' + formField + '\']=false;">';
			selectBox += '<div id="selectedValue' + formField + '" class="selectBoxCaption">' + selectText + '<'+'/div>';
			selectBox += '<div style="background-repeat: no-repeat; float: right;" class="comboboxDropDownButtonClass"></div>';
			selectBox += '<'+'/div>';
			selectBox += '<div id="selectBoxContent' + formField + '" class="selectBoxDropdown" style="height:'+deep+'">';
			selectBox += '<div class="selectBoxDropdownList" style="height:'+deep+'">';
			for( i=0; i < keyValueArray.length; i++ ){
			  keyValueArray[i+1] = keyValueArray[i+1].replace(/'/g,"\\\'");
			  var tempValue = keyValueArray[i].replace(/'/g,"\\\'");
			  selectBox += '<a href="javascript://" onclick="setOption(\'' + tempValue + '\',\'' + keyValueArray[i+1] + '\',\'' + formField + '\',' + notify + ',' + zIndex +');return false;" class="selectboxEntry">' + keyValueArray[i] + '<'+'/a>';
			  i++;
			}
			selectBox += '<'+'/div>';
			selectBox += '<'+'/div>';
			selectBox += '<input type="hidden" name="' + formField + '" value="' + formValue + '" '+'/'+'>';
			selectBox += '<'+'/div>';
	  }
	  return selectBox;
	}

function setVisibilityOnly(elementId, visibilityValue, displayValue, initialSet){
  if (typeof elementId != 'object') {
    elementId = document.getElementById(elementId);
  }
  if (elementId) {
    if (typeof visibilityValue == 'undefined') {
      currentState = getDivInformation(elementId, 'visibility');
      if (currentState == '') {
        if (initialSet) {
          currentState = 'visible';          
        } else {
          currentState = 'hidden';
        }
      }
      if (currentState == 'hidden') {
        // close all comboboxes
        $(".selectBoxDropdown").css('visibility', 'hidden');
        elementId.style.visibility = 'visible';
      } else if (currentState == 'visible') {
        elementId.style.visibility = 'hidden';
      }
    } else if (visibilityValue == 1) {
      elementId.style.visibility = 'visible';
    } else if (visibilityValue == 0) {
      elementId.style.visibility = 'hidden';
    }
  }
}

  function checkSelectBoxStatus() {
    for( j=0; j<selectBoxes.length; j++ ) {
      if( !directOrder[ selectBoxes[j] ] ) {
        setVisibilityOnly( 'selectBoxContent' + selectBoxes[j], 0, 'none' );
      }
    }
  }
  var scriptedCheckbox = "";
  function writeCheckbox( formField, description, boxInputValue, boxInputName, boxIndex, zIndex, elementWidth, notify, error, className, mandatory, readonly ){
    // old true/false checkbox method
    var isChecked = (boxInputValue == "true");
    getCheckboxHTML(formField, description, "false", "true", isChecked, boxInputName, boxIndex, zIndex, elementWidth, notify, error, className, true, readonly);
  }

  function getCheckboxHTML( formField, description, uncheckedValue, checkedValue, isChecked, boxInputName, boxIndex, zIndex, elementWidth, notify, error, className, renderMandatory, readonly, onClickHandler ){
  
    if(!onClickHandler) {
		var onClickHandler = "setCheckbox(this,\'" + formField + "\',\'" + boxInputName + "\');";
    }
  
    var currentGifDefault;
    var currentGifSwitch;
    var boxInputValue = ( isChecked == true ) ? checkedValue : uncheckedValue;
    if(isChecked){
      currentGifDefault   = checkboxGifHigh;
      currentGifSwitch    = checkboxGif;
      if( error ){
        currentGifDefault = checkboxErrorGifHigh;
        currentGifSwitch  = checkboxErrorGif;
      }
      if( readonly ){
        currentGifDefault = checkboxDisabledGifHigh;
        currentGifSwitch  = checkboxDisabledGif;
        checkReadOnly.push( formField );
      }else{
        for( i = 0; i<checkReadOnly.length; i++ ){
          if( checkReadOnly[i] == formField ){
            checkReadOnly.slice( i, 1 );
          }
        }
      }
    }else{
      currentGifDefault   = checkboxGif;
      currentGifSwitch    = checkboxGifHigh;
      if( error ){
        currentGifDefault = checkboxErrorGif;
        currentGifSwitch  = checkboxErrorGifHigh;
      }
      if( readonly ){
        currentGifDefault = checkboxDisabledGif;
        currentGifSwitch  = checkboxDisabledGifHigh;
        checkReadOnly.push( formField );
      }else{
        for( i = 0; i < checkReadOnly.length; i++ ) {
          if( checkReadOnly[i] == formField ) {
            checkReadOnly.slice( i, 1 );
          }
        }
      }
    }

    description = description.replace( /\n/g, '<br /><br />' );
    //checkClient();

	var mandatoryRendering = renderMandatory?" <em>*</em>":"";

    scriptedCheckbox =  '<div id="' + formField + '_container" class="elementContainer checkbox';
    if (className && className != null && className.length > 0) {
      scriptedCheckbox += ' '+className;
    }
    scriptedCheckbox += '" >\n';
    scriptedCheckbox += '  <label for="' + boxInputName + '">' + description + mandatoryRendering+ '</label>\n';
    scriptedCheckbox += '  <img src="' + currentGifDefault + '" id="checkboxImage' + boxIndex + '" preload="' + currentGifSwitch + '" onclick="' + onClickHandler +'" vspace="1" />\n';
    scriptedCheckbox += '  <input name="' + boxInputName + '" value="'+boxInputValue+'" type="hidden" />\n';
    scriptedCheckbox += '</div>';
    return scriptedCheckbox;
  }

  var allowSend = true;
  function handleSubmit( cValue ){   
   if (typeof formValidationHook === 'function') {
	 if (! formValidationHook(cValue)) {
		return false;
	 }
   }
   if( allowSend == true ){
     allowSend = false;
     if( cValue ){
       getDOMForm().elements['action_name'].value = cValue;
     }
     getDOMForm().submit();
   }
   return false;
  }
  function writeButton( formId, formName, className, currentValue, label ){
    var scriptedButton = '<a href="#" onclick="return handleSubmit(\'' + currentValue + '\')" id="defaultAnchorButton">'+label+'</a>';
    return scriptedButton;
  }
  function writeLinkButton( formId, formName, className, currentValue, label) {
    var scriptedButton = '<a href="#" onclick="return handleSubmit(\'' + currentValue + '\')" class="arrow"><img src="../../narrowband/img/palette/1x1_trans.gif">' + label + '</a>';
    return scriptedButton;
  }
  
  var domForm = null;
  function getDOMForm() {
	if (domForm !== null) return domForm;
	domForm = document.forms[2];
	if (typeof(domForm) === "undefined" || domForm === null) {
		domForm = document.forms[0];
	}
	return domForm;	
  }

}catch(e){console.log('Error in m_contact_forms_functions: ' + e.description);}

// ---- m_contact_forms_behaviours ----
try{ 

function objectAddCSSClass( objectID, newClassName ){
  var objectRef = document.getElementById( 'element_' + objectID );
  if( objectRef != null && objectRef.className.indexOf( newClassName )  < 0 ){
    objectRef.className += ' ' + newClassName;
  }
}
function objectRemoveCSSClass( objectID, oldClassName ){
  var objectRef = document.getElementById( 'element_' + objectID );
  if( objectRef != null && objectRef.className.indexOf( oldClassName ) >= 0 ){
    var regExString = new RegExp( oldClassName );
    objectRef.className = objectRef.className.replace( regExString, "" );
  }
}

var selectIds     = new Array();
var formElements  = new Array();
var checkReadOnly = new Array();
var dropSelects = new Array();
function setCheckbox( imageObject,formElement, inputElement ) {
  var setReadonly   = false;
  for ( var i = 0; i < checkReadOnly.length; i++ ) {
    if ( checkReadOnly[ i ] == formElement ) {
      setReadonly = true;
      break;
    } else {
      setReadonly = false;
    }
  }
  if ( setReadonly == false ) {
    var boxImgsrc;
    var elementValues = formElements[ formElement ];
    if( elementValues[ 2 ] != elementValues[ 1 ] ) {
      elementValues[ 2 ] = elementValues[ 1 ];
      if ( document.images[ imageObject.id ].src.indexOf( '-h' ) != -1 ) {
        boxImgsrc = document.images[ imageObject.id ].src;
      } else {
        boxImgsrc = document.images[ imageObject.id ].src.split( '.gif' );
        boxImgsrc = boxImgsrc[ 0 ] + '-h.gif'
      }
      document.images[ imageObject.id ].src = boxImgsrc;
      var elem = getDOMForm()[ inputElement ];
      if( elem.length) {
        var idx = elementValues[ 3 ];
        elem[ idx ].value = elementValues[ 1 ];
      } else {
        elem.value = elementValues[ 1 ];
      }
    } else {
      elementValues[ 2 ] = elementValues[ 0 ];
      if ( document.images[ imageObject.id ].src.indexOf( '-h' ) != -1 ) {
        boxImgsrc = document.images[ imageObject.id ].src.split( '-h' );
        boxImgsrc = boxImgsrc[ 0 ] + '.gif'
      } else {
        boxImgsrc = document.images[ imageObject.id ].src;
      }
      document.images[ imageObject.id ].src = boxImgsrc;
      var elem = getDOMForm()[ inputElement ];
      if( elem.length) {
        var idx = elementValues[ 3 ];
        elem[ idx ].value = elementValues[ 0 ];
      } else {
        elem.value = elementValues[ 0 ];
      }
    }
    handleBehaviours( inputElement, imageObject.id );
  }
}
function selectBoxNotify ( formField, formFieldValue, currentIndex ) {
  if ( typeof dependingSelects != 'undefined' ) {
  	var depSelects = dependingSelects[ formField ];
    if (depSelects && formFieldValue != "") {
      for ( var i=0; i < depSelects.length; i++ ) {
        if (typeof optionGroups[ depSelects[i] ][ formFieldValue ] == 'undefined' ) {
      	  loadDynamicOptions(depSelects[i], formFieldValue, currentIndex);
        } else {
          writeDependantSelectBox(depSelects[i], formFieldValue, currentIndex);
        }
      }
    } else if ( depSelects ) {
      resetDependingSelects(formField);
    }
    notifyValue( formField, formFieldValue );
  }
}

function writeDependantSelectBox(formField, parentValue, currentIndex) {
  if (optionGroups[ formField ][ parentValue ].length > 0) {
  	var notify = true;
  	var selectHeight = optionGroups[ formField ][ parentValue ].length;
    if ( selectHeight > 10 ) selectHeight = 10;
    if ( selectHeight < 1 ) selectHeight = 1;
    divContent = writeSelectBox( formField, optionGroups[ formField ][ parentValue ], currentIndex - 1, 289, selectHeight, "", notify );
    //writeIntoLayer( document.getElementsByTagName( "div" )[ formField ], divContent );
    writeIntoLayer( formField, divContent );
    dropSelects[formField].options = optionGroups[formField][parentValue];
    $("#element_"+formField).removeClass("ok"); 
    $("#element_"+formField).removeClass("error");    
    setVisibility( 'element_' + formField, null, 'block' );
  } else {
    setVisibility( 'element_' + formField, null, 'none' );
    getDOMForm()[ formField ].value = '';
  }
  resetDependingSelects(formField);
  attachEventOnSpecificElement(formField);
  // Update model name combobox after body type selection
 	var body_type = getRequestParameter("body_type");
	var model = getRequestParameter("model");	
	
	// get model code
	var key = body_type + '.' + model + '.model_code';
	var modelCode =  modelData[key];

  if (typeof modeCode != 'undefined') {
    setSiloDropSelectValue("model_list", modelCode);
  }
}

function resetDependingSelects(formField) {
  if (dependingSelects && dependingSelects[formField]) {
  	var depSelects = dependingSelects[formField];
  	for ( var i=0; i < depSelects.length; i++ ) {
      //only reset if a value was chosen:
      if (getDOMForm()[ depSelects[i] ].value != '') {
		  getDOMForm()[ depSelects[i] ].value = '';
		  divContent = writeSelectBox(depSelects[i], ["", ""], 0, 289, 10, "", true );
		  writeIntoLayer(depSelects[i], divContent );
		  $("#element_"+depSelects[i]).removeClass("ok");
		  $("#element_"+depSelects[i]).removeClass("error");
		  resetDependingSelects(depSelects[i]);
      }
    }
  }
}

function loadDynamicOptions( formField, parentValue, currentIndex ) {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = getDynamicOptionUrl( formField, parentValue );
  document.getElementsByTagName('head')[0].appendChild(script);

  setTimeout("renderDynamicOptions('"+formField+"','"+parentValue+"',"+currentIndex+")",100);
}
function renderDynamicOptions(formField, parentValue, currentIndex) {
/*
  var a = loadedOptions[formField];
  if(typeof a == 'undefined') {
    a = new Array();
    loadedOptions[formField] = a;
  }
  var c = a[parentValue];
  if(typeof c == 'undefined') {
    c = 0
  } else {
    c = c + 1;
  }
  a[parentValue] = c;
  if (c == 3) {
    alert("options not loaded: "+formField+ ", "+parentValue);
    setVisibility( 'element_' + formField, null, 'none' );
    getDOMForm()[ formField ].value = '';
    return;
  }
  */
  if (typeof optionGroups[ formField ][ parentValue ] == 'undefined' ) {
    setTimeout("renderDynamicOptions('"+formField+"','"+parentValue+"',"+currentIndex+")",100);
  } else {
    writeDependantSelectBox(formField, parentValue, currentIndex);
  }
}
function getDynamicOptionUrl(formField, parentValue) {
  var dynamicOptionScript = "/silo/dynamic_list/";
  var curUrl = self.location.href;
  if(curUrl.indexOf('?')!=-1){
     curUrl=curUrl.substring(0,curUrl.indexOf('?'));
  }
  var countryStartIdx = -1;
  if(curUrl.indexOf('/bmw_edit/') != -1){
  	countryStartIdx = curUrl.indexOf('/bmw_edit/') + 10;
    dynamicOptionScript = dynamicOptionScript + 'bmw_edit/';
  } else if(curUrl.indexOf('/bmw_qa/') != -1){
  	countryStartIdx = curUrl.indexOf('/bmw_qa/') + 8;
    dynamicOptionScript = dynamicOptionScript + 'bmw_qa/';
  } else if(curUrl.indexOf('/bmw_prod/') != -1){
  	countryStartIdx = curUrl.indexOf('/bmw_prod/') + 10;
    dynamicOptionScript = dynamicOptionScript + 'bmw_prod/';
  } else {
    countryStartIdx = curUrl.indexOf("/", curUrl.indexOf("://")+3) + 1;
  }
  if(typeof confCountryTopic!='undefined' && confCountryTopic!=null && typeof confLanguageTopic!='undefined' && confLanguageTopic!=null) {
    dynamicOptionScript = dynamicOptionScript + confCountryTopic + "/" + confLanguageTopic + "/";
  } else {
	var countryEndIdx = curUrl.indexOf("/", countryStartIdx+1);
	countryEndIdx = curUrl.indexOf("/", countryEndIdx+1) + 1;
	dynamicOptionScript = dynamicOptionScript+ curUrl.substring(countryStartIdx,countryEndIdx);
  }  
  dynamicOptionScript = dynamicOptionScript +selectIds[formField]+"/"+parentValue+"/optionGroups.js";
  return dynamicOptionScript;
}

function submitForm( actionName ){
  getDOMForm().elements[ 'action_name' ].value = actionName;
  getDOMForm().submit();        
  return false;
}
function renderDropSelect( elem ) {
  var checkNotify = false;
  if ( ( typeof dependingSelects != 'undefined' && dependingSelects[ elem.name ] ) || ( typeof behaveDependOn != 'undefined' && behaveDependOn[ elem.name ] ) ) {
    checkNotify = true;
  }
  if ( elem.defaultText != "" ) {
		elem.options.unshift( "" );
		elem.options.unshift( elem.defaultText );
  }
  var selectHeight=elem.getOptionCount();
  if ( selectHeight > 10 ) selectHeight = 10;
  if ( selectHeight < 1 ) selectHeight = 1;
  
  var selectWidth = 289;

  var selectedValue = elem.elementValue;
  if ( elem.elementValue == "" ) {
    selectedValue = elem.defaultText;
  }
  selectIds[elem.name]=elem.id;
  document.write( writeSelectBox( elem.name, elem.options, elem.getAttribute( 'zIndex' ), selectWidth, selectHeight, selectedValue, checkNotify,elem.hasError,elem.isReadonly, null, elem.getAttribute( 'class' ) ) );
  dropSelects[elem.name]=elem;
}
function renderCheckSelect( elem ) {
  var checkNotify = false;
  if ( ( typeof dependingSelects != 'undefined' && dependingSelects[ elem.name ] ) || ( typeof behaveDependOn != 'undefined' && behaveDependOn[ elem.name ] ) ) {
    checkNotify = true;
  }

  var selectWidth;
  if ( elem.getAttribute( 'class' ) != null && elem.getAttribute( 'class' ).indexOf( 'default' ) != -1 ){
    selectWidth = 289;
  } else {
    selectWidth = 289;
  }

  var idx=0;
  for( var i=1; i<elem.options.length ; i=i+2) {
  	var iterName = elem.name + "_" + idx;
  	var iterValue = "";
  	var isChecked = false;
  	for( var j=0; j<elem.elementValues.length; j++) {
  		if (elem.elementValues[j] == elem.options[i]) {
  			iterValue = elem.options[i];
  			isChecked = true;
  		}
  	}
    formElements[ iterName ]  = new Array( "", elem.options[i], iterValue , idx);
    checkboxCounter ++;
    
    document.write( getCheckboxHTML( iterName, elem.options[i-1], "", elem.options[i], isChecked, elem.name, checkboxCounter, elem.getAttribute( 'zIndex' ), selectWidth, checkNotify, elem.hasError, elem.getAttribute( 'class' ), false, elem.isReadonly ) );
    //document.write("<br />");
    idx++;
  }
}
var checkboxCounter = 0;
function renderCheckbox( elem, onClickHandler ) {

  if(!onClickHandler) {
		var onClickHandler = null;
  }

  formElements[ elem.name ]  = new Array( elem.options[1], elem.options[3], elem.elementValue );
  checkboxCounter ++;
  var checkNotify = "false";
  if ( typeof behaviours != 'undefined' && behaveDependOn[ elem.name ] ) {
    checkNotify = "true";
  }
  var boxWidth;
  if ( elem.getAttribute( 'class' ) != null && elem.getAttribute( 'class' ).indexOf( 'default' ) != -1 ){
    boxWidth = 289;
  } else {
    boxWidth = 289;
  }
  var isChecked = false;
  if ( elem.options[ 3 ] == elem.elementValue ){
    isChecked = true;
  }
  document.write( getCheckboxHTML( elem.name, elem.elementLabel, elem.options[1], elem.options[3], isChecked, elem.name, checkboxCounter, elem.getAttribute( 'zIndex' ), boxWidth, checkNotify, elem.hasError, elem.getAttribute( 'class' ), true, elem.isReadonly, onClickHandler ) );
}
function renderButton( elem ){
  document.write( writeButton( elem.id, elem.name, elem.getAttribute( 'class' ), elem.elementValue, elem.defaultText ) );
}
function renderLinkButton( elem ){
  document.write( writeLinkButton( elem.id, elem.name, elem.getAttribute( 'class' ), elem.elementValue, elem.defaultText ) );
}
function handleSections ( elemName ) {
  var sectionDependant, sectionHandler;
  if ( typeof behaviours != 'undefined' && sectionsBehaveDependOn[ elemName ] ) {
    for ( var i = 0; i < sectionsBehaveDependOn[ elemName ].length; i++) {
      if ( sectionBehaviours[ sectionsBehaveDependOn[ elemName ][ i ] ] ) {
        for ( var e = 0; e < sectionBehaviours[ sectionsBehaveDependOn[ elemName ][ i ] ].length; e++ ) {
          if ( sectionBehaviours[ sectionsBehaveDependOn[ elemName ][ i ] ][ e ][ 2 ] == 0 ) {
            setVisibility( "section_" + sectionsBehaveDependOn[ elemName ][ i ], null, 'none' );
          } else {
            setVisibility( "section_" + sectionsBehaveDependOn[ elemName ][ i ], null, 'block' );
          }
        } 
      }
    }
  }
}
var a = 0, u = 0;
var breakDisplay = "";
var breakVisibility = "";
var breakMandatory = "";
function handleBehaviours ( elemName, token ) {
  if ( typeof behaviours != 'undefined' ) {
    handleSections( elemName );
    if ( behaveDependOn[ elemName ] ) {
      for ( var a = 0; a < behaveDependOn[ elemName ].length; a++ ) {
        parentElement = behaveDependOn[ elemName ][ a ];
       	if ( behaviours[ parentElement ][ 0 ].length > 0 ) {
					// NEU
					if( typeof document.getElementsByTagName( "div" )[ "element_" + parentElement ] != 'undefined' ) {
						var elem = document.getElementsByTagName( "div" )[ "element_" + parentElement ];
						for ( var b = 0; b < elem.getElementsByTagName("img").length; b++) {
							if ( elem.getElementsByTagName("img")[b].id.indexOf("checkboxImage") >= 0 ) {
								token = elem.getElementsByTagName("img")[b].id;
							}
						}
					}
					// end NEU
					handleDisplay( parentElement, behaviours[ parentElement ][ 0 ], token );
        }
        if ( behaviours[ parentElement ][ 1 ].length > 0) {
          handleVisibility ( parentElement, behaviours[ parentElement ][ 1 ] );
        }
        if ( behaviours[parentElement][2].length > 0 ) {
          handleMandatory ( parentElement, behaviours[ parentElement ][ 2 ] )
        }
      }
    }
  }
}
function isBehaviourActive( behaviourDef ) {
  if ( behaviourDef[ 1 ] == null ) return false;
  var elem = getDOMForm().elements[ behaviourDef[ 0 ] ];
  if (! elem) return false;
  if ( behaviourDef.length > 3 && behaviourDef[ 3 ] == 'notequal' ) {
    if (elem.length) {
      if (behaviourDef[ 1 ] == "") {
        for( var i=0; i < elem.length; i++) {
      	  if (elem[i].value != behaviourDef[ 1 ]) {
      	    return true;
      	  }
        }
        return false;
      } else {
      	for( var i=0; i < elem.length; i++) {
      	  if (elem[i].value == behaviourDef[ 1 ]) {
      	    return false;
      	  }
        }
        return true;
      }
    } else {
      return elem.value != behaviourDef[ 1 ];
    }
  } else {
    if (elem.length) {
      if (behaviourDef[ 1 ] == "") {
        for( var i=0; i < elem.length; i++) {
      	  if (elem[i].value != behaviourDef[ 1 ]) {
      	    return false;
      	  }
        }
        return true;
      } else {
      	for( var i=0; i < elem.length; i++) {
      	  if (elem[i].value == behaviourDef[ 1 ]) {
      	    return true;
      	  }
        }
        return false;
      }
    } else {
      return elem.value == behaviourDef[ 1 ];
    }
  }
}
function handleDisplay ( parentElement, displayArray, token ) {
  if ( typeof getDOMForm().elements[ parentElement ] == 'object' ) {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
      if ( typeof getDOMForm().elements[ displayArray[ i ][ 0 ] ] != 'undefined' ) {
        if ( breakDisplay != parentElement && isBehaviourActive( displayArray[ i ] ) ) {
					displayMode = displayArray[ i ][ 2 ];
          switchDisplayMode ( displayMode, parentElement, displayArray[ i ][ 0 ], token );
          breakDisplay = parentElement;
        } else if ( breakDisplay != parentElement && displayArray[ i ][ 1 ] == null ) {
          displayMode = displayArray[ i ][ 2 ];
          switchDisplayMode ( displayMode, parentElement, displayArray[ i ][ 0 ], token );
        }
      }
    }
  }
  breakDisplay = "";
}
function switchDisplayMode ( displayMode, parentElement, displayArrayElement, token ) {
  switch ( displayMode ) {
    case 0:
      handleDisplayTextBehaviour( parentElement, displayArrayElement );
    break;
    case 1:
      handleDisplayReadonlyBehaviour ( parentElement, displayArrayElement, token );
    break;
    case 2:
      handleDisplayEditBehaviour( parentElement, displayArrayElement, token );
    break;
  }
}
function handleDisplayTextBehaviour ( parentElement, controlElement ) {
  writeIntoLayer( parentElement, getDOMForm().elements[ controlElement ].value );
}
function handleDisplayReadonlyBehaviour ( parentElement, controlElement, imageId ) {
  //if ( getDOMForm().elements[ parentElement ].type == "hidden" && ( typeof document.getElementsByTagName( "div" )[ parentElement ] != 'undefined' ) ) {
	// NEU
	if ( getDOMForm().elements[ parentElement ].type == "hidden" && ( typeof document.getElementsByTagName( "div" )[ "element_" + parentElement ] != 'undefined' ) ) {
	// end NEU
    var checkElem;
    for ( checkElem in formElements ) {
      if ( parentElement == checkElem ) {
				// NEU
        checkReadOnly.push( parentElement );
        //if ( formElements[ parentElement ][ 2 ] != formElements[ parentElement ][ 1 ] ) {
          document.images[imageId].src = checkboxDisabledGif;
					objectAddCSSClass( parentElement, 'disabled' );
        //} else {
          //document.images[imageId].src = checkboxDisabledGifHigh;
        //}
				// end NEU
      }
    }
  }
  if ( typeof getDOMForm().elements[ parentElement ] == 'object' ) {
    if ( getDOMForm().elements[ parentElement ].type != 'hidden' ) {
      getDOMForm().elements[ parentElement ].setAttribute( "readOnly", "readonly" );
			// NEU
      //objectAddCSSClass( parentElement, 'disabled');
			objectAddCSSClass( "element_" + parentElement, 'disabled');
			// end NEU
    }
  }
}
function handleDisplayEditBehaviour ( parentElement, controlElement, imageId ) {
	// NEU
	objectRemoveCSSClass( parentElement, 'disabled' );

	//checkReadOnly.splice( parentElement );
	
	for(i = 0; i < checkReadOnly.length; i++) {
		if(checkReadOnly[i] == parentElement) {
			checkReadOnly[i] = "";
		}
	}
	// end NEU
	
  var checkElem;
  for ( checkElem in formElements ) {
    if ( parentElement == checkElem ) {
      if (formElements[ parentElement ][ 2 ] != formElements[ parentElement ][ 1 ]) {
        document.images[ imageId ].src = checkboxGif;
      } else{
        document.images[ imageId ].src = checkboxGifHigh;
      }
    }
  }
  getDOMForm().elements[ parentElement ].readonly = false;
  setClassName( getDOMForm().elements[ parentElement ], 'input100' );
}
function handleVisibility ( parentElement, displayArray ) {
  if ( document.getElementById( "element_" + parentElement ) ) {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
	  if (displayArray[ i ] == undefined) {
		continue;
	  }
      if ( typeof getDOMForm().elements[ displayArray[ i ][ 0 ] ] != 'undefined' ) {
        if ( breakVisibility != parentElement && isBehaviourActive( displayArray[ i ] ) ) {
          visibilityMode = displayArray[ i ][ 2 ];
          switchVisibilityMode ( visibilityMode, parentElement, displayArray[ i ][ 0 ] );
          breakVisibility = parentElement;
        } else if ( breakVisibility != parentElement && displayArray[ i ][ 1 ] == null ) {
          visibilityMode = displayArray[ i ][ 2 ];
          switchVisibilityMode ( visibilityMode, parentElement, displayArray[ i ][ 0 ] );
        }
      }
    }
  }
  breakVisibility = "";
}
function switchVisibilityMode ( visibilityMode, parentElement ) {
  switch ( visibilityMode ) {
    case 0:
      objectAddCSSClass( parentElement, 'hidden' );
    break;
    case 1:
      objectRemoveCSSClass( parentElement, 'hidden' );
    break;
  }
}
function handleMandatory ( parentElement, displayArray ) {
  if (typeof getDOMForm().elements[ parentElement ] == 'object') {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
	  if (displayArray[ i ] == undefined) {
		continue;
	  }
      if (typeof getDOMForm().elements[ displayArray[ i ][ 0 ] ] != 'undefined') {
        if ( breakMandatory != parentElement && isBehaviourActive( displayArray[ i ] )) {
          mandatoryMode = displayArray[ i ][ 2 ];
          switchMandatoryMode ( mandatoryMode, parentElement, displayArray[ i ][ 0 ] );
          breakMandatory = parentElement;
        } else if ( breakMandatory != parentElement && displayArray[ i ][ 1 ] == null ) {
          mandatoryMode = displayArray[ i ][ 2 ];
          switchMandatoryMode ( mandatoryMode, parentElement, displayArray[ i ][ 0 ]);
        }
      }
    }
  }
  breakMandatory = "";
}
function switchMandatoryMode ( mandatoryMode, parentElement ) {
  switch ( mandatoryMode ) {
    case 0:
      objectRemoveCSSClass( parentElement, 'mandatory' );
    break;
    case 1:
      objectAddCSSClass( parentElement, 'mandatory' );
    break;
  }
}
function notifyValue(elemName, curValue) {
  handleBehaviours(elemName);
}
function checkEmptySelects () {
  if ( typeof dependingSelects != 'undefined' ) {
    if ( typeof getDOMForm() != 'undefined' ){
      var currentDependant;
      for ( currentDependant in dependingSelects ) {
        for( var i=0; i < dependingSelects[ currentDependant ].length; i++ ){
          if( ( typeof window[ "fe_" + dependingSelects[ currentDependant ][ i ] ] != "undefined" ) && getDOMForm()[ currentDependant ] && getDOMForm()[ currentDependant ].value == window[ "fe_" + currentDependant ].options[ 0 ] ){
            setVisibility( 'element_' + dependingSelects[ currentDependant ][ i ], null, 'none' );
          }
          if( ( typeof window[ "fe_" + dependingSelects[ currentDependant ][ i ] ] != "undefined" ) && ( typeof window[ "fe_" + dependingSelects[ currentDependant ][ i ] ].options[ 2 ] != "string" ) ){
            setVisibility( 'element_' + dependingSelects[ currentDependant ][ i ], null, 'none' );
          }
        }
      }
    } else {
      window.setTimeout( 'dependingSelects()', 500 );
    }
  }
}

}catch(e){console.log('Error in m_contact_forms_behaviours: ' + e.description);}

// ---- m_teaser_controller ----
try{ ///////////  CR52  ///////////  
function redirectToDealerOrSelectDealer( select_dealer_page ) {
	return teaser.redirectToDealerOrSelectDealer( select_dealer_page ); 
}

function redirectToDealerUsedCarsOrNSCUsedCars( used_cars_topic ){
	return teaser.redirectToDealerUsedCarsOrNSCUsedCars( used_cars_topic );
}
///////////  CR52  ///////////  


function Teaser(){ 
	var ret = {

		/**
		 * This is the name of the request parameter which is used in the start szenario to override the perso_engine user_category
		 * of multiple teasers slots
		 */
		REQUEST_PAR_USER_CATEGORY: "?usercategory=",
	
		/**
		 * This is the number of teaser rows. A teaser row consists
		 * of multiple teasers slots
		 */
		TEASER_ROWS: 3,

		/**
		 * This is the number of teaser slots per teaser row
		 */
		TEASER_PER_ROW: 3,
			
		/**
		 * timeout in ms for opening the big block teaser
		 */
		OPEN_DELAY : 350,

		/**
		 * This is the name of the start point cookie. The start point
		 * cookie flags wheather a start point has been choosen by the
		 * user.
		 */
		START_POINT_COOKIE_NAME: 'mini_tms_fv',

		/**
		 * This is the expires duration of the start point cookie in
		 * days.
		 */
		START_POINT_COOKIE_EXPIRES: 365,

		DEFAULT_FLASH_PARAMS: {
			quality: "high",
			allowFullScreen: "true",
			bgcolor: "#000000",
			wmode: "opaque",
			allowScriptAccess: "always"
		},

		/**
		 * This is the current teaser row index
		 */
		currentTeaserRow: 0,

		/**
		 * delayed open
		 */
		actionTimer: 0,
		
		autoChange: true,
		
		/**
		 * Time in ms to automatically update the teaser area
		 */
		AUTO_CHANGE_INTERVAL: 20000,

		teaserSelection: null,

		/**
		 * Cache for the teaser area teasers. The dict's keys are the
		 * teaser URLs. The dict's values are the teaser DOM elements
		 */
		teaserCache: {},

		teaserSlotCache: {},

		teaserAutoChangeTimerId: null,

		mainStageConfigs: [],

		__init__: function(){
			teaser.teaserAreaAvailable = (jQuery("#teaser_area").length > 0);
			teaser.flashAvailable = teaser.isFlashAvailable();
		},
		
		setAutoChange: function(value){
			teaser.autoChange = value;
		},

		isFlashAvailable: function(){
			for(var i = 0; i < teaser.mainStageConfigs.length; ++i){
				var c = teaser.mainStageConfigs[i];

				if(!swfobject.hasFlashPlayerVersion(c.teaserFlash.minFlashVersion)){
					return false;
				}

				if((c.startScenarioFlash.swf !== '') && (!swfobject.hasFlashPlayerVersion(c.startScenarioFlash.minFlashVersion))){
					return false;
				}
			}

			return true;
		},

		isMainStageAvailable: function(){
			return (teaser.mainStageConfigs.length > 0);
		},

		isMainStageTeaserAvailable: function(){
			if(!teaser.isMainStageAvailable()) return false;

			if(teaser.isStartPointScenario()) return false;

			return true;
		},

		getStartPointCookieValue: function(){
			var cookieKey = teaser.START_POINT_COOKIE_NAME + "=";
			var ci = document.cookie.indexOf(cookieKey);
			if(ci === -1){
				return null;
			}

			var start = ci + cookieKey.length;
			var end = document.cookie.indexOf(';', start);
			if(end === -1){
				end = document.cookie.length;
			}

			return unescape(document.cookie.substring(start, end));
		},

		isStartPointScenario: function(){
			if(!teaser.isMainStageAvailable()){
				return false;
			}

			var c = teaser.mainStageConfigs[0];

			if(c.startScenarioFlash.swf === ''){
				return false;
			}

			var v = teaser.getStartPointCookieValue();

			return ((v === null) || (v.length === 0));
		},

		loadStartPointScenario: function(){
			if(teaser.flashAvailable){
				var c = teaser.mainStageConfigs[0];

				var flashvars = {
					prm_country: c.teaserFlash.country,
					prm_language: c.teaserFlash.language,
					prm_content_1: c.startScenarioFlash.xml,
					prm_swf_1: c.startScenarioFlash.swf,
					prm_font: c.teaserFlash.font
				};
	
				swfobject.embedSWF(c.teaserFlash.swf,
						   'main_stage_' + c.oid,
						   '100%', '510px', '9.0.0',
						   false, flashvars,
						   teaser.DEFAULT_FLASH_PARAMS, false,
						   teaser.showMainStage);
			}
			else{
				for(var i = 0; i < teaser.mainStageConfigs.length; ++i){
					var c = teaser.mainStageConfigs[i];

					jQuery('#main_stage_start_scenario_img_' + c.oid).attr('src', c.startScenarioImage);
				}
				
				teaser.showMainStage();
			}
		},

		showMainStage: function(){
			if(teaser.isStartPointScenario()){
				jQuery('.main_stage_start_scenario').show();
			}

			if(teaser.isMainStageTeaserAvailable()){
				jQuery('.main_stage_teaser_area').show();
			}

			jQuery('.main_stage_area').show();
		},

		showNextTeaserRow: function(){
			++teaser.currentTeaserRow;
			teaser.currentTeaserRow %= teaser.TEASER_ROWS;
			teaser.refreshTeaserRow();
		},

		showPrevTeaserRow: function(){
			--teaser.currentTeaserRow;

			if(teaser.currentTeaserRow < 0){
				teaser.currentTeaserRow += teaser.TEASER_ROWS;
			}

			teaser.currentTeaserRow %= teaser.TEASER_ROWS;

			teaser.refreshTeaserRow();
		},

		refreshTeaserRow: function(){
			teaser.showTeaserRow(teaser.currentTeaserRow);
		},

		showTeaserRow: function(teaserRow){
			if(!teaser.teaserAreaAvailable){
				return;
			}

			if(teaser.teaserSelection === null){
				console.log('Skipping show teaser row as teaser selection not yet loaded.');
				return;
			}
	
			var teasers = teaser.teaserSelection.teaserArea[teaserRow];

			teaser.stopTeaserAutoChangeTimer();

			for(var i = 0; i < teasers.length; ++i){
				var teaserUrl = teasers[i].url;
		
				if((teaserUrl === null) || (teaserUrl.length === 0)){
					console.log('Skipping teaser row ' + teaserRow + ' slot ' + i + ' because not specified');

					continue;
				}

				//teaser.showTeaserInSlot(i, teasers[i]);
				setTimeout("teaser.showTeaserInSlot("+i+", teaser.teaserSelection.teaserArea["+teaserRow+"]["+i+"])",100); //give ui thread a chance
			}

			teaser.startTeaserAutoChangeTimer();
		},

		showTeaserInSlot: function(slot, teaserEntry){
			var teaserUrl = teaserEntry.url;
			
			if(teaser.teaserCache[teaserUrl]){
				teaser.setTeaserInSlot(slot, teaserEntry);

				return;
			}

			var c = {
				url: miniUrlFix.fixAbsoluteUrl(teaserUrl),
				dataType: 'html',
				success: teaser.teaserContentLoadCallback,
				slot: slot,
				teaserEntry: teaserEntry
			};
	
			jQuery.ajax(c);
		},

		extractBody: function(html){ //necessary only in edit environment any more			
			if(miniUrlFix.isPreview){
				var start = html.indexOf("<body>") + "<body>".length;
				//also remove embedded LE Toolboxes in teaser Area; extremely fragile but fast
				var leEndTag = "onMouseup=\"document.getElementById('LETBhider').style.cursor='pointer';\"></div>";				
				var index = html.indexOf(leEndTag);
				if (index !== -1) {
					start = index + leEndTag.length;
				}
				
				var end = html.indexOf("</body>");

				if((start >= 0) && (end > 0)){
					return html.substring(start, end);
				}

				console.log('Can\'t find body.');		
			}			

			return html;
		},

		teaserContentLoadCallback: function(html){						
			var bodyHtml = teaser.extractBody(html);

			teaser.teaserCache[this.teaserEntry.url] = bodyHtml;
			
			setTimeout("teaser.showTeaserInSlot("+this.slot+", teaser.teaserSelection.teaserArea[teaser.currentTeaserRow]["+this.slot+"])",500); //give ui thread a chance
		},

		startTeaserAutoChangeTimer: function(){
			if(!teaser.teaserAreaAvailable) return;

			if(teaser.teaserAutoChangeTimerId){
				// timer is already running
				return;
			}

			if(teaser.autoChange){
				teaser.teaserAutoChangeTimerId = window.setInterval("teaser.showNextTeaserRow();", this.AUTO_CHANGE_INTERVAL);
			}
		},

		stopTeaserAutoChangeTimer: function(){
			if(!teaser.teaserAutoChangeTimerId) return;
			window.clearInterval(teaser.teaserAutoChangeTimerId);
			teaser.teaserAutoChangeTimerId = null;
		},

		showBigTeaser: function(bigDiv,cssObj){
			teaser.hideAllBigTeaser();
			window.clearTimeout( teaser.actionTimer );		
			bigDiv.css(cssObj);			
			// CR 192: Big Teaser in Front Of
			if (bigDiv.parent().parent().attr("id") === "teaser_area_0") {
			  jQuery('#teaser_area_quicklinks').css('z-index', '19991');
			  if (jQuery('#teaser_area_quicklinks').find('.facebook_like').length > 0) {
			    jQuery('#teaser_area_quicklinks').find('.facebook_like').hide();
			  }
              if (jQuery('#teaser_area_quicklinks').find('.quicklink_lefttext').length > 0) {
                jQuery('#teaser_area_quicklinks').find('.quicklink_lefttext').hide();
              }
			}
			
			teaser.stopTeaserAutoChangeTimer();
		},
		
		showBigTeaserDelayed: function(){
			var bigDiv = $(this).siblings('.teaser_big');			
			var leftPos = ($(this).width() / 2) - ((bigDiv.width()+parseInt(bigDiv.css("padding-left"), 10) + parseInt(bigDiv.css("padding-right"), 10)) / 2);
			var topPos = - bigDiv.height() - parseInt(bigDiv.css("padding-top"), 10) - parseInt(bigDiv.css("padding-bottom"), 10) - 18;
											
			var cssObj = {
				'margin-top' : topPos + 'px',
				'margin-left' : leftPos + 'px',
				'display' : 'block'
			};
			
			teaser.actionTimer = window.setTimeout(function(){teaser.showBigTeaser(bigDiv,cssObj);}, teaser.OPEN_DELAY);
		},
		
		clearActionTimer: function(){
			window.clearTimeout( teaser.actionTimer );
		},

		hideAllBigTeaserDelayed : function() {
			teaser.clearActionTimer();
			teaser.actionTimer = window.setTimeout(function(){
					teaser.hideAllBigTeaser();
				}, teaser.OPEN_DELAY);
		},

		resetTeaserAreaZIndex : function(){
            if (jQuery('#teaser_area_quicklinks').length > 0) {			
			  jQuery('#teaser_area_quicklinks').css('z-index', '');
			  if (jQuery('#teaser_area_quicklinks').find('.facebook_like').length > 0) {
   			    jQuery('#teaser_area_quicklinks').find('.facebook_like').show();
			  }
              if (jQuery('#teaser_area_quicklinks').find('.quicklink_lefttext').length > 0) {
                jQuery('#teaser_area_quicklinks').find('.quicklink_lefttext').show();
              }
			}		
		},
		
		hideAllBigTeaser: function(){
			jQuery('.teaser_big').css('display', 'none');
            teaser.resetTeaserAreaZIndex();
			teaser.startTeaserAutoChangeTimer();
		},
		
		hideBigTeaser: function(){
			$(this).css('display', 'none');
			teaser.resetTeaserAreaZIndex();
			teaser.startTeaserAutoChangeTimer();
		},

		setTeaserInSlot: function(slot, teaserEntry){
			var taSelector = '#teaser_area_' + slot;
			var ta = jQuery(taSelector);
			//hide all
			ta.children('.teaser_row_0').css('display','none');
			ta.children('.teaser_row_1').css('display','none');
			ta.children('.teaser_row_2').css('display','none');
			var currentTa = ta.children('.teaser_row_' + teaser.currentTeaserRow);
			// teaser remain in the DOM
			// if already there, just show it
			if(currentTa.length > 0) {
				currentTa.css('display','block');
			}	
			// otherwise append the teaser to the current row in the current slot
			else {
				var teaserBodyHtml = teaser.teaserCache[teaserEntry.url];				
				ta.append('<div class="teaser_row_' + teaser.currentTeaserRow + '">' + teaserBodyHtml + '</div>' );
				taSelector = '#teaser_area_' + slot + ' .teaser_row_' + teaser.currentTeaserRow;
				
				if(miniUrlFix.isPreview) {
					// Add hover on LE Icons
					$(taSelector+' .ceEditIconLayout').hover(
						function(){
							$(this).parent().fadeTo('fast',0.5);
						},
						function(){
							$(this).parent().fadeTo('fast', 1);
						}
					);
				}
				ta = jQuery(taSelector);
			
				miniUrlFix.doPartialFix(taSelector);			
				
				
				//Cufon.replace(taSelector + ' .block_teaser_cufon', { hover: true });
				cufonReplaceHeadlines(taSelector+' ', true);
				Cufon.replace('.teaser_3_big_bottom_link_area a', { hover: true });
				
				
				var teaser_big = ta.children('.teaser_big');
				
				// Register click events for tracking
				if(typeof miniTracking === 'object'){
					var type = teaserEntry.type;
					var linktype = '';
					var oncam = '';
					
					// News teaser
					if(type === 'news'){
						linktype = 'TA_NE';
					}
					// Dealerteaser or fix teaser in dealer area
					else if(type === 'dealer' || (type === 'fix' && isDealerArea)){
						linktype = 'TA_DET';
					}
					// NSC teaser or fix teaser in nsc area
					else if(type === 'nsc' || (type === 'fix' && !isDealerArea)){
						linktype = 'TA_T';
					}
					// Personalized teaser
					if(miniTracking.exists(teaserEntry.persoCategory)){
						oncam = 'PE_'+teaserEntry.persoCategory;
					}
					
					// Update data-tracking
					$(taSelector + ' a').each(
						function(index){
							var link = $(this);
							var _dataTracking = link.attr('data-tracking');
							var dataTracking = '';
							
							if(link.attr('href').indexOf('redirectToDealerUsedCarsOrNSCUsedCars') > 0 && linktype === 'TA_DET' ){
								// This is a link into the used car area and link type is TA_DET
								// Then rewrite link type to TA_DET_UC
								linktype = 'TA_DET_UC';
							}
							
							// Add new parameters to the beginning of data-tracking
							// thus giving values that the content editor has entered a higher priority
							if(miniTracking.exists(linktype))
								dataTracking = 'linktype='+linktype;
								
							if(miniTracking.exists(oncam)){
								dataTracking += '&oncam='+oncam;
							}
							
							if(miniTracking.exists(_dataTracking)){
								// Replace all ? in original tracking data then ? is not allowed
								dataTracking += '&'+_dataTracking.replace(/\?/,'');
							}
							
							// Set new data-tracking value
							link.attr('data-tracking',dataTracking);
						}
					);
					
					// Special treatment for teaser where the whole "big view" must be clickable --> onclick attribute set
					var targetpage = teaser_big.attr('data-url');
					if(miniTracking.exists(targetpage)){
						var tracking = 
						{
							'linktype': linktype,
							'oncam': oncam
						};
						teaser_big.click(
							function(){
								miniTracking.handleClickEvent(targetpage, tracking);
							}
						);
					}
				}
				
				ta.children('.teaser_small').hover(teaser.showBigTeaserDelayed, teaser.clearActionTimer);
				teaser_big.mouseenter(teaser.clearActionTimer);
			}
		},

		getFixTeaserOids: function(){
			if(!teaser.teaserAreaAvailable){
				return '';
			}

			var s = '';
	
			for(var i = 0; i < fixTeasers.length; ++i){
				if(i > 0){
					s = s + ',';
				}

				s = s + fixTeasers[i].oid;
			}

			return s;
		},

		getMainStageFixTeaserOids: function(){
			if(teaser.mainStageConfigs.length === 0){
				return '';
			}

			var ta = teaser.mainStageConfigs[0].fixTeaser;

			var s = '';
	
			for(var i = 0; i < ta.length; ++i){
				if(i > 0){
					s = s + ',';
				}

				s = s + ta[i].oid;
			}

			return s;
		},

		loadTeaserSelection: function(user_category){
			var distId = miniSubsidiary.getDistributionPartnerId();
			var outId = miniSubsidiary.getOutletId();
			
			if (user_category == undefined) user_category = '';

			var params = {
				fixTeasers: this.getFixTeaserOids(),
				mainStageFixTeasers: this.getMainStageFixTeaserOids(),
				country: topicCountry,
				lang: topicLanguage,
				userCategory: user_category,
				distributionPartnerId: ((distId === undefined) || (distId === null)) ? '' : distId,
				outletId: ((outId === undefined) || (outId === null)) ? '' : outId,
				requireMainStageTeaser: (this.isMainStageTeaserAvailable() && this.flashAvailable),
				requireTeaserArea: this.teaserAreaAvailable
			};

			var c = {
				url: teaserService,
				data: params,
				dataType: 'jsonp',
				jsonp: 'jsonp_callback',
				success: this.teaserSelectionCallback,
				error: this.noTeaserSelectionAvailable
			};

			console.log('Loading teaser selection from URL ' + teaserService);
			
			jQuery.ajax(c);

			$('#teaser_area').mouseleave(function(){teaser.hideAllBigTeaserDelayed();});
		},

		refreshMainStageTeaser: function(){
			var ms = teaser.teaserSelection.mainStage;

			// cs 24.6.2010 neue Anforderung: das Startszenario soll nur einmal kommen, selbst wenn dann keine Startszenario Button gewï¿½hlt wurde.
			var expires = new Date();
			expires.setDate(expires.getDate() + teaser.START_POINT_COOKIE_EXPIRES);
			document.cookie = teaser.START_POINT_COOKIE_NAME + '=true;expires=' + expires.toGMTString();

			if(!ms){
				console.log('No main stage teaser available.');
				return;
			}

			var c = teaser.mainStageConfigs[0];

			var flashvars = {
				prm_country: c.teaserFlash.country,
				prm_language: c.teaserFlash.language,
				prm_content_1: miniUrlFix.fixAbsoluteUrl(ms[0].flashXmlUrl),
				prm_swf_1: miniUrlFix.fixAbsoluteUrl(ms[0].flashUrl),
				prm_content_2: miniUrlFix.fixAbsoluteUrl(ms[1].flashXmlUrl),
				prm_swf_2: miniUrlFix.fixAbsoluteUrl(ms[1].flashUrl),
				prm_content_3: miniUrlFix.fixAbsoluteUrl(ms[2].flashXmlUrl),
				prm_swf_3: miniUrlFix.fixAbsoluteUrl(ms[2].flashUrl),
				prm_font: c.teaserFlash.font
			};

			swfobject.embedSWF(c.teaserFlash.swf,
					   'main_stage_' + c.oid,
					   '100%', '510px', '9.0.0', false,
					   flashvars,
					   teaser.DEFAULT_FLASH_PARAMS,
					   false, teaser.showMainStage);
		},

		teaserSelectionCallback: function(ts){
			// override fix teaser
			if(teaser.teaserAreaAvailable){
				for(var i = 0; i < fixTeasers.length; ++i){
					var url = fixTeasers[i].url;

					if((url === null) || (url.length === 0)) continue;

					ts.teaserArea[i][0].url = url;
				}
			}

			// override main stage fix teaser
			if(teaser.mainStageConfigs.length > 0){
				for(var i = 0; i < teaser.mainStageConfigs[0].fixTeaser.length; ++i){
					var t = teaser.mainStageConfigs[0].fixTeaser[i];
					
					if((t.swf === null) || (t.swf.length === 0)){
						continue;
					}

					if ((typeof(ts.mainStage) === 'undefined') || (ts.mainStage === null)) {
						continue;
					}				

					ts.mainStage[i].flashUrl = t.swf;
					ts.mainStage[i].flashXmlUrl = t.xml;
				}
			}

			teaser.teaserSelection = ts;

			teaser.refreshMainStageTeaser();		

			
			if ($(document).height() < ($(window).height() + 195)) { //teaser area is visible
				setTimeout("teaser.startAreaTeasers()",500);
			}
			else {
				setTimeout("teaser.startAreaTeasers()",2500);
			}
	
			
		},

		/** load noflash image when backend is unavailable */
		noTeaserSelectionAvailable: function(){
			if (teaser.isMainStageTeaserAvailable()) {
				teaser.loadNoFlashMainStageTeaser();
			}			
		},
		
		startAreaTeasers: function() {
			teaser.refreshTeaserRow();
			teaser.startTeaserAutoChangeTimer();
		},


		loadNoFlashMainStageTeaser: function(){
			for(var i = 0; i < teaser.mainStageConfigs.length; ++i){
				var c = teaser.mainStageConfigs[i];

				jQuery('#main_stage_teaser_area_img_' + c.oid).attr('src', c.teaserAreaImage);
			}

			teaser.showMainStage();
		},

		/**
		 * This method is called by the start scenario flash and the
		 * alternative start scenario HTML.
		 *
		 * @param persoVotes Contains the votings for the different
		 * perso categories. For example:
		 * <code>
		 * {
		 *   'KA1': 200,
		 *   'KA2': 50
		 * }
		 * </code>
		 */
		selectStartScenario: function(persoVotes){
			var expires = new Date();
			expires.setDate(expires.getDate() + teaser.START_POINT_COOKIE_EXPIRES);
			document.cookie = teaser.START_POINT_COOKIE_NAME + '=true;expires=' + expires.toGMTString();

			if (persoVotes != undefined && persoVotes[1]!=undefined && persoVotes[1].length>1 ) {
				persoCtrl.voteAsync(persoVotes[1]);
				location.href = location.href +  this.REQUEST_PAR_USER_CATEGORY + persoVotes[0];
			}
			else	
				location.reload();
		}, 
		///////////  CR52  ///////////  
		redirectToDealerOrSelectDealer : function ( select_dealer_page ) {
			if (miniSubsidiary.isSubsidiarySelected() == false)
				gotoURLWithReferrer(miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+select_dealer_page));
				//window.location.href = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+select_dealer_page);
			else
				miniSubsidiary.onSubsidiaryReady(function() {
					gotoURLWithReferrer(miniSubsidiary.getUrl());
					//window.location.href = miniSubsidiary.getUrl();
				}); 
		},
		redirectToDealerUsedCarsOrNSCUsedCars : function ( used_cars_topic ){
			if (miniSubsidiary.isSubsidiarySelected() == false){
				var targeturl = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+'/' + used_cars_topic + '/');
				gotoURLWithReferrer(targeturl);
				//window.location.href = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+'/' + used_cars_topic + '/');
			}
			else{
				miniSubsidiary.onSubsidiaryReady(function() {
					var targeturl = '';
					if (miniSubsidiary.hasUsedCarsBranch()){
						targeturl = miniUrlFix.fixAbsoluteUrl(miniSubsidiary.getUrl() + used_cars_topic + '/');
						//window.location.href = miniUrlFix.fixAbsoluteUrl(miniSubsidiary.getUrl() + used_cars_topic + '/');
					}
					else{
						targeturl = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+'/' + used_cars_topic + '/');
						//window.location.href = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix()+'/' + used_cars_topic + '/');
					}
					gotoURLWithReferrer(targeturl);
				}
				);
			}
		}
	};

	return ret;
}

teaser = Teaser();

jQuery(document).ready(function(){
		teaser.__init__();

		if(teaser.isStartPointScenario()){
			teaser.loadStartPointScenario();
		}
		else if(teaser.isMainStageTeaserAvailable()){
			if(!teaser.flashAvailable){
				teaser.loadNoFlashMainStageTeaser();
			}
		}
	}
	);

}catch(e){console.log('Error in m_teaser_controller: ' + e.description);}

// ---- m_link_target_component ----
try{ $(document).ready(
		function () {
			Cufon.replace('.link_target_component_list .teaser_component_link_standard', {hover:true});
			$('.link_target_component_list .teaser_component_link_standard:first').addClass('selected');
			$('.link_target_component_list .teaser_component_link_standard:first').removeClass('teaser_component_link_standard');
            Cufon.refresh('.link_target_component_list .teaser_component_link_standard:first', {hover:true}); 
			
		}
		);

function link_target_highlight(obj, tohide, toshow) {
	//obj.parent().parent().find('.teaser_component_link_standard.teaser_component_link_standard').show();
	//obj.parent().parent().find('.teaser_component_link_standard.teaser_component_link_standard_hover').hide();
	//obj.siblings('.teaser_component_link_standard_hover').show();
	//obj.hide();
	
	$('.link_target_component_list .selected').addClass('teaser_component_link_standard');
	$('.link_target_component_list .selected').removeClass('selected');
	
	obj.addClass('selected');
	obj.removeClass('teaser_component_link_standard');
	
	Cufon.refresh('.link_target_component_list .teaser_component_link_standard', {hover:true}); 
	Cufon.refresh('.link_target_component_list .selected', {hover:true}); 
	
	$(tohide).hide(); 
	$(toshow).show();
}

}catch(e){console.log('Error in m_link_target_component: ' + e.description);}

// ---- m_iframe_content ----
try{ /**
  * Constructs the iframe.
  * Waits for dealer information if a dealer is selected
  */
function setupIFrame(uuid, frameId, base_url, height, width, position_left, target_type, back_link_prefix, back_link_default, automatic_resize, scrollbars) {
  if (target_type != "other") {
    if (miniSubsidiary.isSubsidiarySelected()) {
      miniSubsidiary.onSubsidiaryReady(function() {
      //offered by global.js:
      base_url = getTargetByType(base_url, target_type, miniSubsidiary, true);
      buildIFrame(uuid, frameId, base_url, height, width, position_left, target_type, back_link_prefix, back_link_default, automatic_resize, scrollbars);
      });
      //iframe is constructed on callback
      return;
    }    
    //otherwise iframe is constructed immediately
    base_url = getTargetByType(base_url, target_type, null, true);          
  }
  buildIFrame(uuid, frameId, base_url, height, width, position_left, target_type, back_link_prefix, back_link_default, automatic_resize, scrollbars);
}

function buildIFrame(uuid, frameId, base_url, height, width, position_left, target_type, back_link_prefix, back_link_default, automatic_resize, scrollbars) {  
  if (position_left) {
    iframe_width='100%';
    $('#iframe_container_' + uuid).css('position', 'absolute');
    $('#iframe_container_' + uuid).css('left', '0px');
    $('#iframe_container_' + uuid).css('width', '100%');    
  }
  
  if (target_type === 'vco' || target_type === 'rfo' || target_type === 'tda' || target_type === 'rfi' || target_type === 'rfci'){
      //iframe content will be faded when main navigation is entered
      $('#iframe_container_' + uuid).addClass('applet_content');
  }
  
  if ((scrollbars === null) || (typeof(scrollbars) === 'undefined')) {
    scrollbars = "no";
  }
  
  $('#iframe_container_' + uuid).append("<iframe allowtransparency='true' scrolling='" + scrollbars + "' id='" + frameId + "' name='" + frameId + "' frameborder='0' width='" + width +"' height='" + height+ "' ></iframe>");
  
  var frameUrl = getCompleteUrl(base_url, back_link_prefix, back_link_default, target_type);

  // iframe attributes can not be set using css
  $('#iframe_container_' + uuid + "> iframe").attr('src', frameUrl);
  $('#iframe_container_' + uuid + "> iframe").attr('scrolling', scrollbars);
}

/** reorders url parameters as eCOM requires a specific order to work properly */
function reorderParams(url_vars) {
  // a list of params (and potential values as eCOM uses some url params more than once...)
  var order = [["event", null],
        ["action", "init"],
        ["brand", null],
        ["country", null],
        ["language", null],
        ["variant", null],
        ["design", null],
        ["reset", null],
        ["backLinkTarget", null],
        ["backLinkName", null],
        ["backLinkUrl", null],        
        ["useJavaApplet", null],
        ["process", null],
        ["action", "dlo.selectDistributionPartner"],
        ["distributionPartnerNumber", null],
        ["outletId", null],
        ["action", "vco.selectConfiguration"],
        ["action", "tda.selectConfiguration"],
        ["series", null],
        ["body", null],
        ["model", null],
        ["features", null],
        ["action", "rfi.selectInformation"],
        ["infos", null],
        ["initTarget", null],
        ["backLinkUrl", null],
        ["process", null],
        ["leadContext", null]];
  
  var new_order = new Array(url_vars.length);
  
  var current_index = 0;      
  for (var i = 0; i < order.length; i++) {
    for (var y = 0; y < url_vars.length; y++) {
      if (url_vars[y][0] == order[i][0]) {//param names match
        if (order[i][1] == null || url_vars[y][1] == order[i][1]) {
          //params match with their values as well (or no value is required)
          new_order[current_index++] = url_vars[y];
          url_vars[y] = [ "", "" ];
          break;
        }
      }
    }
  }
  
  //include any remaining params:
  for (var i = 0; i < url_vars.length; i++) {
    if (url_vars[i][0].length > 0) {
      new_order[current_index++] = url_vars[i];
    }
  }
  
  return new_order;
}

/** Returns an array of name-value pairs within the current url */
function getPageUrlVars() {
  return getUrlVars(window.location.href);
}

/** Returns an array of name-value pairs within url_location */
function getUrlVars(url_location){
    var urlParams = [];
    var paramStart = url_location.indexOf('?') + 1;
    if (paramStart === 0 || paramStart === url_location.length) return urlParams;
    
    var hashes = (url_location.slice(paramStart)).split('&');
    urlParams = new Array(hashes.length);
    
    for(var i = 0; i < hashes.length; i++) {    
      var hash = hashes[i].split('=');
      if (hash.length > 1) {
		var anchorPos = hash[1].indexOf("#");
		if (anchorPos !== -1) {
			hash[1] = hash[1].substring(0, anchorPos);
		}
      }
      urlParams[i] = hash;
    }
    return urlParams;
  }

/** 
  * Adds a prefix to a backLinkName (in case a backLinkName already param exists) 
  * or adds the default backLinkName if no backLinkName exists
  */
function addBackLinkName (vars, back_link_prefix, back_link_default) {
  var backLinkParamName = "backLinkName";
    for(var i = 0; i < vars.length; i++) {    
      if (vars[i][0] == backLinkParamName) {
    vars[i][1] = escape(back_link_prefix + " ") + decodeURIComponent(vars[i][1]);
    return vars;
      }
    }
    //no backLinkName found, append default (if set)
    if (back_link_default.length > 0) {
    var backLinkEntry = [backLinkParamName, escape(back_link_default)];
    vars[vars.length] = backLinkEntry;
    }
    return vars;
}

/** Appends document.referer as parameter "backLinkUrl" if this parameter is not set*/
function addBackLinkUrl(vars) {
  var backLinkUrlParamName = "backLinkUrl";
    for(var i = 0; i < vars.length; i++) {    
      if (vars[i][0] == backLinkUrlParamName) {
    return vars;
      }
    }
    
    //no backLinkUrl found, append document.referer:
    var referrer = document.referrer;
    //if (referrer.indexOf("https://") !== -1) return vars; //eCOM has problems with https backlinks, leave it
    
  var backLinkUrlEntry = [backLinkUrlParamName, referrer];
  vars[vars.length] = backLinkUrlEntry;

    return vars;
}

function buildUrlFromParams(base_url, params) {
	return buildUrlFromParams(base_url, params, false);
}

function buildUrlFromParams(base_url, params, override) {
  var overrideParams = new Array();
  overrideParams["reset"] = true; //if the url parameter key 'reset' occurs in base_url and params, use the value in params
    
  for (var i = 0; i < params.length; i++) {
    thisParam = params[i];
    if (override && overrideParams[thisParam[0]]) {
		base_url = replaceParam(base_url, thisParam[0], thisParam[1]);
    }
    else {
		base_url = addParam(base_url, thisParam[0], thisParam[1], false);//true should be fine as well?
    }
  }
  return base_url;
}

/** Sets or modifies the value of the URL parameter 'key' in base_url */
function replaceParam(base_url, key, value) {
	var index = base_url.indexOf(key);
	if (index > -1) {
		var term = base_url.indexOf("&", index);
		if (term === -1) {
			term = base_url.length;
		}
		var prefix = base_url.substring(0, index+key.length+1);
		var suffix = base_url.substring(term, base_url.length);
		
		base_url = prefix + value + suffix;		
	}
	return base_url;
}

/** Constructs a new url using a defined order of url params for an unordered url */
function getOrderedUrl(unordered_url) {
  var params_start = unordered_url.indexOf("?");
  if (params_start == -1) return unordered_url;
  
  var url_prefix = unordered_url.substring(0, params_start);
  var complete_vars = getUrlVars(unordered_url);
  var ordered_vars = reorderParams(complete_vars);
  return buildUrlFromParams(url_prefix, ordered_vars);  
}

/** Returns the complete iframe url (base_url and potential page url parameters) */
function getCompleteUrl(base_url, back_link_prefix, back_link_default, target_type){

  var vars = getPageUrlVars();
  
  if (target_type === "vco" || target_type === "rfo") {
    vars = addBackLinkName(vars, back_link_prefix, back_link_default);
    vars = addBackLinkUrl(vars);
  }
  
  //merge base url with page vars - replace existing values:
  var unordered_url = buildUrlFromParams(base_url, vars, true);
      
  return getOrderedUrl(unordered_url);
  }
  
/** Sets the document domain value if applicable */
function setDocumentDomain(new_domain) {
  if (winLoc.indexOf(new_domain) !== -1) {
    document.domain = new_domain;
  }
}

function isWebKit() {
	var sUserAgent = navigator.userAgent;
	return (sUserAgent.indexOf("WebKit") === -1) ? false:true;			
}

var isResizeActive = false;
/** Automatically sets the iframe height to the height of the iframe body element */
function doIFrameResize() {
	if (isResizeActive) return;	
	isResizeActive = true;
	var webkit = isWebKit();
	var offset = 20;
	var lastDifference = 0;
	
	//resize events simply do not work correctly so we have to rely on a timer here
	var interval = setInterval(function(){
		for (i=0; i<iframeids.length; i++) {      
		  var iframe = document.getElementById(iframeids[i]);		  

		  if (iframe === null || (typeof(iframe.readyState) !== "undefined" && iframe.readyState !== "complete"))  return; //IE6+7 have a race condition that will result in a permission denied error when iframe content is not fully loaded		  
		  try {
			var newHeight = webkit ? iframe.contentWindow.document.body.offsetHeight : iframe.contentWindow.document.body.scrollHeight;
			if (newHeight != oldHeight[i] && newHeight != (oldHeight[i] + offset)) { //seems to depend on content
				if (webkit) {
					// avoid frame growing endlessly in webkit
					if (newHeight - oldHeight[i] === lastDifference) { 
						return;
					}
				}
				
				$('#'+iframeids[i]).attr('height', newHeight + offset);
				resizeAbsoluteParentContainers(iframeids[i], newHeight + offset);			
				lastDifference = newHeight - oldHeight[i];
				oldHeight[i] = newHeight;
				if (typeof(pdCommunicateHeight) === "function") {
					pdCommunicateHeight();//m_plain_dynamic_content
				}
			}
		  }
		  catch(e) {
			console.log("Error in iframe communication: " + e);
			//clearInterval(interval);
		  }		  
		}		
  }, 2000);
}

var anchorSet = false;

/** Returns the page's height in order to resize an iframe based on the space available on the current page */
function getAvailableHeight(minmModuleHeight) {
  if (minmModuleHeight.indexOf("%") !== -1) return minmModuleHeight;
  if (minmModuleHeight.indexOf("px") !== -1) return minmModuleHeight; //falsch gepflegt
  
  var windowHeight = 0;
  if(window.innerHeight){
    windowHeight = window.innerHeight;
  } else {
    if (document.body.clientHeight !== 0) {
      windowHeight = document.documentElement.clientHeight;  
    } 
  }
  
  var iframeTop = 170;
  var availableHeight = windowHeight - iframeTop;  
  if (availableHeight > minmModuleHeight) {
	return ""+availableHeight; 
  }
  else if (!anchorSet) {
	anchorSet = true;
	thisPageAnchor("#component_0");//cr-179
  }  
  return minmModuleHeight;  
}

function getAvailableWidth(minModuleWidth) {
  if (minModuleWidth.indexOf("%") !== -1) return minModuleWidth;
  if (minModuleWidth.indexOf("px") !== -1) return minModuleWidth; //falsch gepflegt

  var availableWidth = 0;
  if(window.innerWidth) {
    //Non-IE
    availableWidth = window.innerWidth;
  } 
  else if(document.documentElement && document.documentElement.clientWidth) {
    //IE 6+ in 'standards compliant mode'
    availableWidth = document.documentElement.clientWidth - 20;
  }
  return (availableWidth > minModuleWidth) ? ""+availableWidth : minModuleWidth;
}

/** 
  * sets the height of an iframe based on its id
  * can also update a background div (when absolute positioning is used)
  */
function setIFrameHeight(iframe_height, frameId, background_div_id) {
  iframe_height = getAvailableHeight(iframe_height);
  
  var px_index = iframe_height.indexOf("px");
  unit_index = Math.max(px_index, iframe_height.indexOf ("%"));
  if (unit_index == -1) {      
    iframe_height += "px";
  }
  
  $("#"+frameId).css("height", iframe_height);
  if (background_div_id !== null) {
    $(background_div_id).css("height", iframe_height);
  }
  
  return iframe_height;
}

function setIFrameWidth(iframe_width, frameId) {
  iframe_width = getAvailableWidth(iframe_width);
  
  var px_index = iframe_width.indexOf("px");
  unit_index = Math.max(px_index, iframe_width.indexOf ("%"));
  if (unit_index == -1) {      
    iframe_width += "px";
  }
  
  $("#"+frameId).css("width", iframe_width);
  
  return iframe_width;
}

/**
  * If the iframe is embedded in a mosaic/absolute component we have to also adapt the height
  */
function resizeAbsoluteParentContainers(frameId, height) {
	$("#"+frameId).parents().each(function(i) {
		if ($(this).css("position") !== "static") { //mosaic
		   $(this).height(height+"px");
		}
		else if ($(this).attr("class").indexOf("absolute_component") > -1) {
		   var posTop = $(this).children(':first').position().top;
		   $(this).height((height - 114 + posTop)+"px");
		}
	});
}

/** called by /_common/_html/xss.html, for documentation see http://www.codecouch.com/2008/10/cross-site-scripting-xss-using-iframes/ */
function resizeIframeXSS(frameId, height) {
	var heightPx = height + "px";
	$("#"+frameId).height(heightPx);
	$("#"+frameId).attr("height", heightPx);
	$("#"+frameId).parent().next().height(heightPx);//when iframe is position=absolute

	resizeAbsoluteParentContainers(frameId, height);
}
}catch(e){console.log('Error in m_iframe_content: ' + e.description);}

// ---- m_service_table ----
try{ $(document).ready(
	function(){
			
			// Add hover
			$('.service_table_row').hover(
				function(index){
					$(this).children("td:not([class^='service_table_boarder'])").addClass('service_table_active_row');
				} , 
				function(index){
					$(this).children("td:not([class^='service_table_boarder'])").removeClass('service_table_active_row');
				}
			);
			
			
			// Apply cufon
			Cufon.replace('.service_table_head_col1');
			
		
	}
);

}catch(e){console.log('Error in m_service_table: ' + e.description);}

// ---- m_galleryview ----
try{ 
var gallery_thumbnail_margin_left = 20;


$.fn.centerInClient = function(options) {
	if($('#m_gallery').length == 0)
			return;
    /// <summary>Centers the selected items in the browser window. Takes into account scroll position.
    /// Ideally the selected set should only match a single element.
    /// </summary>    
    /// <param name="fn" type="Function">Optional function called when centering is complete. Passed DOM element as parameter</param>    
    /// <param name="forceAbsolute" type="Boolean">if true forces the element to be removed from the document flow 
    ///  and attached to the body element to ensure proper absolute positioning. 
    /// Be aware that this may cause ID hierachy for CSS styles to be affected.
    /// </param>
    /// <returns type="jQuery" />
    var opt = { forceAbsolute: false,
                container: window,    // selector of element to center in
                completeHandler: null
              };
    $.extend(opt, options);
   
    return this.each(function(i) {
        var el = $(this);
        var jWin = $(opt.container);
        var isWin = opt.container == window;

        // force to the top of document to ENSURE that 
        // document absolute positioning is available
        if (opt.forceAbsolute) {
            if (isWin)
                el.remove().appendTo("body");
            else
                el.remove().appendTo(jWin.get(0));
        }

        // have to make absolute
        el.css("position", "absolute");

        // height is off a bit so fudge it
        var heightFudge = isWin ? 2.0 : 1.8;

        var x = (isWin ? jWin.width() : jWin.outerWidth()) / 2 - el.outerWidth() / 2;
        var y = (isWin ? jWin.height() : jWin.outerHeight()) / heightFudge - el.outerHeight() / 2;

        var top = 180;//y + jWin.scrollTop();
		el.css("left", x + jWin.scrollLeft());
        el.css("top", top);

        // if specified make callback and pass element
        if (opt.completeHandler)
            opt.completeHandler(this);
    });
}

$(document).ready(
	function(){
		if($('#m_gallery').length == 0)
			return;
			
		Cufon.replace('.gallery_headline');
		
		// Perform replacement only if element with class .scrollableArea available on current page
		if($('.scrollableArea').length == 0)
			return;
		
		var scrollableAreaWidth = 0;
		var entryCount = 0;
		
		$('#galleryview_container .scrollableArea .gallery_thumb_entry').each(function() {
			galleryImageWidth = parseInt(all_small_img_widths[entryCount]);
			galleryImageWidth = parseInt(all_small_img_widths[entryCount]);
			scrollableAreaWidth = scrollableAreaWidth + galleryImageWidth + gallery_thumbnail_margin_left;
			$('#gallery_thumb_entry_' + entryCount).css('width',galleryImageWidth + 'px');
			$('#gal_thumb_' + entryCount).css('width',galleryImageWidth + 'px');
			entryCount = entryCount + 1;
		});
		
		scrollableAreaWidth = (scrollableAreaWidth - gallery_thumbnail_margin_left) +"px"; 

		var mScrollingSpeed	= 2;
		// make it faster for IE (QC 2045)
		if (getInternetExplorerVersion() >0) {
		  mScrollingSpeed = 8;
	    }
		
		var options =
			{
				scrollingSpeed: mScrollingSpeed,
				mouseDownSpeedBooster: 3, 
				//autoScroll: "onstart", 
				autoScrollDirection: "endlessloop", 
				autoScrollSpeed: mScrollingSpeed, 
				visibleHotSpots: "always",
				hotSpotsVisibleTime: 5,
				countOnlyClass: ".gallery_thumb_entry",
				m_gallery_margin_left: 20,
				fixed_scrollable_area_width: scrollableAreaWidth
			};
		$('.scrollableArea div.gallery_thumb_entry:first').css('margin-left','0px');
		
		// $('#zoom_container2').centerInClient();
		options.displacement = 0;
		
		$('#galleryview_container .makeMeScrollable').smoothDivScroll(options);
		$('#galleryview_container_zoom2 .makeMeScrollable').smoothDivScroll(options);
		
 		// Add hover on both hot spots
    
      $('.scrollingHotSpotRight').hover(
        function(){
          $(this).addClass('scrollingHotSpotRightVisible');
        },
        function(){
          $(this).removeClass('scrollingHotSpotRightVisible');
        }
      );
      
      $('.scrollingHotSpotLeft').hover(
        function(){
          $(this).addClass('scrollingHotSpotLeftVisible');
        },
        function(){
          $(this).removeClass('scrollingHotSpotLeftVisible');
        }
      );

		
		 $('.gallery_thumb_entry img').hover(
			function(){
			
				if ($(this).hasClass('gallery_no_hover') || typeof(isModelGallery) != 'undefined')   // no hover for last image
					return;
				
				actualID = $(this).attr("id").substr(10,$(this).attr("id").length);
				oldImageWidth = parseInt(all_small_img_widths[actualID]);
				newImageWidth = parseInt(oldImageWidth * 1.58);
				thumbURL = $(this).attr('src');
				
				$(this).attr('src', all_small_imgs[actualID]);
				$('.scrollableArea').css('width', parseInt(scrollableAreaWidth)-oldImageWidth+newImageWidth + 'px');

				$('#gallery_thumb_entry_'+actualID).animate(
					{
						width: newImageWidth
					},
					{queue:false, duration:500 }
				);
				$(this).animate(
					{
						width: newImageWidth,
						height: '158'
					},
					{queue:false, duration:500 }
				);
			},
			function(){
				if ($(this).hasClass('gallery_no_hover') || typeof(isModelGallery) != 'undefined')   // no hover for last image
					return;

				$(this).animate(
					{
						width: oldImageWidth,
						height: '100'
					},
					{queue:false, duration:500 }
				);
				$('#gallery_thumb_entry_'+actualID).animate(
					{
						width: oldImageWidth
					},
					{queue:false, duration:500 }
				);
				window.setTimeout(function(){
					$(".scrollableArea").css("width", scrollableAreaWidth);
				}, 600);
				
				$(this).attr('src', thumbURL);
			}
		);
		
		if(scrollableAreaWidth < $("#galleryview_container").width()){
			$('#galleryview_container .scrollingHotSpotLeft, #galleryview_container .scrollingHotSpotRight').remove();
		}

		// Append zoom icon
		$('#galleryview_container .zoom_icon').click(
			function(){
				greyLayer.greyLayer_show();
				var imageSrc = $('#galleryview_container .preview img').attr('src');
				var imageIndex =$('#galleryview_container .preview img').attr('data-image-index');
				
				// Set z-index from zoomview to be z-index from grey layer + 1
				var zIndex = parseInt($('#grey_layer').css('z-index')) + 1;
				
				showGalleryZoom(zIndex, imageIndex);
				updateTitle(imageIndex);
			}
		);
		
		$('.scrollableArea').css('width',scrollableAreaWidth);

    if(typeof(isModelGallery) != "undefined" && $('#m_gallery.model_gallery img[id*="gal_thumb_"]').length <= 3){
      $('.scrollingHotSpotLeft, .scrollingHotSpotRight').remove();
    }

	}
);

function updateTitle(imageIndex){
	var titleDiv = $('#zoom_container2 .headline .title');
	var allImages = $('#zoom_container2 .scrollableArea img');
	titleDiv.html(allImages.eq(imageIndex).attr('data-title'));
	
	// Update footer
	var imagePosition = parseInt(imageIndex)+1;
	var countImages = allImages.length;
	
	var replacedText = $('#zoom_container2 .footer_area .org').text().replace('#image_position#',imagePosition).replace('#count_images#',countImages);
	$('#zoom_container2 .footer_area .rep').text(replacedText);
	// Apply Cufon
	Cufon.replace('#zoom_container2 .headline .title');
}

function showGalleryZoom(zIndex, imageIndex){
	var currentImageSrc = $('#galleryview_container .preview img').attr('src')
	$('#galleryview_container_zoom2 .preview img').attr('src',currentImageSrc);
	$('#galleryview_container_zoom2 .scrollWrapper').scrollLeft(0);
	$('#galleryview_container_zoom2 .scrollWrapper').scrollLeft(72*imageIndex);
	
	// Update z-index from hotspot
	$('#galleryview_container_zoom2 .scrollingHotSpotLeft, #galleryview_container_zoom2 .scrollingHotSpotRight').css('z-index', zIndex+1);
	
	$('#zoom_container2').css('z-index',zIndex);
	$('#zoom_container2').css('visibility', 'visible');
	
}

function hideGalleryZoom(){
	var div = $('#zoom_container2');
	div.css('visibility','hidden');
	$('#galleryview_container_zoom2 .preview_area img').attr('src',''); 
	greyLayer_hide();
	
	div.find('.preview img').attr('src', '');
}


var current_galery_preview = -1;

function showGalleryZoomImg(imageIndex){
            current_galery_preview = imageIndex;
    var zIndex = parseInt($('#grey_layer').css('z-index')) + 1;
	greyLayer_show();
	var gallery_offset = $('#galleryview_container').offset();
	 $('#zoom_container2').css('top', gallery_offset.top-380);
	 $('#zoom_container2').css('left', gallery_offset.left+100);
     $('#galleryview_container_zoom2 .preview_area img').attr('src',all_imgs[imageIndex]); 
     $('#zoom_container2').css('visibility', 'visible');
     $('#zoom_container2 .headline .title').html(all_headlines[imageIndex]);
     $('#zoom_container2 .description').html(all_descriptions[imageIndex]);
     Cufon.replace('#zoom_container2 .headline .title');
            
    var num_text =  text_for_image + " " + (imageIndex+1)  + " " + text_for_of + " " + (all_imgs.length - 1);
    $('#numbering').html( num_text );
	
	$('#zoom_container2, #zoom_container2 .headline').css('width',all_img_widths[imageIndex]+ 'px');
    
            // TODO: Urlfix for Close_icon
}

function gal_next() {
            if (current_galery_preview<all_imgs.length-2)
                        return current_galery_preview+1;
            return 0;
}

function gal_prev() {
            if (current_galery_preview>0)
                        return current_galery_preview-1;
            return all_imgs.length-2;
}

// Since the headers and the links have a fixed height in the model gallery, 
// the line breaks has to be done by JavaScript by increasing the height of the model gallery.
function linkLineBreakForModelGallery(maxGalleryElements) {
    // The number of lines, which can be shown without increasing the height
    var MAX_LINES   = 4;
    // The width of one line for a headline
    var H20_WIDTH   = 245;
    // The width of one line for a link (without the left padding)
    var LINKS_WIDTH = 200;
    // The line height
    var LINE_HEIGHT = 15;
    var SCROLL_WRAPPER_HEIGHT = 283;
    var MODEL_GALLERY_HEIGHT = 265; 

    var curMaxLines = 0;

    // look at one gallery element
    for (i=0; i<maxGalleryElements; i++) {

      var galleryEntryLines = 0;
      var galleryId = "#gallery_thumb_entry_" + i;

      // Headlines h20
      $(galleryId + " .teaser_component_h20 > span").each(function() { 
         galleryEntryLines = galleryEntryLines +  Math.ceil($(this).width() / H20_WIDTH);
      });
      // Links
      $(galleryId + " .teaser_component_link_gallery > span").each(function() {    
         galleryEntryLines = galleryEntryLines +  Math.ceil($(this).width() / LINKS_WIDTH);
      });
      $(galleryId + " .teaser_component_link_call_to_action > span").each(function() {    
         galleryEntryLines = galleryEntryLines +  Math.ceil($(this).width() / LINKS_WIDTH);
      });	  
      if ( galleryEntryLines > curMaxLines) {
         curMaxLines = galleryEntryLines;
      }
    }

    if (curMaxLines > MAX_LINES) {
      var gallerviewHeight = MODEL_GALLERY_HEIGHT + ((curMaxLines-MAX_LINES)*LINE_HEIGHT);
      $("#galleryview_container").css("height",gallerviewHeight);
      var scrollWrapperHeight = SCROLL_WRAPPER_HEIGHT + ((curMaxLines-MAX_LINES)*LINE_HEIGHT);
      $(".scrollWrapper").css("height",scrollWrapperHeight);
    }
}

}catch(e){console.log('Error in m_galleryview: ' + e.description);}

// ---- m_service ----
try{ var servicePrices = null;

function servicePriceArray(){
	//associative 2-dimensional array of servicePrice objects (association groups serviceTypes)
	//e.g. servicePrices["care_cosmetic_repair"][0] contains a serivePrice object
	this.allPrices = new Object();

	this.add = function (servicePrice) {	
		if (this.allPrices[servicePrice.serviceType] === null || (typeof(this.allPrices[servicePrice.serviceType]) === 'undefined')) {
			this.allPrices[servicePrice.serviceType] = new Array();
		}
		this.allPrices[servicePrice.serviceType].push(servicePrice);
	};
	
	this.displayPrices = function(subsidiary) {
		for (sType in servicePrices.allPrices) {
			var selector = ".price_type_" + sType;
			$(selector).each(function(index) {
				var servicePrice = servicePrices.allPrices[sType][index];
				var priceToDisplay = servicePrice.defaultValue;
				
				if (subsidiary !== null && (typeof(subsidiary) !== 'undefined')) {
					var subsidiaryPrice = subsidiary.getSubsidiaryPriceByService(sType);
					if(subsidiaryPrice !== '') {
						// subsidiary price available --> display subsidiary price
						priceToDisplay = subsidiaryPrice;
					}
					// and add class 'dealer_price' to identify it as a dealer replaced price
					
				}				
				//and set price
				$(this).html(priceToDisplay);
				//required for layout
				$(this).addClass('dealer_price');			
			});
			// Apply Cufon
			Cufon.replace(selector);	
		}
	}	
}

/** data container for a single service price */
function servicePrice(elemSelector, serviceType, defaultValue){
	this.elemSelector = elemSelector;
	this.serviceType = serviceType;
	this.defaultValue = defaultValue;
	
	this.log = function() {
		console.log("Price of type " + serviceType+ " (Selector: " + this.elemSelector + ") : " + defaultValue);
	}
}

/** 
displays all prices within servicePrices (if it contains any) 
[called on document ready]
 */
function displayPrices() {
	if (servicePrices !== null) {
		/**currently disabled ... we have a race condition here s.t. cufon replace is done before price can be set
		if (miniSubsidiary.isSubsidiarySelected()) { //&& allowDealerOverwrites?
			// Daten anfordern und callback fuer die Benachrichtigung uebergeben 
			miniSubsidiary.onSubsidiaryReady(function() {
				servicePrices.displayPrices(miniSubsidiary);
			}); 
		}
		else{
		*/	
			servicePrices.displayPrices();	
		/*}*/
	}
}

/** 
Stores this service price within variable 'servicePrices'
re-implemented by mpfaehler on 08-10-2010 due to price communication errors that occurred when multiple price types occured on same page
*/
function getDealerPrice(elemSelector, serviceType, defaultValue){
	if (servicePrices === null) {
		servicePrices = new servicePriceArray();
	}
	var price = new servicePrice(elemSelector, serviceType, defaultValue);
	servicePrices.add(price);
}

function getDealerPriceOld(elemSelector, serviceType, defaultValue){	
	var subsidiaryPrice = defaultValue;
	// pruefen, ob ein Cookie existiert 
	if (miniSubsidiary.isSubsidiarySelected()) {
		// Daten anfordern und callback fuer die Benachrichtigung uebergeben 
		miniSubsidiary.onSubsidiaryReady(function() {
			// innerhalb des Callbacks kann auf Filialinfos zugegriffen werden. Die folgende Methode liefert bspw. Filialname + Adresse als String 
			var subsidiaryPrice = miniSubsidiary.getSubsidiaryPriceByService(serviceType);
			updateSubsidiaryPrice(elemSelector, serviceType, subsidiaryPrice, defaultValue);
		}); 
	}
	else{	
		updateSubsidiaryPrice(elemSelector, serviceType, subsidiaryPrice, defaultValue);	
	}	
}

function updateSubsidiaryPrice(elemSelector, serviceType, subsidiaryPrice, defaultValue){
	var priceToDisplay = defaultValue;
	if(subsidiaryPrice !== ''){
		// subsidiary price available --> display subsidiary price
		priceToDisplay = subsidiaryPrice;
	}
	var selector = '.'+elemSelector+':not(.dealer_price):last';
	// Replace price on elements that have not been replaced yet (dealer_price class not available)
	$(selector).html(priceToDisplay);
	// Apply Cufon
	Cufon.replace(selector);
	
	// and add class 'dealer_price' to identify it as a dealer replaced price
	$(selector).addClass('dealer_price');
}

function openSubsidiaryService() {
	var url = "";
	 if (miniSubsidiary.isSubsidiarySelected()) {
		 url = miniSubsidiary.getUrl() + "/service/index.html";
	 }
	 else {
		 url = getRelativeMasterPath("select_dealer/index.jsp");
	 }
	 location.href = url;
}
function openSubsidiaryServiceRequest(category) {
	var url = getRelativeMasterPath("contact/service/index.jsp?service_category_1=" + category);
	location.href = url;
}

$(document).ready(function() {
	displayPrices();
}); 


}catch(e){console.log('Error in m_service: ' + e.description);}

// ---- m_live_edit ----
try{ $(window).load(
	function(){
	
		if (typeof(window.pageCalls) !== "undefined") {
			reportStatifyError();
		}
		window.pageCalls = 1;
	
		var leButton = $('#LETBToggleButton');
		if(leButton.length>0){
			// Live edit button found --> Register onclick handler on a link found within live edit button
			
			leButton.find('a').click(handleLiveEditToggle);
			
			// Default hide live edit toolbox and live edit icons
			//var liveEditToolbox = $('#LETB');
			//if(liveEditToolbox.length>0){
			//	LETBoff(liveEditToolbox.get(0));
			//}
			
			// Hide LE Icons that are not relevant for the dealer area like: column component, etc...
			//if(isDealerArea){
			//	var hideLEIcons = 'img[title="4070.column_component.description"], #content_area .liveEditIcon:first, img[title="2137.configuration.description"]';
			//	$(hideLEIcons).parents('.ceEditIconLayout').remove();
			//}
			
			// Add hover effect on ceEditIconLayout that are visible
			
			$('.ceEditIconLayout:visible').hover(
				function(){
					$(this).parent().fadeTo('fast',0.5);
				},
				function(){
					$(this).parent().fadeTo('fast', 1);
				}
			);
			
			
			// Hack: Correct z-index of LE icons on about us page
			var thisUrl = window.location.href;
			if (thisUrl.indexOf("/about_us/") > -1) {
				$("#component_0 > div > div:first-child").css("z-index", 2);
				$("#component_0 > div > div:last-child").css("z-index", 0);
			}
		}
		
		//hideAllLE();
		
	}
);

function handleLiveEditToggle(){
	if(LiveEditToolboxIframe.LETBtoggleStatus == "on"){
		// Hide all ceEditIconLayout and <a> child
		hideAllLE();
	}
	else{
		// Show all ceEditIconLayout and <a> child
		showAllLE();
	}
}

function showAllLE(){
	$('.ceEditIconLayout').show();
	$('.ceEditIconLayout a').show();
	
	// Show all <a> with and oid attribute
	$('a[oid]').show();
	
	// Set size for Toolbox:
	$("#LETB").css("width", "275px").css("height", "275px");
}

function hideAllLE(){
	$('.ceEditIconLayout').hide();
	$('.ceEditIconLayout a').hide();
	
	// Hide all <a> with and oid attribute
	$('a[oid]').hide();
}
}catch(e){console.log('Error in m_live_edit: ' + e.description);}

// ---- m_model_comparison ----
try{ // getObjectModelData is declared in model_filter_logic.js file and contains all body and type information.
// defaultModel is declared in model_data_js.js and contains the default model defined by the market.

// This array contains all car type keys information that will be displayed
var keys2display = ['engine', 'transmission', 'max_output', 'max_torque', 'top_speed', 'acceleration_0_100', 'unladen_weight', 'max_permissible_weight', 'payload', 'luggage_capacity', 'tank_capacity', 'dimensions', 'fuel_consumption_urban', 'fuel_consumption_extra_urban', 'fuel_consumption_combined', 'co2_emission', 'basic_price', 'market_attr1'];

var pleaseSelect = '';
var details = '';
var configure = '';
var mcObjectModelData;

function initModelComparisonApplication(){
  //webkit browsers have issues when application is not initialized on document ready
  var sUserAgent = navigator.userAgent;
  if (sUserAgent.indexOf("WebKit") !== -1) {
    $(document).ready(function(){
      startModelComparisonApplication();
    });
  }
  else {
    startModelComparisonApplication();
  }
}

function startModelComparisonApplication(){
	// Perform this only if .model_comparator avalaible
	var mc = $('#model_comparator');
	if(mc.length > 0){
		// init texts only if function is defined
		if(typeof(initText) == 'function'){
			initText();
			
			mcObjectModelData = getObjectModelData();
			
			// Set default model data
			initDefaultModel();
			
			// Populate table data
			// 1- Populate drop down boxes
			populateBodyBoxes();
			
			// Add hover
			mc.find('tr.type_1, tr.type_2, tr.type_3').hover(
				function(index){
					$(this).children("td:not([class^='border_'])").addClass('hoverOn');
				} , 
				function(index){
					$(this).children("td:not([class^='border_'])").removeClass('hoverOn');
				}
			);
			
			// Show model comparator
			//$('.model_comparator').show();
			
			// Apply cufon
			Cufon.replace('#model_comparator .teaser_component_link_standard a', {hover:true});
			Cufon.replace('#line3>.first_column');
			
			// Replace select on model comparator
			var cbOptions = {
				animationType: 'fade',
				width: '100%'
			};
			
			var cbStyles = {
				comboboxContainerClass: 'comboboxContainerClass',
				comboboxValueContainerClass: 'comboboxValueContainerClass',
				comboboxValueContentClass: 'comboboxValueContentClass',
				comboboxDropDownClass: 'comboboxDropDownClass',
				comboboxDropDownButtonClass: 'comboboxDropDownButtonClass',
				comboboxDropDownItemClass: 'comboboxDropDownItemClass',
				comboboxDropDownItemHoverClass: 'comboboxDropDownItemHoverClass',
				comboboxDropDownGroupItemHeaderClass: 'comboboxDropDownGroupItemHeaderClass',
				comboboxDropDownGroupItemContainerClass: 'comboboxDropDownGroupItemContainerClass'
			};
		
			$('#body_1,#body_2,#body_3,#type_1,#type_2,#type_3').combobox(cbStyles, cbOptions);
			
		}
	}
}

function getModelAndBodyByModelCode(model_code){
	for(type in mcObjectModelData){
		for(model in mcObjectModelData[type]){
			if(model_code == mcObjectModelData[type][model]['model_code'])
				return {'body': type, 'type': model};
		}
	}
	
	return undefined;
}

// Set default model
// First we try to read the default from the url of the page
// If we cannot find any default we use to one set by the market
function initDefaultModel(){

	// Read query parameters
	var query = getQueryParams();
	var model_code_1 = query['model_code_1'];
	var model_code_2 = query['model_code_2'];

	var selectedData;
	
	// Check if the bodytype/model combination exists
	try{
		var def;
		var index = -1;
		// Evaluate model_code_1 and model_code_2.
		// Order of evaluation is the following:
		// 1- model_code_1 and model_code_2
		// 2- Page default (miniModel & miniBodyType)
		// 3- Market default
		
		// Evaluate model_code_1
		if(model_code_1 != undefined){
			def = getModelAndBodyByModelCode(model_code_1)
			if(def != undefined)
				selectedData = mcObjectModelData[def.body][def.type];
				
			if(selectedData != undefined){
				index++;
				defaultModel[index] = def;
			}
		}
		
		// Evaluate model_code_2
		if(model_code_2 != undefined){
			def = getModelAndBodyByModelCode(model_code_2)
			if(def != undefined)
				selectedData = mcObjectModelData[def.body][def.type];

			if(selectedData != undefined){
				index++;
				defaultModel[index] = def;
			}
		}
		
		if(index==-1){
			// model_code_1 and model_code_2 are not valid. Evaluate page default (miniModel & miniBodyType)
			// Get the model
			var type = miniModel;
			// Get the body type
			var body = miniBodyType;
			
			selectedData = mcObjectModelData[body][type];
			if(selectedData != undefined){
				// bodytype/model combination exists --> Overwrite the defaults defined by the market
				defaultModel[0].body = body;
				defaultModel[0].type = type;
			}
		}
	}
	catch(err){
	}
}

function setValue(selector, value){
	var item = $(selector);
	item.val(value);
	
	var htmlItem = item.get()[0];
	
	if(htmlItem.internalCombobox != undefined){
		htmlItem.internalCombobox.update();
	}
}

function initDefaultValues(){
	// Set default body from the first body drop down box...
	setValue('#body_1', defaultModel[0].body.toLowerCase());
	// ... and from others body_2 and body_3
	setValue('#body_2', defaultModel[1].body.toLowerCase());
	setValue('#body_3', defaultModel[2].body.toLowerCase());
	
	// ... and populate type boxes for first car
	populateTypeBoxes($('#body_1'), 'type_1');
	
	// Set the default type from the first type drop down box...
	setValue('#type_1', defaultModel[0].type.toLowerCase());
	// ... and from others type_2 and type_3
	setValue('#type_2', defaultModel[1].type.toLowerCase());
	setValue('#type_3', defaultModel[2].type.toLowerCase());
	
	// ... and populate data
	populateTypeData($('#type_1'), 'body_1');
}

function populateBodyBoxes(){
	// Populate drop down boxes
	for(var i=1;i<=3;i++){
		addOption('-1', pleaseSelect, 'body_'+i, false);
		addOption('-1', pleaseSelect, 'type_'+i, false);
	}

	for(var mybody in mcObjectModelData){
		var selected = false;
		for(var i=1;i<=3;i++){
			if(mybody==defaultModel[i-1].body)
				selected = true;
			else
				selected = false;
				
			addOption(mybody, bodyIdsToBodyName[mybody], 'body_'+i, selected);
			
			if(selected){
				// Populate type boxes for first car
				populateTypeBoxes($('#body_'+i), 'type_'+i, defaultModel[i-1].type);
			}
		}
	}
}

function addOption(value, label, parentId, selected){
	if(selected)
		$('<option/>').attr('selected','true').attr('value', value).append(label).appendTo('#'+parentId);
	else
		$('<option/>').attr('value', value).append(label).appendTo('#'+parentId);
}

function populateTypeBoxes(parent, childId, defaultValue){
	//populateTypeDataByData(columnNo);
	
	// Get the selected value
	var selectedBody = mcObjectModelData[$(parent).val()];
	populateTypeBoxByBody(parent, selectedBody, childId, defaultValue);
	
	resizeBoxes();
}

function populateTypeBoxByBody(parent, body, childId, defaultValue){
	
	// Clear option list first...
	$('#'+childId).empty();
	addOption('-1', pleaseSelect, childId);
	
	if(body != undefined){
		// Enable only if body is not undefined
		$('#'+childId).removeAttr('disabled');
	}
	else{
		// Otherwise disable
		$('#'+childId).attr('disabled','true');
	}
	
	// ... And populate it again with new entries. Display value saved in engine attribute
	for(type in body){
		addOption(type, body[type].engine, childId, (type==defaultValue));
		
		if(type==defaultValue)
			populateTypeData($('#'+childId), parent.attr('id'));
	}
	
	var htmlItem = $('#'+childId).get()[0];
	
	if(htmlItem.internalCombobox != undefined){
		htmlItem.internalCombobox.update();
	}
}

function populateTypeData(element, parentId){
	var parts = parentId.split('_');
	var columnNo = parseInt(parts[1], 10) + 1;
	
	var selectedType = $(element).val();
	
	if(selectedType === ''){
		populateTypeDataByData(columnNo);
	}
	else{
		var body = $('#'+parentId).val();
		var selectedBody = mcObjectModelData[body];
		if(selectedBody != undefined){
			var selectedData = selectedBody[selectedType];
			if(selectedData != undefined){
				selectedData['body'] = body;
				selectedData['type'] = selectedType;
			
				populateTypeDataByData(columnNo, selectedData);
			}
		}
	}
	
	resizeBoxes();
}

function resizeBoxes(){
	$('#model_comparator .comboboxDropDownClass').css('width','236px');
	$('#model_comparator .comboboxValueContentClass').css('top','4px');
}

// Get image from a model from CoSy
function getModelImage(selectedData){
	return selectedData.model_comparison_img;
}
var cols = {'2': 'second_column', '3': 'third_column',  '4': 'fourth_column'};
var puffer = {};

function populateTypeDataByData(columnNo, selectedData){
	var imgElement = $('#img_'+(columnNo-1)+' > img');
	
	if(selectedData){
		var details_url = selectedData.model_comparison_financing_link;
	
		// Set details link
		$('#ln_'+(columnNo-1)+' .details_link a').attr('href', details_url);
		
		// Set configuration link.
		// 		1- Build the link object
		var link = {href: baseConfiguratorLink};
		
		// 		2- Set modelCode 
		modelCode = selectedData.model_code;
		
		// 		3- Let getTargetUrlByType build the complete URL to the configurator.
		getTargetUrlByType(link, 'vco');
		
		//		3- Set the link
		$('#ln_'+(columnNo-1)+' .configure_link a').attr('href', link.href);
		
		// Set model image per css background property
		imgElement.attr('src',getModelImage(selectedData));
	}
	
	else{
		// Unset details link
		$('#ln_'+(columnNo-1)+' .details_link a').attr('href','javascript:void(0)');
		
		// Unset configuration link
		$('#ln_'+(columnNo-1)+' .configure_link a').attr('href','javascript:void(0)');
		
		// Unset css background property from model image
		imgElement.attr('src',getRelativeWebsiteRootPath('/_common/_img/01_framework/spacer.gif'));
	}
	
	var col = cols[''+columnNo];
	
	for(key in keys2display){
		var keyName = keys2display[key];
		var keyValue = selectedData==undefined ? '&nbsp;' : selectedData[keyName];
		// Add one to columnNo because of the border-left td
		var colKey = '#'+keyName+' > .'+col;
		
		if(puffer[colKey] === undefined){
			puffer[colKey] = $('#'+keyName+' > .'+col);
		}
		
		puffer[colKey].html(keyValue+'&nbsp;');
	}
}
}catch(e){console.log('Error in m_model_comparison: ' + e.description);}

// ---- inputfield_replacements ----
try{ var cbStyles = {
	comboboxContainerClass: 'comboboxContainerClass',
	comboboxValueContainerClass: 'comboboxValueContainerClass',
	comboboxValueContentClass: 'comboboxValueContentClass',
	comboboxDropDownClass: 'comboboxDropDownClass',
	comboboxDropDownButtonClass: 'comboboxDropDownButtonClass',
	comboboxDropDownItemClass: 'comboboxDropDownItemClass',
	comboboxDropDownItemHoverClass: 'comboboxDropDownItemHoverClass',
	comboboxDropDownGroupItemHeaderClass: 'comboboxDropDownGroupItemHeaderClass',
	comboboxDropDownGroupItemContainerClass: 'comboboxDropDownGroupItemContainerClass'
};

var cbOptions = {
	animationType: 'fade',
	width: '100%'
};

$(document).ready(function () {	
	$('select:visible').each(
		function(index){
			var sl = $(this);
			var parentMc = sl.parents('.model_comparator');
			// The current select does not have model_comparator as parent --> replace
			if(parentMc.length == 0){
				replaceSelect(sl);
			}
		}
	);
});

function replaceSelect(sl){
	sl.combobox(cbStyles, cbOptions);
	sl.parents('.comboboxContainerClass').children('div').css('width','100%');
}
}catch(e){console.log('Error in inputfield_replacements: ' + e.description);}

// ---- m_special_offers ----
try{ $(document).ready(function(){
    if (window['subsidiary_selected_text'] == undefined)
		return;
	
	var subsidiaryURL = "";
	if (miniSubsidiary.isSubsidiarySelected()) {			
		miniSubsidiary.onSubsidiaryReady(function() {
			subsidiaryURL = miniSubsidiary.getUrl();	
			if (subsidiaryURL !== ""){
				subsidiaryURL = subsidiaryURL + 'special_offers/index.html';
				//replace href and link text
				$("#select_dealer_link").attr("href", subsidiaryURL);
				$("#select_dealer_link").text(subsidiary_selected_text);
				Cufon.replace('#select_dealer_link');
				Cufon.refresh('#select_dealer_link');
				$("#select_dealer_link").css("visibility", "visible");
			}
		});
	}
	else {
		$("#select_dealer_link").css("visibility", "visible");
	}
		
});	
}catch(e){console.log('Error in m_special_offers: ' + e.description);}

// ---- subsidiary_list ----
try{ 
var subsidiaries=new Array('00381_3','00737_4','30174_1','24342_1','00114_3','00198_1','31704_1','00598_1','00391_1','00391_10','28909_1','00357_1','00357_2','32913_1','00341_1','00391_3','02438_1','30380_1','00502_1','03821_1','00430_4','01761_1','28747_1','00120_4','01052_1','03433_1','28271_1','34842_1','01032_1','04648_1','04712_3','00250_3','33206_1','00406_4','32292_1','23463_3','32292_2','00250_22','00250_24','00250_12','00250_20','04712_2','30310_1','29344_1','04146_1','01489_1','07322_1','04746_11','28864_1','33696_1','00250_4','01570_1','00120_9','33251_2','04502_1','00430_3','33269_1','26508_1','28728_1','04603_1','00316_1','35372_1','27916_2','00525_2','01822_1','00901_2','32774_1','04071_1','04107_13','00396_8','30976_1','33364_1','31334_1','00440_2','00268_1','25997_1','03415_1','28041_1','34052_1','34052_2','01415_1','34244_1','04603_4','01419_1','21920_1','32320_2','01416_1','03858_1','32929_2','02801_2','01024_1','27921_1','04703_1','30291_1','28269_1','00924_1','27987_1','01911_3','23368_1','27916_1','00738_1','04746_15','04210_1','29337_1','01868_1','00120_6','31668_1','07340_2','31227_1','01047_1','02436_1','00916_1','35090_1','31585_1','04605_7','04605_14','01872_2','34894_1','00074_16','00449_1','33229_1','31585_2','07466_2','31585_3','04605_1','04536_1','01019_1','28964_1','00120_5','07340_4','00186_1','04605_11','02277_1','32660_2','36259_1','30315_1','00193_1','04603_3','01288_6','00074_12','00083_9','00083_10','00083_5','01288_1','00089_8','31585_4','00074_8','00074_1','00089_1','00089_5','00089_2','00085_2','00074_5','00074_3','00083_2','01288_2','04755_2','04755_1','01911_5','01066_2','23470_6','23470_4','04746_14','30637_5','01064_1','01064_2','24342_4','24342_5','00120_8','00508_4','01459_1','33854_3','00281_1','00433_1','34232_1','00224_1','04746_1','00116_1','00096_1','00887_1','27040_1','24342_3','00381_1','22177_1','02822_1','00263_1','23337_1','00104_1','02801_1','00104_2','00495_1','04709_1','26636_3','03454_1','04372_1','30636_1','02429_2','01898_1','00893_1','25742_3','28323_1','01911_1','00607_1','00795_1','25742_1','04109_6','00161_2','00530_2','00153_1','01188_1','07830_1','02710_1','02341_1','01032_4','12345_2','12345_1','35232_1','00508_1','07340_6','32660_1','33501_1','23309_1','04605_4','04818_1','00114_1','00232_1','00737_10','00391_8','31117_1','00901_5','01696_1','00901_6','04508_1','00742_1','00901_7','31099_1','01914_1','04605_13','04605_8','04605_10','21887_1','26636_5','04605_12','04605_5','22406_1','26505_1','02813_1','30637_1','30637_2','00316_2','26636_2','04605_9','22807_1','33952_1','23463_1','00406_1','24604_1','33275_1','01911_4','28531_1','00139_1','04111_1','23303_1','23969_1','22481_1','07315_10','03846_1','32929_1','35644_1','00250_10','29150_1','32320_1','21322_1','01859_1','01859_5','00536_1','35232_2','02378_1','35225_1','35404_1','35232_4','04413_1','07466_12','23267_1','01263_15','00332_3','00163_1','00163_4','34233_1','35358_1','32393_1','04712_1','02428_1','01263_1','01263_13','01263_3','00125_1','04670_1','01263_10','01263_2','23456_1','01413_1','01569_1','01263_5','04107_6','00920_1','02732_1','00737_8','00131_2','04107_3','00430_1','00084_3','01066_1','04543_1','04543_4','35352_1','23363_1','02436_3','00131_1','36515_1','30778_4','02436_4','02436_2','35351_1','34917_2','34917_1','01263_18','35354_1','30778_5','00841_1','03813_1','02606_1','00396_1','35658_1','00074_15','01861_1','00525_1','00083_1','28864_2','04107_9','01443_1','01443_6','01443_5','04119_4','04119_1','00084_6','36028_1','01822_3','54321_1','01872_1','00250_13','00081_4','07317_1','00081_6','07466_10','04543_5','01573_1','00270_5','00027_1','00027_2','00027_5','00027_8','00027_4','23470_5','04582_1','00084_1','01548_5','00618_1','35003_1','20512_1','32112_1','30635_1','00440_1','00651_1','00085_5','01806_1','00911_1','01288_5','01806_2','00250_15','00911_3','00250_28','04107_1','23372_1','27923_1','07825_2','00191_1','00081_3','00081_1','37177_1','00250_1','33099_2','24342_6','28454_1','03829_1','00866_1','00866_6','00866_3','00866_7','00866_5','01574_1','00923_1','01068_1','00866_4','00167_1','00085_1','03788_1','07833_1','00353_1','00250_17','00141_2','00120_1','01965_2','00141_1');
}catch(e){console.log('Error in subsidiary_list: ' + e.description);}

// ---- contact_form_tracking ----
try{ 
var form_tracking = {};
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/information/index.jsp')] = 'rfi';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/test_drive/index.jsp')] = 'tda';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/quote/index.html')] = 'rfo';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/service/index.jsp')] = 'rfs';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/accessories/index.jsp')] = 'rfa';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/request/index.html')] = 'rfc';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/finance/index.jsp')] = 'rfsf';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/corporate_client/index.jsp')] = 'corporate_clients';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/dealer/index.jsp')] = 'rfd';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/website/index.jsp')] = 'website';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/mini/index.jsp')] = 'brand_request';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/general/index.jsp')] = 'general_request';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/index.html')] = 'rfc';
form_tracking[miniUrlFix.fixAbsoluteUrl('/used_cars/trade_in/index.jsp')] = 'wwym';
form_tracking[miniUrlFix.fixAbsoluteUrl('/motorsport/mini_challenge/germany/tickets/index.jsp')] = 'mini_challenge';
form_tracking[miniUrlFix.fixAbsoluteUrl('/gewinnspiel/_iaa_special/index.jsp')] = 'iaa_special';
form_tracking[miniUrlFix.fixAbsoluteUrl('/gewinnspiel/iglu_formular/index.jsp')] = 'iglu_gewinnspiel';
form_tracking[miniUrlFix.fixAbsoluteUrl('/gewinnspiel/weihnachtsgewinnspiel_2011/index.jsp')] = 'xmas_2011_gewinnspiel';

}catch(e){console.log('Error in contact_form_tracking: ' + e.description);}

// ---- webtrends ----
try{ // WebTrends SmartSource Data Collector Tag
// Version: 8.6.2     
// Tag Builder Version: 3.0
// Created: 4/10/2010 12:48:17 PM

function WebTrends(){
	var that=this;
	// begin: user modifiable
	this.dcsid="dcsggbtb4vz5bdnwnw4pqceyg_8m4q";
	this.domain="statse.webtrendslive.com";
	this.timezone=1;
	this.fpcdom=".mini.com";
	this.onsitedoms="";
	this.downloadtypes="xls,xlsx,doc,docx,pdf,txt,csv,zip,jpg,mpeg";
	this.navigationtag="div,table";
	this.trackevents=true;
	this.evi={cookie:"MYCOOKIE",qp:"DCS.dcsqry",crumb:"",sep:""};
	this.trimoffsiteparams=true;
	this.enabled=true;
	this.i18n=false;
	this.fpc="WT_FPC";
	this.paidsearchparams="gclid";
	// end: user modifiable
	this.DCS={};
	this.WT={};
	this.DCSext={};
	this.images=[];
	this.index=0;
	this.exre=(function(){return(window.RegExp?new RegExp("dcs(uri)|(ref)|(aut)|(met)|(sta)|(sip)|(pro)|(byt)|(dat)|(p3p)|(cfg)|(redirect)|(cip)","i"):"");})();
	this.re=(function(){return(window.RegExp?(that.i18n?{"%25":/\%/g}:{"%09":/\t/g,"%20":/ /g,"%23":/\#/g,"%26":/\&/g,"%2B":/\+/g,"%3F":/\?/g,"%5C":/\\/g,"%22":/\"/g,"%7F":/\x7F/g,"%A0":/\xA0/g}):"");})();
}
WebTrends.prototype.dcsGetId=function(){
	if (this.enabled&&(document.cookie.indexOf(this.fpc+"=")==-1)&&(document.cookie.indexOf("WTLOPTOUT=")==-1)){
		document.write("<scr"+"ipt type='text/javascript' src='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+this.domain+"/"+this.dcsid+"/wtid.js"+"'><\/scr"+"ipt>");
	}
}
WebTrends.prototype.dcsGetCookie=function(name){
	var cookies=document.cookie.split("; ");
	var cmatch=[];
	var idx=0;
	var i=0;
	var namelen=name.length;
	var clen=cookies.length;
	for (i=0;i<clen;i++){
		var c=cookies[i];
		if ((c.substring(0,namelen+1))==(name+"=")){
			cmatch[idx++]=c;
		}
	}
	var cmatchCount=cmatch.length;
	if (cmatchCount>0){
		idx=0;
		if ((cmatchCount>1)&&(name==this.fpc)){
			var dLatest=new Date(0);
			for (i=0;i<cmatchCount;i++){
				var lv=parseInt(this.dcsGetCrumb(cmatch[i],"lv"));
				var dLst=new Date(lv);
				if (dLst>dLatest){
					dLatest.setTime(dLst.getTime());
					idx=i;
				}
			}
		}
		return unescape(cmatch[idx].substring(namelen+1));
	}
	else{
		return null;
	}
}
WebTrends.prototype.dcsGetCrumb=function(cval,crumb,sep){
	var aCookie=cval.split(sep||":");
	for (var i=0;i<aCookie.length;i++){
		var aCrumb=aCookie[i].split("=");
		if (crumb==aCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
WebTrends.prototype.dcsGetIdCrumb=function(cval,crumb){
	var id=cval.substring(0,cval.indexOf(":lv="));
	var aCrumb=id.split("=");
	for (var i=0;i<aCrumb.length;i++){
		if (crumb==aCrumb[0]){
			return aCrumb[1];
		}
	}
	return null;
}
WebTrends.prototype.dcsIsFpcSet=function(name,id,lv,ss){
	var c=this.dcsGetCookie(name);
	if (c){
		return ((id==this.dcsGetIdCrumb(c,"id"))&&(lv==this.dcsGetCrumb(c,"lv"))&&(ss==this.dcsGetCrumb(c,"ss")))?0:3;
	}
	return 2;
}
WebTrends.prototype.dcsFPC=function(){
	if (document.cookie.indexOf("WTLOPTOUT=")!=-1){
		return;
	}
	var WT=this.WT;
	var name=this.fpc;
	var dCur=new Date();
	var adj=(dCur.getTimezoneOffset()*60000)+(this.timezone*3600000);
	dCur.setTime(dCur.getTime()+adj);
	var dExp=new Date(dCur.getTime()+315360000000);
	var dSes=new Date(dCur.getTime());
	WT.co_f=WT.vtid=WT.vtvs=WT.vt_f=WT.vt_f_a=WT.vt_f_s=WT.vt_f_d=WT.vt_f_tlh=WT.vt_f_tlv="";
	if (document.cookie.indexOf(name+"=")==-1){
		if ((typeof(gWtId)!="undefined")&&(gWtId!="")){
			WT.co_f=gWtId;
		}
		else if ((typeof(gTempWtId)!="undefined")&&(gTempWtId!="")){
			WT.co_f=gTempWtId;
			WT.vt_f="1";
		}
		else{
			WT.co_f="2";
			var curt=dCur.getTime().toString();
			for (var i=2;i<=(32-curt.length);i++){
				WT.co_f+=Math.floor(Math.random()*16.0).toString(16);
			}
			WT.co_f+=curt;
			WT.vt_f="1";
		}
		if (typeof(gWtAccountRollup)=="undefined"){
			WT.vt_f_a="1";
		}
		WT.vt_f_s=WT.vt_f_d="1";
		WT.vt_f_tlh=WT.vt_f_tlv="0";
	}
	else{
		var c=this.dcsGetCookie(name);
		var id=this.dcsGetIdCrumb(c,"id");
		var lv=parseInt(this.dcsGetCrumb(c,"lv"));
		var ss=parseInt(this.dcsGetCrumb(c,"ss"));
		if ((id==null)||(id=="null")||isNaN(lv)||isNaN(ss)){
			return;
		}
		WT.co_f=id;
		var dLst=new Date(lv);
		WT.vt_f_tlh=Math.floor((dLst.getTime()-adj)/1000);
		dSes.setTime(ss);
		if ((dCur.getTime()>(dLst.getTime()+1800000))||(dCur.getTime()>(dSes.getTime()+28800000))){
			WT.vt_f_tlv=Math.floor((dSes.getTime()-adj)/1000);
			dSes.setTime(dCur.getTime());
			WT.vt_f_s="1";
		}
		if ((dCur.getDay()!=dLst.getDay())||(dCur.getMonth()!=dLst.getMonth())||(dCur.getYear()!=dLst.getYear())){
			WT.vt_f_d="1";
		}
	}
	WT.co_f=escape(WT.co_f);
	WT.vtid=(typeof(this.vtid)=="undefined")?WT.co_f:(this.vtid||"");
	WT.vtvs=(dSes.getTime()-adj).toString();
	var expiry="; expires="+dExp.toGMTString();
	var cur=dCur.getTime().toString();
	var ses=dSes.getTime().toString();
	document.cookie=name+"="+"id="+WT.co_f+":lv="+cur+":ss="+ses+expiry+"; path=/"+(((this.fpcdom!=""))?("; domain="+this.fpcdom):(""));
	var rc=this.dcsIsFpcSet(name,WT.co_f,cur,ses);
	if (rc!=0){
		WT.co_f=WT.vtvs=WT.vt_f_s=WT.vt_f_d=WT.vt_f_tlh=WT.vt_f_tlv="";
		if (typeof(this.vtid)=="undefined"){
			WT.vtid="";
		}
		WT.vt_f=WT.vt_f_a=rc;
    }
}
WebTrends.prototype.dcsIsOnsite=function(host){
	if (host.length>0){
	    host=host.toLowerCase();
	    if (host==window.location.hostname.toLowerCase()){
		    return true;
	    }
	    if (typeof(this.onsitedoms.test)=="function"){
		    return this.onsitedoms.test(host);
	    }
	    else if (this.onsitedoms.length>0){
		    var doms=this.dcsSplit(this.onsitedoms);
		    var len=doms.length;
		    for (var i=0;i<len;i++){
			    if (host==doms[i]){
			        return true;
			    }
		    }
	    }
	}
	return false;
}
WebTrends.prototype.dcsTypeMatch=function(pth, typelist){
	var type=pth.toLowerCase().substring(pth.lastIndexOf(".")+1,pth.length);
	var types=this.dcsSplit(typelist);
	var tlen=types.length;	
	for (var i=0;i<tlen;i++){
		if (type==types[i]){
			return true;
		}
	}
	return false;
}
WebTrends.prototype.dcsEvt=function(evt,tag){
	var e=evt.target||evt.srcElement;
	while (e.tagName&&(e.tagName.toLowerCase()!=tag.toLowerCase())){
		e=e.parentElement||e.parentNode;
	}
	return e;
}
WebTrends.prototype.dcsNavigation=function(evt){
	var id="";
	var cname="";
	var elems=this.dcsSplit(this.navigationtag);
	var elen=elems.length;	
	var i,e,elem;
	for (i=0;i<elen;i++){
		elem=elems[i];
		if (elem.length){
			e=this.dcsEvt(evt,elem);
			id=(e.getAttribute&&e.getAttribute("id"))?e.getAttribute("id"):"";
			cname=e.className||"";
			if (id.length||cname.length){
				break;
			}
		}
	}
	return id.length?id:cname;
}
WebTrends.prototype.dcsBind=function(event,func){
	if ((typeof(func)=="function")&&document.body){
		if (document.body.addEventListener){
			document.body.addEventListener(event, func.wtbind(this), true);
		}
		else if(document.body.attachEvent){
			document.body.attachEvent("on"+event, func.wtbind(this));
		}
	}
}
WebTrends.prototype.dcsET=function(){
	var e=(navigator.appVersion.indexOf("MSIE")!=-1)?"click":"mousedown";
	this.dcsBind(e,this.dcsDownload);
	this.dcsBind(e,this.dcsMailTo);
	this.dcsBind(e,this.dcsOffsite);
	this.dcsBind("contextmenu",this.dcsRightClick);
}
WebTrends.prototype.dcsMultiTrack=function(){
	var args=dcsMultiTrack.arguments?dcsMultiTrack.arguments:arguments;
	if (args.length%2==0){
		this.dcsSetProps(args);
		var dCurrent=new Date();
		this.DCS.dcsdat=dCurrent.getTime();
		this.dcsFPC();
		this.dcsTag();
	}
}
WebTrends.prototype.dcsCleanUp=function(){
	this.DCS={};
	this.WT={};
	this.DCSext={};
	if (arguments.length%2==0){
		this.dcsSetProps(arguments);
	}
}
WebTrends.prototype.dcsSetProps=function(args){
	for (var i=0;i<args.length;i+=2){
		if (args[i].indexOf('WT.')==0){
			this.WT[args[i].substring(3)]=args[i+1];
		}
		else if (args[i].indexOf('DCS.')==0){
			this.DCS[args[i].substring(4)]=args[i+1];
		}
		else if (args[i].indexOf('DCSext.')==0){
			this.DCSext[args[i].substring(7)]=args[i+1];
		}
	}
}
WebTrends.prototype.dcsSplit=function(list){
	var items=list.toLowerCase().split(",");
	var len=items.length;
	for (var i=0;i<len;i++){
		items[i]=items[i].replace(/^\s*/,"").replace(/\s*$/,"");
	}
	return items;
}
// Code section for Track clicks to download links.
WebTrends.prototype.dcsDownload=function(evt){
	evt=evt||(window.event||"");
	if (evt&&((typeof(evt.which)!="number")||(evt.which==1))){
		var e=this.dcsEvt(evt,"A");
		if (e.href){
		    var hn=e.hostname?(e.hostname.split(":")[0]):"";
		    if (this.dcsIsOnsite(hn)&&this.dcsTypeMatch(e.pathname,this.downloadtypes)){
		        var qry=e.search?e.search.substring(e.search.indexOf("?")+1,e.search.length):"";
		        var pth=e.pathname?((e.pathname.indexOf("/")!=0)?"/"+e.pathname:e.pathname):"/";
		        var ttl="";
		        var text=document.all?e.innerText:e.text;
		        var img=this.dcsEvt(evt,"IMG");
		        if (img.alt){
			        ttl=img.alt;
		        }
		        else if (text){
			        ttl=text;
		        }
		        else if (e.innerHTML){
			        ttl=e.innerHTML;
		        }
		        this.dcsMultiTrack("DCS.dcssip",hn,"DCS.dcsuri",pth,"DCS.dcsqry",e.search||"","WT.ti","Download:"+ttl,"WT.dl","20","WT.nv",this.dcsNavigation(evt));
		        this.DCS.dcssip=this.DCS.dcsuri=this.DCS.dcsqry=this.WT.ti=this.WT.dl=this.WT.nv="";
		    }
		}
	}
}
// Code section for Track right clicks to download links.
WebTrends.prototype.dcsRightClick=function(evt){
	evt=evt||(window.event||"");
	if (evt){
		var btn=evt.which||evt.button;
		if ((btn!=1)||(navigator.userAgent.indexOf("Safari")!=-1)){
			var e=this.dcsEvt(evt,"A");
			if ((typeof(e.href)!="undefined")&&e.href){
				if ((typeof(e.protocol)!="undefined")&&e.protocol&&(e.protocol.indexOf("http")!=-1)){
					if ((typeof(e.pathname)!="undefined")&&this.dcsTypeMatch(e.pathname,this.downloadtypes)){
						var pth=e.pathname?((e.pathname.indexOf("/")!=0)?"/"+e.pathname:e.pathname):"/";
						var hn=e.hostname?(e.hostname.split(":")[0]):"";
						this.dcsMultiTrack("DCS.dcssip",hn,"DCS.dcsuri",pth,"DCS.dcsqry","","WT.ti","RightClick:"+pth,"WT.dl","25");
						this.DCS.dcssip=this.DCS.dcsuri=this.WT.ti=this.WT.dl=this.WT.nv="";
					}
				}
			}
		}
	}
}
// Code section for Track clicks to MailTo links.
WebTrends.prototype.dcsMailTo=function(evt){
	evt=evt||(window.event||"");
	if (evt&&((typeof(evt.which)!="number")||(evt.which==1))){
		var e=this.dcsEvt(evt,"A");
		if (e.href&&e.protocol){
			var qry=e.search?e.search.substring(e.search.indexOf("?")+1,e.search.length):"";
			if (e.protocol.toLowerCase()=="mailto:"){
				this.dcsMultiTrack("DCS.dcssip","","DCS.dcsuri",e.href,"WT.ti","MailTo:"+e.innerHTML,"WT.dl","23","WT.nv",this.dcsNavigation(evt));
				this.DCS.dcssip=this.DCS.dcsuri=this.WT.ti=this.WT.dl=this.WT.nv="";
			}
		}
	}
}
// Code section for Track clicks to links leading offsite.
WebTrends.prototype.dcsOffsite=function(evt){
	evt=evt||(window.event||"");
	if (evt&&((typeof(evt.which)!="number")||(evt.which==1))){
		var e=this.dcsEvt(evt,"A");
		if (e.href){
		    var hn=e.hostname?(e.hostname.split(":")[0]):"";
		    var pr=e.protocol||"";
		    if ((hn.length>0)&&(pr.indexOf("http")==0)&&!this.dcsIsOnsite(hn)){
			    var qry=e.search?e.search.substring(e.search.indexOf("?")+1,e.search.length):"";
			    var pth=e.pathname?((e.pathname.indexOf("/")!=0)?"/"+e.pathname:e.pathname):"/";
			    this.dcsMultiTrack("DCS.dcssip",hn,"DCS.dcsuri",pth,"DCS.dcsqry",this.trimoffsiteparams?"":qry,"DCS.dcsref",window.location,"WT.ti","Offsite:"+hn+pth+"?"+qry,"WT.dl","24","WT.nv",this.dcsNavigation(evt));
			    this.DCS.dcssip=this.DCS.dcsuri=this.DCS.dcsqry=this.DCS.dcsref=this.WT.ti=this.WT.dl=this.WT.nv="";
		    }
		}
	}
}

// Code section for Assign cookie to query paraemter.
WebTrends.prototype.dcsEvi=function(){
	var t=this;
	var evi=t.evi;
	var qp=evi.qp;
	var c=t.dcsGetCookie(evi.cookie);
	if (c){
		if ((evi.crumb.length>0)&&(evi.sep.length>0)){
			c=t.dcsGetCrumb(c,evi.crumb,evi.sep);
		}
		if (c){
			if (qp.indexOf("WT.")==0){
				t.WT[qp.substring(3)]=c;
			}
			else if (qp.indexOf("DCS.")==0){
				t.DCS[qp.substring(4)]=c;
			}
			else if (qp.indexOf("DCSext.")==0){
				t.DCSext[qp.substring(7)]=c;
			}
			else{
				t.DCSext[qp]=c;
			}
		}
	}
}
WebTrends.prototype.dcsAdv=function(){
	if (this.trackevents&&(typeof(this.dcsET)=="function")){
		if (window.addEventListener){
			window.addEventListener("load",this.dcsET.wtbind(this),false);
		}
		else if (window.attachEvent){
			window.attachEvent("onload",this.dcsET.wtbind(this));
		}
	}
	this.dcsFPC();
	this.dcsEvi();
}
WebTrends.prototype.dcsVar=function(){
	var dCurrent=new Date();
	var WT=this.WT;
	var DCS=this.DCS;
	WT.tz=parseInt(dCurrent.getTimezoneOffset()/60*-1)||"0";
	WT.bh=dCurrent.getHours()||"0";
	WT.ul=navigator.appName=="Netscape"?navigator.language:navigator.userLanguage;
	if (typeof(screen)=="object"){
		WT.cd=navigator.appName=="Netscape"?screen.pixelDepth:screen.colorDepth;
		WT.sr=screen.width+"x"+screen.height;
	}
	if (typeof(navigator.javaEnabled())=="boolean"){
		WT.jo=navigator.javaEnabled()?"Yes":"No";
	}
	if (document.title){
		if (window.RegExp){
			var tire=new RegExp("^"+window.location.protocol+"//"+window.location.hostname+"\\s-\\s");
			WT.ti=document.title.replace(tire,"");
		}
		else{
			WT.ti=document.title;
		}
	}
	WT.js="Yes";
	WT.jv=(function(){
		var agt=navigator.userAgent.toLowerCase();
		var major=parseInt(navigator.appVersion);
		var mac=(agt.indexOf("mac")!=-1);
		var ff=(agt.indexOf("firefox")!=-1);
		var ff0=(agt.indexOf("firefox/0.")!=-1);
		var ff10=(agt.indexOf("firefox/1.0")!=-1);
		var ff15=(agt.indexOf("firefox/1.5")!=-1);
		var ff20=(agt.indexOf("firefox/2.0")!=-1);
		var ff3up=(ff&&!ff0&&!ff10&!ff15&!ff20);
		var nn=(!ff&&(agt.indexOf("mozilla")!=-1)&&(agt.indexOf("compatible")==-1));
		var nn4=(nn&&(major==4));
		var nn6up=(nn&&(major>=5));
		var ie=((agt.indexOf("msie")!=-1)&&(agt.indexOf("opera")==-1));
		var ie4=(ie&&(major==4)&&(agt.indexOf("msie 4")!=-1));
		var ie5up=(ie&&!ie4);
		var op=(agt.indexOf("opera")!=-1);
		var op5=(agt.indexOf("opera 5")!=-1||agt.indexOf("opera/5")!=-1);
		var op6=(agt.indexOf("opera 6")!=-1||agt.indexOf("opera/6")!=-1);
		var op7up=(op&&!op5&&!op6);
		var jv="1.1";
		if (ff3up){
			jv="1.8";
		}
		else if (ff20){
			jv="1.7";
		}
		else if (ff15){
			jv="1.6";
		}
		else if (ff0||ff10||nn6up||op7up){
			jv="1.5";
		}
		else if ((mac&&ie5up)||op6){
			jv="1.4";
		}
		else if (ie5up||nn4||op5){
			jv="1.3";
		}
		else if (ie4){
			jv="1.2";
		}
		return jv;
	})();
	WT.ct="unknown";
	if (document.body&&document.body.addBehavior){
		try{
			document.body.addBehavior("#default#clientCaps");
			WT.ct=document.body.connectionType||"unknown";
			document.body.addBehavior("#default#homePage");
			WT.hp=document.body.isHomePage(location.href)?"1":"0";
		}
		catch(e){
		}
	}
	if (document.all){
		WT.bs=document.body?document.body.offsetWidth+"x"+document.body.offsetHeight:"unknown";
	}
	else{
		WT.bs=window.innerWidth+"x"+window.innerHeight;
	}
	WT.fv=(function(){
		var i,flash;
		if (window.ActiveXObject){
			for(i=10;i>0;i--){
				try{
					flash=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
					return i+".0";
				}
				catch(e){
				}
			}
		}
		else if (navigator.plugins&&navigator.plugins.length){
			for (i=0;i<navigator.plugins.length;i++){
				if (navigator.plugins[i].name.indexOf('Shockwave Flash')!=-1){
					return navigator.plugins[i].description.split(" ")[2];
				}
			}
		}
		return "Not enabled";
	})();
	WT.slv=(function(){
		var slv="Not enabled";
		try{     
			if (navigator.userAgent.indexOf('MSIE')!=-1){
				var sli = new ActiveXObject('AgControl.AgControl');
				if (sli){
					slv="Unknown";
				}
			}
			else if (navigator.plugins["Silverlight Plug-In"]){
				slv="Unknown";
			}
		}
		catch(e){
		}
		if (slv!="Not enabled"){
			var i,j,v;
			if ((typeof(Silverlight)=="object")&&(typeof(Silverlight.isInstalled)=="function")){
				for(i=3;i>0;i--){
					for (j=9;j>=0;j--){
						v=i+"."+j;
						if (Silverlight.isInstalled(v)){
							slv=v;
							break;
						}
					}
					if (slv==v){
						break;
					}
				}
			}
		}
		return slv;
	})();
	if (this.i18n){
		if (typeof(document.defaultCharset)=="string"){
			WT.le=document.defaultCharset;
		} 
		else if (typeof(document.characterSet)=="string"){
			WT.le=document.characterSet;
		}
		else{
			WT.le="unknown";
		}
	}
	WT.tv="8.6.2";
//	WT.sp="@@SPLITVALUE@@";
	WT.dl="0";
	WT.ssl=(window.location.protocol.indexOf('https:')==0)?"1":"0";
	DCS.dcsdat=dCurrent.getTime();
	DCS.dcssip=window.location.hostname;
	DCS.dcsuri=window.location.pathname;
	WT.es=DCS.dcssip+DCS.dcsuri;
	if (window.location.search){
		DCS.dcsqry=window.location.search;
	}
	if (DCS.dcsqry){
		var dcsqry=DCS.dcsqry.toLowerCase();
		var params=this.paidsearchparams.length?this.paidsearchparams.toLowerCase().split(","):[];
		for (var i=0;i<params.length;i++){
			if (dcsqry.indexOf(params[i]+"=")!=-1){
				WT.srch="1";
				break;
			}
		}
	}
	if ((window.document.referrer!="")&&(window.document.referrer!="-")){
		if (!(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)<4)){
			DCS.dcsref=window.document.referrer;
		}
	}
}
WebTrends.prototype.dcsEscape=function(S, REL){
	if (REL!=""){
		S=S.toString();
		for (var R in REL){
 			if (REL[R] instanceof RegExp){
				S=S.replace(REL[R],R);
 			}
		}
		return S;
	}
	else{
		return escape(S);
	}
}
WebTrends.prototype.dcsA=function(N,V){
	if (this.i18n&&(this.exre!="")&&!this.exre.test(N)){
		if (N=="dcsqry"){
			var newV="";
			var params=V.substring(1).split("&");
			for (var i=0;i<params.length;i++){
				var pair=params[i];
				var pos=pair.indexOf("=");
				if (pos!=-1){
					var key=pair.substring(0,pos);
					var val=pair.substring(pos+1);
					if (i!=0){
						newV+="&";
					}
					newV+=key+"="+this.dcsEncode(val);
				}
			}
			V=V.substring(0,1)+newV;
		}
		else{
			V=this.dcsEncode(V);
		}
	}
	return "&"+N+"="+this.dcsEscape(V, this.re);
}
WebTrends.prototype.dcsEncode=function(S){
	return (typeof(encodeURIComponent)=="function")?encodeURIComponent(S):escape(S);
}
WebTrends.prototype.dcsCreateImage=function(dcsSrc){
	if (document.images){
		this.images[this.index]=new Image();
		this.images[this.index].src=dcsSrc;
		this.index++;
	}
	else{
		document.write('<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="'+dcsSrc+'">');
	}
}
WebTrends.prototype.dcsMeta=function(){
	var elems;
	if (document.all){
		elems=document.all.tags("meta");
	}
	else if (document.documentElement){
		elems=document.getElementsByTagName("meta");
	}
	if (typeof(elems)!="undefined"){
		var length=elems.length;
		for (var i=0;i<length;i++){
			var name=elems.item(i).name;
			var content=elems.item(i).content;
			var equiv=elems.item(i).httpEquiv;
			if (name.length>0){
				if (name.toUpperCase().indexOf("WT.")==0){
					this.WT[name.substring(3)]=content;
				}
				else if (name.toUpperCase().indexOf("DCSEXT.")==0){
					this.DCSext[name.substring(7)]=content;
				}
				else if (name.toUpperCase().indexOf("DCS.")==0){
					this.DCS[name.substring(4)]=content;
				}
			}
		}
	}
}
WebTrends.prototype.dcsTag=function(){
	if (document.cookie.indexOf("WTLOPTOUT=")!=-1){
		return;
	}
	var WT=this.WT;
	var DCS=this.DCS;
	var DCSext=this.DCSext;
	var i18n=this.i18n;
	var P="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+this.domain+(this.dcsid==""?'':'/'+this.dcsid)+"/dcs.gif?";
	if (i18n){
		WT.dep="";
	}
	for (var N in DCS){
 		if (DCS[N]&&(typeof DCS[N]!="function")){
			P+=this.dcsA(N,DCS[N]);
		}
	}
	var keys=["co_f","vtid","vtvs","vt_f_tlv"];
	for (var i=0;i<keys.length;i++){
		var key=keys[i];
		if (WT[key]){
			P+=this.dcsA("WT."+key,WT[key]);
			delete WT[key];
		}
	}
	for (N in WT){
		if (WT[N]&&(typeof WT[N]!="function")){
			P+=this.dcsA("WT."+N,WT[N]);
		}
	}
	for (N in DCSext){
		if (DCSext[N]&&(typeof DCSext[N]!="function")){
			if (i18n){
				WT.dep=(WT.dep.length==0)?N:(WT.dep+";"+N);
			}
			P+=this.dcsA(N,DCSext[N]);
		}
	}
	if (i18n&&(WT.dep.length>0)){
		P+=this.dcsA("WT.dep",WT.dep);
	}
	if (P.length>2048&&navigator.userAgent.indexOf('MSIE')>=0){
		P=P.substring(0,2040)+"&WT.tu=1";
	}
	this.dcsCreateImage(P);
	this.WT.ad="";
}
WebTrends.prototype.dcsDebug=function(){
	var t=this;
	var i=t.images[0].src;
	var q=i.indexOf("?");
	var r=i.substring(0,q).split("/");
	var m="<b>Protocol</b><br><code>"+r[0]+"<br></code>";
	m+="<b>Domain</b><br><code>"+r[2]+"<br></code>";
	m+="<b>Path</b><br><code>/"+r[3]+"/"+r[4]+"<br></code>";
	m+="<b>Query Params</b><code>"+i.substring(q+1).replace(/\&/g,"<br>")+"</code>";
	m+="<br><b>Cookies</b><br><code>"+document.cookie.replace(/\;/g,"<br>")+"</code>";
	if (t.w&&!t.w.closed){
		t.w.close();
	}
	t.w=window.open("","dcsDebug","width=500,height=650,scrollbars=yes,resizable=yes");
	t.w.document.write(m);
	t.w.focus();
}
WebTrends.prototype.dcsCollect=function(){
    if (this.enabled){
        this.dcsVar();
        this.dcsMeta();
        this.dcsAdv();
        this.dcsTag();
    }
}

function dcsMultiTrack(){
	if (typeof(_tag)!="undefined"){
		return(_tag.dcsMultiTrack());
	}
}

function dcsDebug(){
	if (typeof(_tag)!="undefined"){
		return(_tag.dcsDebug());
	}
}

Function.prototype.wtbind = function(obj){
	var method=this;
	var temp=function(){
		return method.apply(obj,arguments);
	};
	return temp;
}
}catch(e){console.log('Error in webtrends: ' + e.description);}

// ---- m_tracking ----
try{ function MINITracking(WTTag){
  var _this = this;
  // Current webtrends tag
  _this.tag = WTTag;
  _this.referrer = _exists(document.referrer) ? document.referrer : '';
  _this.domain = getDomain();
  
  _this.dcsIdMapping = {};
  _this.dcsIdMapping['mini.at'] = 'dcso7jg11000004394hu18xmk_7d7y';
  _this.dcsIdMapping['mini.be'] = 'dcs9rnktm00000slzzt1sfxmk_5d6x';
  _this.dcsIdMapping['mini.ch'] = 'dcs21qmpx000004n4e10xhxmk_9i9v';
  _this.dcsIdMapping['mini.com'] = 'dcskoa5xl10000om1bzoku3nk_8i7h';
  _this.dcsIdMapping['mini.com.mx'] = 'dcsdlw5il100008mewuwd742o_3q5n';
  _this.dcsIdMapping['mini.de'] = 'dcs4v4b9c21e5hijgw2emxspd_6o8n';
  _this.dcsIdMapping['mini.dk'] = 'dcsgqh07u10000go519lxsxmk_3g4d';
  _this.dcsIdMapping['mini.es'] = 'dcsdz1rqz00000gk2857uzxmk_7r5c';
  _this.dcsIdMapping['mini.fi'] = 'dcs2ioj6g00000oq4kf7w3ymk_5z3u';
  _this.dcsIdMapping['mini.gr'] = 'dcsexuvgr00000kjks947g1nk_1f1f';
  _this.dcsIdMapping['mini.ie'] = 'dcsvf185j00000o2yyrxoiymk_3x4w';
  _this.dcsIdMapping['mini.in'] = 'dcs17tao4vz5bdmz70j8hdza4_7o3t';
  _this.dcsIdMapping['mini.it'] = 'dcslzd2bz0000082j6m1661nk_1i1x';
  _this.dcsIdMapping['mini.lu'] = 'dcstgve2810000oqw1ghnlymk_7d6w';
  _this.dcsIdMapping['mini.no'] = 'dcsuswey810000ch5xixvsymk_8z3u';
  _this.dcsIdMapping['mini.pt'] = 'dcsr5gtq400000g0n6m8dyymk_2x8h';
  _this.dcsIdMapping['mini.se'] = 'dcs8i4y7210000o6piw8f2zmk_3x2j';
  _this.dcsIdMapping['minibrasil.com'] = 'dcsl30jnb00000wc77v0mkgaq_7n8c';
  _this.dcsIdMapping['mini.fr'] = 'dcsulbibp10000clsd2jsoxnj_1v7r';
  _this.dcsIdMapping['mini.nl'] = 'dcsnhthkv100008qhx0q0egbf_3q3f';
  _this.dcsIdMapping['mini.ca'] = 'dcshyr6u810000cpnwo6xv3l2_1y5c';
  _this.dcsIdMapping['mini.jp'] = 'dcs4gsd1euz5bdflu5oa5sxkh_5t1o';
  
  // Here we configure the list of domains that will use the Webtrends Test Profile
  var _testDomains = {};
  _testDomains['master-qa.mini.com'] = '1';
  _testDomains['master-de-qa.mini.com'] = '1';
  _testDomains['master-prod.mini.com'] = '1';
  _testDomains['ssl.mini.com'] = '1';
  _testDomains['testwww.mini.de'] = '1';
  
  if(!_exists(_testDomains[document.domain]) && _exists(_this.dcsIdMapping[_this.domain])){
    _this.tag.dcsid = _this.dcsIdMapping[_this.domain];
    _this.tag.fpcdom = '.'+_this.domain;
  }

  _this.uri = _sanitizeURI(window.location.pathname);
  
  _this.dealerId = '';
  
  _this.searchWord = '';
  _this.searchHits = '';
    
  if(typeof miniSubsidiary === 'object' && typeof miniSubsidiary.getCookieValue === 'function'){
    _this.dealerId = miniSubsidiary.getCookieValue();
  }
  
  var webtrendsTracking = false;
  
  // Mapping from internal form key to external event type defined by FELD-M
  _this.formKeyMapping = new Array();
  _this.formKeyMapping['rfi'] = {'event_key': 'RFI', 'event_type': 'LE'};
  _this.formKeyMapping['tda'] = {'event_key': 'TDA', 'event_type': 'LE'};
  _this.formKeyMapping['rfs'] = {'event_key': 'RFS', 'event_type': 'SE'};
  _this.formKeyMapping['rfa'] = {'event_key': 'RFA', 'event_type': 'SE'};
  _this.formKeyMapping['rfc'] = {'event_key': 'RFC', 'event_type': 'LE'};
  _this.formKeyMapping['rfsf'] = {'event_key': 'RFC_SF', 'event_type': 'LE'};
  _this.formKeyMapping['corporate_clients'] = {'event_key': 'RFC_Major', 'event_type': 'SE'};
  _this.formKeyMapping['rfd'] = {'event_key': 'RFC_DE', 'event_type': 'SE'};
  _this.formKeyMapping['website'] = {'event_key': 'RFC_Website', 'event_type': 'SE'};
  _this.formKeyMapping['brand_request'] = {'event_key': 'RFC_Brand', 'event_type': 'SE'};
  _this.formKeyMapping['general_request'] = {'event_key': 'RFC_Divers', 'event_type': 'SE'};
  _this.formKeyMapping['mini_challenge'] = {'event_key': 'Chall-Ticket', 'event_type': 'SE'};
  _this.formKeyMapping['iaa_special'] = {'event_key': 'Register-IAA2011', 'event_type': 'SE'};
  _this.formKeyMapping['iglu_gewinnspiel'] = {'event_key': 'R59-GWS-O2', 'event_type': 'SE'};
  _this.formKeyMapping['xmas_2011_gewinnspiel'] = {'event_key': 'weihnachtsgewinnspiel_2011', 'event_type': 'SE'};


  /* closedroom registration mapping, suffix is the form_mode value = distinguishing between form states
   * 0 = new registration
   * 1 = supplementary registration
   * 2 = profile edit
   */
  _this.formKeyMapping['cr_profile_0'] = {'event_key': 'Registration', 'event_type': 'LE'};
  _this.formKeyMapping['cr_profile_1'] = {'event_key': 'Registration-Qualify', 'event_type': 'LE'};
  _this.formKeyMapping['cr_profile_2'] = {'event_key': 'Profile-Qualify', 'event_type': 'SE'};
  
  _this.sharingMapping = new Array();
  _this.sharingMapping['mail'] = 'MA';
  _this.sharingMapping['facebook'] = 'FB';
  _this.sharingMapping['myspace'] = 'MY';
  _this.sharingMapping['twitter'] = 'TW';
  _this.sharingMapping['delicious'] = 'DS';
  _this.sharingMapping['digg'] = 'DG';
  _this.sharingMapping['mrwong'] = 'MW';
  _this.sharingMapping['bookmark'] = 'BM';
  _this.sharingMapping['taf'] = 'EMAIL';
  _this.sharingMapping['becoming_a_fan'] = 'BF_FB';
  
  // List of download file extensions
  _this.downloadTypes = new Array('pdf');
  
  // Seperator used to concatenate different values
  _this.SEPERATOR = '.';
  
  var cookieName = _this.tag.evi.cookie;
  var customCookieName = 't_mini';

  // Cookie expires after 270 days
  var cookieExpireDays = 270;
  
  // Rank of sales process phases for user segmentation
  // This is used to identify the sales process phase with the highest ranking
  // in order to perform user segmentation
  var SPMapping = new Array();
  SPMapping['BA'] = 1;
  SPMapping['CO'] = 2;
  SPMapping['PI'] = 3;
  
  // Sales process phase with negative number will be considered inactive.
  // To activate such sales process phase please assign positive number
  // After Sales
  SPMapping['AS'] = -1;
  
  // Purchase
  SPMapping['P'] = -1;

  // Options for the cookie
  var cookieOptions = {path: '/', expires: cookieExpireDays, domain: _this.domain};
  
  // This method will remove /index.html, /index.jsp from the end of the uri
  function _sanitizeURI(uri, noStartSlash){
    // Ignore uri if it is undefined or starting with http:, https:, mailto:, javascript:
    if(typeof uri === 'undefined' || uri.indexOf('javascript:') === 0 || uri.indexOf('http:') === 0 || uri.indexOf('https:') === 0 || uri.indexOf('mailto:') === 0)
      return uri;
      
    var result = uri.replace('/index.html','/');
    result = result.replace('/index.jsp','/');
      
    // All uri must start with / except if noStartSlash===true
    if(typeof noStartSlash === 'undefined' || noStartSlash !==true){
      if(result.indexOf('/') !== 0){
        result = '/' + result;
      }
    }
    
    return result;
  };
  
  function _dcsMultiTrack(key1, value1, writeOnly){
    if(webtrendsTracking === false || writeOnly===true){
      // Webtrends Tracking request has not occured yet or write only --> Set values into tag properties
      _this.tag.dcsSetProps([key1, value1]);
      return false;
    }
    else{
      // Webtrends Tracking request has occured already and no write only --> Track async.
      _this.tag.dcsMultiTrack(key1, value1);
      return true;
    }
  };
  
  function _dcsMultiTrack2(key1, value1, key2, value2, writeOnly){
    if(webtrendsTracking === false || writeOnly===true){
      // Webtrends Tracking request has not occured yet or write only --> Set values into tag properties
      _this.tag.dcsSetProps([key1, value1, key2, value2]);
      return false;
    }
    else{
      // Webtrends Tracking request has occured already and no write only --> Track async.
      _this.tag.dcsMultiTrack(key1, value1, key2, value2);
      return true;
    }
  };
  
  function _getLeadOrSuccessEvent(formName){
	var result = _this.formKeyMapping[formName];
    if ( ! result ) { 
	   if ( (typeof(form_key_mapping) !== 'undefined') && form_key_mapping ) {  
		  result = form_key_mapping[formName];
       }
    }
    return result;  
  };
  
  function _isLeadEvent(event){
    return event!==undefined && event.event_type === 'LE';
  };
  
  function _isSuccessEvent(event){
    return event!==undefined && event.event_type === 'SE';
  };
  
  // Set a meta tag.
  // This function checks if a HTML Meta-Tag exists.
  // If not the Meta-Tag is created with the given content
  // Otherwise the content of the existing Meta-Tag is updated.
  function _setMetaTagContent (name, content){
    var meta = $('meta[name="'+name+'"]');
    if(meta.length===0){
      meta = $('<meta/>').attr('name', name);
      $('head').append(meta);
    }    
    meta.attr('content', content);
  };
  
  // This function registers the form data and writes them in HTML Meta-Tag
  // WT.si_n and WT.si_x only if both values exist
  function _registerFormular(){
    var formName = $('input[name="formName"]').val();
    // special case closedroom registration form
    if(formName === 'cr_profile' || formName === 'profile'){ // profile = R58 form
        formName = 'cr_profile'; // ignore different form name in r58
        var form_mode = $('input[name="form_mode"]').val();
        if(!_exists(form_mode))
            form_mode = 0; // new registration
        formName = formName + '_' + form_mode;
    }
    var formConfig = _getLeadOrSuccessEvent(formName);
    var formStep = $('input[name="formStep"]').val();
    
    if(_exists(formConfig) && _exists(formStep)){
      // Prepend RFC to WT.si_n
      _setMetaTagContent('WT.si_n', 'RFC;'+formConfig.event_key);
      // Prepend formStep to WT.si_x
      _setMetaTagContent('WT.si_x', formStep+';'+formStep);
    }
  };
  
  function _mapDCSURI(dcsuri) {
      if(typeof(trackingDCSURIMapping) !== 'undefined' && trackingDCSURIMapping != null 
            && typeof(trackingDCSURIMapping[dcsuri]) !== 'undefined'){
          return trackingDCSURIMapping[dcsuri];
      }
      return dcsuri;
  };

  this.getSelectedDealer = function(){
  
    return _parseCookie(customCookieName)['WT.seg_4'];
  };

  // This function is called when the user selects a dealer
  this.dealerSelected = function(dealer_id){
    _registerDealerSelection(dealer_id);
    
    _this.successEventTracking('DE_Select', '', dealer_id);
  };
  

  function _registerDealerSelection(dealer_id){
    if (navigator.appName === "Microsoft Internet Explorer") {
      //document.referrer = '/select_dealer';
    }
    
    var event_params = new Array();
    event_params.push('DID_'+dealer_id);
    
    // Write dealer_id into Parameter WT.seg_4
    var p = new Array();
    p['WT.seg_4'] = dealer_id;
    //p['lt'] = 'TC_T';
    //_writeCookie({'lt': 'TC_T'});
    // IE has empty referrer in this case
    _writeCookie(p);
    
    // Write dealer_id into custom cookie
    _writeCookie(p, customCookieName);
    _this.dealerId = dealer_id;
    
    return dealer_id;
  };
  
  // This function is called when the user executes the mini search
  this.searchStarted = function(search_word, count_hits){
    _registerSearch(search_word, count_hits); 
    //_this.successEventTracking('DE_Select', '', dealer_id);
  };

  function _registerSearch(search_word, count_hits){
    // Write search word into Parameter WT.oss and number of hits into WT.oss_r
    // Perform tracking request.
    var dCurrent = new Date();

    _this.tag.WT.oss = search_word;
    _this.tag.WT.oss_r = count_hits;    

    _writeCookie({'WT.oss': search_word,'WT.oss_r': count_hits});
    
  };

  
  function _buildUA(event_type, event_params){
    var ua_value = 'UA' + _this.SEPERATOR + event_type;
    
    // Loop and append the values for additional event parameter in event_params if available
    if(_exists(event_params)){
      for(var i=0; i<event_params.length; i++){
        var value = event_params[i];
        
        if(_exists(value))
          ua_value += _this.SEPERATOR + value;
      }
    }
    
    return ua_value;
  };
  
  this.userActionTracking = function(event_type, event_params, writeOnly){
    var ua_value = _buildUA(event_type, event_params);
    
    // Track DCSext.UA
    if(_dcsMultiTrack('DCSext.UA', ua_value, writeOnly))
      _this.tag.DCSext['UA'] = '';
  };
  
  // This method can be called from outside this class to perform lead event tracking
  this.leadEventTracking = function(event_type, category, purchase_probability, dealer_id, writeOnly){
    var contact_me = document.location.pathname.indexOf('/index2.html') > 0 || typeof(isFormConfirmationPage) !== 'undefined';
    // if the user have a choice to be conntaced via e-mail or via phone
    if(typeof(confirmParams) !== 'undefined'){
        if(confirmParams.email_marketing_allowed === 'true' || confirmParams.phone_marketing_allowed === 'true')
            contact_me = true;
        else if(confirmParams.email_marketing_allowed === 'false' && confirmParams.phone_marketing_allowed === 'false')
            contact_me = false;
    } 
        
    var wt_pi_value = _buildLEWTPI(event_type, category, purchase_probability, dealer_id, contact_me);

    // Track WT.pi
    if(_dcsMultiTrack('WT.pi', wt_pi_value, writeOnly))
      _this.tag.WT['pi'] = '';
    
    // Perform user segmentation
    _userSegmentation();
    
    // Perform quantitative analysis
    _quantitativeAnalysis('LE');
  }
  
  function _buildLEWTPI(event_type, category, purchase_probability, dealer_id, contact_me){
    var wt_pi_value = 'LE';
    
    wt_pi_value += _this.SEPERATOR + (_exists(event_type) ? event_type : '');
    // category in closedroom case is the campaign name + '-CR'
    wt_pi_value += _this.SEPERATOR + (_exists(category) ? category : 'nc');
    wt_pi_value += _this.SEPERATOR + (_exists(purchase_probability) ? purchase_probability : 'PPnone');
    wt_pi_value += _this.SEPERATOR + (contact_me ? 'CY' : 'CN');
    wt_pi_value += _this.SEPERATOR + (_exists(dealer_id) ? dealer_id : 'no_DID');
    
    return wt_pi_value;
  };
  
  function _buildSEWTPI(event_type, category, dealer_id, contact_me, purchase_probability){
    var wt_pi_value = 'SE';
    wt_pi_value += _this.SEPERATOR + (_exists(event_type) ? event_type : '');
    wt_pi_value += _this.SEPERATOR + (_exists(category) ? category : 'nc');
    if(purchase_probability != '') 
        wt_pi_value += _this.SEPERATOR + (_exists(purchase_probability) ? purchase_probability : 'PPnone');
    wt_pi_value += _this.SEPERATOR + (contact_me ? 'CY' : 'CN');
    wt_pi_value += _this.SEPERATOR + (_exists(dealer_id) ? dealer_id : 'no_DID');
    
    return wt_pi_value;
  };
  
  // This function performs Success Event Tracking
  // An array can be passed for additional event parameters.
  // Example for dealer select: D_Select, UA, [12345]
  this.successEventTracking = function(event_type, category, dealer_id, writeOnly, isClosedroomConfirmationPage, purchase_probability){
    var contact_me = document.location.pathname.indexOf('/index2.html') > 0 || typeof(isFormConfirmationPage) !== 'undefined';
    // if the user have a choice to be conntaced via e-mail or via phone
    if(typeof(confirmParams) !== 'undefined'){
        if(confirmParams.email_marketing_allowed === 'true' || confirmParams.phone_marketing_allowed === 'true')
            contact_me = true;
        else if(confirmParams.email_marketing_allowed === 'false' && confirmParams.phone_marketing_allowed === 'false')
            contact_me = false;
    } 

    var wt_pi_value = _buildSEWTPI(event_type, category, dealer_id, contact_me, purchase_probability);
      
    // Track WT.pi
    if(_dcsMultiTrack('WT.pi', wt_pi_value, writeOnly))
      _this.tag.WT['pi'] = '';
        
    // Perform user segmentation and quantitative analysis
    _userSegmentation();
    _quantitativeAnalysis('SE');

  };
  
  // This function performs the user segmentation and returns the current segment
  function _userSegmentation (sp){
    var lastWTSeg_1 = _parseCookie()['WT.seg_1'];
    var newWTSeg_1 = _exists(sp) ? sp : _this.getSalesProcessPhase();
    
    if(_exists(newWTSeg_1) && _exists(SPMapping[newWTSeg_1]) && parseInt(SPMapping[newWTSeg_1]) > 0){
      // Compare last with new
      if(!_exists(lastWTSeg_1) || (SPMapping[newWTSeg_1] > SPMapping[lastWTSeg_1])){
        // Last WTSeg_1 does not exist
        // or new WTSeg_1 has a higher rank that last WTSeg_1 --> Update cookie value
        _writeCookie({'WT.seg_1': newWTSeg_1});
        
        return newWTSeg_1;
      }
    }
    
    return lastWTSeg_1;
  };
  
  function _isReturningSession(){
    var v = ''+_this.tag.WT.vt_f_tlv;
    return v != '0' && v != '';
  };
  
  function _isHome(){
    var homeURI = miniUrlFix.fixAbsoluteUrl(miniUrlFix.getLanguagePrefix() + '/');
    return (_this.uri === homeURI);
  }

  // This method will be executed before the WebTrends tracking occurs
  this.beforeWebTrendsTracking = function(){
    // Wrap native webtrends tracking methods like dcsEvi, download, mailto and offsite
    if(typeof WebTrends.prototype.dcsDownload === 'function'){
      WebTrends.prototype._dcsDownload = WebTrends.prototype.dcsDownload;
      WebTrends.prototype.dcsDownload = _this.dcsDownloadWrapper;
    }
    
    if(typeof WebTrends.prototype.dcsMailTo === 'function'){
      WebTrends.prototype._dcsMailTo = WebTrends.prototype.dcsMailTo;
      WebTrends.prototype.dcsMailTo = _this.dcsMailToWrapper;
    }
    
    if(typeof WebTrends.prototype.dcsOffsite === 'function'){
      WebTrends.prototype._dcsOffsite = WebTrends.prototype.dcsOffsite;
      WebTrends.prototype.dcsOffsite = _this.dcsOffsiteWrapper;
    }
    
    if(typeof WebTrends.prototype.dcsEvi === 'function'){
      WebTrends.prototype._dcsEvi = WebTrends.prototype.dcsEvi;
      WebTrends.prototype.dcsEvi = _this.dcsEviWrapper;
    }

    // remove oss/oss_r attributes from cookie
    if (_parseCookie()['lt'] !== undefined && _parseCookie()['lt'].indexOf('div_QS') === -1 && _parseCookie()['lt'].indexOf('div_AS') === -1 && (_parseCookie()['WT.oss'] !== undefined || _parseCookie()['WT.oss_r'] !== undefined)) {
      _writeCookie({'WT.oss': '','WT.oss_r': ''});
    } 

    
    // Apply home specific logic
    if(_isHome()){
      // Overwrite content attribute for meta tag WT.cg_n...
      var meta = $('meta[name="WT.cg_n"]');
      meta.attr('content',';Home');
      
      // Overwrite content attribute for meta tag SP
      meta = $('meta[name="SP"]');
      meta.attr('content','');
    }
    
    // Register current sales process phase
    _registerSalesProcessPhase();
    
    // Register formular data (name and step)
    _registerFormular();
    
    // Check to see if the user is visiting the page from a shortcut redirect
    var queryParams = getQueryParams();
    if(_exists(queryParams) && _exists(queryParams.r) && queryParams.r==='1'){
      // User is visiting this page through a redirect
      this.navigationTracking('div_SC', this.referrer, this.uri);
    }
    else{
      // User is not visiting this page through a redirect
      // Check to see if the user is visiting this page from a page within this domain
      var isInternalReferrer = (this.referrer.indexOf(this.domain+'/') > 0);
      var lastLt = _parseCookie()['lt'];

      // if href is javascript:void() the referrer in ie is empty. To avoid this we catch
      // the case click on the mini logo.
      if (navigator.appName === "Microsoft Internet Explorer" && lastLt === 'div_logo') {
        _writeCookie({'tp': '/'});
      }
      else if(!isInternalReferrer){
        // User is not visiting this page from a page within this domain
        // remove request parameter
        var shortReferrer = this.referrer.split('?')[0];
        this.navigationTracking('div_direct', shortReferrer, this.uri);
      }
      else if (isInternalReferrer && getQueryParams().lt === undefined && lastLt === undefined) {       
        var shortReferrer = this.referrer.split('?')[0];
        // split on domain name 
        shortReferrer = this.referrer.split(this.domain)[1];
    
        shortReferrer = _sanitizeURI(shortReferrer);
        var lt = 'div_nd';
        if (shortReferrer.indexOf('select_dealer') !== -1) {
          lt = 'TC_T';
        }
        this.navigationTracking(lt, shortReferrer, this.uri);
      }
      
      // Replace -- in document.title
      document.title = document.title.replace(/ÃƒÂ¢Ã¢â€šÂ¬Ã¢â‚¬Å“/, '-');
    }
    
    /* Check if we are on a form confirmation page.
     * #form_success_page             : old process, confirmation page is displayed on a seperate page
     * isFormConfirmationPage         : new process, confirmation page is displayed in the form jsp
     */
var _isClosedroomConfirmationPage = $('#customConfirmationComponent0').length > 0 || $('#customConfirmationComponent1').length > 0 || $('#customConfirmationComponent2').length > 0;

    if($('#form_success_page').length > 0 || typeof(isFormConfirmationPage) !== 'undefined'){
      // We are on a form confirmation page. Check the type of event 
      var formName = $('input[name="formName"]').val();
      // special case closedroom registration form
      if(formName === 'cr_profile' || formName === 'profile'){
        formName = 'cr_profile';
        var form_mode = $('input[name="form_mode"]').val();
        if(!_exists(form_mode))
            form_mode = 0; // new registration
        formName = formName + '_' + form_mode;
      }

      var event = _getLeadOrSuccessEvent(formName);
      var isLeadEvent = _isLeadEvent(event);
      var isSuccessEvent = _isSuccessEvent(event);
      var category = '';
      var event_type = '';
      var dealer_id_input_name = 'd_id';
      if(_isClosedroomConfirmationPage)
          dealer_id_input_name = 'r58_dealer';
      var dealer_id = $('input[name="'+ dealer_id_input_name +'"]').val();
      
      // if dealer is not selected and closedroom dealer invitation code is available
      if(_isClosedroomConfirmationPage && !_exists(dealer_id) && _exists($('input[name="dealer_invitation_code"]')) )
          dealer_id = $('input[name="dealer_invitation_code"]').val();

      if(isSuccessEvent || isLeadEvent){
        event_type = event.event_key;
        category = $('input[name="category"]').val();
        if($('input[name="category"]').length === 0 && typeof(confirmParams) !== 'undefined')
            category = confirmParams.category; // set in forms.inc

        // special case: closedroom registration form tracking
        if(_isClosedroomConfirmationPage)
            category = closedroomCampaign.split('_')[0] + '-CR'; // is set in registration_form template
      }

      var purchase_probability = "";
      if(isLeadEvent){
        // Perform Lead Event Tracking
        purchase_probability = _getPurchaseProbability();

        _this.leadEventTracking(event_type, category, purchase_probability, dealer_id);
      }
      
      if(isSuccessEvent){
        if(event.event_key === 'RFA' && _exists(category)){
          // The user has sent an RFA request and also has sent its accessories list --> Track UA
          _this.userActionTracking('RFA_List', [dealer_id]);
        }

        purchase_probability = _getPurchaseProbability();

        // Perform Success Event Tracking
        _this.successEventTracking(event_type, category, dealer_id, false, _isClosedroomConfirmationPage, purchase_probability);
      }
    }
  };
  

  function _getPurchaseProbability(){
        
         var purchase_probability = null;
        
        if($('input[name="pp"]').length > 0)
            purchase_probability = $('input[name="pp"]').val();
        else if($('input[name="plannedpurchasedate"]').length > 0) // used in new forms
            purchase_probability = $('input[name="plannedpurchasedate"]').val();
        else if(typeof(confirmParams) !== 'undefined' && typeof(confirmParams.pp) !== 'undefined') // used in new forms
           purchase_probability = confirmParams.pp;

        // Rewrite purchase probability (undefined-> ignore it, 9999->PPnone, 1->PP1, 3->PP3, etc...)
        if(typeof(purchase_probability) !== 'undefined' && purchase_probability != null && purchase_probability !== '0' && purchase_probability !== ''){
          if(purchase_probability === '9999')
            purchase_probability = 'PPnone';
          else
            purchase_probability = 'PP'+purchase_probability;
        }
        else{
          purchase_probability = '';
        }
      return purchase_probability;
  }

  // This functions returns true if there is a user currently logged-in
  // Otherwise false
  function _isUserLoggedIn (){
    // Login functionality not available yet. Hence return always false;
    return false;
  };
  
  // This function performs a quantitative analysis for lead and success events 
  // and returns the value
  function _quantitativeAnalysis(event_type){
    var now = new Date();
    
    var paramKey;
    var paramValue;

    var customCookieValues = _parseCookie(customCookieName);
    
    if(event_type === 'LE'){
      paramKey = 'WT.seg_2';
    }
    else if(event_type === 'SE'){
      paramKey = 'WT.seg_3';
    }
    
    // Get current param value
    paramValue = customCookieValues[paramKey];
    if(!_exists(paramValue)){
      // Param value not set --> set it to 1
      paramValue = 1;
    }
    else{
      // Param value set --> Increment it by 1
      paramValue = parseInt(paramValue);
      paramValue++;
    }
    
    // Save new value into both tracking and custom cookie
    var p = new Array();
    p[paramKey] = paramValue;
    _writeCookie(p);
    _writeCookie(p, customCookieName);
    
    p = new Array();
    
    return paramValue;
  };
  
  this.registerClickEvent = function(selector){
    $(selector).each(
      function(index){
        var elem = $(this);
        var trackingEnabled = elem.attr('data-tracking_enabled');

        if(!_exists(trackingEnabled) || trackingEnabled===false){
          // Tracking has not been enabled for this item --> Register click event
          elem.click(
            function(event){
              _handleLinkClickEvent(event);
            }
          );
          
          // Set tracking as enabled on the current item
          elem.attr('data-tracking_enabled', true);
        }
      }
    );
  };
  
  function _handleLinkClickEvent(event){
    _this.handleLinkClickEvent(event.currentTarget);
  };
  
  function _getEventTargetHtmlElement(event){
    var e = event.target||event.srcElement;
    var tagName = 'A'.toLowerCase();
    
    while (e.tagName && (e.tagName.toLowerCase() != tagName)){
      e = e.parentElement||e.parentNode;
    }
    return e;
  }
  
  function _isLeftClick(evt){
    var result = evt && ((typeof(evt.which) !== "number") || (evt.which===1));
    
    return result;
  };

  // This function is a wrapper to the original dcsDownload method from the Webtrends api
  this.dcsDownloadWrapper = function(event){
    // Process only when left click
    if(_isLeftClick(event)){
      var htmlElement = _getEventTargetHtmlElement(event);
      var targetpage = htmlElement.pathname;
      
      if(_isDownloadLink(targetpage)){
        // This is a click for download --> Track
        // Category is made of <content group current page>-<filename>
        var category = _this.getPageContentGroup() + '-' + _getDownloadFilename(targetpage);
        _this.successEventTracking('DL_PB', category, _this.dealerId, true);
      }
    }
    
    // Copy WT.seg_1 and WT.seg_3 parameter from
    var cookieValues = _parseCookie();
    if (_exists(cookieValues['WT.seg_1'])) _this.tag.WT.seg_1 = cookieValues['WT.seg_1'];
    if (_exists(cookieValues['WT.seg_3'])) _this.tag.WT.seg_3 = cookieValues['WT.seg_3'];
    
    // Call native webtrends download method
    _this.tag._dcsDownload(event);

    // Reset WT.pi
    _this.tag.WT['pi'] = '';
  };
  
  // This function is a wrapper to the original dcsMailTo method from the Webtrends api
  this.dcsMailToWrapper = function(event){
    // Process only when left click
    if(_isLeftClick(event)){
      var htmlElement = _getEventTargetHtmlElement(event);
      var link = $(htmlElement);
      
      if(link.length>0){
        var dataTracking = _parseQueryValue(link.attr('data-tracking'));
        // Handle custom action
        if(dataTracking['action'] === 'contact_dealer' && link.attr('href').indexOf('mailto:')===0){
          var params = new Array();
          
          // This is the email link to contact dealer --> Perform user action tracking
          // Add dealer id if available
          if(_exists(_this.dealerId)){
            params.push('DID_'+_this.dealerId);
          }
          _this.userActionTracking('D_Contact', params, true);
        }
      }
    }

    // Call native webtrends mailto method
    _this.tag._dcsMailTo(event);
    
    // Reset DCSext.UA
    _this.tag.DCSext['UA'] = '';
  };
  
  // This function is a wrapper to the original dcsOffsite method from the Webtrends api
  this.dcsOffsiteWrapper = function(event){
    // Process only when left click
    if(_isLeftClick(event)){
      var htmlElement = _getEventTargetHtmlElement(event);
      var link = $(htmlElement);
      
      if(link.length>0){
        var dataTracking = _parseQueryValue(link.attr('data-tracking'));
        // Handle custom action
        if(dataTracking['action'] === 'sharing'){
          // This is a sharing link --> Perform success event tracking
          var site = dataTracking['site'];

          var prefix = 'SI_';
          if(site === 'becoming_a_fan')
              prefix = '';

          site = _this.sharingMapping[site];

          _this.userActionTracking(prefix + site, [_this.getPageContentGroup()]);
        }
      }
    }

    // Call native webtrends offsite method
    _this.tag._dcsOffsite(event);
    
    // Reset DCSext.UA
    _this.tag.DCSext['UA'] = '';
  };
  
  // This function is a wrapper to the original dcsEvi method from the Webtrends api.
  // We use this to identify a retuning visitor, set some cookie parameters before 
  // the native Webtrends dcsEvi method is called. This way we can send those values
  // with the first hit.
  this.dcsEviWrapper = function(){
    // Check if this is a returning session
    if(_isReturningSession()){
      // Then read WT.Seg_2, WT.Seg_3 and WT.Seg_4 from custom cookie...
      var customCookieValues = _parseCookie(customCookieName);
      var p = new Array();
      p['WT.seg_2'] = _exists(customCookieValues['WT.seg_2']) ? customCookieValues['WT.seg_2'] : '';
      p['WT.seg_3'] = _exists(customCookieValues['WT.seg_3']) ? customCookieValues['WT.seg_3'] : '';
      p['WT.seg_4'] = _exists(customCookieValues['WT.seg_4']) ? customCookieValues['WT.seg_4'] : '';
      
      // ... and write it in webtrends cookie
      _writeCookie(p);
    }
    
    // Sanitize dcsuri from Webtrends
    try{
      _this.tag.DCS.dcsuri = _mapDCSURI(_sanitizeURI(_this.tag.DCS.dcsuri));
    }
    catch(err){}
    try{
      _this.tag.WT.es = _sanitizeURI(_this.tag.WT.es, true);
    }
    catch(err){}
  
    // Call native webtrends dcsEvi method
    _this.tag._dcsEvi();
    
    // Append url query parameters to tag.DCS.dcsqry
    if(!_exists(_this.tag.DCS.dcsqry)){
      _this.tag.DCS.dcsqry = '?';
    }
    if (_exists(window.location.search)){
      _this.tag.DCS.dcsqry += '&' + window.location.search.substring(1);
    }
  };

  function _isDownloadLink(path){
    return _typeMatch(path, _this.downloadTypes);
  };
  
  function _typeMatch(path, types){
    if(_exists(path)){
      var type = path.toLowerCase().substring(path.lastIndexOf(".")+1, path.length);
      var tlen = types.length;
      for (var i=0;i<tlen;i++){
        if (type==types[i]){
          return true;
        }
      }
    }
    return false;
  };
  
  function _cleanUpTrackingParams(link){
    var search = link[0].search;
    if(_exists(search)){
      search = _parseQueryValue(search);
      delete search['oncam'];
      delete search['linktype'];
      delete search['action'];
      search = _buildQueryValue(search);
      
      if(search === '?'){
        search = '';
      }
	  // We don't want escapes like %2520-> doesnt work in AccShowRoom
	  if (search.indexOf("%2520") > -1) {
		search = search.replace("%2520","%20");
	  }
	  
      link[0].search = search;
    }
    
    link.addClass('.teaser_component_link_tracking');
  };
  
  this.handleLinkClickEvent = function(htmlLinkElement){
    var sv = "";
	if (htmlLinkElement.innerHTML.indexOf("WWW.BMWGROUP.COM") > -1 && getInternetExplorerVersion() > 1) {
		sv = htmlLinkElement.innerHTML;
		htmlLinkElement.innerHTML = htmlLinkElement.innerHTML.replace("WWW.BMWGROUP.COM", "WWW BMWGROUP COM");
	}
  
    // Read data-tracking parameter
    var link = $(htmlLinkElement);
    
    if(link.hasClass('teaser_component_link_standard') && !link.hasClass('teaser_component_link_tracking')){
      // This is a teaser component link and this link does not have a teaser_component_link_tracking class
      // This means that the link has not been processed yet --> Process it and remove all query parameters that
      // have a meaning for tracking like: action, linktype, oncam, etc...
      _cleanUpTrackingParams(link);
    }
    
    // In case a html link is called with javascript the referrer is empty or in ie the referrer contains the 
    // javascript call. To avoid this we override targetpage.
    var targetpage = '';
    if (htmlLinkElement.href.search(/javascript:redirect.+/) != -1) {
      // get targetpage (string between '')
      targetpage = decodeURIComponent(htmlLinkElement.href);
      targetpage = targetpage.split("'")[1];
    }
    else {    
      targetpage = htmlLinkElement.pathname;
    }
    
    var dataTracking = _parseQueryValue(link.attr('data-tracking'));
    dataTracking['htmlLinkElement'] = htmlLinkElement;
    
    dataTracking['targetpage'] = targetpage;
    
    // Rewrite linktype if necessary
    // Check to see if the click happened within the element with the id component_0 --> This is probably
    // a top thema
    var isTopThema = link.parents('#component_0').length > 0;
    
    if(isTopThema){
      var hasImage = link.children('img').length > 0;
      if(hasImage){
        dataTracking['linktype'] = 'TT_I';
      }
      else{
        dataTracking['linktype'] = 'TT_T';
      }
    }
    
    _this.handleClickEvent2(dataTracking);
	
	if (sv.length > 0) {
		htmlLinkElement.innerHTML = sv;
	}
  };
  
  this.handleClickEvent = function(targetpage, dataTracking){
    dataTracking['targetpage'] = targetpage;
    _this.handleClickEvent2(dataTracking);
  };
  
  this.dcsURI = function(){
    return _this.uri;
  };
  
  this.flashTracking = function(dataTracking){
    if(!_exists(dataTracking))
      return;
      
    var targetpage = _mapDCSURI(dataTracking['tp']);
    var linktype = dataTracking['lt'];
    var wt_dl = dataTracking['wt_dl'];
    var sap = dataTracking['sap'];
    var linkpage = _exists(dataTracking['lp']) ? dataTracking['lp'] : _this.uri;
    linkpage = _mapDCSURI(linkpage);

    var dcsuri = _exists(dataTracking['dcsuri']) ? dataTracking['dcsuri'] : _this.uri;
    
    var title = _exists(dataTracking['wt_ti']) ? dataTracking['wt_ti'] : $('title').text();
    var wt_cg_n = $('meta[name="WT.cg_n"]').attr('content');
    var sp = '';
    var wt_si_n = dataTracking['wt_si_n'];
    var wt_si_x = dataTracking['wt_si_x'];
    var oncam = dataTracking['oncam'];
    var dcsqry = {};
    var se = dataTracking['se'];
    var le = dataTracking['le'];
    var ua = dataTracking['ua'];
    
    if(_exists(dataTracking['wt_cg_n'])){
      wt_cg_n = dataTracking['wt_cg_n'];
      sp = (wt_cg_n.split(';'))[0]
    }
    
    // Set values in tag if they exist
    if(_exists(dcsuri))
      _this.tag.DCS.dcsuri = _mapDCSURI(dcsuri);
    if(_exists(title))
      _this.tag.WT.ti = title;
    if(_exists(wt_dl))
      _this.tag.WT.dl = wt_dl;
    if(_exists(sap))
      _this.tag.DCSext.SAP = sap;
    if(_exists(wt_cg_n))
      _this.tag.WT.cg_n = wt_cg_n;
    if(_exists(wt_si_n))
      _this.tag.WT.si_n = wt_si_n;
    if(_exists(wt_si_x))
      _this.tag.WT.si_x = wt_si_x;
      
    // Handle Onsite Campaigns Tracking
    if(_exists(oncam)){
      oncam = _this.getPageContentGroup(wt_cg_n) + _this.SEPERATOR + oncam + _this.SEPERATOR + linktype;
      dcsqry['oncam'] = oncam;
    }
    // Handle navigation tracking
    if(_exists(linktype))
      dcsqry['lt'] = linktype;
    dcsqry['lp'] = linkpage;
    //if(_exists(dcsuri))
    //  dcsqry['lp'] = dcsuri;    
    if(_exists(targetpage))
      dcsqry['tp'] = targetpage;
    
    var wt_seg_1;
    var wt_seg_2;
    var wt_seg_3;
    var wt_seg_4;
    var wt_pi;
    var dcsext_ua;
    
    if(_exists(se)){
      // Handle success event
      if(!_exists(se['dealer_id']))
        se['dealer_id'] = _this.getSelectedDealer();
        
      wt_pi = _buildSEWTPI(se['event_type'], se['category'], se['dealer_id'], se['contact_me'], '');
      wt_seg_1 = _userSegmentation(sp);
      wt_seg_3 = _quantitativeAnalysis('SE');
      
      if(se['event_type'] === 'DE_Select'){
        _registerDealerSelection(se['dealer_id']);
        wt_seg_4 = se['dealer_id'];
      }
    }
    
    if(_exists(le)){
      // Handle lead event
      if(!_exists(le['dealer_id']))
        le['dealer_id'] = _this.getSelectedDealer();
      
      wt_pi = _buildLEWTPI(le['event_type'], le['category'], le['purchase_probability'], le['dealer_id'], le['contact_me']);
      wt_seg_1 = _userSegmentation(sp);
      wt_seg_2 = _quantitativeAnalysis('LE');
    }
    
    if(_exists(ua)){
      // Handle user action
      dcsext_ua = _buildUA(ua['event_type'], ua['event_params']);
    }
    
    if(_exists(wt_pi))
      _this.tag.WT.pi= wt_pi;
    if(_exists(wt_seg_1))
      dcsqry['WT.seg_1'] = wt_seg_1;
    if(_exists(wt_seg_2))
      dcsqry['WT.seg_2'] = wt_seg_2;
    if(_exists(wt_seg_3))
      dcsqry['WT.seg_3'] = wt_seg_3;
    if(_exists(wt_seg_4))
      dcsqry['WT.seg_4'] = wt_seg_4;
      
    if(_exists(dcsext_ua))
      _this.tag.DCSext.UA = dcsext_ua;
      
    if(_exists(dcsqry)){
      var dcsqry_value = _buildQueryValue(dcsqry);
      _this.tag.DCS.dcsqry = dcsqry_value;
    }
    
    // Write cookie
  targetpage = _sanitizeURI(targetpage);
    _writeCookie({'lt':linktype, 'lp':linkpage, 'tp':targetpage, 'oncam': oncam});
    
    // Perform tracking request.
    var dCurrent = new Date();
    _this.tag.DCS.dcsdat=dCurrent.getTime();
    _this.tag.dcsFPC();
    _this.tag.dcsTag();
    
    // Reset values
    
    // Clear Webtrends dcsqry value
    _this.tag.DCS.dcsqry = '';
    _this.tag.DCS.dcsuri = '';
    _this.tag.WT.ti = '';
    _this.tag.WT.dl = '0';
    _this.tag.DCSext.SAP = '';
    _this.tag.WT.cg_n = '';
    _this.tag.WT.si_n = '';
    _this.tag.WT.si_x = '';
    _this.tag.WT.pi = '';
    _this.tag.WT.seg_1 = '';
    _this.tag.WT.seg_2 = '';
    _this.tag.WT.seg_3 = '';
    _this.tag.WT.seg_4 = '';
    _this.tag.DCSext.UA = '';
    _this.tag.WT.oss = '';
    _this.tag.WT.oss_r = '';
  };
  
  // This method will be executed to handle click on any <a> on the page
  this.handleClickEvent2 = function(dataTracking){
    var targetpage = dataTracking['targetpage'];
    var linktype = _mapDCSURI(dataTracking['linktype']);
    var action = dataTracking['action'];
    var wt_dl = dataTracking['wt_dl'];
    var sap = dataTracking['sap'];
    var dcsuri = _this.uri;

    if(_exists(dataTracking['dcsuri'])){
      dcsuri = dataTracking['dcsuri'];
    }
    
    _this.tag.DCS.dcsuri = _mapDCSURI(dcsuri);

    if(_exists(wt_dl) && _exists(sap)){
      // Track WT.dl and DCSext.SAP
      if(_dcsMultiTrack2('WT.dl', wt_dl, 'DCSext.SAP', sap)){
        _this.tag.WT['dl'] = '';
        _this.tag.DCSext['SAP'] = '';
      }
    }
    
    else if(_exists(wt_dl)){
      // Track WT.dl
      if(_dcsMultiTrack('WT.dl', wt_dl))
        _this.tag.WT['dl'] = '';
    }
    
    else if(_exists(sap)){
      // Track DCSext.SAP
      if(_dcsMultiTrack('DCSext.SAP', sap))
        _this.tag.DCSext['SAP'] = '';
    }

    if(_exists(action)){
      // Handle custom action
      if(action==='contact_dealer'){
        dataTracking['oncam'] = '';
        
        if(_exists(dataTracking['htmlLinkElement']) && $(dataTracking['htmlLinkElement']).parents('.offer_component').length>0){
          // This is a link to contact a dealer within an offer component
          linktype = 'TC_SPO';
        }
        else{
          var params = new Array();
          // This is the link to contact dealer --> Perform user action tracking
          // Add dealer id if available
          if(_exists(_this.dealerId)){
            params.push('DID_'+_this.dealerId);
          }
          _this.userActionTracking('D_Contact', params);
        }
      }
    }
    
    // Handle navigation tracking
    _this.navigationTracking(linktype, _sanitizeURI(dcsuri), _sanitizeURI(targetpage));
    
    // Handle Onsite Campaigns Tracking
    _this.onSiteCampaignsTracking(linktype, targetpage, dataTracking['oncam']);
  };

  function _getDownloadFilename(pathname){
    var result = '';
    var paths = pathname.split("/");
    
    if(paths.length>1){
      // Get last entry from paths array
      result = paths[paths.length-1];
      // Replace all '.' in filename with '_'
      result = result.replace(/\./,'_');
    }
    
    return result;
  };
  
  this.onSiteCampaignsTracking = function(navigationElement, _targetpage, oncamParam){
    var targetpage = _sanitizeURI(_targetpage);
    var form_key = '';
    
    for(key in form_tracking){
      if(_sanitizeURI(key) === targetpage){
        form_key = form_tracking[key];
        break;
      }
    }
    
    var formConfig = _getLeadOrSuccessEvent(form_key);
    var oncam;
    
    // Handle Onsite Campaigns Tracking if:
    // - Oncam parameter exists in data_tracking. Oncam parameter has higher precedence
    if(_exists(oncamParam)){
      oncam = oncamParam;
    }
    // - The user has clicked on a link to a contact form
    else if(_exists(formConfig)){
      // User has clicked on a link to a formular --> Build oncam parameter
      oncam = formConfig.event_key;
    }
    // - Or the user has clicked a link to the configurator
    else if(_exists(targetpage) && targetpage === _sanitizeURI(baseConfiguratorLink)){
      oncam = 'VCO';
    }
    // - Or the user has clicked a special offer teaser link
    else if(navigationElement === 'TC_SPO' || navigationElement === 'TA_SPO'){
      if(targetpage.indexOf('/contact_team/') > 0 || targetpage.indexOf('/select_dealer/') > 0){
        // Destination is contact_team or select_dealer page --> oncam
        if(isDealerArea)
          // Within special offer in dealer area
          oncam = 'NSC_RFC_DE';
        else
          // Within special offer in NSC area
          oncam = 'RFC_DEP';
      }
    }
    // - Or the user has clicked a dealer teaser in the teaser area from within NSC
    else if(typeof(isDealerArea) !== 'undefined' && !isDealerArea && _exists(navigationElement) && navigationElement.indexOf('TA_DET')>0){
      oncam = 'NSC_DE_'+miniSubsidiary.getCookieValue();
    }
    else if(form_key === 'rfo') {
      oncam = 'RFO';
    }
    
    if(_exists(oncam)){
      var cg = _this.getPageContentGroup();
      oncam = cg + _this.SEPERATOR + oncam + _this.SEPERATOR + navigationElement;
      
      // oncam exists --> save
      _writeCookie({'oncam':oncam});
    }
  };
  
  // This method reads the sales process phase from the HTML Meta-Tag "SP"
  // and writes it into the cookie if available.
  function _registerSalesProcessPhase(){
    var sp = $('meta[name="SP"]');
    
    if(sp.length>0){
      // HTML Meta-Tag "SP" is defined --> Get its value
      var value = sp.attr('content');
      // And write it into the cookie if it exists
      if(_exists(value)){
        _writeCookie({'SP':value}, customCookieName);
      }
    }
    
    // Update content group
    _updateContentGroup();
  };
  
  // This method returns the current sales process phase.
  // This will return the value defined in the HTML Meta-Tag "SP" if available.
  // Otherwise it will return the value from the cookie
  this.getSalesProcessPhase = function(){
    // Check to see if the HTML Meta-Tag "SP" is defined
    var sp = $('meta[name="SP"]');
    var result = '';
    
    if(sp.length>0){
      // HTML Meta-Tag "SP" is defined --> Get its value
      result = sp.attr('content');
    }
    
    if(!_exists(result)){
      // Sales process phase is not defined on this page --> Get value from cookie
      result = _parseCookie(customCookieName)['SP'];
    }
    
    if(!_exists(result))
      result = '';
      
    return result;
  };
  
  // This method returns the current page content group.
  // This will return the value defined in WCMS in the misc_8 attribute CG 
  // from the parent topic of this page.
  this.getPageContentGroup = function(defaultCg){
    var result = '';
    if(!_exists(defaultCg)){
      // Check to see if the HTML Meta-Tag "WT.cg_n" is defined
      var cg = $('meta[name="WT.cg_n"]');
      
      if(cg.length>0){
        // HTML Meta-Tag "WT.cg_n" is defined --> Get its value
        result = cg.attr('content');
      }
    }
    else{
      result = defaultCg;
    }
    
    if(!_exists(result))
      result = ';';
    
    var splits = result.split(';');
    if(splits.length>0){
      // Get last entry of array
      result = splits[splits.length-1];
    }
    else{
      // result is empty
      result = '';
    }

    return result;
  };
  
  // This method updates the page WT.cg_n prepending the sales process phase from the previous
  // page if the current page does not have its own sales process phase
  // This method also append the form name to the content group in case we are on a form confirmation page.
  function _updateContentGroup(){
    // Check to see if the HTML Meta-Tag "WT.cg_n" is defined
    var cg = $('meta[name="WT.cg_n"]');
    var result = '';
    
    if(cg.length>0){
      // HTML Meta-Tag "WT.cg_n" is defined --> Get its value
      result = cg.attr('content');
    }
    
    if(!_exists(result))
      result = ';';
      
    // Check to see if we are on a form confirmation page
    if($('#form_success_page').length>0 || typeof(isFormConfirmationPage) !== 'undefined'){
      // We are on a form confirmation page. Append form name
      var formName = $('input[name="formName"]').val();
      var splits = result.split(';');
      if(splits.length>0){
        // Get last part of content group, append ":<formName>" to it
        // and append the result to the content group
        result += ';'+splits[splits.length-1]+':'+formName;
      }
    }
    var sp = _this.getSalesProcessPhase();
    if(result.indexOf(sp+';')<0){
      // Content group does not start with sales process phase --> prenpend sales process phase
      result = sp+result;
    }
    
    // Update WT.cg_n
    cg.attr('content', result);
  };
  
  this.navigationTracking = function(linktype, linkpage, targetpage){
    // Track navigation
     _writeCookie({'lt':linktype, 'lp':_mapDCSURI(linkpage), 'tp':_mapDCSURI(targetpage)});
  };

  
  this.exists = function(value){
    return _exists(value);
  };
  
  /*
    Returns true if value !== undefined && value !== null [&& value !== '' when value is of type string]
  */
  function _exists(value){
    var result = typeof value !== 'undefined' && value !== undefined && value !== null;
    if(typeof value === 'string')
      result = result && value !== '' && value !== 'undefined';
      
    return result;
  };
  
  // Help method to convert a hash map and write it to the cookie
  // An alternative cookie name can be supplied.
  function _writeCookie(newValue, cName){
    // Get current cookie value
    var name = cookieName;
    if(_exists(cName))
      name = cName;
      
    var currentValue = _parseCookie(name);
    
    // Iterate over newValue and add/update currentValue entry
    for(var k in newValue){
      if(_exists(newValue[k])){
        currentValue[k] = newValue[k];
      }
      else{
        currentValue[k] = '';
      }
    }
    
    // Now build new cookie value...
    var cookieValue = "";
    var writeCookie = false;
    for(var k in currentValue){
      cookieValue = _buildQueryValue(currentValue);
      writeCookie = true;
      break;
    }
    
    if(writeCookie){
      // Write cookie
      $.cookie(name, cookieValue, cookieOptions);
    }
  };
  
  function _buildQueryValue(query){
    // Now build new cookie value...
    var value = "?";
    for(var k in query){
      writeCookie = true;
      // Write value only if it exists. Escape values to write
      if(_exists(query[k]) || (k === 'lp' && _exists(query['lt']) && query['lt']==='div_direct'))
        value += k+"=" + escape(query[k]) + "&";
    }
    // Remove last &
    value = value.substring(0, value.length-1);
    return value;
  };
  
  /*
    This method parses a string of the format [?]param_1=value_1&param_2=value_2&param_n=value_n
    and returns an object of the form:
    {
      param_1: value_1,
      param_1: value_1,
      param_n: value_n
    }
  */
  function _parseQueryValue(queryValue, unescapeValue){
    var result = {};
    if(_exists(queryValue)){
      // Query value set --> Parse it. Replace all ? with ''
      // ? is not allowed anywhere within the queryValue
      queryValue = queryValue.replace(/\?/,'');
      
      var parts = queryValue.split('&');
      if(_exists(parts)){
        for(var i=0;i<parts.length;i++){
          var part = parts[i].split('=');
          
          if(_exists(part[0])){
            if(_exists(unescapeValue) && unescapeValue)
              result[part[0]] = unescape(part[1]);
            else
              result[part[0]] = part[1];
          }
        }
      }
    }
    
    return result;
  };

  // Help method to parse the cookie and return the content as a hash
  // An alternative cookie name can be supplied.
  function _parseCookie(cName){
    var cookieValue;
    var name = cookieName;
    if(_exists(cName))
      name = cName;

    cookieValue = $.cookie(name);
    
    return _parseQueryValue(cookieValue, true);
  }
  
  // This method will be executed after the WebTrends tracking has occured
  this.afterWebTrendsTracking = function(){
    // Clear lp, lt, tp, WT.seg_2, WT.seg_3 and WT.seg_4
    _writeCookie({'lp':'', 'lt':'', 'tp':'', 'WT.seg_2':'', 'WT.seg_3':'', 'WT.seg_4':'', 'oncam': ''});
    
    // Clear Webtrends dcsqry value
    _this.tag.DCS['dcsqry'] = '';
    
    // Set a flag to remember that the webtrends tracking has already occured
    webtrendsTracking = true;
  };

  this.trackLikeButtonAction = function(buttonAction, buttonType) {
      var dcsExtValue = getDCSExtValueForLikeButtons(buttonAction, buttonType, true);
      var eventType = likeButtonsDCSExtValue[buttonType].like_value;
      if(buttonAction === 'unlike')
          eventType = likeButtonsDCSExtValue[buttonType].unlike_value;
       _this.userActionTracking(eventType, [dcsExtValue], false);
  };

  // Trigger event for handlers waiting for mini tracking object to be ready
  $(window).trigger('minitrackingready', [_this]);

}


// DCSext values like/unlike actions of like buttons 
var likeButtonsDCSExtValue = {};
likeButtonsDCSExtValue['facebook']    = {'like_value': 'IL_FB', 'unlike_value': 'UL_FB'};
likeButtonsDCSExtValue['google_plus'] = {'like_value': 'IL_G', 'unlike_value': 'UL_G'};

/* This function is used to get the shortened DCSExt value for like button 
 * components (facebook, google plus).
 */
function getDCSExtValueForLikeButtons(buttonAction, buttonType, getWTCGNOnly){
      var WTcg_n = "";
      
      try{
          WTcg_n = $('meta[name="WT.cg_n"]').attr('content');
          WTcg_n = WTcg_n.split(';');
          WTcg_n = WTcg_n[WTcg_n.length-1];
          WTcg_n = WTcg_n.replace(' ', '_');
          WTcg_n = WTcg_n.replace(/[^a-zA-Z0-9+/=-\\.:_]/g, "");
      }catch(e){
          WTcg_n = "";
      }
       
      if(getWTCGNOnly === true)
          return WTcg_n;

      var result = "UA." + likeButtonsDCSExtValue[buttonType].like_value + "." + WTcg_n; // like action
      if(buttonAction === 'unlike')
          result = "UA." + likeButtonsDCSExtValue[buttonType].unlike_value + "." + WTcg_n;
      return result;
  }


$(document).ready(function() {

  var WT_EXPR = 'WT.mc_id';
  var RECRUITING_COOKIE_NAME = 't_mini_campaign';
  var RECRUITING_COOKIE_OPTIONS = { path: '/' };
  if (getDomain().length > 0)  RECRUITING_COOKIE_OPTIONS['domain'] = getDomain();

  // Check if cookie exist
  if ($.cookie(RECRUITING_COOKIE_NAME) === null) {

    var recruitingCookieValue = 'm' + topicCountry + '_onsite_no-campaign';
    // Check for internal link 
    if (document.referrer.indexOf('://'+getDomain()) > -1) {
      // Write session cookie
      $.cookie(RECRUITING_COOKIE_NAME, recruitingCookieValue, RECRUITING_COOKIE_OPTIONS);
    }
    else { // external link
      // search for request parameter WT.mc_id
      var search = document.location.search;
      search = search.substr(1, search.length);
      var reqParams = search.split('&');
      for (i in reqParams) {
        if (reqParams[i].indexOf(WT_EXPR) !== -1) {
          recruitingCookieValue = reqParams[i].replace('WT.mc_id=', '');        
          break;
        }
      } // for
      // Write session cookie
      $.cookie(RECRUITING_COOKIE_NAME, recruitingCookieValue, RECRUITING_COOKIE_OPTIONS);
    } // else
  } // if 

  // add cookie value to request parameter
  var href = '';
  $("a[href*='WT.mc_id']").each(function() {
    href = $(this).attr('href');
    href = href.replace(/WT.mc_id=.*/, 'WT.mc_id=' + $.cookie(RECRUITING_COOKIE_NAME));
    $(this).attr('href', href);
  });
});
}catch(e){console.log('Error in m_tracking: ' + e.description);}

// ---- m_perso_events ----
try{ function PersoEvents(){ 

	var ret = {

		/**
		 * eigentlich immer 0
		 */
		perso_index:0,

		conf_perso_engine_enabled: true,

		/**
		 * PersoEngien liefert GIF zurueck
		 */
		gif_array : new Array(),

		voteCurrentPage : function() {
			this.voteAsync(persoMap.get_event_type_for_current_url());
		},

		/* send Event  E1.... E19 to perso_engine */
		voteAsync : function (event_type) {
		
			if ( is_mini_offline_copy ) 
				return;

			event_type = event_type.replace(/\s+/g,"");
	
			if ((event_type.length >= 2) && (event_type.length <=3)){
				if (event_type.substr(0, 1) == "E" || event_type.substr(0, 1) == "e"){
					event_type = event_type.toUpperCase();
			
					if(this.conf_perso_engine_enabled) {
		
						var perso_parameters	= "pid=" + persoMap.CONF_PERSO_ENGINE_PID;
						perso_parameters += "&eid=" + event_type;
						perso_parameters += "&z=" + Math.random();
				
						// die PersoEngine liefert event (GIF-Grafik, 1x1 Pixel). Speichert Cookies auf meinem Computer: PERSOUSERID, PERSOSESSIONID
						this.gif_array[this.perso_index] = new Image;
						this.gif_array[this.perso_index].src = persoMap.CONF_PERSOENGINE_URL+persoMap.CONF_PERSOENGINE_EVENT_CONTROLLER + '?' + perso_parameters;
						this.perso_index++;
					}
				}
			}
		},

		
		successful : false,
		
		fallbackWithoutPerso : function(a) {
			if (!successful) a("");
		},
		
		getUserCategory : function( callback ) {
			var random_parameter = "&z=" + Math.random();
			successful = false;
			setTimeout(function(){persoCtrl.fallbackWithoutPerso(callback);},persoMap.CONF_PERSO_TIMEOUT);
			
			$.ajax({
				url: persoMap.CONF_PERSOENGINE_URL+persoMap.CONF_PERSOENGINE_PROFILE_CONTROLLER+persoMap.CONF_PERSO_ENGINE_PID+persoMap.CONF_PERSOENGINE_PROFILE_TYPE + random_parameter,
				type: 'GET',
				dataType: "script",
				timeout: persoMap.CONF_PERSO_TIMEOUT,
				success: function(){
					// Update profile object
					successful = true;
					try {
						if(typeof window['perso_profile'] !== undefined ){
							var userProfile = window['perso_profile'];
							if (userProfile['categories'] === undefined)
								callback ('');
							else
								callback (userProfile.categories[persoMap.CONF_PERSO_CATEGORY_GROUP]);
						}
						else callback ('');
					}
					catch ( perso_profile_undefined ) {
						callback ('');
					}
				}
			});
		}
	};

	return ret;
}

var persoCtrl = PersoEvents();

$(document).ready( function() {
		persoCtrl.voteCurrentPage();  // senden
		if(teaser.teaserAreaAvailable || teaser.isMainStageTeaserAvailable()) {
		
			if ( is_mini_offline_copy ) 
				loadStaticTeaser();
			else
				if (window.location.search.length>teaser.REQUEST_PAR_USER_CATEGORY.length && 
					window.location.search.substring(0,teaser.REQUEST_PAR_USER_CATEGORY.length)===teaser.REQUEST_PAR_USER_CATEGORY 
				   ) {
					teaser.loadTeaserSelection(window.location.search.substring(teaser.REQUEST_PAR_USER_CATEGORY.length));
				}
				else
					persoCtrl.getUserCategory(  function(user_category){
						teaser.loadTeaserSelection(user_category);
					});
		}
	});

}catch(e){console.log('Error in m_perso_events: ' + e.description);}

// ---- _new_phase_2_js ----
try{ // -------- jquery.rating.js --------
/*
 ### jQuery Star Rating Plugin v3.13 - 2009-03-26 ###
 * Home: http://www.fyneworks.com/jquery/star-rating/
 * Code: http://code.google.com/p/jquery-star-rating-plugin/
 *
	* Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 ###
*/

/*# AVOID COLLISIONS #*/
;if(window.jQuery) (function($){
/*# AVOID COLLISIONS #*/
	
	// IE6 Background Image Fix
	if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { };
	// Thanks to http://www.visualjquery.com/rating/rating_redux.html
	
	// plugin initialization
	$.fn.rating = function(options){
		if(this.length==0) return this; // quick fail
		
		// Handle API methods
		if(typeof arguments[0]=='string'){
			// Perform API methods on individual elements
			if(this.length>1){
				var args = arguments;
				return this.each(function(){
					$.fn.rating.apply($(this), args);
    });
			};
			// Invoke API method handler
			$.fn.rating[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);
			// Quick exit...
			return this;
		};
		
		// Initialize options for this call
		var options = $.extend(
			{}/* new object */,
			$.fn.rating.options/* default options */,
			options || {} /* just-in-time options */
		);
		
		// Allow multiple controls with the same name by making each call unique
		$.fn.rating.calls++;
		
		// loop through each matched element
		this
		 .not('.star-rating-applied')
			.addClass('star-rating-applied')
		.each(function(){
			
			// Load control parameters / find context / etc
			var control, input = $(this);
			var eid = (this.name || 'unnamed-rating').replace(/\[|\]/g, '_').replace(/^\_+|\_+$/g,'');
			var context = $(this.form || document.body);
			
			// FIX: http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=23
			var raters = context.data('rating');
			if(!raters || raters.call!=$.fn.rating.calls) raters = { count:0, call:$.fn.rating.calls };
			var rater = raters[eid];
			
			// if rater is available, verify that the control still exists
			if(rater) control = rater.data('rating');
			
			if(rater && control)//{// save a byte!
				// add star to control if rater is available and the same control still exists
				control.count++;
				
			//}// save a byte!
			else{
				// create new control if first star or control element was removed/replaced
				
				// Initialize options for this raters
				control = $.extend(
					{}/* new object */,
					options || {} /* current call options */,
					($.metadata? input.metadata(): ($.meta?input.data():null)) || {}, /* metadata options */
					{ count:0, stars: [], inputs: [] }
				);
				
				// increment number of rating controls
				control.serial = raters.count++;
				
				// create rating element
				rater = $('<span class="star-rating-control"/>');
				input.before(rater);
				
				// Mark element for initialization (once all stars are ready)
				rater.addClass('rating-to-be-drawn');
				
				// Accept readOnly setting from 'disabled' property
				if(input.attr('disabled')) control.readOnly = true;
				
				// Create 'cancel' button
				rater.append(
					control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>')
					.mouseover(function(){
						$(this).rating('drain');
						$(this).addClass('star-rating-hover');
						//$(this).rating('focus');
					})
					.mouseout(function(){
						$(this).rating('draw');
						$(this).removeClass('star-rating-hover');
						//$(this).rating('blur');
					})
					.click(function(){
					 $(this).rating('select');
					})
					.data('rating', control)
				);
				
			}; // first element of group
			
			// insert rating star
			var star = $('<div class="star-rating rater-'+ control.serial +'"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>');
			rater.append(star);
			
			// inherit attributes from input element
			if(this.id) star.attr('id', this.id);
			if(this.className) star.addClass(this.className);
			
			// Half-stars?
			if(control.half) control.split = 2;
			
			// Prepare division control
			if(typeof control.split=='number' && control.split>0){
				var stw = ($.fn.width ? star.width() : 0) || control.starWidth;
				var spi = (control.count % control.split), spw = Math.floor(stw/control.split);
				star
				// restrict star's width and hide overflow (already in CSS)
				.width(spw)
				// move the star left by using a negative margin
				// this is work-around to IE's stupid box model (position:relative doesn't work)
				.find('a').css({ 'margin-left':'-'+ (spi*spw) +'px' })
			};
			
			// readOnly?
			if(control.readOnly)//{ //save a byte!
				// Mark star as readOnly so user can customize display
				star.addClass('star-rating-readonly');
			//}  //save a byte!
			else//{ //save a byte!
			 // Enable hover css effects
				star.addClass('star-rating-live')
				 // Attach mouse events
					.mouseover(function(){
						$(this).rating('fill');
						$(this).rating('focus');
					})
					.mouseout(function(){
						$(this).rating('draw');
						$(this).rating('blur');
					})
					.click(function(){
						$(this).rating('select');
					})
				;
			//}; //save a byte!
			
			// set current selection
			if(this.checked)	control.current = star;
			
			// hide input element
			input.hide();
			
			// backward compatibility, form element to plugin
			input.change(function(){
    $(this).rating('select');
   });
			
			// attach reference to star to input element and vice-versa
			star.data('rating.input', input.data('rating.star', star));
			
			// store control information in form (or body when form not available)
			control.stars[control.stars.length] = star[0];
			control.inputs[control.inputs.length] = input[0];
			control.rater = raters[eid] = rater;
			control.context = context;
			
			input.data('rating', control);
			rater.data('rating', control);
			star.data('rating', control);
			context.data('rating', raters);
  }); // each element
		
		// Initialize ratings (first draw)
		$('.rating-to-be-drawn').rating('draw').removeClass('rating-to-be-drawn');
		
		return this; // don't break the chain...
	};
	
	/*--------------------------------------------------------*/
	
	/*
		### Core functionality and API ###
	*/
	$.extend($.fn.rating, {
		// Used to append a unique serial number to internal control ID
		// each time the plugin is invoked so same name controls can co-exist
		calls: 0,
		
		focus: function(){
			var control = this.data('rating'); if(!control) return this;
			if(!control.focus) return this; // quick fail if not required
			// find data for event
			var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
   // focus handler, as requested by focusdigital.co.uk
			if(control.focus) control.focus.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
		}, // $.fn.rating.focus
		
		blur: function(){
			var control = this.data('rating'); if(!control) return this;
			if(!control.blur) return this; // quick fail if not required
			// find data for event
			var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );
   // blur handler, as requested by focusdigital.co.uk
			if(control.blur) control.blur.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);
		}, // $.fn.rating.blur
		
		fill: function(){ // fill to the current mouse position.
			var control = this.data('rating'); if(!control) return this;
			// do not execute when control is in read-only mode
			if(control.readOnly) return;
			// Reset all stars and highlight them up to this element
			this.rating('drain');
			this.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-hover');
		},// $.fn.rating.fill
		
		drain: function() { // drain all the stars.
			var control = this.data('rating'); if(!control) return this;
			// do not execute when control is in read-only mode
			if(control.readOnly) return;
			// Reset all stars
			control.rater.children().filter('.rater-'+ control.serial).removeClass('star-rating-on').removeClass('star-rating-hover');
		},// $.fn.rating.drain
		
		draw: function(){ // set value and stars to reflect current selection
			var control = this.data('rating'); if(!control) return this;
			// Clear all stars
			this.rating('drain');
			// Set control value
			if(control.current){
				control.current.data('rating.input').attr('checked','checked');
				control.current.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-on');
			}
			else
			 $(control.inputs).removeAttr('checked');
			// Show/hide 'cancel' button
			control.cancel[control.readOnly || control.required?'hide':'show']();
			// Add/remove read-only classes to remove hand pointer
			this.siblings()[control.readOnly?'addClass':'removeClass']('star-rating-readonly');
		},// $.fn.rating.draw
		
		
		
		
		
		select: function(value,wantCallBack){ // select a value
					
					// ***** MODIFICATION *****
					// Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
					//
					// ***** LIST OF MODIFICATION *****
					// ***** added Parameter wantCallBack : false if you don't want a callback. true or undefined if you want postback to be performed at the end of this method'
					// ***** recursive calls to this method were like : ... .rating('select') it's now like .rating('select',undefined,wantCallBack); (parameters are set.)
					// ***** line which is calling callback
					// ***** /LIST OF MODIFICATION *****
			
			var control = this.data('rating'); if(!control) return this;
			// do not execute when control is in read-only mode
			if(control.readOnly) return;
			// clear selection
			control.current = null;
			// programmatically (based on user input)
			if(typeof value!='undefined'){
			 // select by index (0 based)
				if(typeof value=='number')
 			 return $(control.stars[value]).rating('select',undefined,wantCallBack);
				// select by literal value (must be passed as a string
				if(typeof value=='string')
					//return
					$.each(control.stars, function(){
						if($(this).data('rating.input').val()==value) $(this).rating('select',undefined,wantCallBack);
					});
			}
			else
				control.current = this[0].tagName=='INPUT' ?
				 this.data('rating.star') :
					(this.is('.rater-'+ control.serial) ? this : null);

			// Update rating control state
			this.data('rating', control);
			// Update display
			this.rating('draw');
			// find data for event
			var input = $( control.current ? control.current.data('rating.input') : null );
			// click callback, as requested here: http://plugins.jquery.com/node/1655
					
					// **** MODIFICATION *****
					// Thanks to faivre.thomas - http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=27
					//
					//old line doing the callback :
					//if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
					//
					//new line doing the callback (if i want :)
					if((wantCallBack ||wantCallBack == undefined) && control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event
					//to ensure retro-compatibility, wantCallBack must be considered as true by default
					// **** /MODIFICATION *****
					
  },// $.fn.rating.select
		
		
		
		
		
		readOnly: function(toggle, disable){ // make the control read-only (still submits value)
			var control = this.data('rating'); if(!control) return this;
			// setread-only status
			control.readOnly = toggle || toggle==undefined ? true : false;
			// enable/disable control value submission
			if(disable) $(control.inputs).attr("disabled", "disabled");
			else     			$(control.inputs).removeAttr("disabled");
			// Update rating control state
			this.data('rating', control);
			// Update display
			this.rating('draw');
		},// $.fn.rating.readOnly
		
		disable: function(){ // make read-only and never submit value
			this.rating('readOnly', true, true);
		},// $.fn.rating.disable
		
		enable: function(){ // make read/write and submit value
			this.rating('readOnly', false, false);
		}// $.fn.rating.select
		
 });
	
	/*--------------------------------------------------------*/
	
	/*
		### Default Settings ###
		eg.: You can override default control like this:
		$.fn.rating.options.cancel = 'Clear';
	*/
	$.fn.rating.options = { //$.extend($.fn.rating, { options: {
			cancel: 'Cancel Rating',   // advisory title for the 'cancel' link
			cancelValue: '',           // value to submit when user click the 'cancel' link
			split: 0,                  // split the star into how many parts?
			
			// Width of star image in case the plugin can't work it out. This can happen if
			// the jQuery.dimensions plugin is not available OR the image is hidden at installation
			starWidth: 16//,
			
			//NB.: These don't need to be pre-defined (can be undefined/null) so let's save some code!
			//half:     false,         // just a shortcut to control.split = 2
			//required: false,         // disables the 'cancel' button so user can only select one of the specified values
			//readOnly: false,         // disable rating plugin interaction/ values cannot be changed
			//focus:    function(){},  // executed when stars are focused
			//blur:     function(){},  // executed when stars are focused
			//callback: function(){},  // executed when a star is clicked
 }; //} });
	
	/*--------------------------------------------------------*/
	
	/*
		### Default implementation ###
		The plugin will attach itself to file inputs
		with the class 'multi' when the page loads
	*/
	$(function(){
	 $('input[type=radio].star').rating();
	});
	
	
	
/*# AVOID COLLISIONS #*/
})(jQuery);
/*# AVOID COLLISIONS #*/

// -------- m_model_table.js --------
$(document).ready(function() {
  if ($('.model_table').length === 0) return;

  // Add hover
  $('.model_table').find('.model_data').hover(
    function(index){
      $(this).children('td').addClass('hoverOn');
    } , 
    function(index){
      $(this).children('td').removeClass('hoverOn');
    }
  );
  Cufon.replace('.model_table .teaser_component_link_standard', { hover:true });
});

// -------- m_mini_international.js --------
// set same height to teaser components
$(window).load(function() {

	$('div:not([class]) > div.column_international').each(function(index){
  
	// skipp over the article overview
	if(index == 0)
		return true;

	var max = 0;
	var heights = new Array();

	// get all teaser components
	$("div > div.teaser_component", this).each(function(i, ele){
		heights[i] = ele.offsetHeight;
	});

	// get max value
	max = Math.max.apply( Math, heights );
 
	if(max > 0){
		// set all teasers the same height
		$("div > div.teaser_component", this).each(function(j, element){
			element.style.backgroundColor = "#FFFFFF";
			element.style.height = max+"px";
		});
	}
	});
});    

$(document).ready(
	function(){
    
    $('.mini_international.teaser_component_link a[href="index.html"]').addClass('teaser_component_link_mini_international_hover');
	
    $("#mini_international_toc h1:first").mouseover(function() {
			stopAllSlideshows();
			for (var i = 0; i < slideshows.length; i++) {
				var show = slideshows[i];
				//var slideId = $(this).children("a").attr("id").split('_')[1];
				showSlide(show.id,  0 , 6); 
			}
		});
	
	
		$("#mini_international_toc").find(".mini_international.teaser_component_link").mouseover(function() {
			stopAllSlideshows();
			for (var i = 0; i < slideshows.length; i++) {
				var show = slideshows[i];
				var slideId = $(this).children("a").attr("id").split('_')[1];
				showSlide(show.id,  slideId , 6); 
			}
		});
		
		if ($("#rfiContainer").length === 1) {
			//synch heights of columns on form page
			var max = Math.max($(".layout_col1").height(), $(".layout_col2").height());
			$(".layout_col1").height(max);
			$(".layout_col2").height(max);
		}
	}
);

// Sets all columns under a div with a given identifier to the same height
function sameHeightForColumns(divId) {
  var jqId = '#' + divId;
  $(jqId).each(function(index) {     
    var max = 0;
    var heights = new Array();

	$(this).children(':not(.clearing)').each(function(i, ele){
	    var margin_top = parseInt($(ele).css("margin-top"));
		if (isNaN(margin_top)) {
		  margin_top = 0;
		}
        var margin_bottom = parseInt($(ele).css("margin-bottom"));
		if (isNaN(margin_bottom)) {
		  margin_bottom = 0;
		}		
        var padding_top = parseInt($(ele).css("padding-top"));
		if (isNaN(padding_top)) {
		  padding_top = 0;
		}		
        var padding_bottom = parseInt($(ele).css("padding-bottom"));
		if (isNaN(padding_bottom)) {
		  padding_bottom = 0;
		}		
		var border_top_width = parseInt($(ele).css("border-top-width"));
		if (isNaN(border_top_width)) {
		  border_top_width = 0;
		}		
		var border_bottom_width = parseInt($(ele).css("border-bottom-width"));
		if (isNaN(border_bottom_width)) {
		  border_bottom_width = 0;
		}		
        heights[i] = margin_top + margin_bottom + padding_top + padding_bottom + border_bottom_width + border_top_width + $(ele).height();
    });
      
      // get max value
    max = Math.max.apply( Math, heights );
      
    if(max > 0) {
		$(this).children(':not(.clearing)').each(function(j, element){
          var margin_top = parseInt($(element).css("margin-top"));
		  if (isNaN(margin_top)) {
		    margin_top = 0;
		  }				  
          var margin_bottom = parseInt($(element).css("margin-bottom"));
		  if (isNaN(margin_bottom)) {
		    margin_bottom = 0;
		  }				  
          var padding_top = parseInt($(element).css("padding-top"));
		  if (isNaN(padding_top)) {
		    padding_top = 0;
		  }				  
          var padding_bottom = parseInt($(element).css("padding-bottom"));
		  if (isNaN(padding_bottom)) {
		    padding_bottom = 0;
		  }				  
		  var border_top_width = parseInt($(element).css("border-top-width"));
		  if (isNaN(border_top_width)) {
		    border_top_width = 0;
		  }				  
		  var border_bottom_width = parseInt($(element).css("border-bottom-width"));
		  if (isNaN(border_bottom_width)) {
		    border_bottom_width = 0;
		  }				  
		  var new_height = max - (margin_top + margin_bottom + padding_top + padding_bottom + border_bottom_width  + border_top_width);
          element.style.height = new_height + "px";
        });
      }
	});
}

// -------- m_mobile.js --------
/* Hide main nav on window load */
$(window).load(function() {
  if (typeof isMobileDevice === 'function' && isMobileDevice()) {
    // Hide main menu
    $('#mainnav').hide();
    // Hide model- modulnav
    $('#left_menu').hide();
    // Show mobile navigation menu (1. level)
    $('#mobile_mainnav').show();
    $(window).resize(function() {
      repositionSharingLayer();
    });
  }
  else {
    $('#mainnav').show();
  }
});

function buildMobileMenu() { 
  prepareElements();
 
  // 2. Main navigation case
  // Copy complete menu structure
  $('#mainnav .ul_level_1').appendTo('#mobile_mainnav');

  // Copy model selection and prepend as first entry
  var modelNav = null;
  if($('.mini_models_submenue_marker:first').length > 0){ // if the menue is not at its regular position
    modelNav = $('.mini_models_submenue_marker:first').parent().clone();
  }else{
    modelNav = $('.main_nav_level_1:nth-child(2) .ul_level_2:first .main_nav_level_3:first').clone(); 
   }
    $(modelNav).removeClass('main_nav_has_submenu');   
    modelNav.prependTo('#mobile_mainnav .ul_level_1:first');
    // Correct class level
    $('#mobile_mainnav .ul_level_1 li:first').removeClass('main_nav_level_3').addClass('main_nav_level_1');
    $('#mobile_mainnav .ul_level_1 li:first li.main_nav_level_4').removeClass('main_nav_level_4').addClass('main_nav_level_2');
    $('#mobile_mainnav .ul_level_1 li:first li.main_nav_level_5').removeClass('main_nav_level_5').addClass('main_nav_level_3');
    $('#mobile_mainnav .ul_level_1 li:first ul.ul_level_4').removeClass('ul_level_4').addClass('ul_level_2');
    $('#mobile_mainnav .ul_level_1 li:first ul.ul_level_5').removeClass('ul_level_5').addClass('ul_level_3');
    $('#mobile_mainnav .ul_level_1 li:first > span').html(selectModelLabel);
    $('#mobile_mainnav .ul_level_1 li.main_nav_level_1').addClass('main_nav_has_submenu');
    $('#mobile_mainnav .ul_level_1 li.main_nav_level_1 > a').parent().css('background-image', 'none').removeClass('main_nav_has_submenu'); // no arrow when link on lvl1
    // Hide mobile submenues (close opened before submenues)
    $('#mobile_mainnav .ul_level_1').hide();

    // Open/Close NAVIGATION
    $('#.mobile_ul_level .main_nav_level_1').click(function() {
      // Hide mainnav
      if ( $('#mobile_mainnav .ul_level_1').is(':visible') || $('#mobile_mainnav .module_navigation_level').is(':visible')) {
        closeMobileMenu();
      // Show mainnav  
      } else {
        openMobileMenu();
      }
    }); // onClick
    
    $('#mobile_mainnav .ul_level_1').mouseleave(function() {
      $('#mobile_mainnav ul.ul_level_1 ul').hide();
    });
  
   // 1. Modul navigation if available, othwerwise main nav
  if ($('.module_navigation_level_0').length > 0) {
    //close sharing layer
    //sharing.closeSharingLayer();

    // Do not close module navigation
    moduleNavigation.unsetActionTimer;//moduleNaviDelay = 999999999;
    moduleNaviDelay = 999999999;
    // Create menu entry Main (Link to homepage)
    var node = $('<ul/>').addClass('module_navigation_level');
    node = node.append($('<li/>').addClass('module_navigation_li')
      .append($('<a/>').addClass('module_name_link')
      .attr('data-tracking', 'linktype=nav_modul')
      .click(function(){
    $('#mobile_mainnav .ul_level_1').show();
    $('#mobile_mainnav .module_navigation_level').hide();
      })
      .html(mobileMainLabel))
      .append($('.module_navigation_level_0')));
    node.appendTo('#mobile_mainnav');
    
    $('#mobile_mainnav .ul_level_1').hide();
    
    // Hide mobile submenues
    $('#mobile_mainnav .module_navigation_level').hide();
    /*$('#.mobile_ul_level .main_nav_level_1').click(function() {
  
      if ( $('#mobile_mainnav .module_navigation_level:visible').length > 0) {
        $('#mobile_mainnav .module_navigation_level').hide();
        $('.content_area_margins').show();
        $('#mobile_breadcrumb').show();
        
      } else {
        $('#mobile_mainnav .module_navigation_level').show();
        // Hide main stage module_nav and footer            
        $('.content_area_margins').hide();
        $('#mobile_breadcrumb').hide();
      }
    }); // onClick  */
    
  }
  
  
  
  // Redesign fast search and icons
  $('.header_search_icons').addClass('mobile');
  $('.content_area_margins').css('margin-top','30px');
  
  // prevent zoom in when tapping on form elements (works only on iPhone)
  if(OsDetect.OS == 'iPhone/iPod'){
    $('.header_search_icons.mobile input[type="text"]').mouseover(zoomDisable).mousedown(zoomEnable);
  }
  
  
  // OC1835: replace all level 1 divs with spans (fix to focus border on iphone)
  // #mobile_mainnav div.l1_text_hover
  /*$("#mobile_mainnav div.l1_text").each(function(){
    //var newSpan = $("<span/>").html($(this).html()).attr("class", $(this).attr("class")).attr("style", $(this).attr("style"));
    $(this).replaceWith('<span class="submenu_text mini_models_submenue_marker" style="'+ $(this).attr("style") +'">'+ $(this).html() +'</span>');
    //$(this).attr("class", "submenu_text mini_models_submenue_marker");
  });
  Cufon.replace("#mobile_mainnav div.l1_text, #mobile_mainnav div.l1_text_hover");*/

}

function prepareElements() {
  // Mark page as mobile page
  $('body').addClass('mobile');
  
  // Hide dealer locator layer
  miniSubsidiaryLayer.hideLayer();
  // Hide main menu
  $('#mainnav').hide();
  // Hide model- modulnav
  $('#left_menu').hide();
  // Show mobile navigation menu (1. level)
  $('#mobile_mainnav').show();
  // Move MINI logo a little bit up
  $('#minilogo').css('margin-top', '10px');
  // Extended normal quick search to extended search
  //$('input[name="q"]').attr('name', 'qx');
  /*$('#search_image').click(function() {
    mini_smartsearch_mobile();
  });*/

  // Disable teaser controlling
  teaser.AUTO_CHANGE_INTERVAL = 3600000; /* 1000*60*60=1h */
}

function setMetaTagViewport(value) {
  var meta = $('meta[name="viewport"]');
  // create a new meta tag
  if(meta.length===0){
    meta = $('<meta/>').attr('name', 'viewport').attr('content', value);
    $('head').append(meta);
  }
  // change meta tag 
  else {
    meta.attr('content', value);
  }
}

function closeMobileMenu() {
  $('#mobile_mainnav .ul_level_1').hide();
  $('.module_navigation_level').hide();
  $('#mobile_breadcrumb').show();
  // Emulate hover behavior
  $('.mobile_ul_level .l1_text_hover').hide();
  $('.mobile_ul_level .l1_text').show();
  // Hide all submenu entries
  $('#mobile_mainnav ul.ul_level_1 ul').hide();
  $('#grey_layer').hide();
  $('.content_area_margins').show();
  // QC1835
  $('#mobile_mainnav li').show();
}

function openMobileMenu() {
  // module navigation
  if ($('.module_navigation_level_0').length > 0) {
    $('#mobile_mainnav .module_navigation_level').show();
    $('#mobile_mainnav .ul_level_1').hide();
  }else{ // main navigation
    $('#mobile_mainnav .module_navigation_level').hide();
    $('#mobile_mainnav .ul_level_1').show();
  }
  $('#mobile_breadcrumb').hide();
  $('#mobileExtendedSearchContainer').hide();
  $('.mobile_ul_level .l1_text_hover').show();
  $('.mobile_ul_level .l1_text').hide();
  $('#tell_a_friend_layer').hide();
  //close sharing layer
  sharing.closeSharingLayer();
  $('#mobileExtendedSearchContainer').hide();
  // Main stage
  $('.content_area_margins').hide();
  //setMetaTagViewport("width=device-width, maximum-scale=1.0 user-scalable=no");
}

function repositionSharingLayer() {
  var mslOffset = $('#sharing_container').offset();
  var mslPosition = $('#sharing_container').position();
  if(typeof mslOffset !== "undefined" && typeof mslPosition !== "undefined")
    $('#sharing_container').css('left',''+ mslPosition.left - mslOffset.left +'px');
}

// --------  m_tell_a_friend.js --------
var taf;
var taf_width = 328;
var taf_max_recipients = 5;
var url_prefix = getStage() === 'EDIT' ? '' : '/sticky_3kDk44d';
var taf_captcha_url = miniUrlFix.fixAbsoluteUrl('/_common/captcha/captcha.jsp?p=TAF');
var taf_errorLayer;
var hsi;
var taf_emailError = '';
var taf_textError = '';

function loadTellAFriendLayer(){
  if (typeof isMobileDevice === 'function' && isMobileDevice()) {
    taf_captcha_url += '&isMobile=true';
  }

  taf = $('#tell_a_friend_layer');
  greyLayer.greyLayer_hide();
  greyLayerTAF.greyLayer_show();
  
  if(taf.length===0){
    $('body').append($('<div/>').attr('id','tell_a_friend_layer').hide());
    taf = $('#tell_a_friend_layer');
    
    hsi = $('.header_search_icons');
    
    // Register event handler when window is resized to reposition tell a friend layer only if visible
    $(window).resize(function() {
      positionTellAFriendLayer(true);
    });
    
    var taf_url = miniUrlFix.fixAbsoluteUrl(url_prefix+miniUrlFix.getLanguagePrefix()+'/_tell_a_friend/tell_a_friend.html');
    taf.load(taf_url+' #tell_a_friend', function(){
      Cufon.replace('#tell_a_friend .teaser_component_h15');
      Cufon.replace('#tell_a_friend #defaultAnchorButton', {leftOffset: 1, fixLineHeight: true});
      Cufon.replace('#tell_a_friend .teaser_component_link a', { hover: true });
      
      // Replace checkboxes
      $('#tell_a_friend .taf_copy_me').customInput();
      
      // Init error texts
      taf_emailError = $('#tell_a_friend .taf_emailError').text();
      taf_textError = $('#tell_a_friend .taf_textError').text();
  
      setPageVars();
      registerErrorHandler();
      registerInputHandler();
      
      taf_errorLayer = $('#tell_a_friend .taf_error_layer');
      
      showTellAFriendLayer();
      
      // prevent zoom in when tapping on form elements  
      if(OsDetect.OS == 'iPhone/iPod') {    
       // $('.taf_content input[type="text"], .taf_content textarea').mouseover(zoomDisable).mousedown(zoomEnable);
      }
      
      // timeout required for chrome
      window.setTimeout(
        function(){
          $('#tell_a_friend .qf_disclaimer_body_scroll').jScrollPane({showArrows:true});
          $('#tell_a_friend .qf_disclaimer_body_scroll').css('visibility','visible');
          $('#tell_a_friend .qf_disclaimer_body_scroll').css('visibility','visible');
        }, 1);

    });
  }
  else{
    setPageVars();
    showTellAFriendLayer();
  }
}

var closeTimeout = null;
// Auto close after 5 seconds
var closeAfter = 5000;

function showErrorLayer(elem){
  var elemTop = elem.position().top;
  var errorlayerLeft = '14px';
  if(elem.parent().hasClass('taf_spacer_small')) {
	errorlayerLeft = '164px';
    if (elem.parents().hasClass('mobile')) {
		errorlayerLeft = '482px';
	}
  }
  
  var errorText = elem.attr('data-error_text');
  $('#tell_a_friend .taf_error_content').html(errorText);
  
  closeTafErrorLayer();
  
  var errorLayerTop = -1000;

  taf_errorLayer.css({'top':errorLayerTop+'px', 'left':errorlayerLeft});
  taf_errorLayer.show();
  
  var errorLayerheight = taf_errorLayer.outerHeight(true);
  errorLayerTop = elemTop - errorLayerheight - 8;
  taf_errorLayer.css({'top':errorLayerTop+'px'});
    
  closeTimeout = window.setTimeout("closeTafErrorLayer()", closeAfter);
}

function closeTafErrorLayer(){
  if(closeTimeout !== null){
    window.clearTimeout(closeTimeout);
    closeTimeout = null;
  }

  if ( taf_errorLayer && (typeof(taf_errorLayer) !== 'undefined')) {		
    taf_errorLayer.hide();
  }
}

function registerInputHandler(selector){
  var s = '#tell_a_friend input[type="text"], #tell_a_friend textarea';
  if(typeof selector !== 'undefined'){
    s = selector;
  }
  // Register focus event handler
  $(s).focus(
    function(){
      // Remember the current value from the field
      $(this).attr('data-copy', $(this).val());
    }
  );

  // Register blur event handler
  $(s).blur(
    function(){
      // Check to see if the current value is different from the copy value
      if($(this).val() !== $(this).attr('data-copy')){
        // Value is different --> hide error icon...
        $(this).parent().next().children('.taf_error_hint').attr('data-error_text','').hide();
        // --> Hide error border ...
        // Remove all error borders
        $(this).removeClass('taf_input_error');
        // .. Close error layer
        closeTafErrorLayer();
      }
    }
  );
}

function registerErrorHandler(selector){
  var s = '#tell_a_friend .taf_error_hint';
  if(typeof selector !== 'undefined'){
    s = selector;
  }
  
  $(s).hover(
    function(){
      // Implement hover on error icon
      showErrorLayer($(this));
    }
  );
}

function setPageVars(){

  // Set url from current page in hidden input field.
  $('#tell_a_friend_layer input[name="ref_url"]').val(removeAllURLParams(window.location.href) + '?cm=UA.SI_EMAIL.' + getDCSExtValueForLikeButtons('facebook', 'like', true)); // get short WTcgn value for tracking purpose
  
  // Set title from current page in hidden input field.
  var title = $('#breadcrumb .current span').text();  
  if (! title) {
    title = document.title;
  }
  $('#tell_a_friend_layer input[name="ref_title"]').val(title);
  
  // Set domain from current page in hidden input field.
  $('#tell_a_friend_layer input[name="ref_domain"]').val(window.location.protocol+'//'+document.domain);
  
  // Set country from current page in hidden input field.
  $('#tell_a_friend_layer input[name="ref_country"]').val(topicCountry);
  
  // Set language from current page in hidden input field.
  $('#tell_a_friend_layer input[name="ref_language"]').val(topicLanguage);
  
}

function reloadTellAFriendCaptcha(){
  var tick = new Date();
  tick = tick.getTime();
  
  taf.find('#tell_a_friend input[name="taf_captcha_input"]').val('');
  
  // Append tick to captcha url to by-pass browser cache
  $('.taf_captcha_image').attr('src', taf_captcha_url+'&'+tick);
}

function addTellAFriendRecipient(){
  var taf_rcpts_last = $('.taf_rcpts_data:last');
  //var spacer_table_row = $('tr td[class="spacer_2px"][colspan="4"]:first').parent();
  var newRcpt = taf_rcpts_last.clone();
  // Reset values
  newRcpt.find('input').val('');
  
  var currentCount = $('.taf_rcpts_data').length;
  
  // Set new ids
  newRcpt.find('input[name="taf_rcpt_name"]').attr('id', 'taf_rcpt_name_'+currentCount);
  newRcpt.find('input[name="taf_rcpt_email"]').attr('id', 'taf_rcpt_email_'+currentCount);
  // Reset errors
  newRcpt.find('.taf_error_hint').hide();
  // Remove all error borders
  newRcpt.find('input').removeClass('taf_input_error');
  
  // prevent zoom in when tapping on form elements (works only on iPhone)
  if(OsDetect.OS == 'iPhone/iPod'){
   // newRcpt.find('input[name="taf_rcpt_name"], input[name="taf_rcpt_email"]').mouseover(zoomDisable).mousedown(zoomEnable);
  }
  
  //spacer_table_row.insertAfter(taf_rcpts_last);
  newRcpt.insertAfter(taf_rcpts_last);
  
  // Register handlers
  registerInputHandler(newRcpt.find('input[type="text"]'));
  registerErrorHandler(newRcpt.find('.taf_error_hint'));

  if($('.taf_rcpts_data').length >= taf_max_recipients){
    // Hide link to add more recipients
    $('.taf_add_rcpts').hide();
    return;
  }
}

function positionTellAFriendLayer(onlyIfVisible){
  var reposition = (typeof onlyIfVisible !== 'undefined' && onlyIfVisible && taf.is(':visible')) || (typeof onlyIfVisible === 'undefined' || onlyIfVisible !== true);
  
  if(reposition){
    var hsi_offset = hsi.position();
    var taf_left = hsi_offset.left + hsi.width() - taf_width;
    taf.css({'left':taf_left+'px'});
  }
}

function closeTellAFriendLayer(){
  if(typeof isMobileDevice === 'function' && isMobileDevice()) {
    if(OsDetect.OS == 'iPhone/iPod') {    
		AllowZoom(true);  
	}
  }

  if ( taf && (typeof(taf) !== 'undefined') ) {  

    taf.hide();

	//hide grey layer
    greyLayerTAF.greyLayer_hide();
    
	//hide all errors
    $('#tell_a_friend input[type="text"], #tell_a_friend textarea').parent().next().children('.taf_error_hint').attr('data-error_text','').hide();
    $('#tell_a_friend input[type="text"], #tell_a_friend textarea').removeClass('taf_input_error');
    closeTafErrorLayer();
    
	//reset form inputs
    document.tell_a_friend_form.reset();
    if(typeof isMobileDevice === 'function' && isMobileDevice()) {
      $('.content_area_margins').show();
      $('#mobile_breadcrumb').show();
    }	
  }
  
}

var orientationListenerActive = false;

function AllowZoom(flag) {
  orientationListenerActive = !flag;
  if (flag == true) {
	doSetHeadPropertiesBack();
  } else {	
    window.setTimeout("orientationListener()", 3000);
	doSetHeadProperties();
  }
}

function orientationListener() {
	if (!orientationListenerActive) {
		return;
	}
    doSetHeadProperties();
	window.setTimeout("orientationListener()", 3000);
}

function doSetHeadProperties () {
	$('head meta[name=viewport]').remove();
	var orientation = window.orientation;
    switch(orientation) {
      case 0: // portrait
       $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.33,  maximum-scale=0.33, minimum-scale=0.33, user-scalable=no" />');              
	   break; 
       
      case 90:
        $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.5,  maximum-scale=0.5, minimum-scale=0.5, user-scalable=no" />');              
	   break;
   
      case -90: 
        $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.5,  maximum-scale=0.5, minimum-scale=0.5, user-scalable=no" />');              
	   break;
    }	
}

function doSetHeadPropertiesBack () {
	$('head meta[name=viewport]').remove();
    var orientation = window.orientation;
    switch(orientation) {
      case 0: // portrait
       $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.33,  maximum-scale=0.33, minimum-scale=0.33, user-scalable=yes" />');              
	   break; 
       
      case 90:
        $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.5,  maximum-scale=0.5, minimum-scale=0.5, user-scalable=yes" />');              
	   break;
   
      case -90: 
        $('head').prepend('<meta name="viewport" content="width=980, initial-scale=0.5,  maximum-scale=0.5, minimum-scale=0.5, user-scalable=yes" />');              
	   break;
    }	
}

function showTellAFriendLayer(noReset){
  if(typeof isMobileDevice === 'function' && isMobileDevice()) {
	if(OsDetect.OS == 'iPhone/iPod') {    
		AllowZoom(false);  
	}
  }
  // Reset all tell_a_friend input fields fields
  if(typeof noReset === 'undefined' || noReset===false){
    taf.find('#tell_a_friend input[type="text"], textarea').val('');
    taf.find('#tell_a_friend input[type="checkbox"]').attr("checked", false);
    $('#tell_a_friend input[type="checkbox"]').trigger('updateState');
    
    // Remove all recipients and leave only one
    var taf_rcpts = $('.taf_rcpts_data');
    for(var i=1; i<taf_rcpts.length; i++){
      $(taf_rcpts[i]).remove();
    }
    
    // Show add recipients
    $('.taf_add_rcpts').show();
  }
  
  taf.find('div.taf_standard, div.taf_content').show();
  taf.find('div.taf_error, div.taf_ok').hide();
  
  // Position taf layer
  positionTellAFriendLayer();
  reloadTellAFriendCaptcha();
  
  taf.show();
}

function showResponseTAF(responseXML , statusText, xhr, $form){
  var errors = $('result[ok="false"]', responseXML);
  //taf.find('div.taf_standard, div.taf_content').hide();
  
  // Hide all previous error hints
  taf.find('.taf_error_hint').hide();
  
  // Remove all error borders
  taf.find('input, textarea').removeClass('taf_input_error');
    
  taf.find('.error').removeClass('error');
  
  if(errors.length>0){
	$("#taf_disclaimer").addClass("error");
    // There are errors --> show error icons on the specific fields
    var errorList = errors.attr('errors').split(',');
    for(var i=0; i<errorList.length; i++){
      if(errorList[i] === '')
        continue;
      // Add error border
      $('#'+errorList[i]).addClass('taf_input_error');
      $('#label_'+errorList[i]).addClass('error');
      if (errorList[i].indexOf("taf_rcpt_name") !== -1) {
		$("#label_taf_rcpt_name").addClass("error");
      }
      if (errorList[i].indexOf("taf_rcpt_email") !== -1) {
		$("#label_taf_rcpt_email").addClass("error");
      }
      
      var errorHint = $('#'+errorList[i]).parent().next().children('.taf_error_hint');
      
      if(errorList[i].indexOf('_email') >= 0){
        errorHint.attr('data-error_text',taf_emailError);
      }
      else{
        errorHint.attr('data-error_text',taf_textError);
      }
      
      errorHint.show();
    }
  }
  else{
    // No errors --> Show success header
    taf.find('div.taf_standard, div.taf_content').hide();
    taf.find('.taf_ok').show();
  }
} 

function sendTellAFriend(){
  var taf_send_url = miniUrlFix.fixAbsoluteUrl(url_prefix+miniUrlFix.getLanguagePrefix()+'/contact/sendmail/taf_sendmail.jsp');
  var options = {
        success: showResponseTAF,
    dataType: 'xml',
    type: 'POST',
	contentType: "application/x-www-form-urlencoded;charset=utf-8",
        url: taf_send_url
    };
 
    // bind form using 'ajaxForm' 
    $('#tell_a_friend_form').ajaxSubmit(options); 
}

$(document).ready(
  function(){
    if(typeof getQueryParams()['taf'] !== 'undefined'){
      loadTellAFriendLayer();
    }
  }
);

function GreyLayerTAF(){ 
    var obj = {
      greyLayer_show : function() {
        var scroll_width = $(document).width() + 'px';
        var scroll_height = $(document).height() + 'px';
        var inactiveBodyDiv = $('<div/>').attr('id','grey_layerTAF');
        
        $('body').append(inactiveBodyDiv);
        $('#grey_layerTAF').css('position', 'absolute');
        $('#grey_layerTAF').css('top', '0px');
        $('#grey_layerTAF').css('left', '0px');
        $('#grey_layerTAF').css('z-index', '80');
        $('#grey_layerTAF').css('background-color', '#000');
        $('#grey_layerTAF').css('width', scroll_width);
        $('#grey_layerTAF').css('height', scroll_height);
        $('#grey_layerTAF').css('zoom', '1');
        $('#grey_layerTAF').fadeTo(0, 0.5);
      },
      greyLayer_hide : function() {
          $('#grey_layerTAF').remove();
      }
    };
    return obj;
  }
  greyLayerTAF = GreyLayerTAF();

// -------- m_dealership_component.js --------

var c2bMapImage_ds;
var c2bSatelliteImage_ds;
var c2bTerrainImage_ds;

var distBranches_ds = new Array();

function c2bDealerInit_ds(mapImage, satelliteImage, terrainImage, selectDealerText) {
    var dealerMap = new Object();
    
    c2bMapImage_ds = mapImage != '' ? mapImage : null;
    c2bSatelliteImage_ds = satelliteImage != '' ? satelliteImage : null;
    c2bTerrainImage_ds = terrainImage != '' ? terrainImage : null;
    
    c2bSelectDealerText = selectDealerText;

    // Load c2b scripts
    jQuery.ajaxSetup({cache: true}); // enable cache
    $.getScript(C2BScript_Infobox, function(){ // get infobox.js
      $.getScript(C2BScript_Extdragg, function(){ // extdraggableobject.js
        //$.getScript(C2BScript_Search, function(){ // get C2B_LocalSearch.js
           $.getScript(C2BScript, function(){ // get C2B_DealerLocator.js

            c2bDealerLocator.init(
            {
              "baseURL" : C2BBaseUrl,
              "brand" : "MINI",
              "key" : "MINI_DLO",
              "country" : topicCountry === '_master' || topicCountry === '_master2' ? 'DE' : topicCountry.toUpperCase(),
              "language" : topicCountry === '_master' || topicCountry === '_master2'  ? 'de' : 'de',
              "map" : "subsidiary_map",
              "maxDealerSubsidiary" : 200,
              "countryBounds": "",
              "callbackHighlightDealer" : function( key ){ 
                  c2bDealerLocator.highlightDealer(
                  {
                      "key" : key,
                      "text" : getDealerInfoText(key)
                  } );
                  Cufon.replace(".infoBox .c2bDlCSelectDealer");
              },
              "callbackDealerOffices" :  function( dealers ){  },
              "callbackHandleError" :  function( data ){  },
              "displayOptions" :
              {
                  "markerIcon" :
                  {
                      image : getRelativeWebsiteRootPath(imgDirDealer + 'image.png'), // imgDirDealer is defined in m_dealer.js
                      shadow : getRelativeWebsiteRootPath(imgDirDealer + 'shadow.png'),
                      iconSize : [43,53],
                      shadowSize : [70,53],
                      iconAnchor : [0,53],
                      infoWindowAnchor : [0,0],
                      printImage : getRelativeWebsiteRootPath(imgDirDealer + 'printImage.gif'),
                      mozPrintImage : getRelativeWebsiteRootPath(imgDirDealer + 'mozPrintImage.gif'),
                      printShadow : getRelativeWebsiteRootPath(imgDirDealer + 'printShadow.gif'),
                      transparent : getRelativeWebsiteRootPath(imgDirDealer + 'transparent.png'),
                      imageMap : [11,0,16,1,23,2,23,3,23,4,23,5,23,6,23,7,23,8,23,9,23,10,23,11,23,12,23,13,23,14,23,15,23,16,23,17,23,18,23,19,23,20,23,21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,1,45,1,46,1,47,1,48,1,49,1,50,1,51,1,52,0,52,0,51,0,50,0,49,0,48,0,47,0,46,0,45,0,44,0,43,0,42,0,41,0,40,0,39,0,38,0,37,0,36,0,35,0,34,0,33,0,32,0,31,0,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0]
                  },
                  "infoBox" :
                  {
                    closeBoxURL : getRelativeWebsiteRootPath(imgDirDealer + 'close_button.gif'),
                    closeBoxMargin: "6px",
                    pixelOffset: [ -100, -60 ],
                    boxClass: "infoBox",
                    boxStyle:
                      {
                        width: "200px"
                      },
                    infoBoxClearance: [ 20, 20 ]
                  },
                  "mapTypeDisplay" :
                  {
                      "mapImage" : c2bMapImage_ds,
                      "satelliteImage" : c2bSatelliteImage_ds,
                      "terrainImage" : c2bTerrainImage_ds
                  }
              }
            } 
            , function(){
              // preselect distribution partner + outlets
            c2bDealerLocator.selectDealers("subsidiary_map", preselectSearchQuery, function successCallback(dealers){ updateDealersMap(dealers); });
            }); // init 

          }); // .getScript(C2B_DealerLocator.js)
        //}); // .getScript(C2B_LocalSearch.js)
      }); // extdraggableobject.js
    }); // get infobox.js
}

function updateDealersMap( dealers ){
  dealerMap = new Object();
  jQuery.each( dealers, function(i, dealer)
  {
    dealerMap[ dealer.key ] = dealer;
  });
}
// -------- m_dealer_rating.js --------
function DealerRating(){
  var dealerRatingRef = null;
  var ret = {
    DISPLAYED_COMMENTS: 5,   // amount of comments displayed on the details page
    REQUEST_URI: "/dyn/dealer_rating",
    nscIso: "",
    getOnlyRating: true,         // get only overview rating, no comments
    dealerRatingData: null, 
    commentDiv: null,
    jqueryId: ".dr",

    init: function (nscIso, getOnlyRating, overwrittenNscIso, overwrittenOutletId){
      this.nscIso = nscIso;
      this.getOnlyRating = getOnlyRating;
      this.jqueryId = ".dr";
      // dpidOutletid is set in dynamic content, the id is saved in the attributes of the dealer topic
      // dealer id changeable: CR 241 - dealer rating with mutiple dealers
      var currentDpidNscIso = nscIso;
      if ( (typeof(overwrittenNscIso) !== 'undefined') && overwrittenNscIso) {  
          currentDpidNscIso = overwrittenNscIso;
          this.jqueryId = this.jqueryId + overwrittenNscIso;
      }
      var currentDpidOutletId = null;
      if ( (typeof(dpidOutletid) !== 'undefined') && dpidOutletid) { 
          currentDpidOutletId = dpidOutletid;  
      }

      if ( (typeof(overwrittenOutletId) !== 'undefined') && overwrittenOutletId) {  
          currentDpidOutletId = overwrittenOutletId;
          this.jqueryId = this.jqueryId + overwrittenOutletId;
      }
      
      dealerRatingRef = this;
      this.commentDiv = $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_sales .drd_comment');
      $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_comment').remove();

      $(dealerRatingRef.jqueryId).find('input.dealer_rating_star').rating(); // init ratings
      if(typeof(jQuery.url.param("showDealerRating")) != 'undefined'){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview').css('visibility', 'visible');
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_sales').show();
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_service').show();
      }
      
      if($(dealerRatingRef.jqueryId).find('.dealer_rating_details').length > 0){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .tc_linklist').hide();
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview').prepend($('<div>').css('height', '28px'));
      }
      
      // special case for edit/qa/prod env, get data from qa
      if($(location).attr('href').indexOf('mini2010_edit') > -1 || $(location).attr('href').indexOf('mini2010_qa') > -1)
          this.REQUEST_URI = 'https://integ-s.mini.com/dyn/dealer_rating';
      if($(location).attr('href').indexOf('mini2010_prod') > -1)
          this.REQUEST_URI = 'http://www.mini.de/dyn/dealer_rating';

      // get data from prod if a certain url param is set
      if($.url.param('dealer_rating_data') === 'prod')
          this.REQUEST_URI = 'http://www.mini.de/dyn/dealer_rating';

      this.REQUEST_URI += "?only_rating=" + this.getOnlyRating +"&iso=" + currentDpidNscIso + "&dealer_id=" + currentDpidOutletId;
      // get dealer rating from server
      $.ajax({
        url: this.REQUEST_URI,
        dataType: 'jsonp',
        jsonp: 'jsonp_callback',
        success: this.displayDealerRating,
        error: this.handleRequestError
      });
    },

    displayDealerRating: function(dealerRatingData){
      if(dealerRatingData != null && (dealerRatingData.salesData != null || dealerRatingData.serviceData != null)){ // id null then no data is available
        dealerRatingRef.dealerRatingData = dealerRatingData;
        dealerRatingRef.updateRatingOverview(dealerRatingData);
        if(dealerRatingRef.getOnlyRating == false) dealerRatingRef.updateRatingDetails(dealerRatingData);
      }else{
        $(dealerRatingRef.jqueryId).find('.drd_no_rating_teaser').show();
      }
    },

    updateRatingOverview: function(dealerRatingData){
      // make overview rating container visibale
      $(dealerRatingRef.jqueryId).find('.dealer_rating_overview').css('visibility', 'visible');
      var commentAmount = '';

      // update sales rating
      if(dealerRatingData.salesData != null){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_sales').show();
        this.updateStars('sales', dealerRatingData.salesData.overallRatingStars);
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_sales .dr_value').html(Number(dealerRatingData.salesData.overallRatingValue).toFixed(1));
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_sales .dr_amount').html(dealerRatingData.salesData.amountRatings);
    
        // fix if no comment amount attribute is set in the XML data
        commentAmount = dealerRatingData.salesData.amountComments;
        if(typeof(commentAmount) === 'undefined')
            commentAmount = '0';

        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_sales .dr_comment_amount').html(commentAmount);
      }else{
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview').prepend($('<div>').css('height', '38px'));
      }

      // update service rating
      if(dealerRatingData.serviceData != null){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_service').show();
        this.updateStars('service', dealerRatingData.serviceData.overallRatingStars);
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_service .dr_value').html(Number(dealerRatingData.serviceData.overallRatingValue).toFixed(1));
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_service .dr_amount').html(dealerRatingData.serviceData.amountRatings);

        // fix if no comment amount attribute is set in the XML data
        commentAmount = dealerRatingData.serviceData.amountComments;
        if(typeof(commentAmount) === 'undefined')
            commentAmount = '0';

        if(dealerRatingData.serviceData.amountComments)
        $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_service .dr_comment_amount').html(commentAmount);
      }
    },
    
    updateStars: function(ratingType, ratingStars){
      $(dealerRatingRef.jqueryId).find('.dealer_rating_overview .dr_'+ ratingType +' input.dealer_rating_star').rating('enable').rating('select', ratingStars*2-1).rating('disable');
    },

    updateRatingDetails: function(dealerRatingData){
      var commentDiv = null;
      if(dealerRatingData.salesData != null && dealerRatingData.salesData.comments.length > 0){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_details').show();

        for(var i=0; i < dealerRatingData.salesData.comments.length && i < this.DISPLAYED_COMMENTS; i++){
          this.addComment('sales', dealerRatingData.salesData.comments[i], this.commentDiv.clone(), i);
        }
        
        $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_sales').show();
        if(dealerRatingData.salesData.comments.length > this.DISPLAYED_COMMENTS) $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_sales .drd_comment_links').css('visibility', 'visible');
      }

      if(dealerRatingData.serviceData != null && dealerRatingData.serviceData.comments.length > 0){
        $(dealerRatingRef.jqueryId).find('.dealer_rating_details').show();

        for(var j=0; j < dealerRatingData.serviceData.comments.length && j < this.DISPLAYED_COMMENTS; j++){
          this.addComment('service', dealerRatingData.serviceData.comments[j], this.commentDiv.clone(), j);
        }
        
        $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_service').show();
        if(dealerRatingData.serviceData.comments.length > this.DISPLAYED_COMMENTS) $(dealerRatingRef.jqueryId).find('.dealer_rating_details .drd_service .drd_comment_links').css('visibility', 'visible');
      }

      $(dealerRatingRef.jqueryId).find('input.dealer_rating_details_star').rating();
      Cufon.refresh('.drd_dealer_comment_label');
    },

    addComment: function(ratingType, commentData, commentDiv, commentNumber){
      commentDiv.find('.dr_value').html(Number(commentData.ratingValue).toFixed(1));
      commentDiv.find('.drd_comment_container').html(commentData.userComment);
      commentDiv.find('input.dealer_rating_details_star').rating().rating('enable').rating('select', commentData.ratingStars*2-1).rating('disable');

      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_comment_links').before(commentDiv);
      if(commentNumber < this.DISPLAYED_COMMENTS) commentDiv.show();
      if(commentData.dealerComment.length > 0){
        commentDiv.find('.drd_dealer_comment .drd_dealer_comment_container').html(commentData.dealerComment);
        commentDiv.find('.drd_dealer_comment').show();
      }
      
    },

    showAllComments: function(ratingType){
      
      if($(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_comment').length <= this.DISPLAYED_COMMENTS){
          var comments = (ratingType === 'service') ? this.dealerRatingData.serviceData.comments : this.dealerRatingData.salesData.comments;
          for(var j=this.DISPLAYED_COMMENTS; j < comments.length; j++){
              this.addComment(ratingType, comments[j], this.commentDiv.clone(), j);
          }
      }

      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_comment').each(function(index, comment){
        $(comment).show();
      });
      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_show_comments').hide();
      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_hide_comments').css('display', 'inline');
    },

    hideComments: function(ratingType){
       $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_comment').each(function(index, comment){
        //if(index >= dealerRating.DISPLAYED_COMMENTS){
        if(index >= dealerRatingRef.DISPLAYED_COMMENTS){
          $(comment).hide();
        }
      });
      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_show_comments').css('display', 'inline');
      $(dealerRatingRef.jqueryId).find('.drd_'+ ratingType +' .drd_hide_comments').hide();
    },

    handleRequestError: function(error){
      $(dealerRatingRef.jqueryId).find('.drd_no_rating_teaser').show();
    }

  }; // end ret 

  return ret;
}

$(document).ready(function(){
  if($('.dealer_rating_details').length == 0) return;
  Cufon.replace('.drd_dealer_comment_label');
});
// -------- jquery.MetaData.js --------
/*
 * Metadata - jQuery plugin for parsing metadata from elements
 *
 * Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id$
 *
 */

/**
 * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
 * in the JSON will become a property of the element itself.
 *
 * There are three supported types of metadata storage:
 *
 *   attr:  Inside an attribute. The name parameter indicates *which* attribute.
 *          
 *   class: Inside the class attribute, wrapped in curly braces: { }
 *   
 *   elem:  Inside a child element (e.g. a script tag). The
 *          name parameter indicates *which* element.
 *          
 * The metadata for an element is loaded the first time the element is accessed via jQuery.
 *
 * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
 * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
 * 
 * @name $.metadata.setType
 *
 * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("class")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from the class attribute
 * 
 * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("attr", "data")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a "data" attribute
 * 
 * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
 * @before $.metadata.setType("elem", "script")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a nested script element
 * 
 * @param String type The encoding type
 * @param String name The name of the attribute to be used to get metadata (optional)
 * @cat Plugins/Metadata
 * @descr Sets the type of encoding to be used when loading metadata for the first time
 * @type undefined
 * @see metadata()
 */

(function($) {

$.extend({
	metadata : {
		defaults : {
			type: 'class',
			name: 'metadata',
			cre: /({.*})/,
			single: 'metadata'
		},
		setType: function( type, name ){
			this.defaults.type = type;
			this.defaults.name = name;
		},
		get: function( elem, opts ){
			var settings = $.extend({},this.defaults,opts);
			// check for empty string in single property
			if ( !settings.single.length ) settings.single = 'metadata';
			
			var data = $.data(elem, settings.single);
			// returned cached data if it already exists
			if ( data ) return data;
			
			data = "{}";
			
			if ( settings.type == "class" ) {
				var m = settings.cre.exec( elem.className );
				if ( m )
					data = m[1];
			} else if ( settings.type == "elem" ) {
				if( !elem.getElementsByTagName ) return;
				var e = elem.getElementsByTagName(settings.name);
				if ( e.length )
					data = $.trim(e[0].innerHTML);
			} else if ( elem.getAttribute != undefined ) {
				var attr = elem.getAttribute( settings.name );
				if ( attr )
					data = attr;
			}
			
			if ( data.indexOf( '{' ) <0 )
			data = "{" + data + "}";
			
			data = eval("(" + data + ")");
			
			$.data( elem, settings.single, data );
			return data;
		}
	}
});

/**
 * Returns the metadata object for the first member of the jQuery object.
 *
 * @name metadata
 * @descr Returns element's metadata object
 * @param Object opts An object contianing settings to override the defaults
 * @type jQuery
 * @cat Plugins/Metadata
 */
$.fn.metadata = function( opts ){
	return $.metadata.get( this[0], opts );
};

})(jQuery);
// -------- json2.js --------
/*
    http://www.JSON.org/json2.js
    2011-02-23

    Public Domain.

    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

    See http://www.JSON.org/js.html


    This code should be minified before deployment.
    See http://javascript.crockford.com/jsmin.html

    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
    NOT CONTROL.


    This file creates a global JSON object containing two methods: stringify
    and parse.

        JSON.stringify(value, replacer, space)
            value       any JavaScript value, usually an object or array.

            replacer    an optional parameter that determines how object
                        values are stringified for objects. It can be a
                        function or an array of strings.

            space       an optional parameter that specifies the indentation
                        of nested structures. If it is omitted, the text will
                        be packed without extra whitespace. If it is a number,
                        it will specify the number of spaces to indent at each
                        level. If it is a string (such as '\t' or '&nbsp;'),
                        it contains the characters used to indent at each level.

            This method produces a JSON text from a JavaScript value.

            When an object value is found, if the object contains a toJSON
            method, its toJSON method will be called and the result will be
            stringified. A toJSON method does not serialize: it returns the
            value represented by the name/value pair that should be serialized,
            or undefined if nothing should be serialized. The toJSON method
            will be passed the key associated with the value, and this will be
            bound to the value

            For example, this would serialize Dates as ISO strings.

                Date.prototype.toJSON = function (key) {
                    function f(n) {
                        // Format integers to have at least two digits.
                        return n < 10 ? '0' + n : n;
                    }

                    return this.getUTCFullYear()   + '-' +
                         f(this.getUTCMonth() + 1) + '-' +
                         f(this.getUTCDate())      + 'T' +
                         f(this.getUTCHours())     + ':' +
                         f(this.getUTCMinutes())   + ':' +
                         f(this.getUTCSeconds())   + 'Z';
                };

            You can provide an optional replacer method. It will be passed the
            key and value of each member, with this bound to the containing
            object. The value that is returned from your method will be
            serialized. If your method returns undefined, then the member will
            be excluded from the serialization.

            If the replacer parameter is an array of strings, then it will be
            used to select the members to be serialized. It filters the results
            such that only members with keys listed in the replacer array are
            stringified.

            Values that do not have JSON representations, such as undefined or
            functions, will not be serialized. Such values in objects will be
            dropped; in arrays they will be replaced with null. You can use
            a replacer function to replace those with JSON values.
            JSON.stringify(undefined) returns undefined.

            The optional space parameter produces a stringification of the
            value that is filled with line breaks and indentation to make it
            easier to read.

            If the space parameter is a non-empty string, then that string will
            be used for indentation. If the space parameter is a number, then
            the indentation will be that many spaces.

            Example:

            text = JSON.stringify(['e', {pluribus: 'unum'}]);
            // text is '["e",{"pluribus":"unum"}]'


            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

            text = JSON.stringify([new Date()], function (key, value) {
                return this[key] instanceof Date ?
                    'Date(' + this[key] + ')' : value;
            });
            // text is '["Date(---current time---)"]'


        JSON.parse(text, reviver)
            This method parses a JSON text to produce an object or array.
            It can throw a SyntaxError exception.

            The optional reviver parameter is a function that can filter and
            transform the results. It receives each of the keys and values,
            and its return value is used instead of the original value.
            If it returns what it received, then the structure is not modified.
            If it returns undefined then the member is deleted.

            Example:

            // Parse the text. Values that look like ISO date strings will
            // be converted to Date objects.

            myData = JSON.parse(text, function (key, value) {
                var a;
                if (typeof value === 'string') {
                    a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                    if (a) {
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
                    }
                }
                return value;
            });

            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                var d;
                if (typeof value === 'string' &&
                        value.slice(0, 5) === 'Date(' &&
                        value.slice(-1) === ')') {
                    d = new Date(value.slice(5, -1));
                    if (d) {
                        return d;
                    }
                }
                return value;
            });


    This is a reference implementation. You are free to copy, modify, or
    redistribute.
*/

/*jslint evil: true, strict: false, regexp: false */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
    lastIndex, length, parse, prototype, push, replace, slice, stringify,
    test, toJSON, toString, valueOf
*/


// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

var JSON;
if (!JSON) {
    JSON = {};
}

(function () {
    "use strict";

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf()) ?
                this.getUTCFullYear()     + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate())      + 'T' +
                f(this.getUTCHours())     + ':' +
                f(this.getUTCMinutes())   + ':' +
                f(this.getUTCSeconds())   + 'Z' : null;
        };

        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {
                return this.valueOf();
            };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string' ? c :
                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0 ? '[]' : gap ?
                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
                    '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    if (typeof rep[i] === 'string') {
                        k = rep[i];
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0 ? '{}' : gap ?
                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
                '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());
// -------- jquery.sizechange.js --------
 
// -------- jquery.geolocation.js --------
/**
 * A jQuery-Geolocation-Plugin
 *
 * @author Thomas Michelbach <thomas@nomoresleep.net>
 * @copyright NoMoreSleep(tm) <http://developer.nomoresleep.net>
 * @version 0.1
 */

(function($){
	
	$.extend($.support,{
		geolocation:function(){
			return $.geolocation.support();
		}
	});

	$.geolocation = {        
		find:function(success, error, options){
			if($.geolocation.support()){
				options = $.extend({highAccuracy: false, track: false}, options);
				($.geolocation.object())[(options.track ? 'watchPosition' : 'getCurrentPosition')](function(location){
					success(location.coords);
				}, function(){
					error();
				}, {enableHighAccuracy: options.highAccuracy});		
			}else{
				error();				
			}
		},
		object:function(){
			return navigator.geolocation;
		},
		support:function(){
			return ($.geolocation.object()) ? true : false;
		}
	}
	
})(jQuery);
// -------- m_tab_options_component --------
/** Used in MINI Yours module. Switches two tab components */
function switchToModel(model_number){
  for(var i=0; i < 4; i++){
    if((model_number-1) == i){
      $('div.tab_oid_'+ thumbnailNavTab1 +'_'+ i).show();
      $('div.tab_oid_'+ thumbnailNavTab2 +'_'+ i).show();
    }else{
       $('div.tab_oid_'+ thumbnailNavTab1 +'_'+ i).hide();
       $('div.tab_oid_'+ thumbnailNavTab2 +'_'+ i).hide();
    }
  }
}
 
// -------- m_thumbnail_navigation.js --------
function tabOptionsComponent(){
  var ret = {
    THUMBS_PER_PAGE: 5,
    COMPONENT_OID: "",       // OID of the corresponding tab options component
    CONTAINER_ID : "",       // e. g. tab_options_<componentOID>
    options:      {},        // options data (thumb url, picture url etc.)
    currentFilter: 0,        // 0 = ALL, 1 = 1st options group ...
    currentPage:  1,
    totalPages:   1,
    thumbSpacerURL: "",
    currentFilteredIndexes: new Array(),
    defaultPictureURL: "",
    groupDefaultPictureURLs: new Array(),

    init: function (componentOID, componentData, groupDefaultPictureURLs){
      this.COMPONENT_OID = componentOID;
      this.options = componentData;
      this.CONTAINER_ID = "tab_options_" + this.COMPONENT_OID;
      this.groupDefaultPictureURLs = groupDefaultPictureURLs;
      this.thumbSpacerURL = $('#'+ this.CONTAINER_ID +' img.tab_options_thumbnail').attr('src');

      for(i=0; i < this.options.length; i++){
        this.currentFilteredIndexes.push(i);
      }

      this.totalPages = Math.round((this.options.length / this.THUMBS_PER_PAGE) + 0.49); // round up
      this.updatePageNavigation();
      this.fillThumbs(this);
      Cufon.replace('#'+ this.CONTAINER_ID +' .product_highlight_teaser_tab_title a', { hover: true });
    },

    showPicture: function(linkElement){
      $('#'+ this.CONTAINER_ID +' .tab_options_teaser').hide();
      var optionIndex = $(linkElement).attr('class').split('_')[1];
      $('#'+ this.CONTAINER_ID +' img.tab_options_picture').attr('src', this.options[optionIndex].pictureURL);
      $('#'+ this.CONTAINER_ID +' .tab_options_teaser.teaser_'+ optionIndex).show();
    },

    filter: function(filterIndex, linkElement){
      
      $('#'+ this.CONTAINER_ID +' .tab_component_table a').attr('class', '');
      $(linkElement).attr('class', "selected");

      this.currentFilter = filterIndex;
      this.close();
      this.currentFilteredIndexes = new Array();

      switch(filterIndex){
        case 0: 
          this.currentPage = 1;
          for(i=0; i < this.options.length; i++){
            this.currentFilteredIndexes.push(i);
          }
          break;
        default:
          for(i=0; i < this.options.length; i++){
            if(this.options[i].groupNumber == filterIndex){
              this.currentFilteredIndexes.push(i);
            }
          }
          break;
      }

      this.totalPages = Math.round((this.currentFilteredIndexes.length / this.THUMBS_PER_PAGE) + 0.49); // round up
      this.currentPage = 1;
      this.fillThumbs(this);
      this.updatePageNavigation();
      Cufon.refresh('#'+ this.CONTAINER_ID +' .product_highlight_teaser_tab_title a', { hover: true });
    },

    previousPage: function(){
      this.currentPage--;
      this.updatePageNavigation();
      this.fillThumbs(this);
    },

    nextPage: function(){
      this.currentPage++;
      this.updatePageNavigation();
      this.fillThumbs(this);
    },

    close: function(){
      $('#'+ this.CONTAINER_ID +' .tab_options_teaser').hide();
      if(this.currentFilter == 0){
        $('#'+ this.CONTAINER_ID +' img.tab_options_picture').attr('src', this.defaultPictureURL);
        $('#'+ this.CONTAINER_ID +' .teaser_default').show();
      }else{ // filter is active
        if(typeof(this.groupDefaultPictureURLs[this.currentFilter]) === 'undefined'){
          $('#'+ this.CONTAINER_ID +' img.tab_options_picture').attr('src', this.defaultPictureURL);
          $('#'+ this.CONTAINER_ID +' .teaser_default').show();
        }else{
          $('#'+ this.CONTAINER_ID +' .tab_options_teaser.teaser_'+ this.currentFilter +'_group').show();
          $('#'+ this.CONTAINER_ID +' img.tab_options_picture').attr('src', this.groupDefaultPictureURLs[this.currentFilter]);
        }
      }
    },

    updatePageNavigation: function(){
      $('#'+ this.CONTAINER_ID +' .tab_options_selected_page').html(this.currentPage);
      $('#'+ this.CONTAINER_ID +' .tab_options_total_pages').html(this.totalPages);
      $('#'+ this.CONTAINER_ID +' .tab_options_nav_arrow_left').parent().show();
      $('#'+ this.CONTAINER_ID +' .tab_options_nav_arrow_right').parent().show();
      if(this.currentPage === 1){
        $('#'+ this.CONTAINER_ID +' .tab_options_nav_arrow_left').parent().hide();
      }
      if(this.currentPage === this.totalPages){
        $('#'+ this.CONTAINER_ID +' .tab_options_nav_arrow_right').parent().hide();
      }
      // Cufon.replace('#'+ this.CONTAINER_ID +' .tab_options_page_nav');
    },

    fillThumbs: function(tabOptionsComponentRef){
      // clear thumbs
      $('#'+ this.CONTAINER_ID +' img.tab_options_thumbnail').each(function(index, imgElement){
        $(imgElement).attr('src', tabOptionsComponentRef.thumbSpacerURL);
        $(imgElement).css('visibility', 'hidden');
      });
      // fill thumbs
      for(i= (this.currentPage-1)*this.THUMBS_PER_PAGE, j = 0; i < this.currentFilteredIndexes.length && j < this.THUMBS_PER_PAGE; i++, j++){
        var thumbnail = $($('#'+ this.CONTAINER_ID +' img.tab_options_thumbnail')[j]);
        thumbnail.attr("src", this.options[this.currentFilteredIndexes[i]].thumbURL);
        thumbnail.css('visibility', 'visible');
        thumbnail.parent().attr('class', 'thumb_'+ this.currentFilteredIndexes[i]);
      }
    }

  }; // end ret 

  return ret;
}
// -------- datejs.js --------
/**
 * Version: 1.0 Alpha-1 
 * Build Date: 13-Nov-2007
 * Copyright (c) 2006-2007, Coolite Inc. (http://www.coolite.com/). All rights reserved.
 * License: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/. 
 * Website: http://www.datejs.com/ or http://www.coolite.com/datejs/
 */
Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|after|from)/i,subtract:/^(\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
return-1;};Date.getDayNumberFromName=function(name){var n=Date.CultureInfo.dayNames,m=Date.CultureInfo.abbreviatedDayNames,o=Date.CultureInfo.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
return-1;};Date.isLeapYear=function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0));};Date.getDaysInMonth=function(year,month){return[31,(Date.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};Date.getTimezoneOffset=function(s,dst){return(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST[s.toUpperCase()]:Date.CultureInfo.abbreviatedTimeZoneStandard[s.toUpperCase()];};Date.getTimezoneAbbreviation=function(offset,dst){var n=(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST:Date.CultureInfo.abbreviatedTimeZoneStandard,p;for(p in n){if(n[p]===offset){return p;}}
return null;};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.compareTo=function(date){if(isNaN(this)){throw new Error(this);}
if(date instanceof Date&&!isNaN(date)){return(this>date)?1:(this<date)?-1:0;}else{throw new TypeError(date);}};Date.prototype.equals=function(date){return(this.compareTo(date)===0);};Date.prototype.between=function(start,end){var t=this.getTime();return t>=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;}
var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);}
if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);}
if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);}
if(x.hour||x.hours){this.addHours(x.hour||x.hours);}
if(x.month||x.months){this.addMonths(x.month||x.months);}
if(x.year||x.years){this.addYears(x.year||x.years);}
if(x.day||x.days){this.addDays(x.day||x.days);}
return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(value<min||value>max){throw new RangeError(value+" is not a valid value for "+name+".");}
return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;}
if(!x.second&&x.second!==0){x.second=-1;}
if(!x.minute&&x.minute!==0){x.minute=-1;}
if(!x.hour&&x.hour!==0){x.hour=-1;}
if(!x.day&&x.day!==0){x.day=-1;}
if(!x.month&&x.month!==0){x.month=-1;}
if(!x.year&&x.year!==0){x.year=-1;}
if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());}
if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());}
if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());}
if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());}
if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());}
if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());}
if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());}
if(x.timezone){this.setTimezone(x.timezone);}
if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);}
return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;}
var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}}
return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();};
Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}
return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i<dx.length;i++){$D[dx[i]]=$D[dx[i].substring(0,3)]=df(i);}
var mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}
return this.moveToMonth(n,this._orient);};};for(var j=0;j<mx.length;j++){$D[mx[j]]=$D[mx[j].substring(0,3)]=mf(j);}
var ef=function(j){return function(){if(j.substring(j.length-1)!="s"){j+="s";}
return this["add"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$D[de]=$D[de+"s"]=ef(px[k]);$N[de]=$N[de+"s"]=nf(de);}}());Date.prototype.toJSONString=function(){return this.toString("yyyy-MM-ddThh:mm:ssZ");};Date.prototype.toShortDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortDatePattern);};Date.prototype.toLongDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.longDatePattern);};Date.prototype.toShortTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortTimePattern);};Date.prototype.toLongTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.longTimePattern);};Date.prototype.getOrdinal=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};
(function(){Date.Parsing={Exception:function(s){this.message="Parse error at '"+s.substring(0,10)+" ...'";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp("^\s*"+s+"\s*"))(s);};},stoken:function(s){return _.rtoken(new RegExp("^"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}
break;}
return[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}
rx.push(r[0]);s=r[1];}
return[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}
return[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}
throw new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}
return rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}
if(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
try{r=(px[i].call(this,s));}catch(e){r=null;}
if(r){return r;}}
throw new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
try{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}
rx.push(r[0]);s=r[1];}
return[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;if(px.length==1){return px[0];}
return function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}
rx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}
s=q[1];}
if(!r){throw new $P.Exception(s);}
if(q){throw new $P.Exception(q[1]);}
if(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}
return[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}
rx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}
if(!last&&q[1].length===0){last=true;}
if(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}
p=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}
if(rx[1].length<best[1].length){best=rx;}
if(best[1].length===0){break;}}
if(best[0].length===0){return best;}
if(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}
best[1]=q[1];}
return best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}
return rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}
if(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx="optional not ignore cache".split(/\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}
var _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx="each any all".split(/\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}
return rx;};Date.Grammar={};Date.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\d\+\-]/g,"");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\d+/)[0]);};},month:function(s){return function(){this.month=((s.length==3)?Date.getMonthNumberFromName(s):(Number(s)-1));};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<Date.CultureInfo.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];var now=new Date();this.year=now.getFullYear();this.month=now.getMonth();this.day=1;this.hour=0;this.minute=0;this.second=0;for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}
this.hour=(this.meridian=="p"&&this.hour<13)?this.hour+12:this.hour;if(this.day>Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");}
var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}
return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}
for(var i=0;i<x.length;i++){if(typeof x[i]=="function"){x[i].call(this);}}
if(this.now){return new Date();}
var today=Date.today();var method=null;var expression=!!(this.days!=null||this.orient||this.operator);if(expression){var gap,mod,orient;orient=((this.orient=="past"||this.operator=="subtract")?-1:1);if(this.weekday){this.unit="day";gap=(Date.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}
if(this.month){this.unit="month";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}
if(!this.unit){this.unit="day";}
if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1;}
if(this.unit=="week"){this.unit="day";this.value=this.value*7;}
this[this.unit+"s"]=this.value*orient;}
return today.add(this);}else{if(this.meridian&&this.hour){this.hour=(this.hour<13&&this.meridian=="p")?this.hour+12:this.hour;}
if(this.weekday&&!this.day){this.day=(today.addDays((Date.getDayNumberFromName(this.weekday)-today.getDay()))).getDate();}
if(this.month&&!this.day){this.day=1;}
return today.set(this);}}};var _=Date.Parsing.Operators,g=Date.Grammar,t=Date.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\s\-\.\,\/\x27]+)/);g.timePartDelimiter=_.stoken(":");g.whiteSpace=_.rtoken(/^\s*/);g.generalDelimiter=_.rtoken(/^(([\s\,]|at|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=Date.CultureInfo.regexPatterns;var kx=keys.split(/\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}
fn=_C[keys]=_.any.apply(null,px);}
return fn;};g.ctoken2=function(key){return _.rtoken(Date.CultureInfo.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.mm,g.ss],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2("shortMeridian"),t.meridian));g.tt=_.cache(_.process(g.ctoken2("longMeridian"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^(\+|\-)?\s*\d\d\d\d?/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^(\+|\-)\s*\d\d\d\d/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2("timezone"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken("T"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\d\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\d\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\d\d\d\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2("timeContext")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken("past future"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken("add subtract"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken("yesterday tomorrow today now"),t.rday);g.unit=_.process(g.ctoken("minute hour day week month year"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\D/g,"");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[Date.CultureInfo.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw Date.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}
return _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats(["yyyy-MM-ddTHH:mm:ss","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","d"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}
return g._start.call({},s);};}());Date._parse=Date.parse;Date.parse=function(s){var r=null;if(!s){return null;}
try{r=Date.Grammar.start.call({},s);}catch(e){return null;}
return((r[1].length===0)?r[0]:null);};Date.getParseFunction=function(fx){var fn=Date.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}
return((r[1].length===0)?r[0]:null);};};Date.parseExact=function(s,fx){return Date.getParseFunction(fx)(s);};

// -------- m_download_gallery.js --------
function downloadGallery(){
    // reference 
    var thisDownloadGallery = null;
    
    var ret = {

        // constants
        ASSET_TYPE_PICTURE: 0,
        ASSET_TYPE_VIDEO: 1,
        ASSET_TYPE_SOUND: 2,
        ASSET_TYPE_MOBILE: 3,
        ASSET_TYPE_PDF: 4,
        ASSET_TYPE_MISC: 5,
        ASSET_TYPE_ALL: -1,
        ASSET_COUNT_PER_PAGE: 20,
        NAVIGATION_PAGE_COUNT: 3,           // e. g. << 4 | 5 | 6 >>

        // variables
        data: {},                           // assets, labels, config etc.
        initialAssetFilter: new Array(),    // initial order of the assets
        newestFourAssets: new Array(),      
        currentAssetFilter: new Array(),    // contains asset ids of the current filtered asset set

        assetIconClass: {0: "picture", 1: "video", 2: "sound", 3: "mobile", 4: "pdf", 5: "misc"},
        currentPage: 1,
        currentNavigationPage: 1,
        selectedMainCatID: -1,
        selectedSubCatID: -1,
        selectedAssetFilter: -1,

        greyLayerElement: null,            // semi transparent layer displayed then the detailed view of a asset is open
        detailsContainer: null,            // shortcut to details div container
        downloadGallery: null,             // shortcut to download gallery div container
        mainThemeSelector: null,           // shortcut to main theme select element
        subThemeSelector: null,            // shortcut to sub theme select element
        detailsContent: null,              // shortcut
        detailsFooter: null,               // shortcut


        // constructor
        init: function(data){
            this.data = data;
            thisDownloadGallery = this;
            this.downloadGallery = $('#'+ this.data.downloadGalleryOID);

            // create grey layer for detailed view + init details container
            this.createGreyLayer();
            this.greyLayerElement = $('#dg_grey_layer');
            this.detailsContainer =  this.downloadGallery.find('.dg_details_container');
            this.detailsContent = this.detailsContainer.find('.dg_preview_content');
            this.detailsFooter = this.detailsContainer.find('.dg_preview_footer');
            this.mainThemeSelector = this.downloadGallery.find('.dg_theme_selector.dg_main_themes select');
            this.subThemeSelector = this.downloadGallery.find('.dg_theme_selector.dg_sub_themes select');
            
            this.createInitialAssetOrder(); // fills this.initialAssetFilter
            this.currentAssetFilter = this.initialAssetFilter;

            this.doPrefilter();
            this.updateOverview();
            this.updateAssetBar();
        },

        /* If the request url matches a url in the prefilter array, the corresponding 
         * main/subthemes will be prefiltered automatically.
         */
        doPrefilter: function(){
            // search array for url match
            for(var i=0; i < this.data.prefilters.length; i++){
                if(this.data.prefilters[i].pageOID === pageOid){
                    // get internal theme ids
                    var ids = this.getInternalThemeIDs(this.data.prefilters[i].mainthemeID, this.data.prefilters[i].subthemeID);
                    var internalMainthemeID = ids.mainthemeID;
                    var internalSubthemeID = ids.subthemeID;
                    
                    // update selectbox selection
                    if(internalMainthemeID != null){
                        setValue(this.mainThemeSelector, internalMainthemeID); // setValue from model_comparsion.js
                        this.filterMainCategory(this.mainThemeSelector);
                        this.mainThemeSelector.parent().parent().hide();
                        this.subThemeSelector.parent().parent().hide();
                        if(internalSubthemeID != null){
                            setValue(this.subThemeSelector, internalSubthemeID);
                            this.filterSubCategory(this.subThemeSelector);
                        }
                    }
                }
            }
            // no prefiltering neccessary
            this.updateAssetBar();
        },

        /* If the request url matches a url in the prefilter array, the corresponding 
         * main/subthemes will be prefiltered automatically.
         */
        getInternalThemeIDs: function(mainthemeID, subthemeID){
            var result = {mainthemeID: null, subthemeID: null};
            for(var i=0; i < this.data.mainCategories.length; i++){
                if(this.data.mainCategories[i].templateID === mainthemeID){
                    result.mainthemeID = i;
                    // search for subtheme
                    if(subthemeID != null){
                        for(var j=0; j < this.data.mainCategories[i].subCategories.length; j++){
                            if(this.data.mainCategories[i].subCategories[j].templateID === subthemeID){
                                result.subthemeID = j;
                                break;
                            }
                        }
                    }
                    break;
                }
            }
            return result;
        },

        // does all the filtering of the assets
        filter: function(mainCatID, subCatID, assetType){
            var filter = this.initialAssetFilter.slice(); // copy
            var filterLength = 0; // init
            // do main theme filter
            if(mainCatID > -1){
                
                filterLength = filter.length;
                for(var i=0; i < filterLength; i++){ // i = 4 ignore first four newest assets -> feature removed
                    if(this.data.asset[filter[i]].mainCategoryID != mainCatID){
                        filter.splice( $.inArray(filter[i], filter), 1 ); // remove entry
                        filterLength--;
                        i--;
                    }
                }

                // do sub theme filter
                if(subCatID > -1){
                    filterLength = filter.length;
                    for(var i=0; i < filterLength; i++){
                        if(this.data.asset[filter[i]].subCategoryID != subCatID){
                            filter.splice( $.inArray(filter[i], filter), 1 ); // remove entry
                            filterLength--;
                            i--;
                        }
                    }
                }
            }

            // do asset filter
            if(assetType != this.ASSET_TYPE_ALL){
                filterLength = filter.length;
                for(var i=0; i < filterLength; i++){ // i = 4 ignore first four newest assets -> feature removed
                    if(this.data.asset[filter[i]].assetType != assetType){
                        filter.splice( $.inArray(filter[i], filter), 1 ); // remove entry
                        filterLength--;
                        i--;
                    }
                }
            }
            
            // order by publish date
            if(mainCatID > -1 && subCatID > -1 && assetType != this.ASSET_TYPE_ALL){
                filter.sort(this.dateSortDescFilter);
            }
            
            this.currentAssetFilter = filter;
            this.updateOverview();
        },


        // updates the view, e. g. the filtered asset set has changed
        updateOverview: function(){
            // slice() = copy in a new array instance
            var filter = this.currentAssetFilter.slice();
            this.downloadGallery.find('.dg_asset').hide();
            this.downloadGallery.find('.dg_asset').appendTo(this.downloadGallery.find('.dg_save_assets').empty());

            this.downloadGallery.find('.dg_body').empty();

            // sort asset divs reverse and prepend them
            var a = new Array();
            for(var i=0; i < filter.length; i++){
                var asset = this.downloadGallery.find('#'+ this.data.downloadGalleryOID +'_'+ filter[i]);
                asset.removeClass('dg_asset_no_margin');
                if((i+1) % 4 == 0 && i > 0) // four assets per line
                    asset.addClass('dg_asset_no_margin');
                
                this.downloadGallery.find('.dg_body').append(asset);
                
                if((i+1) % 4 == 0 && i > 0)
                    this.downloadGallery.find('.dg_body').append('<div class="clearing"></div>');
            }

            this.downloadGallery.find('.dg_body').append('<div class="clearing"></div>');

            this.updateNavigation();
        },

        updateAssetBar: function(){
            // get distinct asset types from current filter
            var distinctAssetTypes = {};
            for(var i=0; i < this.currentAssetFilter.length; i++){
                distinctAssetTypes[this.data.asset[this.currentAssetFilter[i]].assetType] = this.data.asset[this.currentAssetFilter[i]].assetType;
            }

            // hide filter asset icons
            for(var i=0; i < 6; i++){
                if(typeof(distinctAssetTypes[i]) !== 'undefined')
                    this.downloadGallery.find('a.dg_asset_filter_'+this.assetIconClass[i]).show();
                else
                    this.downloadGallery.find('a.dg_asset_filter_'+this.assetIconClass[i]).hide();
            }
        },

        // updates the assets to be shown and delegates an update of the navigation elements
        updateNavigation: function(){

            var assetCountPerPage = this.ASSET_COUNT_PER_PAGE;
            var currentPage = this.currentPage;

            // no page navigation needed, just one page
            if(this.currentAssetFilter.length/this.ASSET_COUNT_PER_PAGE <= 1){
                this.downloadGallery.find('.dg_navigation *').css('visibility', 'hidden');
                this.downloadGallery.find('.dg_asset').each(function(index, asset){
                    var inCurrentAssetFilter = $.inArray(parseInt($(asset).attr('id').split('_')[1]), thisDownloadGallery.currentAssetFilter);
                    if(index < assetCountPerPage && inCurrentAssetFilter > -1){
                        $(asset).show();
                    }else{
                        $(asset).hide();
                    }
                });
            }else{ // more than one page -> enable page navigation
                this.downloadGallery.find('.dg_navigation *').css('visibility', 'visible');
                this.updatePageNavigation();
                this.downloadGallery.find('.dg_asset').each(function(index, asset){
                    var inCurrentAssetFilter = $.inArray(parseInt($(asset).attr('id').split('_')[1]), thisDownloadGallery.currentAssetFilter);
                    if(assetCountPerPage * (currentPage-1) <= index && index < assetCountPerPage * currentPage && inCurrentAssetFilter > -1){
                        $(asset).show();
                    }else{
                        $(asset).hide();
                    }
                });
            }
        },

        // updqates navigation elements << 1 | 2| 3 >>
        updatePageNavigation: function(){
            var navigationPageCount = this.NAVIGATION_PAGE_COUNT;
            var totalPages = Math.ceil(this.currentAssetFilter.length/this.ASSET_COUNT_PER_PAGE);
            var totalNavigationPages = Math.ceil(totalPages/navigationPageCount);
            var currentPage = this.currentPage;
            var currentNavigationPage = this.currentNavigationPage;

            this.downloadGallery.find('.dg_navigation').each(function(index, navigation){ // selects top and bottom navigation

                // update/show page links
                for(var i=1, j = ((currentNavigationPage-1) * navigationPageCount + 1); i <= navigationPageCount; i++, j++){
                    if(j <= totalPages){
                        var pageElement = $(navigation).find('.dg_navigation_page_' + i + ' a');
                        $(navigation).find('.dg_navigation_page_' + i).show();
                        pageElement.removeClass('dg_navigation_page_selected');
                        pageElement.html(j);
                        pageElement.unbind('click');
                        pageElement.click(function(event){ thisDownloadGallery.goToPage(event.target.innerHTML);});
                        if(j == currentPage) // highlight selected page
                            pageElement.addClass('dg_navigation_page_selected');
                    }else{
                        $(navigation).find('.dg_navigation_page_' + i).hide();
                    }
                }

                // show/hide previous/next links
                if(currentNavigationPage > 1)
                    $(navigation).find('.dg_navigation_prev_page').show();
                else
                    $(navigation).find('.dg_navigation_prev_page').hide();
                
                if(currentNavigationPage < totalNavigationPages)
                    $(navigation).find('.dg_navigation_next_page').show();
                else
                    $(navigation).find('.dg_navigation_next_page').hide();
            });
        },


        // called then the main theme select element option changes
        filterMainCategory: function(selectOptionElement){
            this.selectedMainCatID = $(selectOptionElement).find('option:selected').attr('value');
            this.selectedSubCatID = -1;
            this.resetSubcategoriesSelectBox();
            this.fillSubcategoriesSelectBox(this.selectedMainCatID);
            this.filter(this.selectedMainCatID, this.selectedSubCatID, this.selectedAssetFilter); // mainCatID, subCatID, assetType
        },


        // called then the sub theme select element option changes
        filterSubCategory: function(selectOptionElement){
            this.selectedSubCatID = $(selectOptionElement).find('option:selected').attr('value');
            this.filter(this.selectedMainCatID, this.selectedSubCatID, this.selectedAssetFilter); // mainCatID, subCatID, assetType
        },


        // fills the sub theme select element with the themes/categories
        fillSubcategoriesSelectBox: function(mainNavID){
            if(mainNavID == -1){
                this.subThemeSelector.attr('disabled','true'); // disable sub theme select box
                return;
            }
           
            for(var i=0; i < this.data.mainCategories[mainNavID].subCategories.length; i++){
                var option = $('<option/>').attr('value', this.data.mainCategories[mainNavID].subCategories[i].id).append(this.data.mainCategories[mainNavID].subCategories[i].label);
                this.subThemeSelector.append(option);
            }
            
            if(this.data.mainCategories[mainNavID].subCategories.length === 0) this.subThemeSelector.find('option:first').html(this.data.labelNoSubcategory);

            this.subThemeSelector.attr('disabled','false'); // disable sub theme select box
            if(this.subThemeSelector.get()[0].internalCombobox != undefined)
                this.subThemeSelector.get()[0].internalCombobox.update();
        },


        // clear sub theme select element
        resetSubcategoriesSelectBox: function(){
            this.subThemeSelector.find('option').each(function(index, option){
                if(index == 0){
                    thisDownloadGallery.subThemeSelector.find('option:first').html(thisDownloadGallery.data.labelPleaseSelect);
                    return;
                }
                $(option).remove();
            });
            if(this.subThemeSelector.get()[0].internalCombobox != undefined)
                this.subThemeSelector.get()[0].internalCombobox.update();
        },


        // called from asset filter button clicks
        filterAssetType: function(ASSET_TYPE, filterLinkElement){
            if(this.selectedAssetFilter == ASSET_TYPE) return; // already filtered
            this.selectedAssetFilter = ASSET_TYPE;
            this.downloadGallery.find('.dg_asset_filter_icon').each(function(index, linkElement){
                var className = $(linkElement).attr('class').split(' ')[1];
                if(className.indexOf('_active'))
                    $(linkElement).removeClass(className).addClass(className.replace('_active', ''));
            });
            var className = $(filterLinkElement).attr('class').split(' ')[1];
            if(ASSET_TYPE != this.ASSET_TYPE_ALL)
                $(filterLinkElement).removeClass(className).addClass(className + '_active');

            // filter asset
            thisDownloadGallery.filter(thisDownloadGallery.selectedMainCatID, thisDownloadGallery.selectedSubCatID, ASSET_TYPE);
        },

        // e. g. << 1 | 2 | 3 >> -> showNextNavigationPage() -> << 4 | 5
        showNextNavigationPage: function(){
            this.currentNavigationPage++;
            this.updatePageNavigation();
        },

        showPrevNavigationPage: function(){
            this.currentNavigationPage--;
            this.updatePageNavigation();
        },

        goToPage: function(pageNumber){
            this.currentPage = pageNumber;
            this.updateNavigation();
        },

        // called when the asset thumbs/links are klicked
        openAsset: function(assetElement){
            var asset = $(assetElement).parent();
            if(!asset.hasClass('dg_asset'))
                asset = asset.parent().parent(); // opened from link
            var assetID = asset.attr('id').split('_')[1];

            this.fillContentsAndShowDetails(assetID);
        },

        fillContentsAndShowDetails: function(assetID){
            var detailsContentContainer = this.detailsContainer.find('.dg_preview_content').html();
            
            // fill title
            this.detailsContainer.find('.dg_details_title').html(this.data.asset[assetID].title);
            Cufon.replace(this.detailsContainer.find('.dg_details_title'));
            var linkContainer =  this.detailsFooter.find('.dg_preview_footer_links');

            // fill preview
            switch(this.data.asset[assetID].assetType){
                case this.ASSET_TYPE_PICTURE: case this.ASSET_TYPE_VIDEO:
                    this.detailsContent.removeClass('dg_inlineview');
                    this.detailsFooter.removeClass('dg_inlineview');
                    this.detailsContainer.css('max-width', 'none');
                    this.detailsFooter.find('.dg_preview_footer_table').show();
                    this.detailsFooter.find('.dg_preview_footer_links_vertical').hide();
                    this.detailsFooter.find('.dg_preview_footer_label_vertical').hide();
                    break;
                case this.ASSET_TYPE_SOUND: case this.ASSET_TYPE_MOBILE: case this.ASSET_TYPE_PDF: case this.ASSET_TYPE_MISC:
                    linkContainer = this.detailsFooter.find('.dg_preview_footer_links_vertical');
                    this.detailsContent.addClass('dg_inlineview');
                    this.detailsFooter.addClass('dg_inlineview');
                    this.detailsContainer.css('max-width', '386px');
                    linkContainer.show();
                    this.detailsFooter.find('.dg_preview_footer_label_vertical').show();
                    this.detailsFooter.find('.dg_preview_footer_table').hide();
                    break;
            }
            
            this.detailsContainer.find('.dg_player_component').hide();
            if(this.ASSET_TYPE_SOUND == this.data.asset[assetID].assetType || this.ASSET_TYPE_VIDEO == this.data.asset[assetID].assetType){
                this.detailsContainer.find('#'+ this.data.asset[assetID].previewFlash).show();
                if(this.ASSET_TYPE_SOUND == this.data.asset[assetID].assetType){
                    // move music player to footer
                    this.detailsFooter.prepend(this.detailsContent.find('#'+ this.data.asset[assetID].previewFlash).addClass('dg_sound_margin'));
                    this.detailsContent.find('.dg_remove_marker').remove();
                    this.detailsContent.prepend($('<img />').attr('src', this.data.asset[assetID].previewPicture).addClass('dg_remove_marker'));
                }
            }else{
               this.detailsContent.find('.dg_remove_marker').remove();
               var image = $('<img />');
               image.load(function(event){ thisDownloadGallery.openDetailsContainer(); });
               image.attr('src', this.data.asset[assetID].previewPicture).addClass('dg_remove_marker');
               
               if(this.data.asset[assetID].previewPictureWidth !== null){
                    image.css("width", this.data.asset[assetID].previewPictureWidth +"px");
                }
               this.detailsContent.prepend(image);
            }

            // fill asset links
           this.detailsFooter.find('.dg_preview_footer_label, .dg_preview_footer_label_vertical:visible').html(this.data.asset[assetID].labelAvailableFormats);
           Cufon.replace(this.detailsFooter.find('.dg_preview_footer_label, .dg_preview_footer_label_vertical'));
           this.detailsFooter.find('.dg_preview_footer_links, .dg_preview_footer_links_vertical').html(''); // clear
           var style = '';

           for(var i=0; i < this.data.asset[assetID].attachments.length; i++){
               var fileSize = this.data.asset[assetID].attachments[i].size;
               if(i == 0) style = 'margin-top: 0px';

               var fileType = "";
               if(this.data.asset[assetID].attachments[i].hide_type === false && this.data.asset[assetID].attachments[i].type !== null){
                   fileType = this.data.asset[assetID].attachments[i].type;
                    if(this.data.asset[assetID].attachments[i].label.length > 0)
                        fileType = " " + fileType;
               }
                
                // only in picture assets
                var format = "";
                if(this.data.asset[assetID].assetType === this.ASSET_TYPE_PICTURE && this.data.asset[assetID].attachments[i].format !== null)
                    format = this.data.asset[assetID].attachments[i].format;
                if(fileType.length > 0 && format.length > 0)
                    format = ", " + format;

               linkContainer.append('<div class="dg_details_link_container" style="'+ style +'"><a class="dg_details_links" href="'+ this.data.asset[assetID].attachments[i].link +'">'+this.data.asset[assetID].attachments[i].label + fileType + format+ ' <span class="dg_file_size">('+ fileSize +')</span></a></div>');

               style = '';
           }
           Cufon.replace(this.detailsFooter.find('.dg_details_links'));

            if(this.ASSET_TYPE_SOUND == this.data.asset[assetID].assetType || this.ASSET_TYPE_VIDEO == this.data.asset[assetID].assetType || this.data.asset[assetID].previewPicture.length === 0)
                this.openDetailsContainer();
        },

        createGreyLayer: function(){
            
            if($('#dg_grey_layer').length > 0) return;
            var greyDiv = $('<div/>').attr('id', 'dg_grey_layer').fadeTo(0, 0.5);

            greyDiv.click(function(clickEvent){
                thisDownloadGallery.closeDetailsContainer();
            });
            $('body').append(greyDiv);
        },


        openDetailsContainer: function(){
            
            // scale grey layer
            var greyDiv = $('#dg_grey_layer');
            greyDiv.css('width', $(document).width()+"px");
            greyDiv.css('height', $(document).height()+"px");
            
            // position container
            this.greyLayerElement.css('visibility', 'visible');
            this.detailsContainer.css('visibility', 'visible');

            var gallery_offset = this.downloadGallery.offset();
            this.detailsContainer.css('top', gallery_offset.top + 190);
            this.detailsContainer.css('left', gallery_offset.left + ((this.downloadGallery.width()-this.detailsContainer.width())/2));
        },

        closeDetailsContainer: function(){
            
             // stop playing videos/sounds, IE fix
            if( this.downloadGallery.find('.player_component').length > 0 ) {
                this.downloadGallery.find('.player_component').flash(function() {
                  if (typeof this.stopPlayback === 'function') {
                    try {
                      this.stopPlayback();
                    }catch( ignore ){}
                }
               });
            }
            
            this.detailsContent.find('.dg_remove_marker').remove();
            this.detailsContent.find('.dg_player_component').hide();
            this.detailsFooter.find('.dg_player_component').hide();
            this.greyLayerElement.css('visibility', 'hidden');
            this.detailsContainer.css('visibility', 'hidden');
        },

        createInitialAssetOrder: function(){

            // sort by asset type ascending
            var assetsTmp = this.data.asset.slice();
            assetsTmp.sort(this.assetTypeSort);
            
            // sort within asset type
            assetsTmp = this.sortWithinAssetType(assetsTmp);

            // add assets ids only
            for(var i=0; i < assetsTmp.length; i++){
                this.initialAssetFilter.push(assetsTmp[i].assetID);
            }
        },

        dateSortDesc: function(a, b){
            return Date.parse(b.publishDate).getTime() - Date.parse(a.publishDate).getTime();
        },

        dateSortDescFilter: function(a, b){
            return Date.parse(thisDownloadGallery.data.asset[b].publishDate).getTime() - Date.parse(thisDownloadGallery.data.asset[a].publishDate).getTime();
        },

        assetTypeSort: function(a, b){
            return a.assetType - b.assetType;
        },

        sortOrderWithinAssetType: function(a, b){
            return a.orderWithinAssettype - b.orderWithinAssettype;
        },

        sortWithinAssetType: function(assetArray){
            if(assetArray.length == 0) return assetArray;
            var result = new Array();
            var tmpArray = new Array();
            var currentAssetType = assetArray[0].assetType;
            for(var i=0; i < assetArray.length; i++){
                if(currentAssetType != assetArray[i].assetType){
                    currentAssetType = assetArray[i].assetType;
                    tmpArray.sort(this.sortOrderWithinAssetType);
                    result = result.concat(tmpArray);
                    tmpArray = new Array();
                }
                tmpArray.push(assetArray[i]);
            }
            tmpArray.sort(this.sortOrderWithinAssetType);
            return result.concat(tmpArray);
        }


    }
    return ret;
}
// -------- m_picture_teaser_component.js --------
function pictureTeaserComponentInit(componentDOMID){
        var componentContainer = $('#'+componentDOMID);
        
        // register mouse over handler
        componentContainer.find('.pt_links_left a').each(function(index, link){
            $(link).mouseover(function(){
                componentContainer.find('img').hide();
                componentContainer.find('img.pt_image.pt_image_left_'+ (index+1)).show();
            });
        });
        componentContainer.find('.pt_links_right a').each(function(index, link){
            $(link).mouseover(function(){
                componentContainer.find('img').hide();
                componentContainer.find('img.pt_image.pt_image_right_'+ (index+1)).show();
            });
        });

        // random default image
        var imageArray = componentContainer.find('img.pt_image');
        var randomIndex = Math.floor(imageArray.length * Math.random());
        $(imageArray[randomIndex]).show();
}
/* ---- m_login_component ---- */
var LOGIN_DLO_COOKIE_NAME = "dloCalled";
function loginComponent(){
    // self reference 
    var loginComponent = null;    
    
    var ret = {

        // constants
        pageOverlayLayerID:    'page-overlay',
        animationSpeedDefault: 200,
        animationSpeedIE:      400,

        // vars
        loginComponentContainer: null,  // shortcut
        overlayLayer: null,             // shortcut to overlay layer
        passwordReminderWindow: null,   // shortcut
        redirectLogicURL: null,          // url to redirect/logic jsp
        redirectContentURL: null,
        registrationOpened: false,

        init: function(componentOID, redirectLogicURL, redirectContentURL){
            
            // init vars
            loginComponent = this;
            this.redirectLogicURL = redirectLogicURL;
            this.redirectContentURL = redirectContentURL;
            this.componentOID = componentOID;
            this.loginComponentContainer = $('#'+ componentOID);
            this.passwordReminderWindow = $('#login-window');
            if(getInternetExplorerVersion() > -1) this.animationSpeedDefault = this.animationSpeedIE;

            // create overlaylayer, register key handler
            this.createOverlayLayer();
            this.registerFormKeyHandler();

            // cufonize
            Cufon.replace('.lc_password_reminder_link', {hover: true});
            Cufon.replace('#'+componentOID+' .teaser_component_link_call_to_action, .lc_login_label, .lc_login_button, #'+componentOID+' .login-register, .login-back, .login-go');
            

            // register submit handler
            var options = { success: this.processLoginResult,
                            type: 'post',
                            contentType: "application/x-www-form-urlencoded;charset=utf-8",
                            url: this.redirectLogicURL
                          };
            this.loginComponentContainer.find('form[name=login]').add($('form[name=passwordreminder]')).submit(function(){ // bind form using 'ajaxForm'
                $('.lc_password_reminder_message, .lc_error_message, .lc_technical_error_message').hide();
                $(this).ajaxSubmit(options);
                return false;
            });

            // bugfix to ie <= 7, move password reminder to body
            if(getInternetExplorerVersion() > -1 && getInternetExplorerVersion() <= 7){
                $('body').append(this.passwordReminderWindow);
            }
            
            var dloCalled = $.cookie(LOGIN_DLO_COOKIE_NAME);
            if (dloCalled && dloCalled.length > 0) {
				$.cookie(LOGIN_DLO_COOKIE_NAME, null, {path: '/'});
				this.openRegistration(dloCalled);
            } else {
				var flash_registration_failed = document.URL.indexOf("flash_registration_failed=true") > -1;
				if (flash_registration_failed ) {
					var urlCalled = document.URL;//http://testwww.mini.de/...adster/login/index.html
					urlCalled = urlCalled.replace('login/index.html', 'registration/registration_form.jsp');
					this.openRegistration(urlCalled);
				}
			}
			
			
			
        },

        openOverlayLayer: function(){

            if(this.loginComponentContainer === null)
                return;

             // bugfix to ie <= 7, move password reminder to body
            if(getInternetExplorerVersion() > -1 && getInternetExplorerVersion() <= 7){
                var offsetLeft = this.loginComponentContainer.offset().left;
                var offsetTop = this.loginComponentContainer.offset().top;
                this.passwordReminderWindow.css('top', offsetTop);
                this.passwordReminderWindow.css('left', offsetLeft);
            }

            $('.lc_password_reminder_message').hide();
            this.passwordReminderWindow.show();
            if(getInternetExplorerVersion() > -1 && getInternetExplorerVersion() < 7)
                this.overlayLayer.show();
            else
                this.overlayLayer.fadeIn(this.animationSpeedDefault);
        },

        closeOverlayLayer: function(){
            this.passwordReminderWindow.hide();
            if(getInternetExplorerVersion() > -1 && getInternetExplorerVersion() < 7)
                this.overlayLayer.hide();
            else
               this.overlayLayer.fadeOut(this.animationSpeedDefault);
        },

        createOverlayLayer: function(){
            if($('#'+ this.pageOverlayLayerID).length === 0){
                var overlay = $('<div id="' + this.pageOverlayLayerID + '"></div>');
                overlay.css('width', $(document).width()+"px");
                overlay.css('height', $(document).height()+"px");
                overlay.fadeTo(0, 0.75);
                $(document.body).append(overlay);
                this.overlayLayer = overlay;

                // click closes password reminder
                this.overlayLayer.click(function(event){
                    loginComponent.closeOverlayLayer();
                });

                // move password reminder window to front
                if(this.loginComponentContainer.parent().css('z-index') < 80) this.loginComponentContainer.parent().css('z-index', 100);
            }
        },

        submitPasswordReminder: function(){
            $('form[name=passwordreminder]').submit();
            this.closeOverlayLayer();
        },

        login: function(){
            if(this.loginComponentContainer !== null)
                this.loginComponentContainer.find('form[name=login]').submit();
        },

        processLoginResult: function(result){
            if(typeof(result) === 'undefined' || result === null) return;
            result = parseInt(result.substring(result.indexOf('#')+1, result.indexOf('#')+2));
            if(result === 2) {// login successful
				var page_params = getPageUrlVars();
				var redirectTarget = loginComponent.redirectContentURL;
				for (var i = 0; i < page_params.length; i++){
					redirectTarget = addParam(redirectTarget, page_params[i][0], page_params[i][1], false);
				}
                
                // send tracking request on the content page -> mark login successful
                redirectTarget = addParam(redirectTarget, 'closedroomLoginSuccessful', true, false);
                
                window.location.href = redirectTarget;
            }
            else if(result === 3) {
                $('.lc_password_reminder_message').show();
            }
            else if(result === 4) {// backend error
                $('.lc_technical_error_message').show();
            }
            else {
				loginComponent.loginComponentContainer.find('.lc_error_message').show();
			}
        },

		openRegistration: function(frameUrl) {			
			if(this.registrationOpened || this.loginComponentContainer === null) return;
			
			frameUrl = addParam(frameUrl, "p","registration");
			if (typeof($.url.param("dic")) !== "undefined") {
				frameUrl = addParam(frameUrl, "dic", $.url.param("dic"));
			}
			this.registrationOpened = true;
			var frameId = "registration";
			width="880px";
			height="735px";//default
			var component_container = $("#content_area");
			if (component_container.length === 0) {
				//offline markets
				component_container = $("#plain_dynamic_content");
			}
			component_container.html(""); //clear login
			component_container.html("<iframe allowtransparency='true' scrolling='no' id='" + frameId + "' name='" + frameId + "' frameborder='0' width='" + width +"' height='" + height+ "'></iframe>");
			$('#'+frameId).attr('src', frameUrl);
			iframeids[iframeids.length] = frameId;
			oldHeight[oldHeight.length] = height;
			doIFrameResize();
			
			if(miniSubsidiary.isSubsidiarySelected()) {
				//update the subsidiary name inside the iframe. If this code is placed inside the frame, it doesn't work properly accross all browsers (FF3.6)
				miniSubsidiary.onSubsidiaryReady(function() {
					$("#"+frameId).load(function () {
						$("#"+frameId)[0].contentWindow.printDealerName(miniSubsidiary.getSubsidiaryName());							
					});				
				});
			}		
		},

        registerFormKeyHandler: function(){
            this.loginComponentContainer.find('#password').keydown(function(event){
                if (event.keyCode === 13){
                    loginComponent.login();
                }
            });

            this.loginComponentContainer.find('#email').keydown(function(event){
                if (event.keyCode === 13){
                    loginComponent.submitPasswordReminder();
                }
            });
        }
    }

    return ret;
}

/* ---- jquery.easing.1.3.js ---- */
/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright Â© 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */
/* ---- m_closedroom_content_navigation ---- */
/* Since miniTracking.flashTracking() is reseting all tracking values, 
 * different tracking paramater are saved in this var for furthert on site tracking requests.
*/
var closedroomTrackingValues = {}; // init in closedroomContentNavigation.init()

function closedroomContentNavigation(){
    // self reference 
    var thisContentNavigationObject = null;
    
    var ret = {

        // constants
        ITEMS_PER_PAGE_OVERVIEW: 3,
        ITEMS_PER_PAGE_CONTENT: 4,
        ITEM_WIDTH_OVERVIEW: 280,
        ITEM_WIDTH_CONTENT: 205,
        STATE_OVERVIEW: 1,
        STATE_CONTENT: 2,
        ANIMATION_DURATION: 900,
        COMPONENT_OFFSET: 360,

        // variables
        componentOID: null,
        itemCount: null,
        pageCountOverview: null,
        pageCountContent: null,
        currentPageCount: null,
        currentItemsPerPage: null,
        currentItemWidth: null,
        currentPage: 1,
        spaceBetweenItems: null,
        currentState: null,

        itemContainerWidthOverview: null,
        itemContainerWidthContent: null,
        spaceBetweenItems: null,

        componentContainer: null,          // shortcut
        itemContainer: null,               //    "    
        contentContainer: null,            //    "    

        // constructor
        init: function(componentOID, closedroomContentOID){
            thisContentNavigationObject = this;
            this.componentContainer = $('#closedroom_cn_'+componentOID);
            this.itemContainer = this.componentContainer.find('.closedroom_cn_item_container');
            this.contentContainer = $('#closedroom_content_' + closedroomContentOID);

            this.currentState = this.STATE_OVERVIEW;
            this.currentItemWidth = this.ITEM_WIDTH_OVERVIEW;
            this.currentItemsPerPage = this.ITEMS_PER_PAGE_OVERVIEW;
            this.componentOID = componentOID;

            // init varibales
            this.itemCount =  this.componentContainer.find('.closedroom_cn_item').length;
            this.pageCountOverview = Math.ceil(this.itemCount / this.ITEMS_PER_PAGE_OVERVIEW);
            this.pageCountContent = Math.ceil(this.itemCount / this.ITEMS_PER_PAGE_CONTENT);
            this.spaceBetweenItems = parseInt(this.componentContainer.find('.closedroom_cn_item:first').css('margin-right').replace('px',''));
            this.currentPageCount = this.pageCountOverview;

            // clac/ajust width of the items container big/small
            this.itemContainerWidthOverview = this.itemCount * (this.spaceBetweenItems + this.ITEM_WIDTH_OVERVIEW) + this.spaceBetweenItems;
            this.itemContainerWidthContent = this.itemCount * (this.spaceBetweenItems + this.ITEM_WIDTH_CONTENT) + this.spaceBetweenItems;
            this.itemContainer.css('width', this.itemContainerWidthOverview);
            this.contentContainer.animate({opacity: 0}, 0);

             // track user actions, no tracking in offline copy
            if($('#plain_dynamic_content').length === 0){
                closedroomTrackingValues.DCSdcsuri = miniTracking.tag.DCS.dcsuri;
                closedroomTrackingValues.WTti = miniTracking.tag.WT.ti;
                closedroomTrackingValues.lt = 'TC_I';
                closedroomTrackingValues.lp = ""; // defined in second navigation action
            }
        },

        updatePageItems: function() {
            var pagesContainer = $('#closedroom_cn_' + this.componentOID + '_pages');
            var pageId = '#closedroom_cn_' + this.componentOID + '_' + this.currentPage;
            var pageElement = pagesContainer.find(pageId);
            if (pageElement.hasClass('closedroom_cn_page_link_selected') !== true) {
                pagesContainer.find('.closedroom_cn_page_link_selected').removeClass('closedroom_cn_page_link_selected').addClass('closedroom_cn_page_link');
                pageElement.addClass('closedroom_cn_page_link_selected');
            }
        },

        nextPage: function(){
            // IE fix to slow js processing
            if(0 <= getInternetExplorerVersion() && getInternetExplorerVersion() <= 8 && (typeof(this.componentContainer) === 'undefined' || this.componentContainer === null))
                return;

            if(this.currentPage < this.currentPageCount){
                this.currentPage++;
                this.updatePageView(false);
                this.updatePageItems();
            }
        },

        switchPage: function(pageCount){
            // IE fix to slow js processing
            if(0 <= getInternetExplorerVersion() && getInternetExplorerVersion() <= 8 && (typeof(this.componentContainer) === 'undefined' || this.componentContainer === null))
                return;

            if(this.currentPage !== pageCount){
                this.currentPage = pageCount;
                this.updatePageView(false);
                this.updatePageItems();
            }
        },

        prevPage: function(){
            // IE fix to slow js processing
            if(0 <= getInternetExplorerVersion() && getInternetExplorerVersion() <= 8 && (typeof(this.componentContainer) === 'undefined' || this.componentContainer === null))
                return;

            if(1 < this.currentPage){
                this.currentPage--;
                this.updatePageView(false);
                this.updatePageItems();
            }
        },

        updatePageView: function(switchView){
            var itemContainerOffset = null;
            itemContainerOffset = -((this.currentPage-1) * this.currentItemsPerPage * (this.currentItemWidth + this.spaceBetweenItems));
            
            var animationDuration = this.ANIMATION_DURATION;
            if(switchView)
                animationDuration = 0;
            
            this.itemContainer.animate({left: itemContainerOffset}, animationDuration, 'easeInOutCubic');
        },

        updateArrows: function(){
                var stateLeftArrowClass = (thisContentNavigationObject.currentState === thisContentNavigationObject.STATE_CONTENT) ? ".closedroom_cn_left_arrow_content" : ":first";
                var stateRightArrowClass = (thisContentNavigationObject.currentState === thisContentNavigationObject.STATE_CONTENT) ? ".closedroom_cn_right_arrow_content" : ":first";
                if(thisContentNavigationObject.currentPage === 1)
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_left_arrow' + stateLeftArrowClass).hide();
                else
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_left_arrow' + stateLeftArrowClass).show();

                if(thisContentNavigationObject.currentPage === thisContentNavigationObject.currentPageCount)
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_right_arrow' + stateRightArrowClass).hide();
                else
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_right_arrow' + stateRightArrowClass).show();

                if(1 < thisContentNavigationObject.currentPage && thisContentNavigationObject.currentPage < thisContentNavigationObject.currentPageCount){
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_left_arrow' + stateLeftArrowClass).show();
                    thisContentNavigationObject.componentContainer.find('.closedroom_cn_right_arrow' + stateRightArrowClass).show();
                }
        },

        hideArrows: function(){
            var stateLeftArrowClass = (thisContentNavigationObject.currentState === thisContentNavigationObject.STATE_CONTENT) ? ".closedroom_cn_left_arrow_content" : ":first";
            var stateRightArrowClass = (thisContentNavigationObject.currentState === thisContentNavigationObject.STATE_CONTENT) ? ".closedroom_cn_right_arrow_content" : ":first";	
            thisContentNavigationObject.componentContainer.find('.closedroom_cn_right_arrow' + stateRightArrowClass).hide();
            thisContentNavigationObject.componentContainer.find('.closedroom_cn_left_arrow' + stateLeftArrowClass).hide();
        },


        openContentPage: function(contentPageID, contentPageNumber){

            // IE fix to slow js processing
            if(typeof(this.componentContainer) === 'undefined' || this.componentContainer === null || typeof(this.itemContainer) === 'undefined' || this.itemContainer === null)
                return;

            // track user actions, no tracking in offline copy
            if($('#plain_dynamic_content').length === 0)
                this.trackUserAction(contentPageNumber, contentPageNumber);

            if(this.currentState === this.STATE_OVERVIEW){
                this.currentState = this.STATE_CONTENT;
                this.currentItemsPerPage = this.ITEMS_PER_PAGE_CONTENT;
                this.currentItemWidth = this.ITEM_WIDTH_CONTENT;
                this.currentPageCount = this.pageCountContent;
                this.currentPage = Math.ceil(contentPageNumber / this.currentItemsPerPage);
                this.componentContainer.removeClass('closedroom_cn_container_overview').addClass('closedroom_cn_container_content');
                this.itemContainer.find('.closedroom_cn_item').removeClass('closedroom_cn_item_overview').addClass('closedroom_cn_item_content');
        
                // switch images and copy
                this.itemContainer.find('img.closedroom_cn_item_image.closedroom_cn_overview').hide();
                this.itemContainer.find('img.closedroom_cn_item_image.closedroom_cn_content').show();
                this.itemContainer.find('h1').removeClass('teaser_component_h13').addClass('teaser_component_h11');
                Cufon.replace('#closedroom_cn_' + this.componentOID + ' h1');

                // update items container width
                this.itemContainer.css('width', this.itemContainerWidthContent);
                
                // update arrows
                this.componentContainer.find('.closedroom_cn_left_arrow:first, .closedroom_cn_right_arrow:first').hide();

                this.itemContainer.css('width', this.itemContainerWidthContent);
                this.updatePageView(true);
                var top = parseInt(this.componentContainer.parent().css('top').replace('px', ''));
                this.componentContainer.parent().animate({top: (this.COMPONENT_OFFSET+top)}, 400, 'swing');
                this.contentContainer.show();
                this.contentContainer.animate({opacity: 1}, 400, 'swing');
                
                // hide car image
                $('img[src*="background.jpg"]:first').animate({opacity: 0}, 400, 'swing');
                $('#closedroom_cn_' + this.componentOID + '_pages').hide();
            }

            // ie fix: stop playing flash video when content page was switched
            if(0 <= getInternetExplorerVersion() && getInternetExplorerVersion() <= 8){
                    $('.closedroom_content_page:visible:first').find('.player_component').flash(function() {
                      if (typeof this.stopPlayback == 'function') {
                        try {
                          this.stopPlayback();
                        }catch( ignore_it ){  
                          // ignore it
                        }
                      }
                    });
            }

            this.contentContainer.find('.closedroom_content_page').hide();
            this.contentContainer.find('#closedroom_content_'+ contentPageID).show();
        },

        trackUserAction: function(contentPageID, contentPageNumber){
            
            // slow init
            if(typeof(this.componentContainer) === 'undefined' || this.componentContainer === null || typeof(this.itemContainer) === 'undefined' || this.itemContainer === null)
                return;

            // get all neccessary parameter, 
            // 1. read teaser header
            var teaserHeadline = this.itemContainer.children(":nth("+ (contentPageNumber-1) +")").find('h1').attr('alt');
            teaserHeadline = teaserHeadline.replace(/ /g, '_').replace(/[^a-zA-Z0-9_]/g, '');

            var dcsuri = closedroomTrackingValues.DCSdcsuri + 'content/' + teaserHeadline;
            var wt_ti  = closedroomTrackingValues.WTti;
            var lt     = closedroomTrackingValues.lt;
            var tp     = dcsuri;
            var lp     = closedroomTrackingValues.lp;

            // send tracking request
            miniTracking.flashTracking({'dcsuri': dcsuri, 'wt_ti': wt_ti, 'lt': lt, 'tp': tp, 'lp': lp});

            // save current dcsuri + headline for next tracking request
            closedroomTrackingValues.lp = dcsuri;
        }
    }
    return ret;
}
/* ---- m_closedroom_gallery.js ---- */
function closedroomGallery(){

    var closedroomGallery = null;
    
    var ret = {

        // constants
        ITEMS_PER_PAGE: 10,
        ITEM_WIDTH: 156,
        ITEM_SPACING: 10,
        ANIMATION_DURATION: 750,
        PAGE_WIDTH: 820, // 5x(156 + 10)
        NAVIGATION_PAGE_COUNT: 3,
        PREV_EVENT: 0,
        NEXT_EVENT: 1,

        // variables
        componentOID: null,
        itemCount: null,
        pageCount: null,
        currentPage: 1,
        currentDisplayedPages: new Array(),
        detailPictureData: null,
        currentItemId: null,                // current open item details image

        componentContainer: null,          // shortcut
        itemContainer: null,               //    "    
        navigationContainer: null,         //    "    
        detailsContainer: null,            //    "    
        detailsContainerPageNumber: null,
        detailsContainerTitle: null,
        detailsImgElement: null,

        // constructor
        init: function(componentOID, data){
            
            // init varibales
            closedroomGallery = this;
            this.componentOID = componentOID;
            this.componentContainer = $('#closedroom_gallery_'+componentOID);
            this.itemContainer = this.componentContainer.find('.cg_content_container');
            this.navigationContainer = this.componentContainer.find('.cg_navigation');
            this.detailsContainer = this.componentContainer.find('.dg_details_container');
            this.detailsContainerPageNumber = this.detailsContainer.find('.cg_details_footer_page_number');
            this.detailsContainerTitle = this.detailsContainer.find('.dg_details_title');
            this.detailPictureData = data;
            this.detailsImgElement = this.detailsContainer.find('.cg_item_details_picture');
        
            this.itemCount =  this.componentContainer.find('.cg_item').length;
            this.pageCount = Math.ceil(this.itemCount / this.ITEMS_PER_PAGE);

            for(var i=1; i <= this.NAVIGATION_PAGE_COUNT && i <= this.pageCount; i++){
                this.currentDisplayedPages.push(i);
                this.navigationContainer.find('.dg_navigation_page_'+i).css('display', 'inline');
            }
            if(this.pageCount > this.NAVIGATION_PAGE_COUNT)
                this.navigationContainer.find('.dg_navigation_next_page').css('display', 'inline');

            // register arrow key handler
            $(document).keydown(function(e){
                if (e.keyCode == 37){ // left
                    closedroomGallery.prevItem();
                    return false;
                }else if(e.keyCode == 39){ // right
                    closedroomGallery.nextItem();
                    return false;
                }
            });

            if(this.pageCount > 1)
                this.navigationContainer.show();

            // register navigation arrow mouseover/mouseout handler
            $('#next_preview_img').mouseover(function(){ $(this).addClass('scrollingHotSpotRightVisible'); });
            $('#prev_preview_img').mouseover(function(){ $(this).addClass('scrollingHotSpotLeftVisible'); });
            $('#next_preview_img').mouseout(function(){ $(this).removeClass('scrollingHotSpotRightVisible'); });
            $('#prev_preview_img').mouseout(function(){ $(this).removeClass('scrollingHotSpotLeftVisible'); });

            // move details container in the body
            $('body').append(this.detailsContainer);

            var gre
            $('#dg_grey_layer').click(function(clickEvent){
                closedroomGallery.closeItem();
            });

            var greyDiv = $('#dg_grey_layer');
            if(greyDiv.length === 0){
                greyDiv = $('<div/>').attr('id', 'dg_grey_layer').fadeTo(0, 0);
                greyDiv.css('width', $(document).width()+"px");
                greyDiv.css('height', $(document).height()+"px");
                $('body').append(greyDiv);
            }
            greyDiv.click(function(clickEvent){
                    closedroomGallery.closeItem();
            });
        },


        nextPage: function(){
            this.currentPage++;
            this.updateNavigationPages(this.NEXT_EVENT);
        },


        prevPage: function(){
            this.currentPage--;
            this.updateNavigationPages(this.PREV_EVENT);
        },


        updateNavigationPages: function(direction){
            this.navigationContainer.find('.dg_navigation_pages a').removeClass('dg_navigation_page_selected');

            // update displayed pages if necessary
            if(jQuery.inArray( this.currentPage, this.currentDisplayedPages ) !== 1
					&& this.currentPage !== this.pageCount
					&& this.currentPage !== 1
			){
                this.currentDisplayedPages = new Array();
                $('.dg_navigation_pages a').each(function(index, element){
                    var pageNumber = parseInt($(element).html());
                    
                    var subAdd = 1;
                    if(direction === closedroomGallery.PREV_EVENT)
                        subAdd = -1;
                    $(element).html(pageNumber+subAdd);

                    closedroomGallery.currentDisplayedPages.push(pageNumber+subAdd);

                    if(pageNumber+subAdd === closedroomGallery.currentPage)
                        $(element).addClass('dg_navigation_page_selected');
                });

                var linkClass = 'dg_navigation_prev_page';
                if(direction === this.PREV_EVENT)
                    linkClass = 'dg_navigation_next_page';
                this.navigationContainer.find('.'+linkClass).css('display', 'inline');

            }else{
                $('.dg_navigation_pages a').each(function(index, element){
                    if(parseInt($(element).html()) === closedroomGallery.currentPage)
                        $(element).addClass('dg_navigation_page_selected');
                });
            }

            this.updatePageView(this.currentPage);

            if(this.currentPage === this.pageCount)
                this.navigationContainer.find('.dg_navigation_next_page').hide();
            if(this.currentPage === 1)
                this.navigationContainer.find('.dg_navigation_prev_page').hide();
				
			
        },


        showPage: function(link){
		    this.navigationContainer.find('.dg_navigation_pages a').removeClass('dg_navigation_page_selected');
			var newPage = parseInt($(link).html());
			if (newPage === 1 || newPage === this.pageCount) {
				$(link).addClass('dg_navigation_page_selected');
				this.currentPage = parseInt($(link).html());
				this.updatePageView(this.currentPage);
			}		
			else if (this.currentPage < newPage && this.currentPage < (newPage-1)  ) {
				this.nextPage();
				this.nextPage();
			}	
			else if (this.currentPage > newPage && this.currentPage > (newPage+1)  ) {
				this.prevPage();
				this.prevPage();
			}	
			else if (this.currentPage < newPage) {
				this.nextPage();
			}
			else if (this.currentPage > newPage) {
				this.prevPage();
			}
		    if(this.currentPage === this.pageCount)
                this.navigationContainer.find('.dg_navigation_next_page').hide();
            if(this.currentPage === 1)
                this.navigationContainer.find('.dg_navigation_prev_page').hide();
				
			
            
        },

        updatePageView: function(pageNumber){
            var itemContainerOffset = -(this.PAGE_WIDTH * (pageNumber-1));
            this.itemContainer.stop();
            this.itemContainer.animate({left: itemContainerOffset}, this.ANIMATION_DURATION, 'easeInOutCubic');
        },


        openItem: function(item){

            var id = $(item).attr('id').split('_')[1];
            // update contents
            this.updateItemContents(id, item);

            // position
            this.detailsContainer.css('left', this.componentContainer.offset().left + (this.componentContainer.width()-this.detailsContainer.width())/2);
            this.detailsContainer.css('top', this.componentContainer.offset().top - 80);

            // show
            var greyDiv = $('#dg_grey_layer');
            greyDiv.css('width', $(document).width()+"px");
            greyDiv.css('height', $(document).height()+"px");
            greyDiv.css('visibility', 'visible');
            $('#dg_grey_layer').animate({opacity: 0.75}, this.ANIMATION_DURATION-450);
            this.detailsContainer.show();
        },


        updateItemContents: function(id, item){
            this.currentItemId = parseInt(id);
            var itemParagraph = $(item).find('p');
            this.detailsContainerTitle.html(itemParagraph.html());
            Cufon.replace(this.detailsContainerTitle);
            this.detailsContainerPageNumber.html(this.currentItemId+1);
            this.detailsImgElement.attr('src', this.detailPictureData[this.currentItemId].url);
            if(this.detailPictureData[this.currentItemId].width > 0)
                this.detailsImgElement.css('width', this.detailPictureData[this.currentItemId].width);
        },


        nextItem: function(){
            this.processKeyArrowEvent(this.NEXT_EVENT);
        },


        prevItem: function(){
            this.processKeyArrowEvent(this.PREV_EVENT);
        },


        processKeyArrowEvent: function(eventType){
            if(this.detailsContainer.find('.cg_item_details_picture:visible').length > 0){

                var addSub = 1
                if(eventType === this.PREV_EVENT)
                    addSub = -1;

                if((this.currentItemId === 0 && eventType === this.PREV_EVENT) || (this.currentItemId === (this.itemCount-1) && eventType === this.NEXT_EVENT)) return;

                var item = this.componentContainer.find('#'+ this.componentOID +'_'+(this.currentItemId+addSub));
                this.updateItemContents(this.currentItemId+addSub, item);
            }
        },


        closeItem: function(){
            $('#dg_grey_layer').stop().animate({opacity: 0}, this.ANIMATION_DURATION-500, function(){
                $('#dg_grey_layer').css('visibility', 'hidden');
            });
            this.detailsContainer.hide();
        }

    }
    return ret;
}
/* ---- m_closedroom_flash_content.js ---- */
function closedroomFlashContentClose(closeButton){
    $(closeButton).parent().find('.closedroom_flash_content_flash').hide();
    $(closeButton).parent().find('.closedroom_flash_content_mosaic').show();
    $(closeButton).hide();
}

function closedroomFlashContentOpen(oid_Closedroom_flashContent){
    var id_closedroom_flashContent = '#closedroom_flash_content_'+oid_Closedroom_flashContent;
    if($(id_closedroom_flashContent).hasClass('closedroom_flash_content')){

            // send tracking request when user klick on a teaser
            // 1. collect tracking data
            if($('#plain_dynamic_content').length === 0){
                var numberOfClickedTeaser = parseInt($('.closedroom_content_page:visible').attr('id').split('_')[2]) - 1;
                var teaserHeadline = $('.closedroom_cn_item_container').children(":nth("+ (numberOfClickedTeaser) +")").find('h1').attr('alt');
                teaserHeadline = teaserHeadline.replace(/ /g, '_').replace(/[^a-zA-Z0-9_]/g, '');

                // since miniTracking.flashTracking() is reseting all tracking values, we get the saved values (saved in m_closedroom_content_navigation.js)
                var dcsuri = closedroomTrackingValues.DCSdcsuri + 'content/' + teaserHeadline + '/start_flash';
                var wt_ti  = closedroomTrackingValues.WTti;
                var lt     = closedroomTrackingValues.lt;
                var tp     = dcsuri;
                var lp     = closedroomTrackingValues.lp;

                // 2. send tracking request
                if($('#plain_dynamic_content').length === 0) // no tracking in offline copy
                    miniTracking.flashTracking({'dcsuri': dcsuri, 'wt_ti': wt_ti, 'lt': lt, 'tp': tp, 'lp': lp});
                closedroomTrackingValues.lp = dcsuri;
            }

            $(id_closedroom_flashContent + ' .closedroom_flash_content_flash').show();
            $(id_closedroom_flashContent + ' .closedroom_flash_content_mosaic').hide();
            $(id_closedroom_flashContent + ' .closedroom_flash_content_close_button').show();
    }
}
/* ---- m_selectbox_component.js ---- */
function SelectboxComponent() {

  /**
   * Associate array with all combobox entriies. 
   * Each entry consists of 
   *  a value with the objectId (can be '-' or a ID in jquery style (e.g. #1234)
   *  a htmlText which is diplayed in the combobox
   * The first entry on position 0 is the default. The value can be '-' or a object Id
   */
  var entries = new Array();
  
  /**
   * First default combobox entry
   */
  var defaultComboText = "";

  /**
   * Object ID in the jquery style '#123'. This object is shown, when an entry is selected. 
   */   
  var defaultObjectId = null;
  
  /**
   * The JQuery ID (e.g. #123) of the selectbox
   */
  var id = "";

  /**
   * This methods init the selectbox. The first (default) element is added to the combobox.
   * Params: containerId: the ID of the selectbox (e.g. #123)
   *         defaultText: The text of the first entry
   *         objectId: The object ID of the first entry in JQuery style (e.g. #123)
   */
  this.initComboBox = function(containerId, defaultText, objectId) { 
    this.id = containerId;
    this.defaultObjectId = objectId;
    this.defaultComboText = defaultText;
    var value = "-";
    if ( (typeof(this.defaultObjectId) !== 'undefined') && this.defaultObjectId) {
       value = this.defaultObjectId;
    }
    entries[entries.length] = {value:value, htmlText:this.defaultComboText};
  }

  /**
   * Add an entry to the combobox. Not the default.
   */
  this.addEntry = function(text, objectId) {
    entries[entries.length] = {value:objectId, htmlText:text};
  }

  /**
   * Fills the combobox with the entries array
   */
  this.fillCombo = function() {
    var value = "-";
    for (var i=1; i<entries.length; i++) {
      $(this.id).append($('<option/>').attr('value', entries[i].value).html(entries[i].htmlText));
    }
    $(this.id)[0].internalCombobox.update();
    $(this.id).parent().parent().show();
  }
  
  /**
   * This method should be called, if the entry of a selectbox is changed. 
   * It hides all entries and shows the selected entry.
   */
  this.onChange = function(combo) { 
    // hide all
    var start = 1;
    if (entries[0].value !== '-') {
      start = 0;
    }
    for (var i=start; i < entries.length; i++) {
       $(entries[i].value).hide();
    }
    $(entries[combo.selectedIndex].value).show();
  }
  
};

/* ---- m_facebook_like_button.js ---- */
function facebookLikeButton(){
    
    var ret = {

        // variables
        height: null,                      // iframe height

        componentContainer: null,          // shortcut
        facebookLikeTag: null,             // shortcut
        componentOID: null,

        // constructor
        init: function(componentOIDP, heightP){

            thisComponent = this;
            this.componentOID = componentOIDP;
            this.height = heightP;
            this.componentContainer = $('#facebook_like_button_'+componentOIDP);
            this.facebookLikeTag    = this.componentContainer.find('div.fb-like');

            if($('#fb-root').length === 0) jQuery('body').append($('<div>').attr('id', 'fb-root'));
            if(this.facebookLikeTag.attr('data-href') === ''){ // no url was defined in the component
                // insert url from og meta data if available, otherwise take current browser url
                if($('meta[property="og:url"]').length > 0 && $('meta[property="og:url"]').attr('content').length > 0)
                    this.facebookLikeTag.attr('data-href', $('meta[property="og:url"]').attr('content'));
                else
                    this.facebookLikeTag.attr('data-href', document.location.href);
            }

            // add shortened content group as return parameter to track the return traffic
            this.facebookLikeTag.attr('ref', getDCSExtValueForLikeButtons('like', 'facebook', false));

            // force custom width/height
            var heightCSSValue = '';
            if(this.height !== '')
                heightCSSValue = "height: "+ this.height +"px !important;";
                
            $("head").append("<style type=\"text/css\" charset=\"utf-8\">#facebook_like_button_"+ this.componentOID +" .fb_ltr{ width: "+ this.facebookLikeTag.attr('data-width') +"px !important; "+ heightCSSValue +"}");

            // init FB API here
            window.fbAsyncInit = function() {
                
                FB.init({
                    status     : true, // check login status
                    cookie     : true, // enable cookies to allow the server to access the session
                    oauth      : true, // enable OAuth 2.0
                    xfbml      : true  // parse XFBML
                });
                
                // register like/unlike handler
                FB.Event.subscribe('edge.create',
                    function(response) {
                        // track like
                        miniTracking.trackLikeButtonAction('like', 'facebook');
                    }
                );
                
                FB.Event.subscribe('edge.remove',
                    function(response) {
                        // track unlike
                        miniTracking.trackLikeButtonAction('unlike', 'facebook');
                    }
                );
            };

          // load the SDK asynchronously
          try{
              (function(d){
                 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
                 js = d.createElement('script'); js.id = id; js.async = true;
                 js.src = "//connect.facebook.net/en_US/all.js";
                 d.getElementsByTagName('head')[0].appendChild(js);
               }(document));
           }catch(err){
                // ignore
           }
            
        }
    }

    return ret;
}
/* ---- m_google_plus_button.js ---- */
/* 
 * Components logic encapsulated into an JS object.
 */
function googlePlusButton(){
    
    var ret = {

        // constructor
        init: function(componentOID){

            thisComponent = this;

            // init google API if not already done in the sharing layer
            if($('head script[src*="plusone.js"]').length === 0) lazyLoadJavaScript("https://apis.google.com/js/plusone.js");
        }
    }

    return ret;
}


/* 
 * Retrieves the like URL from the og:url meta tag and adds also a tracking parameter
 * to messure the return traffic.
 */
function addLikeURLToGooglePlusButton(buttonID){
   var googlePlusTag = $('#'+buttonID);
   if(googlePlusTag.length === 0) return; // button not found
   var googlePlusLikeURL = (typeof(googlePlusTag.attr('href')) === 'undefined') ? "" : googlePlusTag.attr('href');

   if(googlePlusLikeURL === ''){ // no url was defined in the component
                // insert url from og meta data if available, otherwise take current browser url
                if($('meta[property="og:url"]').length > 0 && $('meta[property="og:url"]').attr('content').length > 0)
                    googlePlusLikeURL =  $('meta[property="og:url"]').attr('content');
                else
                    googlePlusLikeURL = document.location.href;
            }

    // add tracking parameter to messure return traffic
    if(googlePlusLikeURL.indexOf('?') >= 0) // contains already parameters
        googlePlusTag.attr('href', googlePlusLikeURL + '&cm=' + getDCSExtValueForLikeButtons('like', 'google_plus', false));
    else
        googlePlusTag.attr('href', googlePlusLikeURL + '?cm=' + getDCSExtValueForLikeButtons('like', 'google_plus', false));
}
}catch(e){console.log('Error in _new_phase_2_js: ' + e.description);}

// ---- jquery.url ----
try{ /* ===========================================================================
 *
 * JQuery URL Parser
 * Version 1.0
 * Parses URLs and provides easy access to information within them.
 *
 * Author: Mark Perkins
 * Author email: mark@allmarkedup.com
 *
 * For full documentation and more go to http://projects.allmarkedup.com/jquery_url_parser/
 *
 * ---------------------------------------------------------------------------
 *
 * CREDITS:
 *
 * Parser based on the Regex-based URI parser by Steven Levithan.
 * For more information (including a detailed explaination of the differences
 * between the 'loose' and 'strict' pasing modes) visit http://blog.stevenlevithan.com/archives/parseuri
 *
 * ---------------------------------------------------------------------------
 *
 * LICENCE:
 *
 * Released under a MIT Licence. See licence.txt that should have been supplied with this file,
 * or visit http://projects.allmarkedup.com/jquery_url_parser/licence.txt
 *
 * ---------------------------------------------------------------------------
 * 
 * EXAMPLES OF USE:
 *
 * Get the domain name (host) from the current page URL
 * jQuery.url.attr("host")
 *
 * Get the query string value for 'item' for the current page
 * jQuery.url.param("item") // null if it doesn't exist
 *
 * Get the second segment of the URI of the current page
 * jQuery.url.segment(2) // null if it doesn't exist
 *
 * Get the protocol of a manually passed in URL
 * jQuery.url.setUrl("http://allmarkedup.com/").attr("protocol") // returns 'http'
 *
 */

jQuery.url = function()
{
	var segments = {};
	
	var parsed = {};
	
	/**
    * Options object. Only the URI and strictMode values can be changed via the setters below.
    */
  	var options = {
	
		url : window.location, // default URI is the page in which the script is running
		
		strictMode: false, // 'loose' parsing by default
	
		key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], // keys available to query 
		
		q: {
			name: "queryKey",
			parser: /(?:^|&)([^&=]*)=?([^&]*)/g
		},
		
		parser: {
			strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,  //less intuitive, more accurate to the specs
			loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs
		}
		
	};
	
    /**
     * Deals with the parsing of the URI according to the regex above.
 	 * Written by Steven Levithan - see credits at top.
     */		
	var parseUri = function()
	{
		str = decodeURI( options.url );
		
		var m = options.parser[ options.strictMode ? "strict" : "loose" ].exec( str );
		var uri = {};
		var i = 14;

		while ( i-- ) {
			uri[ options.key[i] ] = m[i] || "";
		}

		uri[ options.q.name ] = {};
		uri[ options.key[12] ].replace( options.q.parser, function ( $0, $1, $2 ) {
			if ($1) {
				uri[options.q.name][$1] = $2;
			}
		});

		return uri;
	};

    /**
     * Returns the value of the passed in key from the parsed URI.
  	 * 
	 * @param string key The key whose value is required
     */		
	var key = function( key )
	{
		if ( ! parsed.length )
		{
			setUp(); // if the URI has not been parsed yet then do this first...	
		} 
		if ( key == "base" )
		{
			if ( parsed.port !== null && parsed.port !== "" )
			{
				return parsed.protocol+"://"+parsed.host+":"+parsed.port+"/";	
			}
			else
			{
				return parsed.protocol+"://"+parsed.host+"/";
			}
		}
	
		return ( parsed[key] === "" ) ? null : parsed[key];
	};
	
	/**
     * Returns the value of the required query string parameter.
  	 * 
	 * @param string item The parameter whose value is required
     */		
	var param = function( item )
	{
		if ( ! parsed.length )
		{
			setUp(); // if the URI has not been parsed yet then do this first...	
		}
		return ( parsed.queryKey[item] === null ) ? null : parsed.queryKey[item];
	};

    /**
     * 'Constructor' (not really!) function.
     *  Called whenever the URI changes to kick off re-parsing of the URI and splitting it up into segments. 
     */	
	var setUp = function()
	{
		parsed = parseUri();
		
		getSegments();	
	};
	
    /**
     * Splits up the body of the URI into segments (i.e. sections delimited by '/')
     */
	var getSegments = function()
	{
		var p = parsed.path;
		segments = []; // clear out segments array
		segments = parsed.path.length == 1 ? {} : ( p.charAt( p.length - 1 ) == "/" ? p.substring( 1, p.length - 1 ) : path = p.substring( 1 ) ).split("/");
	};
	
	return {
		
	    /**
	     * Sets the parsing mode - either strict or loose. Set to loose by default.
	     *
	     * @param string mode The mode to set the parser to. Anything apart from a value of 'strict' will set it to loose!
	     */
		setMode : function( mode )
		{
			strictMode = mode == "strict" ? true : false;
			return this;
		},
		
		/**
	     * Sets URI to parse if you don't want to to parse the current page's URI.
		 * Calling the function with no value for newUri resets it to the current page's URI.
	     *
	     * @param string newUri The URI to parse.
	     */		
		setUrl : function( newUri )
		{
			options.url = newUri === undefined ? window.location : newUri;
			setUp();
			return this;
		},		
		
		/**
	     * Returns the value of the specified URI segment. Segments are numbered from 1 to the number of segments.
		 * For example the URI http://test.com/about/company/ segment(1) would return 'about'.
		 *
		 * If no integer is passed into the function it returns the number of segments in the URI.
	     *
	     * @param int pos The position of the segment to return. Can be empty.
	     */	
		segment : function( pos )
		{
			if ( ! parsed.length )
			{
				setUp(); // if the URI has not been parsed yet then do this first...	
			} 
			if ( pos === undefined )
			{
				return segments.length;
			}
			return ( segments[pos] === "" || segments[pos] === undefined ) ? null : segments[pos];
		},
		
		attr : key, // provides public access to private 'key' function - see above
		
		param : param // provides public access to private 'param' function - see above
		
	};
	
}();
}catch(e){console.log('Error in jquery.url: ' + e.description);}

// ---- recruiting_tracking ----
try{ $(document).ready(function() {

  if(window.location.href.indexOf("recruiting") > -1){
    var WT_EXPR = 'WT.mc_id';
    var RECRUITING_COOKIE_NAME = 't_mini_campaign';
    var RECRUITING_COOKIE_OPTIONS = { path: '/' };
    if (getDomain().length > 0)  RECRUITING_COOKIE_OPTIONS['domain'] = getDomain();

    // Check if cookie exist
    if ($.cookie(RECRUITING_COOKIE_NAME) === null) {

      var recruitingCookieValue = 'm' + topicCountry + '_onsite_no-campaign';
      // Check for internal link 
      if (document.referrer.indexOf('://'+getDomain()) > -1) {
        // Write session cookie
        $.cookie(RECRUITING_COOKIE_NAME, recruitingCookieValue, RECRUITING_COOKIE_OPTIONS);
      }
      else { // external link
        // search for request parameter WT.mc_id
        var search = document.location.search;
        search = search.substr(1, search.length);
        var reqParams = search.split('&');
        for (i in reqParams) {
          if (reqParams[i].indexOf(WT_EXPR) !== -1) {
            recruitingCookieValue = reqParams[i].replace('WT.mc_id=', '');        
            break;
          }
        } // for
        // Write session cookie
        $.cookie(RECRUITING_COOKIE_NAME, recruitingCookieValue, RECRUITING_COOKIE_OPTIONS);
      } // else
    } // if 

    // add cookie value to request parameter
    var href = '';
    $("a[href*='WT.mc_id']").each(function() {
      href = $(this).attr('href');
      href = href.replace(/WT.mc_id=.*/, 'WT.mc_id=' + $.cookie(RECRUITING_COOKIE_NAME));
      $(this).attr('href', href);
    });
  }
});
}catch(e){console.log('Error in recruiting_tracking: ' + e.description);}

// ---- m_facebook_checkin ----
try{ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*  Latitude/longitude spherical geodesy formulae & scripts (c) Chris Veness 2002-2010            */
/*   - www.movable-type.co.uk/scripts/latlong.html                                                */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

/**
 * Creates a point on the earth's surface at the supplied latitude / longitude
 *
 * @constructor
 * @param {Number} lat: latitude in numeric degrees
 * @param {Number} lon: longitude in numeric degrees
 * @param {Number} [rad=6371]: radius of earth if different value is required from standard 6,371km
 */
function LatLon(lat, lon, rad) {
  if (typeof(rad) == 'undefined') rad = 6371;  // earth's mean radius in km
  // only accept numbers or valid numeric strings
  this._lat = typeof(lat)=='number' ? lat : typeof(lat)=='string' && lat.trim()!='' ? +lat : NaN;
  this._lon = typeof(lon)=='number' ? lon : typeof(lon)=='string' && lon.trim()!='' ? +lon : NaN;
  this._radius = typeof(rad)=='number' ? rad : typeof(rad)=='string' && trim(lon)!='' ? +rad : NaN;
}

/**
 * Returns the distance from this point to the supplied point, in km 
 * (using Haversine formula)
 *
 * from: Haversine formula - R. W. Sinnott, "Virtues of the Haversine",
 *       Sky and Telescope, vol 68, no 2, 1984
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @param   {Number} [precision=4]: no of significant digits to use for returned value
 * @returns {Number} Distance in km between this point and destination point
 */
LatLon.prototype.distanceTo = function(point, precision) {
  // default 4 sig figs reflects typical 0.3% accuracy of spherical model
  if (typeof precision == 'undefined') precision = 4;  
  
  var R = this._radius;
  var lat1 = this._lat.toRad(), lon1 = this._lon.toRad();
  var lat2 = point._lat.toRad(), lon2 = point._lon.toRad();
  var dLat = lat2 - lat1;
  var dLon = lon2 - lon1;

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(lat1) * Math.cos(lat2) * 
          Math.sin(dLon/2) * Math.sin(dLon/2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  var d = R * c;
  return d.toPrecisionFixed(precision);
}


/**
 * Returns the (initial) bearing from this point to the supplied point, in degrees
 *   see http://williams.best.vwh.net/avform.htm#Crs
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @returns {Number} Initial bearing in degrees from North
 */
LatLon.prototype.bearingTo = function(point) {
  var lat1 = this._lat.toRad(), lat2 = point._lat.toRad();
  var dLon = (point._lon-this._lon).toRad();

  var y = Math.sin(dLon) * Math.cos(lat2);
  var x = Math.cos(lat1)*Math.sin(lat2) -
          Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
  var brng = Math.atan2(y, x);
  
  return (brng.toDeg()+360) % 360;
}

/**
 * Returns final bearing arriving at supplied destination point from this point; the final bearing 
 * will differ from the initial bearing by varying degrees according to distance and latitude
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @returns {Number} Final bearing in degrees from North
 */
LatLon.prototype.finalBearingTo = function(point) {
  // get initial bearing from supplied point back to this point...
  var lat1 = point._lat.toRad(), lat2 = this._lat.toRad();
  var dLon = (this._lon-point._lon).toRad();

  var y = Math.sin(dLon) * Math.cos(lat2);
  var x = Math.cos(lat1)*Math.sin(lat2) -
          Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
  var brng = Math.atan2(y, x);
          
  // ... & reverse it by adding 180Ã‚Â°
  return (brng.toDeg()+180) % 360;
}


/**
 * Returns the midpoint between this point and the supplied point.
 *   see http://mathforum.org/library/drmath/view/51822.html for derivation
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @returns {LatLon} Midpoint between this point and the supplied point
 */
LatLon.prototype.midpointTo = function(point) {
  lat1 = this._lat.toRad(), lon1 = this._lon.toRad();
  lat2 = point._lat.toRad();
  var dLon = (point._lon-this._lon).toRad();

  var Bx = Math.cos(lat2) * Math.cos(dLon);
  var By = Math.cos(lat2) * Math.sin(dLon);

  lat3 = Math.atan2(Math.sin(lat1)+Math.sin(lat2),
                    Math.sqrt( (Math.cos(lat1)+Bx)*(Math.cos(lat1)+Bx) + By*By) );
  lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);

  return new LatLon(lat3.toDeg(), lon3.toDeg());
}

/**
 * Returns the destination point from this point having travelled the given distance (in km) on the 
 * given initial bearing (bearing may vary before destination is reached)
 *
 *   see http://williams.best.vwh.net/avform.htm#LL
 *
 * @param   {Number} brng: Initial bearing in degrees
 * @param   {Number} dist: Distance in km
 * @returns {LatLon} Destination point
 */
LatLon.prototype.destinationPoint = function(brng, dist) {
  dist = typeof(dist)=='number' ? dist : typeof(dist)=='string' && dist.trim()!='' ? +dist : NaN;
  dist = dist/this._radius;  // convert dist to angular distance in radians
  brng = brng.toRad();  // 
  var lat1 = this._lat.toRad(), lon1 = this._lon.toRad();

  var lat2 = Math.asin( Math.sin(lat1)*Math.cos(dist) + 
                        Math.cos(lat1)*Math.sin(dist)*Math.cos(brng) );
  var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(dist)*Math.cos(lat1), 
                               Math.cos(dist)-Math.sin(lat1)*Math.sin(lat2));
  lon2 = (lon2+3*Math.PI)%(2*Math.PI) - Math.PI;  // normalise to -180...+180

  return new LatLon(lat2.toDeg(), lon2.toDeg());
}

/**
 * Returns the point of intersection of two paths defined by point and bearing
 *
 *   see http://williams.best.vwh.net/avform.htm#Intersection
 *
 * @param   {LatLon} p1: First point
 * @param   {Number} brng1: Initial bearing from first point
 * @param   {LatLon} p2: Second point
 * @param   {Number} brng2: Initial bearing from second point
 * @returns {LatLon} Destination point (null if no unique intersection defined)
 */
LatLon.intersection = function(p1, brng1, p2, brng2) {
  brng1 = typeof brng1 == 'number' ? brng1 : typeof brng1 == 'string' && trim(brng1)!='' ? +brng1 : NaN;
  brng2 = typeof brng2 == 'number' ? brng2 : typeof brng2 == 'string' && trim(brng2)!='' ? +brng2 : NaN;
  lat1 = p1._lat.toRad(), lon1 = p1._lon.toRad();
  lat2 = p2._lat.toRad(), lon2 = p2._lon.toRad();
  brng13 = brng1.toRad(), brng23 = brng2.toRad();
  dLat = lat2-lat1, dLon = lon2-lon1;
  
  dist12 = 2*Math.asin( Math.sqrt( Math.sin(dLat/2)*Math.sin(dLat/2) + 
    Math.cos(lat1)*Math.cos(lat2)*Math.sin(dLon/2)*Math.sin(dLon/2) ) );
  if (dist12 == 0) return null;
  
  // initial/final bearings between points
  brngA = Math.acos( ( Math.sin(lat2) - Math.sin(lat1)*Math.cos(dist12) ) / 
    ( Math.sin(dist12)*Math.cos(lat1) ) );
  if (isNaN(brngA)) brngA = 0;  // protect against rounding
  brngB = Math.acos( ( Math.sin(lat1) - Math.sin(lat2)*Math.cos(dist12) ) / 
    ( Math.sin(dist12)*Math.cos(lat2) ) );
  
  if (Math.sin(lon2-lon1) > 0) {
    brng12 = brngA;
    brng21 = 2*Math.PI - brngB;
  } else {
    brng12 = 2*Math.PI - brngA;
    brng21 = brngB;
  }
  
  alpha1 = (brng13 - brng12 + Math.PI) % (2*Math.PI) - Math.PI;  // angle 2-1-3
  alpha2 = (brng21 - brng23 + Math.PI) % (2*Math.PI) - Math.PI;  // angle 1-2-3
  
  if (Math.sin(alpha1)==0 && Math.sin(alpha2)==0) return null;  // infinite intersections
  if (Math.sin(alpha1)*Math.sin(alpha2) < 0) return null;       // ambiguous intersection
  
  //alpha1 = Math.abs(alpha1);
  //alpha2 = Math.abs(alpha2);
  // ... Ed Williams takes abs of alpha1/alpha2, but seems to break calculation?
  
  alpha3 = Math.acos( -Math.cos(alpha1)*Math.cos(alpha2) + 
                       Math.sin(alpha1)*Math.sin(alpha2)*Math.cos(dist12) );
  dist13 = Math.atan2( Math.sin(dist12)*Math.sin(alpha1)*Math.sin(alpha2), 
                       Math.cos(alpha2)+Math.cos(alpha1)*Math.cos(alpha3) )
  lat3 = Math.asin( Math.sin(lat1)*Math.cos(dist13) + 
                    Math.cos(lat1)*Math.sin(dist13)*Math.cos(brng13) );
  dLon13 = Math.atan2( Math.sin(brng13)*Math.sin(dist13)*Math.cos(lat1), 
                       Math.cos(dist13)-Math.sin(lat1)*Math.sin(lat3) );
  lon3 = lon1+dLon13;
  lon3 = (lon3+Math.PI) % (2*Math.PI) - Math.PI;  // normalise to -180..180Ã‚Âº
  
  return new LatLon(lat3.toDeg(), lon3.toDeg());
}



/**
 * Returns the distance from this point to the supplied point, in km, travelling along a rhumb line
 *
 *   see http://williams.best.vwh.net/avform.htm#Rhumb
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @returns {Number} Distance in km between this point and destination point
 */
LatLon.prototype.rhumbDistanceTo = function(point) {
  var R = this._radius;
  var lat1 = this._lat.toRad(), lat2 = point._lat.toRad();
  var dLat = (point._lat-this._lat).toRad();
  var dLon = Math.abs(point._lon-this._lon).toRad();
  
  var dPhi = Math.log(Math.tan(lat2/2+Math.PI/4)/Math.tan(lat1/2+Math.PI/4));
  var q = (!isNaN(dLat/dPhi)) ? dLat/dPhi : Math.cos(lat1);  // E-W line gives dPhi=0
  // if dLon over 180Ã‚Â° take shorter rhumb across 180Ã‚Â° meridian:
  if (dLon > Math.PI) dLon = 2*Math.PI - dLon;
  var dist = Math.sqrt(dLat*dLat + q*q*dLon*dLon) * R; 
  
  return dist.toPrecisionFixed(4);  // 4 sig figs reflects typical 0.3% accuracy of spherical model
}

/**
 * Returns the bearing from this point to the supplied point along a rhumb line, in degrees
 *
 * @param   {LatLon} point: Latitude/longitude of destination point
 * @returns {Number} Bearing in degrees from North
 */
LatLon.prototype.rhumbBearingTo = function(point) {
  var lat1 = this._lat.toRad(), lat2 = point._lat.toRad();
  var dLon = (point._lon-this._lon).toRad();
  
  var dPhi = Math.log(Math.tan(lat2/2+Math.PI/4)/Math.tan(lat1/2+Math.PI/4));
  if (Math.abs(dLon) > Math.PI) dLon = dLon>0 ? -(2*Math.PI-dLon) : (2*Math.PI+dLon);
  var brng = Math.atan2(dLon, dPhi);
  
  return (brng.toDeg()+360) % 360;
}

/**
 * Returns the destination point from this point having travelled the given distance (in km) on the 
 * given bearing along a rhumb line
 *
 * @param   {Number} brng: Bearing in degrees from North
 * @param   {Number} dist: Distance in km
 * @returns {LatLon} Destination point
 */
LatLon.prototype.rhumbDestinationPoint = function(brng, dist) {
  var R = this._radius;
  var d = parseFloat(dist)/R;  // d = angular distance covered on earth's surface
  var lat1 = this._lat.toRad(), lon1 = this._lon.toRad();
  brng = brng.toRad();

  var lat2 = lat1 + d*Math.cos(brng);
  var dLat = lat2-lat1;
  var dPhi = Math.log(Math.tan(lat2/2+Math.PI/4)/Math.tan(lat1/2+Math.PI/4));
  var q = (!isNaN(dLat/dPhi)) ? dLat/dPhi : Math.cos(lat1);  // E-W line gives dPhi=0
  var dLon = d*Math.sin(brng)/q;
  // check for some daft bugger going past the pole
  if (Math.abs(lat2) > Math.PI/2) lat2 = lat2>0 ? Math.PI-lat2 : -(Math.PI-lat2);
  lon2 = (lon1+dLon+3*Math.PI)%(2*Math.PI) - Math.PI;
 
  return new LatLon(lat2.toDeg(), lon2.toDeg());
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */


/**
 * Returns the latitude of this point; signed numeric degrees if no format, otherwise format & dp 
 * as per Geo.toLat()
 *
 * @param   {String} [format]: Return value as 'd', 'dm', 'dms'
 * @param   {Number} [dp=0|2|4]: No of decimal places to display
 * @returns {Number|String} Numeric degrees if no format specified, otherwise deg/min/sec
 *
 * @requires Geo
 */
LatLon.prototype.lat = function(format, dp) {
  if (typeof format == 'undefined') return this._lat;
  
  return Geo.toLat(this._lat, format, dp);
}

/**
 * Returns the longitude of this point; signed numeric degrees if no format, otherwise format & dp 
 * as per Geo.toLon()
 *
 * @param   {String} [format]: Return value as 'd', 'dm', 'dms'
 * @param   {Number} [dp=0|2|4]: No of decimal places to display
 * @returns {Number|String} Numeric degrees if no format specified, otherwise deg/min/sec
 *
 * @requires Geo
 */
LatLon.prototype.lon = function(format, dp) {
  if (typeof format == 'undefined') return this._lon;
  
  return Geo.toLon(this._lon, format, dp);
}

/**
 * Returns a string representation of this point; format and dp as per lat()/lon()
 *
 * @param   {String} [format]: Return value as 'd', 'dm', 'dms'
 * @param   {Number} [dp=0|2|4]: No of decimal places to display
 * @returns {String} Comma-separated latitude/longitude
 *
 * @requires Geo
 */
LatLon.prototype.toString = function(format, dp) {
  if (typeof format == 'undefined') format = 'dms';
  
  if (isNaN(this._lat) || isNaN(this._lon)) return '-,-';
  
  return Geo.toLat(this._lat, format, dp) + ', ' + Geo.toLon(this._lon, format, dp);
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

// ---- extend Number object with methods for converting degrees/radians

/** Converts numeric degrees to radians */
if (typeof(Number.prototype.toRad) === "undefined") {
  Number.prototype.toRad = function() {
    return this * Math.PI / 180;
  }
}

/** Converts radians to numeric (signed) degrees */
if (typeof(Number.prototype.toDeg) === "undefined") {
  Number.prototype.toDeg = function() {
    return this * 180 / Math.PI;
  }
}

/** 
 * Formats the significant digits of a number, using only fixed-point notation (no exponential)
 * 
 * @param   {Number} precision: Number of significant digits to appear in the returned string
 * @returns {String} A string representation of number which contains precision significant digits
 */
if (typeof(Number.prototype.toPrecisionFixed) === "undefined") {
  Number.prototype.toPrecisionFixed = function(precision) {
    if (isNaN(this)) return 'NaN';
    var numb = this < 0 ? -this : this;  // can't take log of -ve number...
    var sign = this < 0 ? '-' : '';
    
    if (numb == 0) {  // can't take log of zero, just format with precision zeros
      var n = '0.'; 
      while (precision--) n += '0'; 
      return n 
    }
  
    var scale = Math.ceil(Math.log(numb)*Math.LOG10E);  // no of digits before decimal
    var n = String(Math.round(numb * Math.pow(10, precision-scale)));
    if (scale > 0) {  // add trailing zeros & insert decimal as required
      l = scale - n.length;
      while (l-- > 0) n = n + '0';
      if (scale < n.length) n = n.slice(0,scale) + '.' + n.slice(scale);
    } else {          // prefix decimal and leading zeros if required
      while (scale++ < 0) n = '0' + n;
      n = '0.' + n;
    }
    return sign + n;
  }
}

/** Trims whitespace from string (q.v. blog.stevenlevithan.com/archives/faster-trim-javascript) */
if (typeof(String.prototype.trim) === "undefined") {
  String.prototype.trim = function() {
    return String(this).replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  }
}

/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */

function facebookCheckIn(){
    var ret = {
        PERMS: "publish_checkins",    
        LAST_CHECKIN_COUNT: 10,          // amount of last checkins that will be checked
        checkinComponent: null,          // DOM div element, the checkin container
        checkinButtonInactive: null,    // DOM img element
        checkinButtonActive: null,      //        "
        checkinButtonCheckedin: null,   //        "
        appID: '',                      // facebook app id which is posting the checkin on the users board
        placeID: '',                    // facebook id of the place
        placeLongitude: -1,             // longitude of the facebook place, get it from https://graph.facebook.com/<placeID>
        placeLatitude: -1,              // latitude of the facebook place
        redirectURL:  '',
        state:  0,                      // checkin status 0 = not logged in, 1 = loggedin/given Permission, 2 = already checkin
        message:  '',                   // predefined message that will included in the checkin entry on facebook
        redirectURL: '',

        init: function (componentOID, appID, placeID, longitude, latitude, message, redirect_url){
              // init vars
              this.appID = appID;
              this.placeID = placeID;
              this.placeLongitude = longitude;
              this.placeLatitude = latitude;
              this.message = message;
              this.redirectURL = redirect_url;
              this.checkinComponent = $('#fb_checkin_'+ componentOID);
              this.checkinButtonInactive = $('#fb_checkin_'+ componentOID +' .fb_checkin_button_inactive');
              this.checkinButtonActive = $('#fb_checkin_'+ componentOID +' .fb_checkin_button_active');
              this.checkinButtonCheckedin = $('#fb_checkin_'+ componentOID +' .fb_checkin_button_checkedin');

              // check login status
              var fbCheckinObject = this;
              FB.init({ appId: this.appID, status : true,cookie : true, xfbml  : true });
              FB.getLoginStatus(function(response) {
                    if (response.session) {
                        if(response.perms != null && response.perms.indexOf(fbCheckinObject.PERMS) >= 0){
                            fbCheckinObject.updateState(1);
                            fbCheckinObject.getCheckinStatus(); // async, updates state if necessary
                        }
                    }
              });

              // register event handler
              FB.Event.subscribe('auth.login', function(response) {
                      // check permissions
                      fbCheckinObject.updateState(1);
                      fbCheckinObject.getCheckinStatus(); // async, updates state if necessary
              });
              FB.Event.subscribe('auth.logout', function(response) {
                  fbCheckinObject.updateState(0);
              });
        },
        
        getCheckinStatus: function(){
            var placeID = this.placeID;
            var fbCheckinObject = this;
            // did the user checked in the place in the last time (check last X checkins)
            FB.api('/me/checkins', {limit: this.LAST_CHECKIN_COUNT}, function(response) {
                if(typeof(response.error) == 'undefined' && typeof(response.data) !== 'undefined'){
                    for(var i=0 ; i < response.data.length; i++){
                        if(response.data[i].place.id == placeID){
                            fbCheckinObject.updateState(2); // 2 = already checked in
                            break;
                        }
                    }
                }
            });
        },

        updateState: function(state){
            this.state = state;
            this.updateButtonStatus();
        },

        updateButtonStatus: function(){
          this.checkinButtonInactive.hide();
          this.checkinButtonActive.hide();
          this.checkinButtonCheckedin.hide();
          switch(this.state){
            case 0:
                this.checkinButtonInactive.show();
                break;
            case 1:
                this.checkinButtonActive.show();
                break;
            case 2:
                this.checkinButtonCheckedin.show();
                break;
          }
        },

        checkin: function (){
            var redirectURL = this.redirectURL;
            var fbCheckinObject = this;
            this.checkinComponent.find('.fb_checkin_error').hide();

			if (facebookCheckIn.places === null) {
				//we do not have geocoordinates
				 fbCheckinObject.doCheckin(false);
			}
			else {
				fbCheckinObject.doCheckin(true);
			}
        },

        doCheckin: function (isGeolocationAvailable){

            var fbCheckinObject = this;
            FB.api('/me/checkins', 'post',{ 
                    message : this.message, 
                    place : this.placeID, 
                    coordinates : {latitude : this.placeLatitude, longitude : this.placeLongitude}
                },function(response) {
                    if (typeof(response.error) == 'undefined') {
                        fbCheckinObject.updateState(2); // 2 = already checked in
                        if(isGeolocationAvailable) // track checkin with geo_coordinates
                            fbCheckinObject.doTracking(fbCheckinObject.placeLongitude +'_'+ fbCheckinObject.placeLatitude);
                        else
                            fbCheckinObject.doTracking(fbCheckinObject.placeID);

                        if(fbCheckinObject.redirectURL.length > 0)
                            $(location).attr('href', fbCheckinObject.redirectURL);
                    } else {
                        fbCheckinObject.checkinComponent.find('.fb_checkin_error').show().html(response.error.message);
                    }
            });
        },

        doTracking: function (trackingParameter){
            _tag.dcsMultiTrack('DCS.dcsuri','/strandkorb/check-in/'+ trackingParameter +'/', 'WT.cg_n', 'DI;DI:Strandkorb', 'DCSext.UA', 'UA.SI_fb-checkin.DI:Strandkorb');
        }
        
        

  }; // end ret 

  return ret;
}

//initialized only if we tried to get geocoordinates
facebookCheckIn.places = null;

facebookCheckIn.displayCheckin = function(places) {
		console.log("About to display checkin...");
		var selectedPlaceId = $.url.param("placeid");
		if (typeof selectedPlaceId !== 'undefined') {
			console.log("A place was preselected: ");
			var fbCheckin = places[selectedPlaceId];	
			if (typeof fbCheckin !== 'undefined') {
				$(fbCheckin.checkinComponent).show();
				//we're done here
				return;
			}
		}
		facebookCheckIn.places = places;		
		
		if ($.geolocation.support()) {
			$.geolocation.find(function(location) {
				var userPosition = new LatLon(location.latitude, location.longitude);
				var fbCheckin = null;
				var closestDistance = -1;
				for (placeItem in facebookCheckIn.places) {
					var place = facebookCheckIn.places[placeItem];
					var placePos = new LatLon(place.placeLatitude, place.placeLongitude);
					var distance = userPosition.distanceTo(placePos);
					if (closestDistance === -1 || distance <= closestDistance) {
						closestDistance = distance;
						fbCheckin = place;
					}
				}
				$(fbCheckin.checkinComponent).show();
				
				//as we have the coordinates, we will use those
				fbCheckin.placeLatitude = location.latitude;
				fbCheckin.placeLongitude = location.longitude;
			}, function(){ // no geolocation available, checkin with static coordinates
				$("#fb_geolocation_refused").show();
			});	
		}
		else {
			$("#fb_geolocation_not_supported").show();
		}	
}


}catch(e){console.log('Error in m_facebook_checkin: ' + e.description);}

// ---- jquery.form ----
try{ /*!
 * jQuery Form Plugin
 * version: 2.43 (12-MAR-2010)
 * @requires jQuery v1.3.2 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
;(function($) {

/*
	Usage Note:
	-----------
	Do not use both ajaxSubmit and ajaxForm on the same form.  These
	functions are intended to be exclusive.  Use ajaxSubmit if you want
	to bind your own submit handler to the form.  For example,

	$(document).ready(function() {
		$('#myForm').bind('submit', function() {
			$(this).ajaxSubmit({
				target: '#output'
			});
			return false; // <-- important!
		});
	});

	Use ajaxForm when you want the plugin to manage all the event binding
	for you.  For example,

	$(document).ready(function() {
		$('#myForm').ajaxForm({
			target: '#output'
		});
	});

	When using ajaxForm, the ajaxSubmit function will be invoked for you
	at the appropriate time.
*/

/**
 * ajaxSubmit() provides a mechanism for immediately submitting
 * an HTML form using AJAX.
 */
$.fn.ajaxSubmit = function(options) {
	// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
	if (!this.length) {
		log('ajaxSubmit: skipping submit process - no element selected');
		return this;
	}

	if (typeof options == 'function')
		options = { success: options };

	var url = $.trim(this.attr('action'));
	if (url) {
		// clean url (don't include hash vaue)
		url = (url.match(/^([^#]+)/)||[])[1];
   	}
   	url = url || window.location.href || '';

	options = $.extend({
		url:  url,
		type: this.attr('method') || 'GET',
		iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
	}, options || {});

	// hook for manipulating the form data before it is extracted;
	// convenient for use with rich editors like tinyMCE or FCKEditor
	var veto = {};
	this.trigger('form-pre-serialize', [this, options, veto]);
	if (veto.veto) {
		log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
		return this;
	}

	// provide opportunity to alter form data before it is serialized
	if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
		log('ajaxSubmit: submit aborted via beforeSerialize callback');
		return this;
	}

	var a = this.formToArray(options.semantic);
	if (options.data) {
		options.extraData = options.data;
		for (var n in options.data) {
		  if(options.data[n] instanceof Array) {
			for (var k in options.data[n])
			  a.push( { name: n, value: options.data[n][k] } );
		  }
		  else
			 a.push( { name: n, value: options.data[n] } );
		}
	}

	// give pre-submit callback an opportunity to abort the submit
	if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
		log('ajaxSubmit: submit aborted via beforeSubmit callback');
		return this;
	}

	// fire vetoable 'validate' event
	this.trigger('form-submit-validate', [a, this, options, veto]);
	if (veto.veto) {
		log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
		return this;
	}

	var q = $.param(a);

	if (options.type.toUpperCase() == 'GET') {
		options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
		options.data = null;  // data is null for 'get'
	}
	else
		options.data = q; // data is the query string for 'post'

	var $form = this, callbacks = [];
	if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
	if (options.clearForm) callbacks.push(function() { $form.clearForm(); });

	// perform a load on the target only if dataType is not provided
	if (!options.dataType && options.target) {
		var oldSuccess = options.success || function(){};
		callbacks.push(function(data) {
			var fn = options.replaceTarget ? 'replaceWith' : 'html';
			$(options.target)[fn](data).each(oldSuccess, arguments);
		});
	}
	else if (options.success)
		callbacks.push(options.success);

	options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
		for (var i=0, max=callbacks.length; i < max; i++)
			callbacks[i].apply(options, [data, status, xhr || $form, $form]);
	};

	// are there files to upload?
	var files = $('input:file', this).fieldValue();
	var found = false;
	for (var j=0; j < files.length; j++)
		if (files[j])
			found = true;

	var multipart = false;
//	var mp = 'multipart/form-data';
//	multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);

	// options.iframe allows user to force iframe mode
	// 06-NOV-09: now defaulting to iframe mode if file input is detected
   if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {
	   // hack to fix Safari hang (thanks to Tim Molendijk for this)
	   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
	   if (options.closeKeepAlive)
		   $.get(options.closeKeepAlive, fileUpload);
	   else
		   fileUpload();
	   }
   else
	   $.ajax(options);

	// fire 'notify' event
	this.trigger('form-submit-notify', [this, options]);
	return this;


	// private function for handling file uploads (hat tip to YAHOO!)
	function fileUpload() {
		var form = $form[0];

		if ($(':input[name=submit]', form).length) {
			alert('Error: Form elements must not be named "submit".');
			return;
		}

		var opts = $.extend({}, $.ajaxSettings, options);
		var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);

		var id = 'jqFormIO' + (new Date().getTime());
		var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" onload="(jQuery(this).data(\'form-plugin-onload\'))()" />');
		var io = $io[0];

		$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });

		var xhr = { // mock object
			aborted: 0,
			responseText: null,
			responseXML: null,
			status: 0,
			statusText: 'n/a',
			getAllResponseHeaders: function() {},
			getResponseHeader: function() {},
			setRequestHeader: function() {},
			abort: function() {
				this.aborted = 1;
				$io.attr('src', opts.iframeSrc); // abort op in progress
			}
		};

		var g = opts.global;
		// trigger ajax global events so that activity/block indicators work like normal
		if (g && ! $.active++) $.event.trigger("ajaxStart");
		if (g) $.event.trigger("ajaxSend", [xhr, opts]);

		if (s.beforeSend && s.beforeSend(xhr, s) === false) {
			s.global && $.active--;
			return;
		}
		if (xhr.aborted)
			return;

		var cbInvoked = false;
		var timedOut = 0;

		// add submitting element to data if we know it
		var sub = form.clk;
		if (sub) {
			var n = sub.name;
			if (n && !sub.disabled) {
				opts.extraData = opts.extraData || {};
				opts.extraData[n] = sub.value;
				if (sub.type == "image") {
					opts.extraData[n+'.x'] = form.clk_x;
					opts.extraData[n+'.y'] = form.clk_y;
				}
			}
		}

		// take a breath so that pending repaints get some cpu time before the upload starts
		function doSubmit() {
			// make sure form attrs are set
			var t = $form.attr('target'), a = $form.attr('action');

			// update form attrs in IE friendly way
			form.setAttribute('target',id);
			if (form.getAttribute('method') != 'POST')
				form.setAttribute('method', 'POST');
			if (form.getAttribute('action') != opts.url)
				form.setAttribute('action', opts.url);

			// ie borks in some cases when setting encoding
			if (! opts.skipEncodingOverride) {
				$form.attr({
					encoding: 'multipart/form-data',
					enctype:  'multipart/form-data'
				});
			}

			// support timout
			if (opts.timeout)
				setTimeout(function() { timedOut = true; cb(); }, opts.timeout);

			// add "extra" data to form if provided in options
			var extraInputs = [];
			try {
				if (opts.extraData)
					for (var n in opts.extraData)
						extraInputs.push(
							$('<input type="hidden" name="'+n+'" value="'+opts.extraData[n]+'" />')
								.appendTo(form)[0]);

				// add iframe to doc and submit the form
				$io.appendTo('body');
				$io.data('form-plugin-onload', cb);
				form.submit();
			}
			finally {
				// reset attrs and remove "extra" input elements
				form.setAttribute('action',a);
				t ? form.setAttribute('target', t) : $form.removeAttr('target');
				$(extraInputs).remove();
			}
		};

		if (opts.forceSync)
			doSubmit();
		else
			setTimeout(doSubmit, 10); // this lets dom updates render
	
		var domCheckCount = 100;

		function cb() {
			if (cbInvoked) 
				return;

			var ok = true;
			try {
				if (timedOut) throw 'timeout';
				// extract the server response from the iframe
				var data, doc;

				doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
				
				var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
				log('isXml='+isXml);
				if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
				 	if (--domCheckCount) {
						// in some browsers (Opera) the iframe DOM is not always traversable when
						// the onload callback fires, so we loop a bit to accommodate
				 		log('requeing onLoad callback, DOM not available');
						setTimeout(cb, 250);
						return;
					}
					log('Could not access iframe DOM after 100 tries.');
					return;
				}

				log('response detected');
				cbInvoked = true;
				xhr.responseText = doc.body ? doc.body.innerHTML : null;
				xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
				xhr.getResponseHeader = function(header){
					var headers = {'content-type': opts.dataType};
					return headers[header];
				};

				if (opts.dataType == 'json' || opts.dataType == 'script') {
					// see if user embedded response in textarea
					var ta = doc.getElementsByTagName('textarea')[0];
					if (ta)
						xhr.responseText = ta.value;
					else {
						// account for browsers injecting pre around json response
						var pre = doc.getElementsByTagName('pre')[0];
						if (pre)
							xhr.responseText = pre.innerHTML;
					}			  
				}
				else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
					xhr.responseXML = toXml(xhr.responseText);
				}
				data = $.httpData(xhr, opts.dataType);
			}
			catch(e){
				log('error caught:',e);
				ok = false;
				xhr.error = e;
				$.handleError(opts, xhr, 'error', e);
			}

			// ordering of these callbacks/triggers is odd, but that's how $.ajax does it
			if (ok) {
				opts.success(data, 'success');
				if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
			}
			if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
			if (g && ! --$.active) $.event.trigger("ajaxStop");
			if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');

			// clean up
			setTimeout(function() {
				$io.removeData('form-plugin-onload');
				$io.remove();
				xhr.responseXML = null;
			}, 100);
		};

		function toXml(s, doc) {
			if (window.ActiveXObject) {
				doc = new ActiveXObject('Microsoft.XMLDOM');
				doc.async = 'false';
				doc.loadXML(s);
			}
			else
				doc = (new DOMParser()).parseFromString(s, 'text/xml');
			return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
		};
	};
};

/**
 * ajaxForm() provides a mechanism for fully automating form submission.
 *
 * The advantages of using this method instead of ajaxSubmit() are:
 *
 * 1: This method will include coordinates for <input type="image" /> elements (if the element
 *	is used to submit the form).
 * 2. This method will include the submit element's name/value data (for the element that was
 *	used to submit the form).
 * 3. This method binds the submit() method to the form for you.
 *
 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
 * passes the options argument along after properly binding events for submit elements and
 * the form itself.
 */
$.fn.ajaxForm = function(options) {
	return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
		e.preventDefault();
		$(this).ajaxSubmit(options);
	}).bind('click.form-plugin', function(e) {
		var target = e.target;
		var $el = $(target);
		if (!($el.is(":submit,input:image"))) {
			// is this a child element of the submit el?  (ex: a span within a button)
			var t = $el.closest(':submit');
			if (t.length == 0)
				return;
			target = t[0];
		}
		var form = this;
		form.clk = target;
		if (target.type == 'image') {
			if (e.offsetX != undefined) {
				form.clk_x = e.offsetX;
				form.clk_y = e.offsetY;
			} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
				var offset = $el.offset();
				form.clk_x = e.pageX - offset.left;
				form.clk_y = e.pageY - offset.top;
			} else {
				form.clk_x = e.pageX - target.offsetLeft;
				form.clk_y = e.pageY - target.offsetTop;
			}
		}
		// clear form vars
		setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
	});
};

// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
$.fn.ajaxFormUnbind = function() {
	return this.unbind('submit.form-plugin click.form-plugin');
};

/**
 * formToArray() gathers form element data into an array of objects that can
 * be passed to any of the following ajax functions: $.get, $.post, or load.
 * Each object in the array has both a 'name' and 'value' property.  An example of
 * an array for a simple login form might be:
 *
 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 *
 * It is this array that is passed to pre-submit callback functions provided to the
 * ajaxSubmit() and ajaxForm() methods.
 */
$.fn.formToArray = function(semantic) {
	var a = [];
	if (this.length == 0) return a;

	var form = this[0];
	var els = semantic ? form.getElementsByTagName('*') : form.elements;
	if (!els) return a;
	for(var i=0, max=els.length; i < max; i++) {
		var el = els[i];
		var n = el.name;
		if (!n) continue;

		if (semantic && form.clk && el.type == "image") {
			// handle image inputs on the fly when semantic == true
			if(!el.disabled && form.clk == el) {
				a.push({name: n, value: $(el).val()});
				a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
			}
			continue;
		}

		var v = $.fieldValue(el, true);
		if (v && v.constructor == Array) {
			for(var j=0, jmax=v.length; j < jmax; j++)
				a.push({name: n, value: v[j]});
		}
		else if (v !== null && typeof v != 'undefined')
			a.push({name: n, value: v});
	}

	if (!semantic && form.clk) {
		// input type=='image' are not found in elements array! handle it here
		var $input = $(form.clk), input = $input[0], n = input.name;
		if (n && !input.disabled && input.type == 'image') {
			a.push({name: n, value: $input.val()});
			a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
		}
	}
	return a;
};

/**
 * Serializes form data into a 'submittable' string. This method will return a string
 * in the format: name1=value1&amp;name2=value2
 */
$.fn.formSerialize = function(semantic) {
	//hand off to jQuery.param for proper encoding
	return $.param(this.formToArray(semantic));
};

/**
 * Serializes all field elements in the jQuery object into a query string.
 * This method will return a string in the format: name1=value1&amp;name2=value2
 */
$.fn.fieldSerialize = function(successful) {
	var a = [];
	this.each(function() {
		var n = this.name;
		if (!n) return;
		var v = $.fieldValue(this, successful);
		if (v && v.constructor == Array) {
			for (var i=0,max=v.length; i < max; i++)
				a.push({name: n, value: v[i]});
		}
		else if (v !== null && typeof v != 'undefined')
			a.push({name: this.name, value: v});
	});
	//hand off to jQuery.param for proper encoding
	return $.param(a);
};

/**
 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
 *
 *  <form><fieldset>
 *	  <input name="A" type="text" />
 *	  <input name="A" type="text" />
 *	  <input name="B" type="checkbox" value="B1" />
 *	  <input name="B" type="checkbox" value="B2"/>
 *	  <input name="C" type="radio" value="C1" />
 *	  <input name="C" type="radio" value="C2" />
 *  </fieldset></form>
 *
 *  var v = $(':text').fieldValue();
 *  // if no values are entered into the text inputs
 *  v == ['','']
 *  // if values entered into the text inputs are 'foo' and 'bar'
 *  v == ['foo','bar']
 *
 *  var v = $(':checkbox').fieldValue();
 *  // if neither checkbox is checked
 *  v === undefined
 *  // if both checkboxes are checked
 *  v == ['B1', 'B2']
 *
 *  var v = $(':radio').fieldValue();
 *  // if neither radio is checked
 *  v === undefined
 *  // if first radio is checked
 *  v == ['C1']
 *
 * The successful argument controls whether or not the field element must be 'successful'
 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.  If this value is false the value(s)
 * for each element is returned.
 *
 * Note: This method *always* returns an array.  If no valid value can be determined the
 *	   array will be empty, otherwise it will contain one or more values.
 */
$.fn.fieldValue = function(successful) {
	for (var val=[], i=0, max=this.length; i < max; i++) {
		var el = this[i];
		var v = $.fieldValue(el, successful);
		if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
			continue;
		v.constructor == Array ? $.merge(val, v) : val.push(v);
	}
	return val;
};

/**
 * Returns the value of the field element.
 */
$.fieldValue = function(el, successful) {
	var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
	if (typeof successful == 'undefined') successful = true;

	if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
		(t == 'checkbox' || t == 'radio') && !el.checked ||
		(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
		tag == 'select' && el.selectedIndex == -1))
			return null;

	if (tag == 'select') {
		var index = el.selectedIndex;
		if (index < 0) return null;
		var a = [], ops = el.options;
		var one = (t == 'select-one');
		var max = (one ? index+1 : ops.length);
		for(var i=(one ? index : 0); i < max; i++) {
			var op = ops[i];
			if (op.selected) {
				var v = op.value;
				if (!v) // extra pain for IE...
					v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
				if (one) return v;
				a.push(v);
			}
		}
		return a;
	}
	return el.value;
};

/**
 * Clears the form data.  Takes the following actions on the form's input fields:
 *  - input text fields will have their 'value' property set to the empty string
 *  - select elements will have their 'selectedIndex' property set to -1
 *  - checkbox and radio inputs will have their 'checked' property set to false
 *  - inputs of type submit, button, reset, and hidden will *not* be effected
 *  - button elements will *not* be effected
 */
$.fn.clearForm = function() {
	return this.each(function() {
		$('input,select,textarea', this).clearFields();
	});
};

/**
 * Clears the selected form elements.
 */
$.fn.clearFields = $.fn.clearInputs = function() {
	return this.each(function() {
		var t = this.type, tag = this.tagName.toLowerCase();
		if (t == 'text' || t == 'password' || tag == 'textarea')
			this.value = '';
		else if (t == 'checkbox' || t == 'radio')
			this.checked = false;
		else if (tag == 'select')
			this.selectedIndex = -1;
	});
};

/**
 * Resets the form data.  Causes all form elements to be reset to their original value.
 */
$.fn.resetForm = function() {
	return this.each(function() {
		// guard against an input with the name of 'reset'
		// note that IE reports the reset function as an 'object'
		if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
			this.reset();
	});
};

/**
 * Enables or disables any matching elements.
 */
$.fn.enable = function(b) {
	if (b == undefined) b = true;
	return this.each(function() {
		this.disabled = !b;
	});
};

/**
 * Checks/unchecks any matching checkboxes or radio buttons and
 * selects/deselects and matching option elements.
 */
$.fn.selected = function(select) {
	if (select == undefined) select = true;
	return this.each(function() {
		var t = this.type;
		if (t == 'checkbox' || t == 'radio')
			this.checked = select;
		else if (this.tagName.toLowerCase() == 'option') {
			var $sel = $(this).parent('select');
			if (select && $sel[0] && $sel[0].type == 'select-one') {
				// deselect all other options
				$sel.find('option').selected(false);
			}
			this.selected = select;
		}
	});
};

// helper fn for console logging
// set $.fn.ajaxSubmit.debug to true to enable debug logging
function log() {
	if ($.fn.ajaxSubmit.debug) {
		var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
		if (window.console && window.console.log)
			window.console.log(msg);
		else if (window.opera && window.opera.postError)
			window.opera.postError(msg);
	}
};

})(jQuery);

}catch(e){console.log('Error in jquery.form: ' + e.description);}

