﻿
// ---- 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){alert('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  = true;
/**************** Special block for the offline copy   ****************/
function ms( url, xml) {
	this.flashUrl = url;
	this.flashXmlUrl = xml;
}

function teas(turl) {
	this.url = turl;
}

function offlineCopyTeaser () {
	this.teaserArea =  new Array(
		new Array(
		new teas("/_teaser_pool/standard/lifestyle_shop.html"),
		new teas("/_teaser_pool/standard/mini_cooper_cabrio.html"),
		new teas("/_teaser_pool/standard/dealer_service.html")),
		new Array(
		new teas("/_teaser_pool/standard/mini_cooper_cabrio.html"),
		new teas("/_teaser_pool/standard/dealer_offer.html"),
		new teas("/_teaser_pool/standard/dealer_service.html")),
		new Array(
		//new teas("/_teaser_pool/standard/financial_services_mini.html"),
		new teas("/_teaser_pool/standard/lifestyle_shop.html"),
		new teas("/_teaser_pool/standard/mini_cooper_cabrio.html") )
	);

	this.mainStage = new Array(	
		new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/teaser_united.swf", "/_teaser_pool/mainstage/united/content_united.xml"),
		new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/mini_rauno_aaltonen_se.swf", "/_teaser_pool/mainstage/mini_rauno_aaltonen_se/content.xml"),
		//new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/mini_coupe.swf", "/_teaser_pool/mainstage/mini_coupe/coupe_content.xml"), 
		new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/cooper_s.swf", "/_teaser_pool/mainstage/mini_cooper_s/content.xml")
		//new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/lifestyle.swf", "/_teaser_pool/mainstage/lifestyle/content.xml")
		//new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/mini_cooper_countryman.swf", "/_teaser_pool/mainstage/mini_cooper_countryman/content.xml"),
        //new ms("/_common/_shared_files/teaser_pool/main_stage/_swf/cooper_sd.swf", "/_teaser_pool/mainstage/mini_cooper_sd/content.xml"),	
	);

	this.mainStageConfigs = new Array(	new function()	{
															this.teaserFlash = new function( ){
																	this.country = topicCountry ;
																	this.language = topicLanguage;
																	this.swf = "/_common/_shared_files/_swf/mainstage_container.swf"
																	this.font = "/_common/_shared_files/_swf/font_latin.swf";
																	this.minFlashVersion = "9.0.0";

															}
															
														if(!teaser.isStartPointScenario())
															this.oid = 3758;   // oid of mainstage container (/_master/en/mainstage.html)
														this.fixTeaser="";
														this.startScenarioFlash   = "/_common/_shared_files/_swf/scenario_teaser.swf";
														this.startScenarioImage   =   "/_common/_shared_files/framework/scenario_noflash_welcome.jpg";
														teaserAreaImage   = 	"/_common/_shared_files/framework/scenario_noflash_welcome.jpg";
											}
	);
}


function loadStaticTeaser(){
	var ts = new offlineCopyTeaser();
	teaser.mainStageConfigs = ts.mainStageConfigs;
	teaser.teaserSelectionCallback(ts);
	$('#teaser_area').mouseleave(function(){teaser.hideAllBigTeaserDelayed();});
}
/**************** End special block for the offline copy   ****************/

 
/**
 * 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();

function determineGoogleMapsKey() {

return "";

	var key= {
        'liwww5.muc:4884': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRR2IWiFJTh-yPyfBXm6d_RN9lnmLBSJmVqxzQ7dx2AdOfzcpxC0MgLvXg',
        'liwww5.muc:41482': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRTrw8gbD0VCSrUflZhuwKNn3ZwMFBSKc2zABFxKt2E3kKLET5IkiIQN-A',
        'wcms20.bmwgroup.com': 'ABQIAAAANB5RTGHnST-hhwCUQQyqHRTdFYuEgSsZBrNLGxDoa494Fe-NSxS-W7Pgm2IIatjbkKdgCTlJOgeWiQ',
        'integ-n.mini.com': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRSp1KlgvIXY6Goihzj-S2UXxS-0PhTAbYBuGPmiIEGpZzpKbqmbO02slg',
        'integ-s.mini.com': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRR8S2JiafxGJDqVny2rx2gcEst5khScom8HlnzV7Bx0dRaqTs9K46Z5Yg',
        'master-qa.mini.com': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRRdCBKVhNr3Qcqj7nfPi8QTFhqcVRQUlpyuL8H8mNuUoOXI0uNJckGK2Q',
		'www.mini.sk': 'ABQIAAAAd67BMoZNURFvkH5NYQE7ZBRNvuywMS9IVGI0_YUV-HEi-fCxwhRCcZv3e5dqHRmdIqDd8AVqXm_loA',
		'mini.sk': 'ABQIAAAA7l0U1u91rXuk1XSnO3yKPBTP3hE3vJo7IHAOq26PvNbuhXu8eBREa7Q3UGL1y0dZ8OELAIzdX3Gwxg',
		'mini-sk2010-dev.dc.ham.mcon.net': 'ABQIAAAAd67BMoZNURFvkH5NYQE7ZBRCDzsTk6DtNdOtZyaOyEB76GWSjxTS8c9ITcsnvDZJOnKnGd3B7VcHiw', 
        'master-prod.mini.com': 'ABQIAAAAxEJFF662fEu1cZ5X7y6uqRSAv4W6eTJUUwBEBXsbFRmBMrLQHxSMY_L8tvU-Es5-Mk7n4Rg349gyHA'
        
        }[window.location.host];
	return key;
}
/** workaround until bmw key works */
var googleMapsKey = "gme-bmw";
//var googleMapsKey = determineGoogleMapsKey();



/** 
  * 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 = [];

function fixTCHeadlineImage(tcImgId, topMargin){
	var version = getInternetExplorerVersion();
	var isIe = version > -1;
	
	if(!isIe){
		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();
	     // if (typeof runInterStitial == 'function') runInterStitial('6', 'mini');
	  }
	);
	
	$(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
	
	modelCode = getModelDataFromUrl("model_code");
	
	//cr-30a:
	if ((modelCode == null) && (window.location.href.indexOf("minimalism") !== -1)) {
		modelCode =  modelData[defaultMinimalismModel.body  + "." + defaultMinimalismModel.type + ".model_code"];
	}
	return modelCode;
}

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;
		}
		
		var key = key1 + "." + key2 + "." + data_key;
		data = modelData[key];
		if ((data !== null) && (typeof(data) !== 'undefined')) {
			break;
		}
	}	
	return data;
}
/**
 * This function is for Flash Integration
 *  returns the value of model data array 
 **/
function getModelDataValue_FlashIf(bodyType, modelType, data_key) {
	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|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|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 "tda": 			
			if ((modelCode !== null) && (typeof(modelCode) !== 'undefined')) {
				url = addParam(url, 'model', modelCode);
			}
			if ((bodyType !== null) && (typeof(bodyType) !== 'undefined')) {
				url = addParam(url, 'body_type', bodyType);
			}
			break;
		case "eric":
			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": // append all potential params
			url = appendCurrentBreadcrumb(url);
			if (isIFrameComponentCall) {
				//eCOM requires these params first
				url = addParam(url, 'process', 'vco');//eCOM
				url = addParam(url, '_service', 'vco'); //eCOM light			
			}
			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
			}
			if ((pMiniSubsidiary !== null) && (typeof(pMiniSubsidiary) !== 'undefined')) {
				url = addParam(url, 'action', 'dlo.selectDistributionPartner');
				url = addParam(url, 'distributionPartnerNumber', pMiniSubsidiary.getDistributionPartnerId());
				url = addParam(url, 'outletId', pMiniSubsidiary.getOutletId());
			}
			url = addParam(url, 'initTarget', 'vco.configurator');
			url = appendBackLinkName(url);
			break;
		case "rfci":
			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":
			url = addParam(url, 'process', 'rfo');//eCOM
			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 = addParam(url, 'action', 'dlo.selectDistributionPartner');
				url = addParam(url, 'distributionPartnerNumber', pMiniSubsidiary.getDistributionPartnerId());
				url = addParam(url, 'outletId', pMiniSubsidiary.getOutletId());
				url = addParam(url, '_dealerID', pMiniSubsidiary.getGoldmineId());
			}
			url = addParam(url, 'initTarget', 'rfo.checkList');
			url = appendBackLinkName(url);
			break;
		case "rfi":
			var infomaterial_id = getModelDataFromUrl("infomaterial_id");
			if (infomaterial_id !== null && (typeof(infomaterial_id) !== 'undefined')) {
				url = addParam(url, "infomaterial_id", infomaterial_id);
			}
			break;
		case "dealer":
			// 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;
	}
	//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 a parameter (name and value) to a url (no escaping) 
 *  This method does not add already existing url params or params within the current window url!
 */
function addParam(url, name, value) {
	if (url == null) return null;

	if (name != "action") { 
		//normal case:
		//skip all params which have already been defined 
		if (url.indexOf(name + '=') != -1){
			return url;
		}
		if (window.location.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 (window.location.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 $("#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 */
function googleApiLoaded() {

return;

  mini_smartsearch_loadSearchEngine(); //m_smart_search
  initMaps(); // m_dealer_layer
  if (typeof contactTeamInitialize == 'function' ||
      typeof dealerInitialize == 'function' ||
      miniSubsidiaryLayer.displayLayer()) {
    //google.load("maps", "2.x", {"callback" : googleMapsLoaded});
    google.load("maps", "2.x", {"other_params":"client=gme-bmw&sensor=false", "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();
	}
}


/** Returns the domain name (i.e. mustermann.mini.com -> mini.com) */
function getDomain() {	
  if (window.location.href.indexOf("mini.com") > 0) { 
    return 'mini.com';
  }
  else if (window.location.href.indexOf("mini.at") > 0) { 
    return 'mini.at';
  }
  else if (window.location.href.indexOf("mini.be") > 0) { 
    return 'mini.be';
  }
  else if (window.location.href.indexOf("mini.ca") > 0) { 
    return 'mini.ca';
  }
  else if (window.location.href.indexOf("mini.ch") > 0) { 
    return 'mini.ch';
  }
  else if (window.location.href.indexOf("mini.com.gr") > 0) { 
    return 'mini.com.gr';
  }
  else if (window.location.href.indexOf("mini.com.mx") > 0) { 
    return 'mini.com.mx';
  }
  else if (window.location.href.indexOf("mini.de") > 0) { 
    return 'mini.de';
  }
  else if (window.location.href.indexOf("mini.dk") > 0) { 
    return 'mini.dk';
  }
  else if (window.location.href.indexOf("mini.es") > 0) { 
    return 'mini.es';
  }
  else if (window.location.href.indexOf("mini.fi") > 0) { 
    return 'mini.fi';
  }
  else if (window.location.href.indexOf("mini.fr") > 0) { 
    return 'mini.fr';
  }
  else if (window.location.href.indexOf("mini.gr") > 0) { 
    return 'mini.gr';
  }
  else if (window.location.href.indexOf("mini.ie") > 0) { 
    return 'mini.ie';
  }
  else if (window.location.href.indexOf("mini.it") > 0) { 
    return 'mini.it';
  }
  else if (window.location.href.indexOf("mini.jp") > 0) { 
    return 'mini.jp';
  }
  else if (window.location.href.indexOf("mini.lu") > 0) { 
    return 'mini.lu';
  }
  else if (window.location.href.indexOf("mini.nl") > 0) { 
    return 'mini.nl';
  }
  else if (window.location.href.indexOf("mini.no") > 0) { 
    return 'mini.no';
  }
  else if (window.location.href.indexOf("mini.pt") > 0) { 
    return 'mini.pt';
  }
  else if (window.location.href.indexOf("mini.se") > 0) { 
    return 'mini.se';
  }
  else if (window.location.href.indexOf("minibrasil.com") > 0) { 
    return 'minibrasil.com';
  }
  else if (window.location.href.indexOf("new-mini.no") > 0) { 
    return 'new-mini.no';
  }
  else if (window.location.href.indexOf("bmwgroup.net") > 0) { 
    return 'bmwgroup.net';
  }
  else if (window.location.href.indexOf("bmw.de") > 0) { 
    return 'bmw.de';
  }
  else if (window.location.href.indexOf("bmwgroup.com") > 0) { 
    return 'bmwgroup.com';
  }
  else return window.location.href;
}


}catch(e){alert('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){alert('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() {
		if ( !this[0] ) 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() {
		if ( !this[0] ) 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){alert('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
		 }
		 ];

	this.defaultDepth = 2;

	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;
	};

	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(){
		miniUrlFix.doGlobalFix();		
});

}catch(e){alert('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){alert('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){alert('Error in jquery.cycle.lite.1.0: ' + e.description);}

// ---- jquery.jsonp-1.1.4 ----
try{ /*
 * jQuery JSONP Core Plugin 1.1.4 (2010-04-07)
 * 
 * http://code.google.com/p/jquery-jsonp/
 *
 * Copyright (c) 2010 Julian Aubourg
 *
 * This document is licensed as free software under the terms of the
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 */
(function($){
	
	// ###################### UTILITIES ##
	// Test a value is neither undefined nor null
	var defined = function(v) {
		return v!==undefined && v!==null;
	},
	// Call if defined
	callIfDefined = function(method,object,parameters) {
		defined(method) && method.apply(object,parameters);
	},
	// Let the current thread running
	later = function(functor) {
		setTimeout(functor,0);
	},
	// String constants (for better minification)
	empty="",
	amp="&",
	qMark="?",
	success = "success",
	error = "error",
	
	// Head element (for faster use)
	head = $("head"),
	// Page cache
	pageCache = {},
	
	// ###################### DEFAULT OPTIONS ##
	xOptionsDefaults = {
		//beforeSend: undefined,
		//cache: false,
		callback: "C",
		//callbackParameter: undefined,
		//complete: undefined,
		//data: ""
		//dataFilter: undefined,
		//error: undefined,
		//pageCache: false,
		//success: undefined,
		//timeout: 0,		
		url: location.href
	},

	// ###################### MAIN FUNCTION ##
	jsonp = function(xOptions) {
		
		// Build data with default
		xOptions = $.extend({},xOptionsDefaults,xOptions);
		
		// References to beforeSend (for better minification) 
		var beforeSendCallback = xOptions.beforeSend,
		
		// Abort/done flag
		done = 0;
		
		// Put a temporary abort
		xOptions.abort = function() { done = 1; };

		// Call beforeSend if provided (early abort if false returned)
		if (defined(beforeSendCallback) && (beforeSendCallback(xOptions,xOptions)===false || done))
			return xOptions;

		// References to xOptions members (for better minification)
		var successCallback = xOptions.success,
		completeCallback = xOptions.complete,
		errorCallback = xOptions.error,
		dataFilter = xOptions.dataFilter,
		callbackParameter = xOptions.callbackParameter,
		successCallbackName = xOptions.callback,
		cacheFlag = xOptions.cache,
		pageCacheFlag = xOptions.pageCache,
		url = xOptions.url,
		data = xOptions.data,
		timeout = xOptions.timeout,

		// Misc variables
		splitUrl,splitData,i,j;		
		
		// Control entries
		url = defined(url)?url:empty;
		data = defined(data)?((typeof data)=="string"?data:$.param(data)):empty;
		
		// Add callback parameter if provided as option
		defined(callbackParameter)
			&& (data += (data==empty?empty:amp)+escape(callbackParameter)+"=?");
		
		// Add anticache parameter if needed
		!cacheFlag && !pageCacheFlag
			&& (data += (data==empty?empty:amp)+"_"+(new Date()).getTime()+"=");
		
		// Search for ? in url
		splitUrl = url.split(qMark);
		// Also in parameters if provided
		// (and merge arrays)
		if (data!=empty) {
			splitData = data.split(qMark);
			j = splitUrl.length-1;
			j && (splitUrl[j] += amp + splitData.shift());
			splitUrl = splitUrl.concat(splitData);
		}
		// If more than 2 ? replace the last one by the callback
		i = splitUrl.length-2;
		i > 0 && (splitUrl[i] += successCallbackName + splitUrl.pop());
		
		// Build the final url
		var finalUrl = splitUrl.join(qMark),
		
		// Utility function
		notifySuccess = function(json) {
			// Apply the data filter if provided
			defined(dataFilter) && (json = dataFilter.apply(xOptions,[json]));
			// Call success then complete
			callIfDefined(successCallback,xOptions,[json,success]);
			callIfDefined(completeCallback,xOptions,[xOptions,success]);
		},
	    notifyError = function(type) {
			// Call error then complete
			callIfDefined(errorCallback,xOptions,[xOptions,type]);
			callIfDefined(completeCallback,xOptions,[xOptions,type]);
	    },
	    
	    // Get from pageCache
	    pageCached = pageCache[finalUrl];
		
		// Check page cache
		if (pageCacheFlag && defined(pageCached)) {
			later(function() {
				// If an error was cached
				defined(pageCached.s)
				? notifySuccess(pageCached.s)
				: notifyError(error);
			});
			return xOptions;
		}
		
		
		// Create & write to the iframe (sends the request)
		// We let the hand to current code to avoid
		// pre-emptive callbacks
		
		// We also install the timeout here to avoid
		// timeout before the code has been dumped to the frame
		// (in case of insanely short timeout values)
		later(function() {
			
			// If it has been aborted, do nothing
			if (done) return;
		
			// Create an iframe & add it to the document
			var frame = $("<iframe style='display:none' />").appendTo(head),
			
			// Get the iframe's window and document objects
			tmp = frame[0],
			window = tmp.contentWindow || tmp.contentDocument,
			document = window.document,
			
			// Declaration of cleanup function
			cleanUp,
			
			// Declaration of timer for timeout (so we can clear it eventually)
			timeoutTimer,
			
			// Error function
			errorFunction = function (_,type) {
				// If pure error (not timeout), cache if needed
				pageCacheFlag && !defined(type) && (pageCache[finalUrl] = empty); 
				// Cleanup
				cleanUp();
				// Call error then complete
				notifyError(defined(type)?type:error);
			},
			
			// Iframe variable cleaning function
			removeVariable = function(varName) {
				window[varName] = undefined;
				try { delete window[varName]; } catch(_) {}
			},
			
			// Error callback name
			errorCallbackName = successCallbackName=="E"?"X":"E";
			
			// Control if we actually retrieved the document
			if(!defined(document)) {
				document = window;
			    window = document.getParentNode();
			}
			
			// We have to open the document before
			// declaring variables in the iframe's window
			// Don't ask me why, I have no clue
			document.open();
			
			// Install callbacks
			window[successCallbackName] = function(json) {
				// Set as treated
				done = 1;
				// Pagecache is needed
				pageCacheFlag && (pageCache[finalUrl] = {s: json});
				// Give hand back to frame
				// To finish gracefully
				later(function(){
					// Cleanup
					cleanUp();
					// Call success then complete
					notifySuccess(json);
				});
			};
			
			window[errorCallbackName] = function(state) {
				// If not treated, mark
				// then give hand back to iframe
				// for it to finish gracefully
				(!state || state=="complete") && !done++ && later(errorFunction);
			};
			
			// Clean up function (declaration)
			xOptions.abort = cleanUp = function() {
				// Clear the timeout (is it exists)
				clearTimeout(timeoutTimer);
				// Open the iframes document & clean
				// document.open(); <= Do not open because of an history bug in FF 3.6+
				removeVariable(errorCallbackName);
				removeVariable(successCallbackName);
				// document.write(empty);
				// document.close();
				frame.remove();
			};
		
			// Write to the document
			document.write([
				'<html><head><script src="',
				finalUrl,'" onload="',
				errorCallbackName,'()" onreadystatechange="',
				errorCallbackName,'(this.readyState)"></script></head><body onload="',
				errorCallbackName,'()"></body></html>'
			].join(empty)
			);
			
			// Close (makes some browsers happier)
			document.close();
			
			// If a timeout is needed, install it
			timeout>0 && (timeoutTimer = setTimeout(function(){
					!done && errorFunction(empty,"timeout");
			},timeout));
		});
		
		return xOptions;
	}
	
	// ###################### SETUP FUNCTION ##
	jsonp.setup = function(xOptions) {
		$.extend(xOptionsDefaults,xOptions);
	};

	// ###################### INSTALL in jQuery ##
	$.jsonp = jsonp;
	
})(jQuery);
}catch(e){alert('Error in jquery.jsonp-1.1.4: ' + 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){alert('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){alert('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){alert('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){alert('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){alert('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();
                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":
                            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":
                            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){alert('Error in jquery.combobox.patch.pack: ' + 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){alert('Error in jquery.form: ' + 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;
	if (!ns) 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){alert('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){
				var x = e.pageX - (this.offsetLeft + motherElementOffset);
				scrollXpos = Math.round((x/hotSpotWidth) * options.scrollingSpeed);
				if(scrollXpos === Infinity) {
					scrollXpos = 0;
				}

			});

			// 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){
				var x = $mom.find(options.scrollingHotSpotLeft).innerWidth() - (e.pageX - motherElementOffset);
				scrollXpos = Math.round((x/hotSpotWidth) * options.scrollingSpeed);
				if(scrollXpos === Infinity)
				{
					scrollXpos = 0;
				}
			});
			
			// 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){alert('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){alert('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: 'minimalism', type: 'one_70_minimalist'};
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.basic_financing_price" : '€ 155.63',
"mini.one_55.basic_financing_price_num" : '155.63',
"mini.one_55.basic_price" : '€ 15,200',
"mini.one_55.basic_price_num" : '15200',
"mini.one_55.body_type" : 'CP',
"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.cubic_capacity" : '1,598 cm³',
"mini.one_55.cubic_capacity_num" : '1598',
"mini.one_55.cushion_material" : 'APE1',
"mini.one_55.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.one_55.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_55.elasticity" : '13.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.exterior_mirror" : '-',
"mini.one_55.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.one_55.financing_disclaimer_headline1" : '',
"mini.one_55.financing_disclaimer_headline2" : '',
"mini.one_55.folding_top_color" : '',
"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" : 'ROZ 91-98',
"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 litres',
"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 kW (75 hp) @ 6,000 rpm',
"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" : '1,520 kg',
"mini.one_55.max_permissible_weight_num" : '1510',
"mini.one_55.max_torque" : '140 Nm @ 2,250 rpm',
"mini.one_55.max_torque_num" : '140',
"mini.one_55.max_torque_overboost" : '-',
"mini.one_55.max_torque_overboost_num" : '-',
"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('/mini2010_edit/_common/_shared_files/product_presentation/mini/one/modelcomparison.jpg'),
"mini.one_55.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one/model_filter_small.jpg'),
"mini.one_55.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.one_55.rim_dimension" : '5.5J x 15 steel',
"mini.one_55.roof_color" : '-',
"mini.one_55.seat_type" : 'Basis',
"mini.one_55.short_description" : '',
"mini.one_55.tank_capacity" : '40 litres',
"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" : '1,070 / 1,145 kg',
"mini.one_55.unladen_weight_num" : '1070',
"mini.one_55.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_55.wheels" : '2GA',
"mini.one_70.acceleration_0_100" : '10.5 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.basic_financing_price" : '€ 168.94',
"mini.one_70.basic_financing_price_num" : '168.94',
"mini.one_70.basic_price" : '€ 16,500',
"mini.one_70.basic_price_num" : '16500',
"mini.one_70.body_type" : 'CP',
"mini.one_70.co2_emission" : '127 g/km',
"mini.one_70.co2_emission_num" : '127',
"mini.one_70.color" : 'M900',
"mini.one_70.color_line" : '4C1',
"mini.one_70.cubic_capacity" : '1,598 cm³',
"mini.one_70.cubic_capacity_num" : '1598',
"mini.one_70.cushion_material" : 'APE1',
"mini.one_70.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.one_70.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_70.elasticity" : '12.1 / 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.exterior_mirror" : '-',
"mini.one_70.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.one_70.financing_disclaimer_headline1" : '',
"mini.one_70.financing_disclaimer_headline2" : '',
"mini.one_70.folding_top_color" : '',
"mini.one_70.fuel_consumption_combined" : '5.4 l/100 km',
"mini.one_70.fuel_consumption_combined_num" : '5.4',
"mini.one_70.fuel_consumption_extra_urban" : '4.4 l/100 km',
"mini.one_70.fuel_consumption_extra_urban_num" : '5.1',
"mini.one_70.fuel_consumption_urban" : '7.2 l/100 km',
"mini.one_70.fuel_consumption_urban_num" : '7.2',
"mini.one_70.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (98 hp) @ 6,000 rpm',
"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" : '1,520 kg',
"mini.one_70.max_permissible_weight_num" : '1520',
"mini.one_70.max_torque" : '153 Nm @ 3,000 rpm',
"mini.one_70.max_torque_num" : '153',
"mini.one_70.max_torque_overboost" : '-',
"mini.one_70.max_torque_overboost_num" : '-',
"mini.one_70.model_code" : 'SR31',
"mini.one_70.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one/financial_services/index.html'),
"mini.one_70.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one/modelcomparison.jpg'),
"mini.one_70.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one/model_filter_small.jpg'),
"mini.one_70.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.one_70.rim_dimension" : '5.5J x 15 St',
"mini.one_70.roof_color" : '-',
"mini.one_70.seat_type" : 'Basis',
"mini.one_70.short_description" : '-',
"mini.one_70.tank_capacity" : '40 litres',
"mini.one_70.tank_capacity_num" : '40',
"mini.one_70.top_speed" : '186 km/h',
"mini.one_70.top_speed_num" : '186',
"mini.one_70.transmission" : '',
"mini.one_70.unladen_weight" : '1,070 / 1,145 kg',
"mini.one_70.unladen_weight_num" : '1070',
"mini.one_70.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_70.wheels" : '2GA',
"mini.one_55_minimalist.acceleration_0_100" : '13.2 s',
"mini.one_55_minimalist.acceleration_0_100_num" : '13.2',
"mini.one_55_minimalist.acceleration_80_120" : '13.5',
"mini.one_55_minimalist.acceleration_80_120_num" : '13.5',
"mini.one_55_minimalist.basic_financing_price" : '€ 156.65',
"mini.one_55_minimalist.basic_financing_price_num" : '156.65',
"mini.one_55_minimalist.basic_price" : '€ 15,300',
"mini.one_55_minimalist.basic_price_num" : '15300',
"mini.one_55_minimalist.body_type" : 'CP',
"mini.one_55_minimalist.co2_emission" : '119 g/km',
"mini.one_55_minimalist.co2_emission_num" : '119',
"mini.one_55_minimalist.color" : 'U850',
"mini.one_55_minimalist.color_line" : '4C2',
"mini.one_55_minimalist.cubic_capacity" : '1,598 cm³',
"mini.one_55_minimalist.cubic_capacity_num" : '1598',
"mini.one_55_minimalist.cushion_material" : 'FKE1',
"mini.one_55_minimalist.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.one_55_minimalist.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_55_minimalist.elasticity" : '13.5 / 16.7 s',
"mini.one_55_minimalist.elasticity_num" : '13.5',
"mini.one_55_minimalist.engine" : 'One MINIMALIST (55 kW)',
"mini.one_55_minimalist.engine_hood_stripes" : 'ohne',
"mini.one_55_minimalist.engine_num" : '',
"mini.one_55_minimalist.exterior_mirror" : '-',
"mini.one_55_minimalist.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.one_55_minimalist.financing_disclaimer_headline1" : '',
"mini.one_55_minimalist.financing_disclaimer_headline2" : '',
"mini.one_55_minimalist.folding_top_color" : '-',
"mini.one_55_minimalist.fuel_consumption_combined" : '5.1 l/100 km',
"mini.one_55_minimalist.fuel_consumption_combined_num" : '5.1',
"mini.one_55_minimalist.fuel_consumption_extra_urban" : '4.3 l/100 km',
"mini.one_55_minimalist.fuel_consumption_extra_urban_num" : '4.3',
"mini.one_55_minimalist.fuel_consumption_urban" : '6.5 l/100 km',
"mini.one_55_minimalist.fuel_consumption_urban_num" : '6.5',
"mini.one_55_minimalist.fuel_type" : 'ROZ 91-98',
"mini.one_55_minimalist.fuel_type_num" : '',
"mini.one_55_minimalist.id" : 'one_55_minimalist',
"mini.one_55_minimalist.infomaterial_id" : '',
"mini.one_55_minimalist.interior_surface" : '4BD',
"mini.one_55_minimalist.luggage_capacity" : '160 - 680 litres',
"mini.one_55_minimalist.luggage_capacity_num" : '160',
"mini.one_55_minimalist.market_attr1" : '',
"mini.one_55_minimalist.market_attr2" : '',
"mini.one_55_minimalist.market_attr3" : '',
"mini.one_55_minimalist.max_output" : '55 kW (75 hp) @ 6,000 rpm',
"mini.one_55_minimalist.max_output_num" : '55',
"mini.one_55_minimalist.max_permissible_roof_load" : '75 kg',
"mini.one_55_minimalist.max_permissible_roof_load_num" : '75',
"mini.one_55_minimalist.max_permissible_weight" : '1,520 kg',
"mini.one_55_minimalist.max_permissible_weight_num" : '1510',
"mini.one_55_minimalist.max_torque" : '140 Nm @ 2,250 rpm',
"mini.one_55_minimalist.max_torque_num" : '140',
"mini.one_55_minimalist.max_torque_overboost" : '-',
"mini.one_55_minimalist.max_torque_overboost_num" : '-',
"mini.one_55_minimalist.model_code" : 'SR81',
"mini.one_55_minimalist.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/financial_services/index.html'),
"mini.one_55_minimalist.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/modelcomparison.jpg'),
"mini.one_55_minimalist.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_small.jpg'),
"mini.one_55_minimalist.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_medium.jpg'),
"mini.one_55_minimalist.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55_minimalist.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55_minimalist.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_55_minimalist.model_name" : 'MINI One MINIMALIST 55 kW',
"mini.one_55_minimalist.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/model_quickfacts_55kw.html'),
"mini.one_55_minimalist.payload" : '450 kg',
"mini.one_55_minimalist.rim_dimension" : '5.5J x 15 steel',
"mini.one_55_minimalist.roof_color" : '-',
"mini.one_55_minimalist.seat_type" : '481',
"mini.one_55_minimalist.short_description" : '',
"mini.one_55_minimalist.tank_capacity" : '40 litres',
"mini.one_55_minimalist.tank_capacity_num" : '40',
"mini.one_55_minimalist.top_speed" : '175 km/h',
"mini.one_55_minimalist.top_speed_num" : '175',
"mini.one_55_minimalist.transmission" : '',
"mini.one_55_minimalist.unladen_weight" : '1,070 / 1,145 kg',
"mini.one_55_minimalist.unladen_weight_num" : '1070',
"mini.one_55_minimalist.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_55_minimalist.wheels" : '-',
"mini.one_70_minimalist.acceleration_0_100" : '10.5 s',
"mini.one_70_minimalist.acceleration_0_100_num" : '10.5',
"mini.one_70_minimalist.acceleration_80_120" : '12.1 / 15.3 s',
"mini.one_70_minimalist.acceleration_80_120_num" : '12.1',
"mini.one_70_minimalist.basic_financing_price" : '€ 169.96',
"mini.one_70_minimalist.basic_financing_price_num" : '169.96',
"mini.one_70_minimalist.basic_price" : '€ 16,600',
"mini.one_70_minimalist.basic_price_num" : '16600',
"mini.one_70_minimalist.body_type" : 'CP',
"mini.one_70_minimalist.co2_emission" : '119 g/km',
"mini.one_70_minimalist.co2_emission_num" : '119',
"mini.one_70_minimalist.color" : 'U850',
"mini.one_70_minimalist.color_line" : '4C2',
"mini.one_70_minimalist.cubic_capacity" : '1,598 cm³',
"mini.one_70_minimalist.cubic_capacity_num" : '1598',
"mini.one_70_minimalist.cushion_material" : 'FKE1',
"mini.one_70_minimalist.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.one_70_minimalist.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_70_minimalist.elasticity" : '12.1 / 15.3 s',
"mini.one_70_minimalist.elasticity_num" : '12.1',
"mini.one_70_minimalist.engine" : 'One MINIMALIST (72 kW)',
"mini.one_70_minimalist.engine_hood_stripes" : 'ohne',
"mini.one_70_minimalist.engine_num" : '',
"mini.one_70_minimalist.exterior_mirror" : '-',
"mini.one_70_minimalist.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.one_70_minimalist.financing_disclaimer_headline1" : '',
"mini.one_70_minimalist.financing_disclaimer_headline2" : '',
"mini.one_70_minimalist.folding_top_color" : '-',
"mini.one_70_minimalist.fuel_consumption_combined" : '5.1 l/100 km',
"mini.one_70_minimalist.fuel_consumption_combined_num" : '5.1',
"mini.one_70_minimalist.fuel_consumption_extra_urban" : '4.3 l/100 km',
"mini.one_70_minimalist.fuel_consumption_extra_urban_num" : '4.3',
"mini.one_70_minimalist.fuel_consumption_urban" : '6.5 l/100 km',
"mini.one_70_minimalist.fuel_consumption_urban_num" : '6.5',
"mini.one_70_minimalist.fuel_type" : 'ROZ 91-98',
"mini.one_70_minimalist.fuel_type_num" : '',
"mini.one_70_minimalist.id" : 'one_70_minimalist',
"mini.one_70_minimalist.infomaterial_id" : '',
"mini.one_70_minimalist.interior_surface" : '4BD',
"mini.one_70_minimalist.luggage_capacity" : '160 - 680 litres',
"mini.one_70_minimalist.luggage_capacity_num" : '160',
"mini.one_70_minimalist.market_attr1" : '',
"mini.one_70_minimalist.market_attr2" : '',
"mini.one_70_minimalist.market_attr3" : '',
"mini.one_70_minimalist.max_output" : '72 kW (98 hp) @ 6,000 rpm',
"mini.one_70_minimalist.max_output_num" : '72',
"mini.one_70_minimalist.max_permissible_roof_load" : '75 kg',
"mini.one_70_minimalist.max_permissible_roof_load_num" : '75',
"mini.one_70_minimalist.max_permissible_weight" : '1,520 kg',
"mini.one_70_minimalist.max_permissible_weight_num" : '1510',
"mini.one_70_minimalist.max_torque" : '153 Nm @ 3,000 rpm',
"mini.one_70_minimalist.max_torque_num" : '153',
"mini.one_70_minimalist.max_torque_overboost" : '-',
"mini.one_70_minimalist.max_torque_overboost_num" : '-',
"mini.one_70_minimalist.model_code" : 'SR51',
"mini.one_70_minimalist.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/financial_services/index.html'),
"mini.one_70_minimalist.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/modelcomparison.jpg'),
"mini.one_70_minimalist.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_small.jpg'),
"mini.one_70_minimalist.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_medium.jpg'),
"mini.one_70_minimalist.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70_minimalist.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70_minimalist.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"mini.one_70_minimalist.model_name" : 'MINI One MINIMALIST 72 kW',
"mini.one_70_minimalist.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/model_quickfacts_70kw.html'),
"mini.one_70_minimalist.payload" : '450 kg',
"mini.one_70_minimalist.rim_dimension" : '5.5J x 15 steel',
"mini.one_70_minimalist.roof_color" : '-',
"mini.one_70_minimalist.seat_type" : '481',
"mini.one_70_minimalist.short_description" : '',
"mini.one_70_minimalist.tank_capacity" : '40 litres',
"mini.one_70_minimalist.tank_capacity_num" : '40',
"mini.one_70_minimalist.top_speed" : '186 km/h',
"mini.one_70_minimalist.top_speed_num" : '186',
"mini.one_70_minimalist.transmission" : '',
"mini.one_70_minimalist.unladen_weight" : '1,070 / 1,145 kg',
"mini.one_70_minimalist.unladen_weight_num" : '1070',
"mini.one_70_minimalist.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_70_minimalist.wheels" : '-',
"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  s / 11.8 s',
"mini.one_d.acceleration_80_120_num" : '9.5',
"mini.one_d.basic_financing_price" : '€ 185.32',
"mini.one_d.basic_financing_price_num" : '185.32',
"mini.one_d.basic_price" : '€ 18,100',
"mini.one_d.basic_price_num" : '18100',
"mini.one_d.body_type" : 'CP',
"mini.one_d.co2_emission" : '99 g/km',
"mini.one_d.co2_emission_num" : '99',
"mini.one_d.color" : 'U851, U850, WA95, WA94, WB22, M900, WA93, WB23, M857',
"mini.one_d.color_line" : '4C1',
"mini.one_d.cubic_capacity" : '1,560 cm³',
"mini.one_d.cubic_capacity_num" : '1560',
"mini.one_d.cushion_material" : 'FKE1',
"mini.one_d.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.one_d.dimensions_num" : '3723 / 1683 / 1407',
"mini.one_d.elasticity" : '9.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.exterior_mirror" : '3AB',
"mini.one_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.one_d.financing_disclaimer_headline1" : '',
"mini.one_d.financing_disclaimer_headline2" : '',
"mini.one_d.folding_top_color" : '-',
"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 litres',
"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 kW (90 hp) @ 4,000 rpm',
"mini.one_d.max_output_num" : '99',
"mini.one_d.max_permissible_roof_load" : '75 kg',
"mini.one_d.max_permissible_roof_load_num" : '75',
"mini.one_d.max_permissible_weight" : '1,540 kg',
"mini.one_d.max_permissible_weight_num" : '1540',
"mini.one_d.max_torque" : '215 Nm @ 1,750-2,500 rpm',
"mini.one_d.max_torque_num" : '215',
"mini.one_d.max_torque_overboost" : '-',
"mini.one_d.max_torque_overboost_num" : '-',
"mini.one_d.model_code" : 'MG51',
"mini.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/index.html'),
"mini.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_d/modelcomparison.jpg'),
"mini.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_d/model_filter_small.jpg'),
"mini.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.one_d.rim_dimension" : '5.5J x 15 steel',
"mini.one_d.roof_color" : '-',
"mini.one_d.seat_type" : '481',
"mini.one_d.short_description" : '',
"mini.one_d.tank_capacity" : '40 litres',
"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" : '1,090 / 1,165 kg',
"mini.one_d.unladen_weight_num" : '1090',
"mini.one_d.wheel_dimension_num" : '175/65 R15 84H',
"mini.one_d.wheels" : '2GA',
"mini.cooper.acceleration_0_100" : '9.1 s',
"mini.cooper.acceleration_0_100_num" : '9.1',
"mini.cooper.acceleration_80_120" : '',
"mini.cooper.acceleration_80_120_num" : '',
"mini.cooper.basic_financing_price" : '€ 196.58',
"mini.cooper.basic_financing_price_num" : '196.58',
"mini.cooper.basic_price" : '€ 19,200',
"mini.cooper.basic_price_num" : '19200',
"mini.cooper.body_type" : 'CP',
"mini.cooper.co2_emission" : '127 g/km',
"mini.cooper.co2_emission_num" : '127',
"mini.cooper.color" : 'U851',
"mini.cooper.color_line" : '4BA',
"mini.cooper.cubic_capacity" : '1,598 cm³',
"mini.cooper.cubic_capacity_num" : '1598',
"mini.cooper.cushion_material" : 'FKE6',
"mini.cooper.dimensions" : '3,723/ 1,683 / 1,407 mm',
"mini.cooper.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper.elasticity" : '9.6 / 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.exterior_mirror" : '-',
"mini.cooper.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.cooper.financing_disclaimer_headline1" : '',
"mini.cooper.financing_disclaimer_headline2" : '',
"mini.cooper.folding_top_color" : '',
"mini.cooper.fuel_consumption_combined" : '5.4 l/100 km',
"mini.cooper.fuel_consumption_combined_num" : '5.4',
"mini.cooper.fuel_consumption_extra_urban" : '4.6 l/100 km',
"mini.cooper.fuel_consumption_extra_urban_num" : '5.1',
"mini.cooper.fuel_consumption_urban" : '6.9 l/100 km',
"mini.cooper.fuel_consumption_urban_num" : '6.9',
"mini.cooper.fuel_type" : 'ROZ 91-98',
"mini.cooper.fuel_type_num" : '',
"mini.cooper.id" : 'cooper',
"mini.cooper.infomaterial_id" : '',
"mini.cooper.interior_surface" : '4DA',
"mini.cooper.luggage_capacity" : '160 - 680 litres',
"mini.cooper.luggage_capacity_num" : '160',
"mini.cooper.market_attr1" : '',
"mini.cooper.market_attr2" : '',
"mini.cooper.market_attr3" : '',
"mini.cooper.max_output" : '90 kW (122 hp) @ 6,000 rpm',
"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" : '1,525 kg',
"mini.cooper.max_permissible_weight_num" : '1515',
"mini.cooper.max_torque" : '160 Nm @ 4,250 rpm',
"mini.cooper.max_torque_num" : '160',
"mini.cooper.max_torque_overboost" : '',
"mini.cooper.max_torque_overboost_num" : '-',
"mini.cooper.model_code" : 'SU31',
"mini.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/financial_services/index.html'),
"mini.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper/modelcomparison.jpg'),
"mini.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper/model_filter_small.jpg'),
"mini.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.cooper.rim_dimension" : '5.5J x 15 light alloy',
"mini.cooper.roof_color" : '382',
"mini.cooper.seat_type" : '481',
"mini.cooper.short_description" : '',
"mini.cooper.tank_capacity" : '40 litres',
"mini.cooper.tank_capacity_num" : '40',
"mini.cooper.top_speed" : '203 km/h',
"mini.cooper.top_speed_num" : '203',
"mini.cooper.transmission" : '',
"mini.cooper.unladen_weight" : '1,075 / 1,150 kg',
"mini.cooper.unladen_weight_num" : '1075',
"mini.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper.wheels" : '2RH',
"mini.cooper_d.acceleration_0_100" : '9.7 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.basic_financing_price" : '€ 212.97',
"mini.cooper_d.basic_financing_price_num" : '212.97',
"mini.cooper_d.basic_price" : '€ 20,800',
"mini.cooper_d.basic_price_num" : '20800',
"mini.cooper_d.body_type" : 'CP',
"mini.cooper_d.co2_emission" : '99 g/km',
"mini.cooper_d.co2_emission_num" : '99',
"mini.cooper_d.color" : 'WA93',
"mini.cooper_d.color_line" : '4C2',
"mini.cooper_d.cubic_capacity" : '1,560 cm³',
"mini.cooper_d.cubic_capacity_num" : '1560',
"mini.cooper_d.cushion_material" : 'FTGW',
"mini.cooper_d.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.cooper_d.dimensions_num" : '3723 / 1683 / 1407',
"mini.cooper_d.elasticity" : '7.4 / 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.exterior_mirror" : '382',
"mini.cooper_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.cooper_d.financing_disclaimer_headline1" : '',
"mini.cooper_d.financing_disclaimer_headline2" : '',
"mini.cooper_d.folding_top_color" : '',
"mini.cooper_d.fuel_consumption_combined" : '3.8 l/100 km',
"mini.cooper_d.fuel_consumption_combined_num" : '3.8',
"mini.cooper_d.fuel_consumption_extra_urban" : '3.5 l/100 km',
"mini.cooper_d.fuel_consumption_extra_urban_num" : '',
"mini.cooper_d.fuel_consumption_urban" : '4.2 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 litres',
"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 kW (112 hp) @ 4,000 rpm',
"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" : '1,540 kg',
"mini.cooper_d.max_permissible_weight_num" : '1540',
"mini.cooper_d.max_torque" : '270 Nm @ 1,750- 2,250 rpm',
"mini.cooper_d.max_torque_num" : '270',
"mini.cooper_d.max_torque_overboost" : '-',
"mini.cooper_d.max_torque_overboost_num" : '-',
"mini.cooper_d.model_code" : 'MG31',
"mini.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"mini.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_d/modelcomparison.jpg'),
"mini.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_d/model_filter_small.jpg'),
"mini.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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/model_quickfacts.html'),
"mini.cooper_d.payload" : '450 kg',
"mini.cooper_d.rim_dimension" : '5.5J x 15 light alloy',
"mini.cooper_d.roof_color" : '382',
"mini.cooper_d.seat_type" : '481',
"mini.cooper_d.short_description" : '',
"mini.cooper_d.tank_capacity" : '40 litres',
"mini.cooper_d.tank_capacity_num" : '40',
"mini.cooper_d.top_speed" : '197 km/h',
"mini.cooper_d.top_speed_num" : '197',
"mini.cooper_d.transmission" : '',
"mini.cooper_d.unladen_weight" : '1,090 / 1,165 kg',
"mini.cooper_d.unladen_weight_num" : '1090',
"mini.cooper_d.wheel_dimension_num" : '175/65 R15 84H',
"mini.cooper_d.wheels" : '2GC',
"mini.cooper_s.acceleration_0_100" : '7 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.basic_financing_price" : '€ 236.52',
"mini.cooper_s.basic_financing_price_num" : '236.52',
"mini.cooper_s.basic_price" : '€ 23,100',
"mini.cooper_s.basic_price_num" : '23100',
"mini.cooper_s.body_type" : 'CP',
"mini.cooper_s.co2_emission" : '136 g/km',
"mini.cooper_s.co2_emission_num" : '136',
"mini.cooper_s.color" : 'WB24',
"mini.cooper_s.color_line" : '4C1',
"mini.cooper_s.cubic_capacity" : '1,598 cm³',
"mini.cooper_s.cubic_capacity_num" : '1598',
"mini.cooper_s.cushion_material" : 'T8E1',
"mini.cooper_s.dimensions" : '3,714 / 1,683 / 1,407 mm',
"mini.cooper_s.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_s.elasticity" : '5.6 / 7.0 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.exterior_mirror" : '383',
"mini.cooper_s.financing_disclaimer" : '',
"mini.cooper_s.financing_disclaimer_headline1" : '',
"mini.cooper_s.financing_disclaimer_headline2" : '',
"mini.cooper_s.folding_top_color" : '',
"mini.cooper_s.fuel_consumption_combined" : '5.8 l/100 km',
"mini.cooper_s.fuel_consumption_combined_num" : '5.8',
"mini.cooper_s.fuel_consumption_extra_urban" : '5 l/100 km',
"mini.cooper_s.fuel_consumption_extra_urban_num" : '5',
"mini.cooper_s.fuel_consumption_urban" : '7.3 l/100 km',
"mini.cooper_s.fuel_consumption_urban_num" : '7.3',
"mini.cooper_s.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (184 hp) @ 5,500 rpm',
"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" : '1.580 kg',
"mini.cooper_s.max_permissible_weight_num" : '1580',
"mini.cooper_s.max_torque" : '240 Nm @ 1,600-5,000 rpm',
"mini.cooper_s.max_torque_num" : '240',
"mini.cooper_s.max_torque_overboost" : '260 Nm @ 1,600-5,000 rpm',
"mini.cooper_s.max_torque_overboost_num" : '260',
"mini.cooper_s.model_code" : 'SV31',
"mini.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_s/financial_services/index.html'),
"mini.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_s/modelcomparison.jpg'),
"mini.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_s/model_filter_small.jpg'),
"mini.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.cooper_s.rim_dimension" : '6.5 J x 16 light alloy',
"mini.cooper_s.roof_color" : '383',
"mini.cooper_s.seat_type" : '481',
"mini.cooper_s.short_description" : '',
"mini.cooper_s.tank_capacity" : '50 litres',
"mini.cooper_s.tank_capacity_num" : '50',
"mini.cooper_s.top_speed" : '228 km/h',
"mini.cooper_s.top_speed_num" : '228',
"mini.cooper_s.transmission" : '',
"mini.cooper_s.unladen_weight" : '1,130 / 1,205 kg',
"mini.cooper_s.unladen_weight_num" : '1130',
"mini.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_s.wheels" : '2GD',
"mini.cooper_sd.acceleration_0_100" : '8.1 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" : '',
"mini.cooper_sd.basic_financing_price" : '€ 236.52',
"mini.cooper_sd.basic_financing_price_num" : '236.52',
"mini.cooper_sd.basic_price" : '€ 23,100',
"mini.cooper_sd.basic_price_num" : '23100',
"mini.cooper_sd.body_type" : 'CP',
"mini.cooper_sd.charging_type" : '',
"mini.cooper_sd.co2_emission" : '114 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" : '',
"mini.cooper_sd.cubic_capacity" : '1,995 cm³',
"mini.cooper_sd.cubic_capacity_num" : '1995',
"mini.cooper_sd.cushion_material" : 'T8E1',
"mini.cooper_sd.cylinder_type_valve" : '',
"mini.cooper_sd.dimensions" : '3,723 / 1,683 / 1,407 mm',
"mini.cooper_sd.dimensions_num" : '3714 / 1683 / 1407',
"mini.cooper_sd.elasticity" : '6.6 / 7.8 s',
"mini.cooper_sd.elasticity_80_100_5" : '',
"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" : '',
"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 l/100 km',
"mini.cooper_sd.fuel_consumption_combined_num" : '4.3',
"mini.cooper_sd.fuel_consumption_extra_urban" : '3.9 l/100 km',
"mini.cooper_sd.fuel_consumption_extra_urban_num" : '3.9',
"mini.cooper_sd.fuel_consumption_urban" : '5.1 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 litres',
"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 kW (143 hp) @ 4,000 rpm',
"mini.cooper_sd.max_output_num" : '135',
"mini.cooper_sd.max_permissible_roof_load" : '75 kg',
"mini.cooper_sd.max_permissible_roof_load_num" : '75',
"mini.cooper_sd.max_permissible_weight" : '1.600 kg',
"mini.cooper_sd.max_permissible_weight_num" : '1600',
"mini.cooper_sd.max_torque" : '305 Nm @ 1,750-2,700 rpm',
"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" : '',
"mini.cooper_sd.rear_brakes" : '',
"mini.cooper_sd.rim_dimension" : '6.5 J x 16 light alloy',
"mini.cooper_sd.roof_color" : '383',
"mini.cooper_sd.seat_type" : '481',
"mini.cooper_sd.short_description" : '',
"mini.cooper_sd.stroke_bore" : '',
"mini.cooper_sd.tank_capacity" : '40 litres',
"mini.cooper_sd.tank_capacity_num" : '40',
"mini.cooper_sd.top_speed" : '215 km/h',
"mini.cooper_sd.top_speed_num" : '215',
"mini.cooper_sd.transmission" : '',
"mini.cooper_sd.unladen_weight" : '1,150 / 1,225 kg',
"mini.cooper_sd.unladen_weight_num" : '1150',
"mini.cooper_sd.weight_ratio" : '',
"mini.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini.cooper_sd.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.basic_financing_price" : '€ 293.85',
"mini.mini.basic_financing_price_num" : '293.85',
"mini.mini.basic_price" : '€ 28,700',
"mini.mini.basic_price_num" : '28700',
"mini.mini.body_type" : 'CP',
"mini.mini.co2_emission" : '165 g/km',
"mini.mini.co2_emission_num" : '165',
"mini.mini.color" : 'WA94',
"mini.mini.color_line" : '4C1',
"mini.mini.cubic_capacity" : '1,598 cm³',
"mini.mini.cubic_capacity_num" : '1598',
"mini.mini.cushion_material" : 'T9IN',
"mini.mini.dimensions" : '3,729 / 1,683 / 1,407 mm',
"mini.mini.dimensions_num" : '3729 / 1683 / 1407',
"mini.mini.elasticity" : '5.2 / 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.exterior_mirror" : '3A3',
"mini.mini.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini.mini.financing_disclaimer_headline1" : '',
"mini.mini.financing_disclaimer_headline2" : '',
"mini.mini.folding_top_color" : '',
"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" : 'ROZ 91-98',
"mini.mini.fuel_type_num" : '',
"mini.mini.id" : 'mini',
"mini.mini.infomaterial_id" : '',
"mini.mini.interior_surface" : '4CY',
"mini.mini.luggage_capacity" : '160 - 680 litres',
"mini.mini.luggage_capacity_num" : '160',
"mini.mini.market_attr1" : '',
"mini.mini.market_attr2" : '',
"mini.mini.market_attr3" : '',
"mini.mini.max_output" : '155 (211 hp) @ 6,000 KW rpm',
"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,580 kg',
"mini.mini.max_permissible_weight_num" : '1580',
"mini.mini.max_torque" : '260 Nm @ 1,850-5,600 rpm',
"mini.mini.max_torque_num" : '260',
"mini.mini.max_torque_overboost" : '280 Nm @ 1,850-5,600 rpm',
"mini.mini.max_torque_overboost_num" : '280',
"mini.mini.model_code" : 'SV91',
"mini.mini.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/financial_services/index.html'),
"mini.mini.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/john_cooper_works/modelcomparison.jpg'),
"mini.mini.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_small.jpg'),
"mini.mini.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"mini.mini.rim_dimension" : '7J x 17 light alloy',
"mini.mini.roof_color" : '3A3',
"mini.mini.seat_type" : '481',
"mini.mini.short_description" : '',
"mini.mini.tank_capacity" : '50 litres',
"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" : '1,140 / 1,215 kg',
"mini.mini.unladen_weight_num" : '1130',
"mini.mini.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini.mini.wheels" : '2RV. -',
"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.1',
"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" : '',
"jcw.mini_coupe.basic_financing_price_num" : '',
"jcw.mini_coupe.basic_price" : '',
"jcw.mini_coupe.basic_price_num" : '',
"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" : 'ROZ 91-98',
"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/in-line/4',
"jcw.mini_coupe.dimensions" : '3,734 / 1,683 / 1,384 mm',
"jcw.mini_coupe.dimensions_num" : '3714 / 1683 / 1407',
"jcw.mini_coupe.drive_type" : 'Front',
"jcw.mini_coupe.drive_type_num" : '',
"jcw.mini_coupe.elasticity" : '',
"jcw.mini_coupe.elasticity_80_100_5" : '5.1 / 6.1 s',
"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" : 'Wird vom Markt ergänzt.',
"jcw.mini_coupe.financing_disclaimer_headline1" : '',
"jcw.mini_coupe.financing_disclaimer_headline2" : '',
"jcw.mini_coupe.folding_top_color" : '',
"jcw.mini_coupe.front_brakes" : 'Ventilated brake disc (316) Ø mm',
"jcw.mini_coupe.fuel_consumption_combined" : '7.1 l/100 km',
"jcw.mini_coupe.fuel_consumption_combined_num" : '7.1',
"jcw.mini_coupe.fuel_consumption_extra_urban" : '5.8 l/100 km',
"jcw.mini_coupe.fuel_consumption_extra_urban_num" : '5.8',
"jcw.mini_coupe.fuel_consumption_urban" : '9.4 l/100 km',
"jcw.mini_coupe.fuel_consumption_urban_num" : '9.4',
"jcw.mini_coupe.fuel_type" : 'ROZ 91-98',
"jcw.mini_coupe.fuel_type_num" : '',
"jcw.mini_coupe.id" : 'mini_coupe',
"jcw.mini_coupe.infomaterial_id" : '',
"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 kW (211hp) @ 6,000 rpm',
"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" : '1,455 kg',
"jcw.mini_coupe.max_permissible_weight_num" : '1455',
"jcw.mini_coupe.max_torque" : '260(280)Nm @ 1,850-5,600 rpm',
"jcw.mini_coupe.max_torque_num" : '260',
"jcw.mini_coupe.max_torque_overboost" : '260(280)Nm @ 1,850-5,600 rpm',
"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" : 'Ventilated brake disc (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-speed, manual',
"jcw.mini_coupe.unladen_weight" : '1,165 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',
"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.9',
"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" : '',
"mini_coupe.cooper.basic_financing_price_num" : '',
"mini_coupe.cooper.basic_price" : '',
"mini_coupe.cooper.basic_price_num" : '',
"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" : '',
"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" : '',
"mini_coupe.cooper.cushion_material" : '',
"mini_coupe.cooper.cylinder_type_valve" : '4/in-line/4',
"mini_coupe.cooper.dimensions" : '3,728 / 1,683 / 1,378 mm',
"mini_coupe.cooper.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper.drive_type" : 'Front',
"mini_coupe.cooper.drive_type_num" : '',
"mini_coupe.cooper.elasticity" : '',
"mini_coupe.cooper.elasticity_80_100_5" : '9.4 / 11.9 s',
"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" : 'Wird vom Markt ergänzt.',
"mini_coupe.cooper.financing_disclaimer_headline1" : '',
"mini_coupe.cooper.financing_disclaimer_headline2" : '',
"mini_coupe.cooper.folding_top_color" : '',
"mini_coupe.cooper.front_brakes" : 'Ventilated brake disc (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" : 'ROZ 91-98',
"mini_coupe.cooper.fuel_type_num" : '',
"mini_coupe.cooper.id" : 'cooper',
"mini_coupe.cooper.infomaterial_id" : '',
"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" : '90kW (122hp) @ 6,000 rpm',
"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" : '1,380 [1,425] kg',
"mini_coupe.cooper.max_permissible_weight_num" : '1380',
"mini_coupe.cooper.max_torque" : '160 Nm @ 4,250 rpm',
"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" : 'Ventilated brake disc (259) Ø 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-speed, manual',
"mini_coupe.cooper.unladen_weight" : '1,090 [1,135] 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.9',
"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" : '',
"mini_coupe.cooper_s.basic_financing_price_num" : '',
"mini_coupe.cooper_s.basic_price" : '',
"mini_coupe.cooper_s.basic_price_num" : '',
"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/in-line/4',
"mini_coupe.cooper_s.dimensions" : '3,734 / 1,683 / 1,384 mm',
"mini_coupe.cooper_s.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper_s.drive_type" : 'Front',
"mini_coupe.cooper_s.drive_type_num" : '',
"mini_coupe.cooper_s.elasticity" : '',
"mini_coupe.cooper_s.elasticity_80_100_5" : '5.5 / 6.9 s',
"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" : 'Wird vom Markt ergänzt.',
"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" : 'Ventilated brake disc (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" : 'ROZ 91-98',
"mini_coupe.cooper_s.fuel_type_num" : '',
"mini_coupe.cooper_s.id" : 'cooper_s',
"mini_coupe.cooper_s.infomaterial_id" : '',
"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" : '135kW (184hp) @ 5500 rpm',
"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" : '1,455 [1,480] kg',
"mini_coupe.cooper_s.max_permissible_weight_num" : '1455',
"mini_coupe.cooper_s.max_torque" : '240(260)Nm @ 1,600-5,000 rpm',
"mini_coupe.cooper_s.max_torque_num" : '240',
"mini_coupe.cooper_s.max_torque_overboost" : '240(260)Nm @ 1,600-5,000 rpm',
"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" : 'Ventilated brake disc (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-speed, manual',
"mini_coupe.cooper_s.unladen_weight" : '1,165 [1,190] 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.7 s',
"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" : '',
"mini_coupe.cooper_sd.basic_financing_price_num" : '',
"mini_coupe.cooper_sd.basic_price" : '',
"mini_coupe.cooper_sd.basic_price_num" : '',
"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" : 'WB24',
"mini_coupe.cooper_sd.color_line" : '',
"mini_coupe.cooper_sd.compression_recommended_fuel_type" : '16.5/Diesel :1',
"mini_coupe.cooper_sd.cubic_capacity" : '1,995 cm³',
"mini_coupe.cooper_sd.cubic_capacity_num" : '1995',
"mini_coupe.cooper_sd.cushion_material" : '',
"mini_coupe.cooper_sd.cylinder_type_valve" : '4/in-line/4',
"mini_coupe.cooper_sd.dimensions" : '3,734 / 1,683 / 1,384 mm',
"mini_coupe.cooper_sd.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.cooper_sd.drive_type" : 'Front',
"mini_coupe.cooper_sd.drive_type_num" : '',
"mini_coupe.cooper_sd.elasticity" : '',
"mini_coupe.cooper_sd.elasticity_80_100_5" : '6.5 / 7.7 s',
"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" : 'Wird vom Markt ergänzt.',
"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" : 'Ventilated brake disc (280) Ø mm',
"mini_coupe.cooper_sd.fuel_consumption_combined" : '4.3 [5.3] l/100 km',
"mini_coupe.cooper_sd.fuel_consumption_combined_num" : '4.3',
"mini_coupe.cooper_sd.fuel_consumption_extra_urban" : '3.9 [4.3] l/100 km',
"mini_coupe.cooper_sd.fuel_consumption_extra_urban_num" : '3.9',
"mini_coupe.cooper_sd.fuel_consumption_urban" : '5.1 [6.9] l/100 km',
"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" : '',
"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" : '105kW (143hp) @ 4,000rpm',
"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" : '1,465 [1,485] kg',
"mini_coupe.cooper_sd.max_permissible_weight_num" : '1465',
"mini_coupe.cooper_sd.max_torque" : '305 Nm @ 1,750-2,700 rpm',
"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" : 'Ventilated brake disc (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-speed, manual',
"mini_coupe.cooper_sd.unladen_weight" : '1,175 [1,195] 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.1',
"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" : '',
"mini_coupe.mini_coupe.basic_financing_price_num" : '',
"mini_coupe.mini_coupe.basic_price" : '',
"mini_coupe.mini_coupe.basic_price_num" : '',
"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" : 'petrol',
"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/in-line/4',
"mini_coupe.mini_coupe.dimensions" : '3,734 / 1,683 / 1,384 mm',
"mini_coupe.mini_coupe.dimensions_num" : '3714 / 1683 / 1407',
"mini_coupe.mini_coupe.drive_type" : 'Front',
"mini_coupe.mini_coupe.drive_type_num" : '',
"mini_coupe.mini_coupe.elasticity" : '',
"mini_coupe.mini_coupe.elasticity_80_100_5" : '5.1 / 6.1 s',
"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" : 'Wird vom Markt ergänzt.',
"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" : 'Ventilated brake disc (316) Ø mm',
"mini_coupe.mini_coupe.fuel_consumption_combined" : '7.1 l/100 km',
"mini_coupe.mini_coupe.fuel_consumption_combined_num" : '7.1',
"mini_coupe.mini_coupe.fuel_consumption_extra_urban" : '5.8 l/100 km',
"mini_coupe.mini_coupe.fuel_consumption_extra_urban_num" : '5.8',
"mini_coupe.mini_coupe.fuel_consumption_urban" : '9.4 l/100 km',
"mini_coupe.mini_coupe.fuel_consumption_urban_num" : '9.4',
"mini_coupe.mini_coupe.fuel_type" : 'ROZ 91-98',
"mini_coupe.mini_coupe.fuel_type_num" : '',
"mini_coupe.mini_coupe.id" : 'mini_coupe',
"mini_coupe.mini_coupe.infomaterial_id" : '',
"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 kW (211hp) @ 6,000 rpm',
"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" : '1,455 kg',
"mini_coupe.mini_coupe.max_permissible_weight_num" : '1455',
"mini_coupe.mini_coupe.max_torque" : '260(280)Nm @ 1,850-5,600 rpm',
"mini_coupe.mini_coupe.max_torque_num" : '260',
"mini_coupe.mini_coupe.max_torque_overboost" : '260(280)Nm @ 1,850-5,600 rpm',
"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" : 'Ventilated brake disc (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-speed, manual',
"mini_coupe.mini_coupe.unladen_weight" : '1,165 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 s',
"mini_cabrio.one.acceleration_0_100_num" : '11.3',
"mini_cabrio.one.acceleration_80_120" : '13.5 s / 16.0 s',
"mini_cabrio.one.acceleration_80_120_num" : '13.5',
"mini_cabrio.one.basic_financing_price" : '€ 211.94',
"mini_cabrio.one.basic_financing_price_num" : '211.94',
"mini_cabrio.one.basic_price" : '€ 20,700',
"mini_cabrio.one.basic_price_num" : '20700',
"mini_cabrio.one.body_type" : 'CA',
"mini_cabrio.one.co2_emission" : '133 g/km',
"mini_cabrio.one.co2_emission_num" : '133',
"mini_cabrio.one.color" : 'A88',
"mini_cabrio.one.color_line" : '4C3',
"mini_cabrio.one.cubic_capacity" : '1,598 cm³',
"mini_cabrio.one.cubic_capacity_num" : '1598',
"mini_cabrio.one.cushion_material" : 'T9GK',
"mini_cabrio.one.dimensions" : '3,723 / 1,683 / 1,414 mm',
"mini_cabrio.one.dimensions_num" : '3723 / 1683 / 1414',
"mini_cabrio.one.elasticity" : '13.4 s / 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.exterior_mirror" : '-',
"mini_cabrio.one.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_cabrio.one.financing_disclaimer_headline1" : '',
"mini_cabrio.one.financing_disclaimer_headline2" : '',
"mini_cabrio.one.folding_top_color" : '-',
"mini_cabrio.one.fuel_consumption_combined" : '5.7 s',
"mini_cabrio.one.fuel_consumption_combined_num" : '5.7',
"mini_cabrio.one.fuel_consumption_extra_urban" : '4.6 l/100km',
"mini_cabrio.one.fuel_consumption_extra_urban_num" : '5.3',
"mini_cabrio.one.fuel_consumption_urban" : '7.6 s',
"mini_cabrio.one.fuel_consumption_urban_num" : '7.3',
"mini_cabrio.one.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (98 hp) @ 6,000 rpm',
"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" : '1,590 kg',
"mini_cabrio.one.max_permissible_weight_num" : '1590',
"mini_cabrio.one.max_torque" : '153 Nm @ 3,000 rpm',
"mini_cabrio.one.max_torque_num" : '153',
"mini_cabrio.one.max_torque_overboost" : '-',
"mini_cabrio.one.max_torque_overboost_num" : '-',
"mini_cabrio.one.model_code" : 'ZM31',
"mini_cabrio.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/one/financial_services/index.html'),
"mini_cabrio.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/one/modelcomparison.jpg'),
"mini_cabrio.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/model_data/_img/small/cabrio_one_small.jpg'),
"mini_cabrio.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '430 kg',
"mini_cabrio.one.rim_dimension" : '5.5J x 15 light alloy',
"mini_cabrio.one.roof_color" : '-',
"mini_cabrio.one.seat_type" : '481',
"mini_cabrio.one.short_description" : '',
"mini_cabrio.one.tank_capacity" : '40 litres',
"mini_cabrio.one.tank_capacity_num" : '40',
"mini_cabrio.one.top_speed" : '181 km/h',
"mini_cabrio.one.top_speed_num" : '181',
"mini_cabrio.one.transmission" : '5-speed, manual',
"mini_cabrio.one.unladen_weight" : '1,160 / 1,235 kg',
"mini_cabrio.one.unladen_weight_num" : '1160',
"mini_cabrio.one.wheel_dimension_num" : '175/65 R15 84H',
"mini_cabrio.one.wheels" : '2RU',
"mini_cabrio.cooper.acceleration_0_100" : '9.8 s',
"mini_cabrio.cooper.acceleration_0_100_num" : '9.8',
"mini_cabrio.cooper.acceleration_80_120" : '11.6',
"mini_cabrio.cooper.acceleration_80_120_num" : '11.6',
"mini_cabrio.cooper.basic_financing_price" : '€ 230.37',
"mini_cabrio.cooper.basic_financing_price_num" : '230.37',
"mini_cabrio.cooper.basic_price" : '€ 22,500',
"mini_cabrio.cooper.basic_price_num" : '22500',
"mini_cabrio.cooper.body_type" : 'CA',
"mini_cabrio.cooper.co2_emission" : '133 g/km',
"mini_cabrio.cooper.co2_emission_num" : '133',
"mini_cabrio.cooper.color" : 'A60',
"mini_cabrio.cooper.color_line" : '4C3',
"mini_cabrio.cooper.cubic_capacity" : '1598 litres',
"mini_cabrio.cooper.cubic_capacity_num" : '1598',
"mini_cabrio.cooper.cushion_material" : 'T9GK',
"mini_cabrio.cooper.dimensions" : '3,723 / 1,683 / 1,414 mm',
"mini_cabrio.cooper.dimensions_num" : '3723 / 1683 / 1414',
"mini_cabrio.cooper.elasticity" : '10.5 s / 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.exterior_mirror" : '3AB',
"mini_cabrio.cooper.financing_disclaimer" : '',
"mini_cabrio.cooper.financing_disclaimer_headline1" : '',
"mini_cabrio.cooper.financing_disclaimer_headline2" : '',
"mini_cabrio.cooper.folding_top_color" : '',
"mini_cabrio.cooper.fuel_consumption_combined" : '5.7 l/100 km',
"mini_cabrio.cooper.fuel_consumption_combined_num" : '5.7',
"mini_cabrio.cooper.fuel_consumption_extra_urban" : '5.3 litres',
"mini_cabrio.cooper.fuel_consumption_extra_urban_num" : '5.3',
"mini_cabrio.cooper.fuel_consumption_urban" : '7.2 l/100 km',
"mini_cabrio.cooper.fuel_consumption_urban_num" : '7.2',
"mini_cabrio.cooper.fuel_type" : 'ROZ 91-98',
"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',
"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 kW (122 hp) @ 6,000 rpm',
"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 kg',
"mini_cabrio.cooper.max_permissible_weight_num" : '1595',
"mini_cabrio.cooper.max_torque" : '160 Nm @ 4,250 rpm',
"mini_cabrio.cooper.max_torque_num" : '160',
"mini_cabrio.cooper.max_torque_overboost" : '-',
"mini_cabrio.cooper.max_torque_overboost_num" : '-',
"mini_cabrio.cooper.model_code" : 'ZN31',
"mini_cabrio.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper/financial_services/index.html'),
"mini_cabrio.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper/modelcomparison.jpg'),
"mini_cabrio.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper/model_filter_small.jpg'),
"mini_cabrio.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '430 kg',
"mini_cabrio.cooper.rim_dimension" : '5.5J x 15 light alloy',
"mini_cabrio.cooper.roof_color" : '-',
"mini_cabrio.cooper.seat_type" : '481',
"mini_cabrio.cooper.short_description" : '',
"mini_cabrio.cooper.tank_capacity" : '40 litres',
"mini_cabrio.cooper.tank_capacity_num" : '40',
"mini_cabrio.cooper.top_speed" : '198 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" : '1,165 / 1,240 kg',
"mini_cabrio.cooper.unladen_weight_num" : '1165',
"mini_cabrio.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini_cabrio.cooper.wheels" : '2GD',
"mini_cabrio.cooper_d.acceleration_0_100" : '10.3 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.basic_financing_price" : '€ 246.76',
"mini_cabrio.cooper_d.basic_financing_price_num" : '246.76',
"mini_cabrio.cooper_d.basic_price" : '€ 24.100',
"mini_cabrio.cooper_d.basic_price_num" : '24100',
"mini_cabrio.cooper_d.body_type" : 'CA',
"mini_cabrio.cooper_d.co2_emission" : '105 g/km',
"mini_cabrio.cooper_d.co2_emission_num" : '',
"mini_cabrio.cooper_d.color" : 'WB23',
"mini_cabrio.cooper_d.color_line" : '4C3',
"mini_cabrio.cooper_d.cubic_capacity" : '1,598 cm³',
"mini_cabrio.cooper_d.cubic_capacity_num" : '',
"mini_cabrio.cooper_d.cushion_material" : 'T9GK',
"mini_cabrio.cooper_d.dimensions" : '3,723 / 1,683 / 1,414 mm',
"mini_cabrio.cooper_d.dimensions_num" : '',
"mini_cabrio.cooper_d.elasticity" : '8.3 / 9.9 s',
"mini_cabrio.cooper_d.elasticity_num" : '8.3',
"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.exterior_mirror" : '3AB',
"mini_cabrio.cooper_d.financing_disclaimer" : '',
"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.fuel_consumption_combined" : '4 l/100km',
"mini_cabrio.cooper_d.fuel_consumption_combined_num" : '',
"mini_cabrio.cooper_d.fuel_consumption_extra_urban" : '3.7 l/100km',
"mini_cabrio.cooper_d.fuel_consumption_extra_urban_num" : '',
"mini_cabrio.cooper_d.fuel_consumption_urban" : '4.5 l/100km',
"mini_cabrio.cooper_d.fuel_consumption_urban_num" : '',
"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 litres',
"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 kW (112 hp) @ 4,000 rpm',
"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" : '1,630 kg',
"mini_cabrio.cooper_d.max_permissible_weight_num" : '',
"mini_cabrio.cooper_d.max_torque" : '270 Nm @ 1,750-2,250 rpm',
"mini_cabrio.cooper_d.max_torque_num" : '270',
"mini_cabrio.cooper_d.max_torque_overboost" : '',
"mini_cabrio.cooper_d.max_torque_overboost_num" : '0',
"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('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper_d/modelcomparison.jpg'),
"mini_cabrio.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper_d/model_filter_small.jpg'),
"mini_cabrio.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '430 kg',
"mini_cabrio.cooper_d.rim_dimension" : '',
"mini_cabrio.cooper_d.roof_color" : '-',
"mini_cabrio.cooper_d.seat_type" : '481',
"mini_cabrio.cooper_d.short_description" : '',
"mini_cabrio.cooper_d.tank_capacity" : '40 litres',
"mini_cabrio.cooper_d.tank_capacity_num" : '',
"mini_cabrio.cooper_d.top_speed" : '194 km/h',
"mini_cabrio.cooper_d.top_speed_num" : '194',
"mini_cabrio.cooper_d.transmission" : '',
"mini_cabrio.cooper_d.unladen_weight" : '1,200 / 1,275 kg',
"mini_cabrio.cooper_d.unladen_weight_num" : '1200',
"mini_cabrio.cooper_d.wheel_dimension_num" : '195 / 55 R16',
"mini_cabrio.cooper_d.wheels" : '2GC',
"mini_cabrio.cooper_s.acceleration_0_100" : '7.3 s',
"mini_cabrio.cooper_s.acceleration_0_100_num" : '7.3',
"mini_cabrio.cooper_s.acceleration_80_120" : '6.6 / 8.4 s',
"mini_cabrio.cooper_s.acceleration_80_120_num" : '6.6',
"mini_cabrio.cooper_s.basic_financing_price" : '€ 271.33',
"mini_cabrio.cooper_s.basic_financing_price_num" : '271.33',
"mini_cabrio.cooper_s.basic_price" : '€ 26,500',
"mini_cabrio.cooper_s.basic_price_num" : '26500',
"mini_cabrio.cooper_s.body_type" : 'CA',
"mini_cabrio.cooper_s.co2_emission" : '139 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.cubic_capacity" : '1,598 litres',
"mini_cabrio.cooper_s.cubic_capacity_num" : '1598',
"mini_cabrio.cooper_s.cushion_material" : 'FTGM',
"mini_cabrio.cooper_s.dimensions" : '3,729 / 1,683 / 1,414 mm',
"mini_cabrio.cooper_s.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_s.elasticity" : '6.2 / 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" : '327, 329, 3AK',
"mini_cabrio.cooper_s.engine_num" : '1.6',
"mini_cabrio.cooper_s.exterior_mirror" : '383',
"mini_cabrio.cooper_s.financing_disclaimer" : '',
"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.fuel_consumption_combined" : '6 l/100km',
"mini_cabrio.cooper_s.fuel_consumption_combined_num" : '6.0',
"mini_cabrio.cooper_s.fuel_consumption_extra_urban" : '5.1 l/100km',
"mini_cabrio.cooper_s.fuel_consumption_extra_urban_num" : '5.1',
"mini_cabrio.cooper_s.fuel_consumption_urban" : '7.5 l/100km',
"mini_cabrio.cooper_s.fuel_consumption_urban_num" : '7.5',
"mini_cabrio.cooper_s.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (184 hp) @ 5,500 rpm',
"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" : '1,660 kg',
"mini_cabrio.cooper_s.max_permissible_weight_num" : '1660',
"mini_cabrio.cooper_s.max_torque" : '240 Nm @ 1,600-5,000 rpm',
"mini_cabrio.cooper_s.max_torque_num" : '240',
"mini_cabrio.cooper_s.max_torque_overboost" : '260 Nm @ 1600-5000 rpm',
"mini_cabrio.cooper_s.max_torque_overboost_num" : '260',
"mini_cabrio.cooper_s.model_code" : 'ZP31',
"mini_cabrio.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/cooper_s/financial_services/index.html'),
"mini_cabrio.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper_s/modelcomparison.jpg'),
"mini_cabrio.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/cooper_s/model_filter_small.jpg'),
"mini_cabrio.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '430 kg',
"mini_cabrio.cooper_s.rim_dimension" : '6.5J x 16 light alloy',
"mini_cabrio.cooper_s.roof_color" : '-',
"mini_cabrio.cooper_s.seat_type" : '481',
"mini_cabrio.cooper_s.short_description" : '',
"mini_cabrio.cooper_s.tank_capacity" : '50 litres',
"mini_cabrio.cooper_s.tank_capacity_num" : '50',
"mini_cabrio.cooper_s.top_speed" : '225 km/h',
"mini_cabrio.cooper_s.top_speed_num" : '225',
"mini_cabrio.cooper_s.transmission" : '6-speed, manual',
"mini_cabrio.cooper_s.unladen_weight" : '1,230 / 1,305 kg',
"mini_cabrio.cooper_s.unladen_weight_num" : '1230',
"mini_cabrio.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_s.wheels" : '2RU',
"mini_cabrio.cooper_sd.acceleration_0_100" : '8.7 s',
"mini_cabrio.cooper_sd.acceleration_0_100_num" : '8.7',
"mini_cabrio.cooper_sd.acceleration_80_120" : '6.6 / 8.4 s',
"mini_cabrio.cooper_sd.acceleration_80_120_num" : '6.6',
"mini_cabrio.cooper_sd.allowed_axle_load_front_rear" : '',
"mini_cabrio.cooper_sd.basic_financing_price" : '€ 271.33',
"mini_cabrio.cooper_sd.basic_financing_price_num" : '271.33',
"mini_cabrio.cooper_sd.basic_price" : '€ 26,500',
"mini_cabrio.cooper_sd.basic_price_num" : '26500',
"mini_cabrio.cooper_sd.body_type" : 'CA',
"mini_cabrio.cooper_sd.charging_type" : '',
"mini_cabrio.cooper_sd.co2_emission" : '118 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" : '',
"mini_cabrio.cooper_sd.cubic_capacity" : '1,995 litres',
"mini_cabrio.cooper_sd.cubic_capacity_num" : '1995',
"mini_cabrio.cooper_sd.cushion_material" : 'FTGM',
"mini_cabrio.cooper_sd.cylinder_type_valve" : '',
"mini_cabrio.cooper_sd.dimensions" : '3,723 / 1,683 / 1,414 mm',
"mini_cabrio.cooper_sd.dimensions_num" : '3729 / 1683 / 1414 mm',
"mini_cabrio.cooper_sd.elasticity" : '7.1 / 8.6 s',
"mini_cabrio.cooper_sd.elasticity_80_100_5" : '',
"mini_cabrio.cooper_sd.elasticity_num" : '6.6',
"mini_cabrio.cooper_sd.engine" : 'Cooper SD Cabrio',
"mini_cabrio.cooper_sd.engine_hood_stripes" : '327, 329, 3AK',
"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" : '',
"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 l/100km',
"mini_cabrio.cooper_sd.fuel_consumption_combined_num" : '4.5',
"mini_cabrio.cooper_sd.fuel_consumption_extra_urban" : '4.0 l/100km',
"mini_cabrio.cooper_sd.fuel_consumption_extra_urban_num" : '4.0',
"mini_cabrio.cooper_sd.fuel_consumption_urban" : '5.3 l/100km',
"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" : '',
"mini_cabrio.cooper_sd.interior_surface" : '4BC',
"mini_cabrio.cooper_sd.luggage_capacity" : '125 - 660 litres',
"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 kW (143 hp) @ 4,000 rpm',
"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" : '1,680 kg',
"mini_cabrio.cooper_sd.max_permissible_weight_num" : '1680',
"mini_cabrio.cooper_sd.max_torque" : '305 Nm @ 1,750-2,700 rpm',
"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" : '',
"mini_cabrio.cooper_sd.rear_brakes" : '',
"mini_cabrio.cooper_sd.rim_dimension" : '6.5J x 16 light alloy',
"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" : '',
"mini_cabrio.cooper_sd.tank_capacity" : '40 litres',
"mini_cabrio.cooper_sd.tank_capacity_num" : '40',
"mini_cabrio.cooper_sd.top_speed" : '210 km/h',
"mini_cabrio.cooper_sd.top_speed_num" : '210',
"mini_cabrio.cooper_sd.transmission" : '6-speed, manual',
"mini_cabrio.cooper_sd.unladen_weight" : '1,250 / 1,325 kg',
"mini_cabrio.cooper_sd.unladen_weight_num" : '1250',
"mini_cabrio.cooper_sd.weight_ratio" : '',
"mini_cabrio.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_cabrio.cooper_sd.wheels" : '2RU',
"mini_cabrio.john_cooper_works.acceleration_0_100" : '6.9 s',
"mini_cabrio.john_cooper_works.acceleration_0_100_num" : '6.9',
"mini_cabrio.john_cooper_works.acceleration_80_120" : '',
"mini_cabrio.john_cooper_works.acceleration_80_120_num" : '',
"mini_cabrio.john_cooper_works.basic_financing_price" : '€ 320.99',
"mini_cabrio.john_cooper_works.basic_financing_price_num" : '320.99',
"mini_cabrio.john_cooper_works.basic_price" : '€ 31,350',
"mini_cabrio.john_cooper_works.basic_price_num" : '31350',
"mini_cabrio.john_cooper_works.body_type" : 'CA',
"mini_cabrio.john_cooper_works.co2_emission" : '169 g/km',
"mini_cabrio.john_cooper_works.co2_emission_num" : '169',
"mini_cabrio.john_cooper_works.color" : 'U851',
"mini_cabrio.john_cooper_works.color_line" : '4C1',
"mini_cabrio.john_cooper_works.cubic_capacity" : '1,598 cm³',
"mini_cabrio.john_cooper_works.cubic_capacity_num" : '1598',
"mini_cabrio.john_cooper_works.cushion_material" : 'T8E1',
"mini_cabrio.john_cooper_works.dimensions" : '3,729 / 1,683 / 1,414 mm',
"mini_cabrio.john_cooper_works.dimensions_num" : '3729 / 1683 / 1414',
"mini_cabrio.john_cooper_works.elasticity" : '5.7 / 6.8 s',
"mini_cabrio.john_cooper_works.elasticity_num" : '5.7',
"mini_cabrio.john_cooper_works.engine" : 'John Cooper Works Cabrio',
"mini_cabrio.john_cooper_works.engine_hood_stripes" : '3AZ',
"mini_cabrio.john_cooper_works.engine_num" : '',
"mini_cabrio.john_cooper_works.exterior_mirror" : '383',
"mini_cabrio.john_cooper_works.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_cabrio.john_cooper_works.financing_disclaimer_headline1" : '',
"mini_cabrio.john_cooper_works.financing_disclaimer_headline2" : '',
"mini_cabrio.john_cooper_works.folding_top_color" : '',
"mini_cabrio.john_cooper_works.fuel_consumption_combined" : '7.3 l/100 km',
"mini_cabrio.john_cooper_works.fuel_consumption_combined_num" : '7.3',
"mini_cabrio.john_cooper_works.fuel_consumption_extra_urban" : '5.9 l/100 km',
"mini_cabrio.john_cooper_works.fuel_consumption_extra_urban_num" : '',
"mini_cabrio.john_cooper_works.fuel_consumption_urban" : '9.6 l/100 km',
"mini_cabrio.john_cooper_works.fuel_consumption_urban_num" : '9.6',
"mini_cabrio.john_cooper_works.fuel_type" : 'ROZ 91-98',
"mini_cabrio.john_cooper_works.fuel_type_num" : '',
"mini_cabrio.john_cooper_works.id" : 'john_cooper_works',
"mini_cabrio.john_cooper_works.infomaterial_id" : '',
"mini_cabrio.john_cooper_works.interior_surface" : '4CY',
"mini_cabrio.john_cooper_works.luggage_capacity" : '125 / 170 / 660 litres',
"mini_cabrio.john_cooper_works.luggage_capacity_num" : '125',
"mini_cabrio.john_cooper_works.market_attr1" : '',
"mini_cabrio.john_cooper_works.market_attr2" : '',
"mini_cabrio.john_cooper_works.market_attr3" : '',
"mini_cabrio.john_cooper_works.max_output" : '155 (211 hp) @ 6,000 KW rpm',
"mini_cabrio.john_cooper_works.max_output_num" : '155',
"mini_cabrio.john_cooper_works.max_permissible_roof_load" : '- / -',
"mini_cabrio.john_cooper_works.max_permissible_roof_load_num" : '- / -',
"mini_cabrio.john_cooper_works.max_permissible_weight" : '1,660 kg',
"mini_cabrio.john_cooper_works.max_permissible_weight_num" : '1660',
"mini_cabrio.john_cooper_works.max_torque" : '260 Nm @ 1,850-5,600 rpm',
"mini_cabrio.john_cooper_works.max_torque_num" : '260',
"mini_cabrio.john_cooper_works.max_torque_overboost" : '280 Nm @ 1,850-5,600 rpm',
"mini_cabrio.john_cooper_works.max_torque_overboost_num" : '280',
"mini_cabrio.john_cooper_works.model_code" : 'MS91',
"mini_cabrio.john_cooper_works.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/financial_services/'),
"mini_cabrio.john_cooper_works.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/modelcomparison.jpg'),
"mini_cabrio.john_cooper_works.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_small.jpg'),
"mini_cabrio.john_cooper_works.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_medium.jpg'),
"mini_cabrio.john_cooper_works.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_3.jpg'),
"mini_cabrio.john_cooper_works.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_4.jpg'),
"mini_cabrio.john_cooper_works.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_5.jpg'),
"mini_cabrio.john_cooper_works.model_name" : 'MINI John Cooper Works Cabrio',
"mini_cabrio.john_cooper_works.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/model_quickfacts.html'),
"mini_cabrio.john_cooper_works.payload" : '430 kg',
"mini_cabrio.john_cooper_works.rim_dimension" : '7J x 17 light alloy',
"mini_cabrio.john_cooper_works.roof_color" : '-',
"mini_cabrio.john_cooper_works.seat_type" : '481',
"mini_cabrio.john_cooper_works.short_description" : '',
"mini_cabrio.john_cooper_works.tank_capacity" : '50 litres',
"mini_cabrio.john_cooper_works.tank_capacity_num" : '50',
"mini_cabrio.john_cooper_works.top_speed" : '235 km/h',
"mini_cabrio.john_cooper_works.top_speed_num" : '235',
"mini_cabrio.john_cooper_works.transmission" : '',
"mini_cabrio.john_cooper_works.unladen_weight" : '1,230 / 1,305 kg',
"mini_cabrio.john_cooper_works.unladen_weight_num" : '1230',
"mini_cabrio.john_cooper_works.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini_cabrio.john_cooper_works.wheels" : '2RV. -',
"mini_clubman.one.acceleration_0_100" : '11.1 s',
"mini_clubman.one.acceleration_0_100_num" : '11.1',
"mini_clubman.one.acceleration_80_120" : '6.6 s / 8.6 s',
"mini_clubman.one.acceleration_80_120_num" : '6.7',
"mini_clubman.one.basic_financing_price" : '€ 186.35',
"mini_clubman.one.basic_financing_price_num" : '186.35',
"mini_clubman.one.basic_price" : '€ 18,200',
"mini_clubman.one.basic_price_num" : '18200',
"mini_clubman.one.body_type" : 'HB',
"mini_clubman.one.co2_emission" : '129 g/km',
"mini_clubman.one.co2_emission_num" : '129',
"mini_clubman.one.color" : 'WA94',
"mini_clubman.one.color_line" : '4C3',
"mini_clubman.one.cubic_capacity" : '1,598 cm³',
"mini_clubman.one.cubic_capacity_num" : '1598',
"mini_clubman.one.cushion_material" : 'APE1',
"mini_clubman.one.dimensions" : '3,961 / 1,683 / 1,426 mm',
"mini_clubman.one.dimensions_num" : '3961 / 1683 / 1426',
"mini_clubman.one.elasticity" : '12.9 s / 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.exterior_mirror" : '-',
"mini_clubman.one.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_clubman.one.financing_disclaimer_headline1" : '',
"mini_clubman.one.financing_disclaimer_headline2" : '',
"mini_clubman.one.folding_top_color" : '',
"mini_clubman.one.fuel_consumption_combined" : '5.5 l/100 km',
"mini_clubman.one.fuel_consumption_combined_num" : '6.5',
"mini_clubman.one.fuel_consumption_extra_urban" : '4.5 l/100 km',
"mini_clubman.one.fuel_consumption_extra_urban_num" : '5.2',
"mini_clubman.one.fuel_consumption_urban" : '7.3 l/100 km',
"mini_clubman.one.fuel_consumption_urban_num" : '7.3',
"mini_clubman.one.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (98 hp) @ 6,000 rpm',
"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" : '1,640 kg',
"mini_clubman.one.max_permissible_weight_num" : '1640',
"mini_clubman.one.max_torque" : '153 Nm @ 3,000 rpm',
"mini_clubman.one.max_torque_num" : '153',
"mini_clubman.one.max_torque_overboost" : '',
"mini_clubman.one.max_torque_overboost_num" : '-',
"mini_clubman.one.model_code" : 'ZE31',
"mini_clubman.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one/financial_services/index.html'),
"mini_clubman.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/one/modelcomparison.jpg'),
"mini_clubman.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/one/model_filter_small.jpg'),
"mini_clubman.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '500 kg',
"mini_clubman.one.rim_dimension" : '5.5J x 15 St',
"mini_clubman.one.roof_color" : '-',
"mini_clubman.one.seat_type" : 'Basis',
"mini_clubman.one.short_description" : '',
"mini_clubman.one.tank_capacity" : '40 litres',
"mini_clubman.one.tank_capacity_num" : '40',
"mini_clubman.one.top_speed" : '185 km/h',
"mini_clubman.one.top_speed_num" : '185',
"mini_clubman.one.transmission" : '',
"mini_clubman.one.unladen_weight" : '1,140 / 1,215 kg',
"mini_clubman.one.unladen_weight_num" : '1140',
"mini_clubman.one.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.one.wheels" : '2GC',
"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.basic_financing_price" : '€ 202.73',
"mini_clubman.one_d.basic_financing_price_num" : '202.73',
"mini_clubman.one_d.basic_price" : '€ 19,800',
"mini_clubman.one_d.basic_price_num" : '19800',
"mini_clubman.one_d.body_type" : 'HB',
"mini_clubman.one_d.co2_emission" : '103 g/km',
"mini_clubman.one_d.co2_emission_num" : '',
"mini_clubman.one_d.color" : 'M900',
"mini_clubman.one_d.color_line" : '4C1',
"mini_clubman.one_d.cubic_capacity" : '1,598 cm³',
"mini_clubman.one_d.cubic_capacity_num" : '',
"mini_clubman.one_d.cushion_material" : 'FKE1',
"mini_clubman.one_d.dimensions" : '3,961 / 1,683 / 1,426 mm',
"mini_clubman.one_d.dimensions_num" : '',
"mini_clubman.one_d.elasticity" : '10.4 / 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.exterior_mirror" : '3AF',
"mini_clubman.one_d.financing_disclaimer" : '',
"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.fuel_consumption_combined" : '3.9 l/100 km',
"mini_clubman.one_d.fuel_consumption_combined_num" : '',
"mini_clubman.one_d.fuel_consumption_extra_urban" : '3.6 l/100 km',
"mini_clubman.one_d.fuel_consumption_extra_urban_num" : '',
"mini_clubman.one_d.fuel_consumption_urban" : '4.4 l/100 km',
"mini_clubman.one_d.fuel_consumption_urban_num" : '',
"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 litres',
"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 kW (90 hp) @ 4,000 rpm',
"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" : '',
"mini_clubman.one_d.max_permissible_weight" : '1,685 kg',
"mini_clubman.one_d.max_permissible_weight_num" : '',
"mini_clubman.one_d.max_torque" : '215 Nm @ 1,750-2,500 rpm',
"mini_clubman.one_d.max_torque_num" : '215',
"mini_clubman.one_d.max_torque_overboost" : '-',
"mini_clubman.one_d.max_torque_overboost_num" : '0',
"mini_clubman.one_d.model_code" : 'ZH11',
"mini_clubman.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/one_d/financial_services/index.html'),
"mini_clubman.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/one_d/modelcomparison.jpg'),
"mini_clubman.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/one_d/model_filter_small.jpg'),
"mini_clubman.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '500',
"mini_clubman.one_d.rim_dimension" : '5.5J 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.tank_capacity" : '40 litres',
"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" : '1,185 / 1,260 kg',
"mini_clubman.one_d.unladen_weight_num" : '1185',
"mini_clubman.one_d.wheel_dimension_num" : '195 / 55 R16',
"mini_clubman.one_d.wheels" : '2GC',
"mini_clubman.cooper.acceleration_0_100" : '9.8 s',
"mini_clubman.cooper.acceleration_0_100_num" : '9.8',
"mini_clubman.cooper.acceleration_80_120" : '6.6 s / 9.4 s',
"mini_clubman.cooper.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper.basic_financing_price" : '€ 212.97',
"mini_clubman.cooper.basic_financing_price_num" : '212.97',
"mini_clubman.cooper.basic_price" : '€ 20,800',
"mini_clubman.cooper.basic_price_num" : '20800',
"mini_clubman.cooper.body_type" : 'HB',
"mini_clubman.cooper.co2_emission" : '129 g/km',
"mini_clubman.cooper.co2_emission_num" : '129',
"mini_clubman.cooper.color" : 'WB22',
"mini_clubman.cooper.color_line" : '4BU',
"mini_clubman.cooper.cubic_capacity" : '1,598 cm³',
"mini_clubman.cooper.cubic_capacity_num" : '1598',
"mini_clubman.cooper.cushion_material" : 'T9E7',
"mini_clubman.cooper.dimensions" : '3,961 / 1,683 / 1,426 mm',
"mini_clubman.cooper.dimensions_num" : '3961 / 1683 / 1426 mm',
"mini_clubman.cooper.elasticity" : '10.2 s / 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.exterior_mirror" : '3AF, 383',
"mini_clubman.cooper.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_clubman.cooper.financing_disclaimer_headline1" : '',
"mini_clubman.cooper.financing_disclaimer_headline2" : '',
"mini_clubman.cooper.folding_top_color" : '',
"mini_clubman.cooper.fuel_consumption_combined" : '5.5 l/100km',
"mini_clubman.cooper.fuel_consumption_combined_num" : '5.5',
"mini_clubman.cooper.fuel_consumption_extra_urban" : '5.2 l/100km',
"mini_clubman.cooper.fuel_consumption_extra_urban_num" : '5.2',
"mini_clubman.cooper.fuel_consumption_urban" : '7 l/100km',
"mini_clubman.cooper.fuel_consumption_urban_num" : '7',
"mini_clubman.cooper.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (122 hp) @ 6,000 rpm',
"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 kg',
"mini_clubman.cooper.max_permissible_weight_num" : '1645',
"mini_clubman.cooper.max_torque" : '160 Nm @ 4,250 rpm',
"mini_clubman.cooper.max_torque_num" : '160',
"mini_clubman.cooper.max_torque_overboost" : '-',
"mini_clubman.cooper.max_torque_overboost_num" : '-',
"mini_clubman.cooper.model_code" : 'ZF31',
"mini_clubman.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper/financial_services/index.html'),
"mini_clubman.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper/modelcomparison.jpg'),
"mini_clubman.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper/model_filter_small.jpg'),
"mini_clubman.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '500 kg',
"mini_clubman.cooper.rim_dimension" : '5.5J x 15 light alloy',
"mini_clubman.cooper.roof_color" : '-',
"mini_clubman.cooper.seat_type" : '481',
"mini_clubman.cooper.short_description" : '',
"mini_clubman.cooper.tank_capacity" : '40 litres',
"mini_clubman.cooper.tank_capacity_num" : '40',
"mini_clubman.cooper.top_speed" : '201 Km/h',
"mini_clubman.cooper.top_speed_num" : '201',
"mini_clubman.cooper.transmission" : '',
"mini_clubman.cooper.unladen_weight" : '1,145 / 1,220 kg',
"mini_clubman.cooper.unladen_weight_num" : '1145',
"mini_clubman.cooper.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.cooper.wheels" : '2GB',
"mini_clubman.cooper_d.acceleration_0_100" : '10.2 s',
"mini_clubman.cooper_d.acceleration_0_100_num" : '10.2',
"mini_clubman.cooper_d.acceleration_80_120" : '6.6 s / 8.1 s',
"mini_clubman.cooper_d.acceleration_80_120_num" : '6.1',
"mini_clubman.cooper_d.basic_financing_price" : '€ 231.4',
"mini_clubman.cooper_d.basic_financing_price_num" : '231.40',
"mini_clubman.cooper_d.basic_price" : '€ 22,600',
"mini_clubman.cooper_d.basic_price_num" : '22600',
"mini_clubman.cooper_d.body_type" : 'HB',
"mini_clubman.cooper_d.co2_emission" : '103 g/km',
"mini_clubman.cooper_d.co2_emission_num" : '109',
"mini_clubman.cooper_d.color" : 'U850',
"mini_clubman.cooper_d.color_line" : '4C2',
"mini_clubman.cooper_d.cubic_capacity" : '1598 cm³',
"mini_clubman.cooper_d.cubic_capacity_num" : '1560',
"mini_clubman.cooper_d.cushion_material" : 'FTGW',
"mini_clubman.cooper_d.dimensions" : '3,961 / 1,683 / 1,426 mm',
"mini_clubman.cooper_d.dimensions_num" : '3961/ 1683 / 1426',
"mini_clubman.cooper_d.elasticity" : '7.9 s / 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.exterior_mirror" : '-',
"mini_clubman.cooper_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"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.fuel_consumption_combined" : '3.9 l/100km',
"mini_clubman.cooper_d.fuel_consumption_combined_num" : '',
"mini_clubman.cooper_d.fuel_consumption_extra_urban" : '3.6 l/100km',
"mini_clubman.cooper_d.fuel_consumption_extra_urban_num" : '4.2',
"mini_clubman.cooper_d.fuel_consumption_urban" : '4.4 l/100km',
"mini_clubman.cooper_d.fuel_consumption_urban_num" : '4.9',
"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 litres',
"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 kW (112 hp) @ 4,000 rpm',
"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',
"mini_clubman.cooper_d.max_permissible_weight_num" : '1675',
"mini_clubman.cooper_d.max_torque" : '270 Nm @ 1,750-2,250 rpm',
"mini_clubman.cooper_d.max_torque_num" : '270',
"mini_clubman.cooper_d.max_torque_overboost" : '',
"mini_clubman.cooper_d.max_torque_overboost_num" : '260',
"mini_clubman.cooper_d.model_code" : 'MN51',
"mini_clubman.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_d/financial_services/index.html'),
"mini_clubman.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper_d/modelcomparison.jpg'),
"mini_clubman.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper_d/model_filter_small.jpg'),
"mini_clubman.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '500 kg',
"mini_clubman.cooper_d.rim_dimension" : '5.5J x 15 light alloy',
"mini_clubman.cooper_d.roof_color" : '383',
"mini_clubman.cooper_d.seat_type" : '481',
"mini_clubman.cooper_d.short_description" : '',
"mini_clubman.cooper_d.tank_capacity" : '40 litres',
"mini_clubman.cooper_d.tank_capacity_num" : '40',
"mini_clubman.cooper_d.top_speed" : '197 Km/h',
"mini_clubman.cooper_d.top_speed_num" : '197',
"mini_clubman.cooper_d.transmission" : '',
"mini_clubman.cooper_d.unladen_weight" : '1,185 / 1,260 kg',
"mini_clubman.cooper_d.unladen_weight_num" : '1185',
"mini_clubman.cooper_d.wheel_dimension_num" : '175/65 R15 84H',
"mini_clubman.cooper_d.wheels" : '2RS',
"mini_clubman.cooper_s.acceleration_0_100" : '7.5 s',
"mini_clubman.cooper_s.acceleration_0_100_num" : '7.5',
"mini_clubman.cooper_s.acceleration_80_120" : '6.6 s / 8.4 s',
"mini_clubman.cooper_s.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper_s.basic_financing_price" : '€ 254.95',
"mini_clubman.cooper_s.basic_financing_price_num" : '254.95',
"mini_clubman.cooper_s.basic_price" : '€ 24,900',
"mini_clubman.cooper_s.basic_price_num" : '24900',
"mini_clubman.cooper_s.body_type" : 'HB',
"mini_clubman.cooper_s.co2_emission" : '137 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.cubic_capacity" : '1598 cm³',
"mini_clubman.cooper_s.cubic_capacity_num" : '1598',
"mini_clubman.cooper_s.cushion_material" : 'FTGW',
"mini_clubman.cooper_s.dimensions" : '3,961 / 1,683 / 1,432 mm',
"mini_clubman.cooper_s.dimensions_num" : '3961/ 1683 / 1432 mm',
"mini_clubman.cooper_s.elasticity" : '5.9 s / 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.exterior_mirror" : '3AF',
"mini_clubman.cooper_s.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"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.fuel_consumption_combined" : '5.9 l/100km',
"mini_clubman.cooper_s.fuel_consumption_combined_num" : '5.9',
"mini_clubman.cooper_s.fuel_consumption_extra_urban" : '5 l/100km',
"mini_clubman.cooper_s.fuel_consumption_extra_urban_num" : '5',
"mini_clubman.cooper_s.fuel_consumption_urban" : '7.4 l/100km',
"mini_clubman.cooper_s.fuel_consumption_urban_num" : '7.4',
"mini_clubman.cooper_s.fuel_type" : 'ROZ 91-98',
"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 litres',
"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 kW (184 hp) @ 5,500 rpm',
"mini_clubman.cooper_s.max_output_num" : '135',
"mini_clubman.cooper_s.max_permissible_roof_load" : '75',
"mini_clubman.cooper_s.max_permissible_roof_load_num" : '75',
"mini_clubman.cooper_s.max_permissible_weight" : '1,690 kg',
"mini_clubman.cooper_s.max_permissible_weight_num" : '1690',
"mini_clubman.cooper_s.max_torque" : '240 Nm @ 1,600-5,000 rpm',
"mini_clubman.cooper_s.max_torque_num" : '240',
"mini_clubman.cooper_s.max_torque_overboost" : '260 Nm @ 1,600-5,000 rpm',
"mini_clubman.cooper_s.max_torque_overboost_num" : '260',
"mini_clubman.cooper_s.model_code" : 'ZG31',
"mini_clubman.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/cooper_s/financial_services/index.html'),
"mini_clubman.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper_s/modelcomparison.jpg'),
"mini_clubman.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/cooper_s/model_filter_small.jpg'),
"mini_clubman.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '485 kg',
"mini_clubman.cooper_s.rim_dimension" : '6.5J x 16 light alloy',
"mini_clubman.cooper_s.roof_color" : '3AF',
"mini_clubman.cooper_s.seat_type" : '481',
"mini_clubman.cooper_s.short_description" : '',
"mini_clubman.cooper_s.tank_capacity" : '50 litres',
"mini_clubman.cooper_s.tank_capacity_num" : '50',
"mini_clubman.cooper_s.top_speed" : '227 km/h',
"mini_clubman.cooper_s.top_speed_num" : '227',
"mini_clubman.cooper_s.transmission" : '',
"mini_clubman.cooper_s.unladen_weight" : '1,205 / 1,280 kg',
"mini_clubman.cooper_s.unladen_weight_num" : '1205',
"mini_clubman.cooper_s.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_clubman.cooper_s.wheels" : '-',
"mini_clubman.cooper_sd.acceleration_0_100" : '8.6 s',
"mini_clubman.cooper_sd.acceleration_0_100_num" : '8.6',
"mini_clubman.cooper_sd.acceleration_80_120" : '6.6 s / 8.4 s',
"mini_clubman.cooper_sd.acceleration_80_120_num" : '6.6',
"mini_clubman.cooper_sd.allowed_axle_load_front_rear" : '',
"mini_clubman.cooper_sd.basic_financing_price" : '€ 254.95',
"mini_clubman.cooper_sd.basic_financing_price_num" : '254.95',
"mini_clubman.cooper_sd.basic_price" : '€ 24,900',
"mini_clubman.cooper_sd.basic_price_num" : '24900',
"mini_clubman.cooper_sd.body_type" : 'HB',
"mini_clubman.cooper_sd.charging_type" : '',
"mini_clubman.cooper_sd.co2_emission" : '115 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" : '',
"mini_clubman.cooper_sd.cubic_capacity" : '1,995 cm³',
"mini_clubman.cooper_sd.cubic_capacity_num" : '1995',
"mini_clubman.cooper_sd.cushion_material" : 'FTGW',
"mini_clubman.cooper_sd.cylinder_type_valve" : '',
"mini_clubman.cooper_sd.dimensions" : '3,961 / 1,683 / 1,426 mm',
"mini_clubman.cooper_sd.dimensions_num" : '3961/ 1683 / 1432 mm',
"mini_clubman.cooper_sd.elasticity" : '6.9 s / 8.4 s',
"mini_clubman.cooper_sd.elasticity_80_100_5" : '',
"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" : 'Wird vom Markt ergänzt.',
"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 l/100km',
"mini_clubman.cooper_sd.fuel_consumption_combined_num" : '4.4',
"mini_clubman.cooper_sd.fuel_consumption_extra_urban" : '3.9 l/100km',
"mini_clubman.cooper_sd.fuel_consumption_extra_urban_num" : '3.9',
"mini_clubman.cooper_sd.fuel_consumption_urban" : '5.2 l/100km',
"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 litres',
"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 kW (143 hp) @ 4,000 rpm',
"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" : '1,735 kg',
"mini_clubman.cooper_sd.max_permissible_weight_num" : '1735',
"mini_clubman.cooper_sd.max_torque" : '305 Nm @ 1,750-2,700 rpm',
"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" : '',
"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" : '',
"mini_clubman.cooper_sd.rear_brakes" : '',
"mini_clubman.cooper_sd.rim_dimension" : '6.5J x 16 light alloy',
"mini_clubman.cooper_sd.roof_color" : '3AF',
"mini_clubman.cooper_sd.seat_type" : '481',
"mini_clubman.cooper_sd.short_description" : '',
"mini_clubman.cooper_sd.stroke_bore" : '',
"mini_clubman.cooper_sd.tank_capacity" : '40 litres',
"mini_clubman.cooper_sd.tank_capacity_num" : '40',
"mini_clubman.cooper_sd.top_speed" : '215 km/h',
"mini_clubman.cooper_sd.top_speed_num" : '215',
"mini_clubman.cooper_sd.transmission" : '',
"mini_clubman.cooper_sd.unladen_weight" : '1,235 / 1,310 kg',
"mini_clubman.cooper_sd.unladen_weight_num" : '1235',
"mini_clubman.cooper_sd.weight_ratio" : '',
"mini_clubman.cooper_sd.wheel_dimension_num" : '195/55 R16 87V RSC',
"mini_clubman.cooper_sd.wheels" : '-',
"mini_clubman.john_cooper_works.acceleration_0_100" : '6.8 s',
"mini_clubman.john_cooper_works.acceleration_0_100_num" : '6.8',
"mini_clubman.john_cooper_works.acceleration_80_120" : '',
"mini_clubman.john_cooper_works.acceleration_80_120_num" : '',
"mini_clubman.john_cooper_works.basic_financing_price" : '€ 312.28',
"mini_clubman.john_cooper_works.basic_financing_price_num" : '312.28',
"mini_clubman.john_cooper_works.basic_price" : '€ 30,500',
"mini_clubman.john_cooper_works.basic_price_num" : '30500',
"mini_clubman.john_cooper_works.body_type" : 'HB',
"mini_clubman.john_cooper_works.co2_emission" : '167 g/km',
"mini_clubman.john_cooper_works.co2_emission_num" : '167',
"mini_clubman.john_cooper_works.color" : 'WA94',
"mini_clubman.john_cooper_works.color_line" : '4C1',
"mini_clubman.john_cooper_works.cubic_capacity" : '1,598 cm³',
"mini_clubman.john_cooper_works.cubic_capacity_num" : '1598',
"mini_clubman.john_cooper_works.cushion_material" : 'ATP9',
"mini_clubman.john_cooper_works.dimensions" : '3,961 / 1,683 / 1,432 mm',
"mini_clubman.john_cooper_works.dimensions_num" : '3961 / 1683 / 1432',
"mini_clubman.john_cooper_works.elasticity" : '5.4 / 6.6 s',
"mini_clubman.john_cooper_works.elasticity_num" : '5.4',
"mini_clubman.john_cooper_works.engine" : 'John Cooper Works Clubman',
"mini_clubman.john_cooper_works.engine_hood_stripes" : '3AZ',
"mini_clubman.john_cooper_works.engine_num" : '',
"mini_clubman.john_cooper_works.exterior_mirror" : '3A3',
"mini_clubman.john_cooper_works.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_clubman.john_cooper_works.financing_disclaimer_headline1" : '',
"mini_clubman.john_cooper_works.financing_disclaimer_headline2" : '',
"mini_clubman.john_cooper_works.folding_top_color" : '',
"mini_clubman.john_cooper_works.fuel_consumption_combined" : '7.2 l/100 km',
"mini_clubman.john_cooper_works.fuel_consumption_combined_num" : '7.2',
"mini_clubman.john_cooper_works.fuel_consumption_extra_urban" : '5.8 l/100 km',
"mini_clubman.john_cooper_works.fuel_consumption_extra_urban_num" : '',
"mini_clubman.john_cooper_works.fuel_consumption_urban" : '9.5 l/100 km',
"mini_clubman.john_cooper_works.fuel_consumption_urban_num" : '9.5',
"mini_clubman.john_cooper_works.fuel_type" : 'ROZ 91-98',
"mini_clubman.john_cooper_works.fuel_type_num" : '',
"mini_clubman.john_cooper_works.id" : 'john_cooper_works',
"mini_clubman.john_cooper_works.infomaterial_id" : '',
"mini_clubman.john_cooper_works.interior_surface" : '4CY',
"mini_clubman.john_cooper_works.luggage_capacity" : '260 - 930 litres',
"mini_clubman.john_cooper_works.luggage_capacity_num" : '260',
"mini_clubman.john_cooper_works.market_attr1" : '',
"mini_clubman.john_cooper_works.market_attr2" : '',
"mini_clubman.john_cooper_works.market_attr3" : '',
"mini_clubman.john_cooper_works.max_output" : '155 (211 hp) @ 6,000 KW rpm',
"mini_clubman.john_cooper_works.max_output_num" : '155',
"mini_clubman.john_cooper_works.max_permissible_roof_load" : '75 kg',
"mini_clubman.john_cooper_works.max_permissible_roof_load_num" : '75',
"mini_clubman.john_cooper_works.max_permissible_weight" : '1,690 kg',
"mini_clubman.john_cooper_works.max_permissible_weight_num" : '1690',
"mini_clubman.john_cooper_works.max_torque" : '260 Nm @ 1,850-5,600 rpm',
"mini_clubman.john_cooper_works.max_torque_num" : '260',
"mini_clubman.john_cooper_works.max_torque_overboost" : '280 Nm @ 1,850-5,600 rpm',
"mini_clubman.john_cooper_works.max_torque_overboost_num" : '280',
"mini_clubman.john_cooper_works.model_code" : 'MM91',
"mini_clubman.john_cooper_works.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/financial_services/index.html'),
"mini_clubman.john_cooper_works.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/modelcomparison.jpg'),
"mini_clubman.john_cooper_works.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_small.jpg'),
"mini_clubman.john_cooper_works.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_medium.jpg'),
"mini_clubman.john_cooper_works.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_3.jpg'),
"mini_clubman.john_cooper_works.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_4.jpg'),
"mini_clubman.john_cooper_works.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl('/john_cooper_works/john_cooper_works/_img/jcw_jcw_5.jpg'),
"mini_clubman.john_cooper_works.model_name" : 'MINI John Cooper Works Clubman',
"mini_clubman.john_cooper_works.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/model_quickfacts.html'),
"mini_clubman.john_cooper_works.payload" : '485 kg',
"mini_clubman.john_cooper_works.rim_dimension" : '7J x 17 light alloy',
"mini_clubman.john_cooper_works.roof_color" : '3A3',
"mini_clubman.john_cooper_works.seat_type" : '481',
"mini_clubman.john_cooper_works.short_description" : '',
"mini_clubman.john_cooper_works.tank_capacity" : '50 litres',
"mini_clubman.john_cooper_works.tank_capacity_num" : '50',
"mini_clubman.john_cooper_works.top_speed" : '238 km/h',
"mini_clubman.john_cooper_works.top_speed_num" : '238',
"mini_clubman.john_cooper_works.transmission" : '',
"mini_clubman.john_cooper_works.unladen_weight" : '1,205 / 1,280 kg',
"mini_clubman.john_cooper_works.unladen_weight_num" : '1205',
"mini_clubman.john_cooper_works.wheel_dimension_num" : '205/45 R17 84W RSC',
"mini_clubman.john_cooper_works.wheels" : '-',
"mini_countryman.one.acceleration_0_100" : '11.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.basic_financing_price" : '€ 206.82',
"mini_countryman.one.basic_financing_price_num" : '206.82',
"mini_countryman.one.basic_price" : '€ 20,200',
"mini_countryman.one.basic_price_num" : '20200',
"mini_countryman.one.body_type" : 'GF',
"mini_countryman.one.co2_emission" : '139 g/km',
"mini_countryman.one.co2_emission_num" : '',
"mini_countryman.one.color" : 'YB16',
"mini_countryman.one.color_line" : '4C5',
"mini_countryman.one.cubic_capacity" : '1,598 cm³',
"mini_countryman.one.cubic_capacity_num" : '',
"mini_countryman.one.cushion_material" : 'FSGY',
"mini_countryman.one.dimensions" : '4,097 / 1,789 / 1,561 mm',
"mini_countryman.one.dimensions_num" : '',
"mini_countryman.one.elasticity" : '13.9 / 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.exterior_mirror" : '-',
"mini_countryman.one.financing_disclaimer" : '',
"mini_countryman.one.financing_disclaimer_headline1" : '',
"mini_countryman.one.financing_disclaimer_headline2" : '',
"mini_countryman.one.folding_top_color" : '',
"mini_countryman.one.fuel_consumption_combined" : '6 l/100 km',
"mini_countryman.one.fuel_consumption_combined_num" : '',
"mini_countryman.one.fuel_consumption_extra_urban" : '5.2 l/100 km',
"mini_countryman.one.fuel_consumption_extra_urban_num" : '6',
"mini_countryman.one.fuel_consumption_urban" : '7.4 l/100 km',
"mini_countryman.one.fuel_consumption_urban_num" : '168',
"mini_countryman.one.fuel_type" : 'ROZ 91-98',
"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 - 1,170 litres',
"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 kW (98 hp) @ 6,000 rpm',
"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" : '1,735 kg',
"mini_countryman.one.max_permissible_weight_num" : '1765',
"mini_countryman.one.max_torque" : '153 Nm @ 3,000 rpm',
"mini_countryman.one.max_torque_num" : '153',
"mini_countryman.one.max_torque_overboost" : '',
"mini_countryman.one.max_torque_overboost_num" : '-',
"mini_countryman.one.model_code" : 'ZA31',
"mini_countryman.one.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one/financial_services/index.html'),
"mini_countryman.one.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/one/modelcomparison.jpg'),
"mini_countryman.one.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/one/model_filter_small.jpg'),
"mini_countryman.one.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '470 kg',
"mini_countryman.one.rim_dimension" : '6.5J x 16 steel',
"mini_countryman.one.roof_color" : '-',
"mini_countryman.one.seat_type" : '481',
"mini_countryman.one.short_description" : '',
"mini_countryman.one.tank_capacity" : '47 litres',
"mini_countryman.one.tank_capacity_num" : '47',
"mini_countryman.one.top_speed" : '173 km/h',
"mini_countryman.one.top_speed_num" : '168',
"mini_countryman.one.transmission" : '',
"mini_countryman.one.unladen_weight" : '1,265 / 1,340 kg',
"mini_countryman.one.unladen_weight_num" : '1265',
"mini_countryman.one.wheel_dimension_num" : '6.5J x 16 steel',
"mini_countryman.one.wheels" : '2GV',
"mini_countryman.one_d.acceleration_0_100" : '12.9 s',
"mini_countryman.one_d.acceleration_0_100_num" : '',
"mini_countryman.one_d.acceleration_80_120" : '',
"mini_countryman.one_d.acceleration_80_120_num" : '',
"mini_countryman.one_d.basic_financing_price" : '€ 225.25',
"mini_countryman.one_d.basic_financing_price_num" : '225.25',
"mini_countryman.one_d.basic_price" : '€ 22,000',
"mini_countryman.one_d.basic_price_num" : '22000',
"mini_countryman.one_d.body_type" : 'GF',
"mini_countryman.one_d.co2_emission" : '115 g/km',
"mini_countryman.one_d.co2_emission_num" : '115',
"mini_countryman.one_d.color" : 'WB14',
"mini_countryman.one_d.color_line" : '4C4',
"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.dimensions" : '4,097 / 1,789 / 1,561 mm',
"mini_countryman.one_d.dimensions_num" : '4097 / 1789 / 1561',
"mini_countryman.one_d.elasticity" : '12.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.exterior_mirror" : '-',
"mini_countryman.one_d.financing_disclaimer" : '',
"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.fuel_consumption_combined" : '4.4 l/100 km',
"mini_countryman.one_d.fuel_consumption_combined_num" : '',
"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" : '',
"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 - 1,170 litres',
"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 kW (90 hp) @ 4,000 rpm',
"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" : '1,780 kg',
"mini_countryman.one_d.max_permissible_weight_num" : '1780',
"mini_countryman.one_d.max_torque" : '215 Nm @ 1,750 rpm',
"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.model_code" : 'ZD11',
"mini_countryman.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/one_d/financial_services/index.html'),
"mini_countryman.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/one_d/modelcomparison.jpg'),
"mini_countryman.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/one_d/model_filter_small.jpg'),
"mini_countryman.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '470 kg',
"mini_countryman.one_d.rim_dimension" : '6.5J x 16 steel',
"mini_countryman.one_d.roof_color" : '-',
"mini_countryman.one_d.seat_type" : '481',
"mini_countryman.one_d.short_description" : '',
"mini_countryman.one_d.tank_capacity" : '47 litres',
"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" : '1,310 / 1,385 kg',
"mini_countryman.one_d.unladen_weight_num" : '1310',
"mini_countryman.one_d.wheel_dimension_num" : '205/60 R16 92H',
"mini_countryman.one_d.wheels" : '2GM',
"mini_countryman.cooper.acceleration_0_100" : '10.5 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.basic_financing_price" : '€ 230.37',
"mini_countryman.cooper.basic_financing_price_num" : '230.37',
"mini_countryman.cooper.basic_price" : '€ 22,500',
"mini_countryman.cooper.basic_price_num" : '22500',
"mini_countryman.cooper.body_type" : 'GF',
"mini_countryman.cooper.co2_emission" : '140 g/km',
"mini_countryman.cooper.co2_emission_num" : '140',
"mini_countryman.cooper.color" : 'WA48',
"mini_countryman.cooper.color_line" : '4C1',
"mini_countryman.cooper.cubic_capacity" : '1,598 cm³',
"mini_countryman.cooper.cubic_capacity_num" : '1598',
"mini_countryman.cooper.cushion_material" : 'T6GW',
"mini_countryman.cooper.dimensions" : '4,097 / 1,798 / 1,561 mm',
"mini_countryman.cooper.dimensions_num" : '4097 / 1798 / 1561',
"mini_countryman.cooper.elasticity" : '11.6 / 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.exterior_mirror" : '382',
"mini_countryman.cooper.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"mini_countryman.cooper.financing_disclaimer_headline1" : '',
"mini_countryman.cooper.financing_disclaimer_headline2" : '',
"mini_countryman.cooper.folding_top_color" : '-',
"mini_countryman.cooper.fuel_consumption_combined" : '6 l/100 km',
"mini_countryman.cooper.fuel_consumption_combined_num" : '6',
"mini_countryman.cooper.fuel_consumption_extra_urban" : '5.2 l/100 km',
"mini_countryman.cooper.fuel_consumption_extra_urban_num" : '5.2',
"mini_countryman.cooper.fuel_consumption_urban" : '7.4 l/100 km',
"mini_countryman.cooper.fuel_consumption_urban_num" : '7.4',
"mini_countryman.cooper.fuel_type" : 'ROZ 91-98',
"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 -1,170 litres',
"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 kw (122 hp) @ 6,000 rpm',
"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" : '1,735 kg',
"mini_countryman.cooper.max_permissible_weight_num" : '1735',
"mini_countryman.cooper.max_torque" : '160 Nm @ 4,250 rpm',
"mini_countryman.cooper.max_torque_num" : '160',
"mini_countryman.cooper.max_torque_overboost" : '-',
"mini_countryman.cooper.max_torque_overboost_num" : '-',
"mini_countryman.cooper.model_code" : 'ZB31',
"mini_countryman.cooper.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper/financial_services/index.html'),
"mini_countryman.cooper.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper/modelcomparison.jpg'),
"mini_countryman.cooper.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper/model_filter_small.jpg'),
"mini_countryman.cooper.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '470',
"mini_countryman.cooper.rim_dimension" : '6.5J x 16 light alloy',
"mini_countryman.cooper.roof_color" : '382',
"mini_countryman.cooper.seat_type" : '481',
"mini_countryman.cooper.short_description" : '',
"mini_countryman.cooper.tank_capacity" : '47 litres',
"mini_countryman.cooper.tank_capacity_num" : '47',
"mini_countryman.cooper.top_speed" : '190 km/h',
"mini_countryman.cooper.top_speed_num" : '190',
"mini_countryman.cooper.transmission" : '',
"mini_countryman.cooper.unladen_weight" : '1,265 / 1,340 kg',
"mini_countryman.cooper.unladen_weight_num" : '1265',
"mini_countryman.cooper.wheel_dimension_num" : '205/60 R16 92 H',
"mini_countryman.cooper.wheels" : '2GT, 384',
"mini_countryman.cooper_d.acceleration_0_100" : '10.9 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.basic_financing_price" : '€ 247.78',
"mini_countryman.cooper_d.basic_financing_price_num" : '247.78',
"mini_countryman.cooper_d.basic_price" : '€ 24,200',
"mini_countryman.cooper_d.basic_price_num" : '24200',
"mini_countryman.cooper_d.body_type" : 'GF',
"mini_countryman.cooper_d.co2_emission" : '115 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.cubic_capacity" : '1,598 cm³',
"mini_countryman.cooper_d.cubic_capacity_num" : '',
"mini_countryman.cooper_d.cushion_material" : 'T9GX',
"mini_countryman.cooper_d.dimensions" : '4,097 / 1,789 / 1,561 mm',
"mini_countryman.cooper_d.dimensions_num" : '4097 / 1789 / 1561',
"mini_countryman.cooper_d.elasticity" : '10.0 / 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.exterior_mirror" : '382',
"mini_countryman.cooper_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"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.fuel_consumption_combined" : '4.4 l/100 km',
"mini_countryman.cooper_d.fuel_consumption_combined_num" : '4.4',
"mini_countryman.cooper_d.fuel_consumption_extra_urban" : '4.2 l/100 km',
"mini_countryman.cooper_d.fuel_consumption_extra_urban_num" : '',
"mini_countryman.cooper_d.fuel_consumption_urban" : '4.7 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 -1,170 litres',
"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 kW (112 hp) @ 4,000 rpm',
"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 kg',
"mini_countryman.cooper_d.max_permissible_weight_num" : '1780',
"mini_countryman.cooper_d.max_torque" : '270 Nm @ 1,750 rpm',
"mini_countryman.cooper_d.max_torque_num" : '270',
"mini_countryman.cooper_d.max_torque_overboost" : '',
"mini_countryman.cooper_d.max_torque_overboost_num" : '0',
"mini_countryman.cooper_d.model_code" : 'ZD31',
"mini_countryman.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_d/financial_services/index.html'),
"mini_countryman.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper_d/modelcomparison.jpg'),
"mini_countryman.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper_d/model_filter_small.jpg'),
"mini_countryman.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '470',
"mini_countryman.cooper_d.rim_dimension" : '6.5J x 16 light alloy',
"mini_countryman.cooper_d.roof_color" : '382',
"mini_countryman.cooper_d.seat_type" : '481',
"mini_countryman.cooper_d.short_description" : '',
"mini_countryman.cooper_d.tank_capacity" : '47 litres',
"mini_countryman.cooper_d.tank_capacity_num" : '47',
"mini_countryman.cooper_d.top_speed" : '185 km/h',
"mini_countryman.cooper_d.top_speed_num" : '180',
"mini_countryman.cooper_d.transmission" : '',
"mini_countryman.cooper_d.unladen_weight" : '1,310 / 1,385 kg',
"mini_countryman.cooper_d.unladen_weight_num" : '1310',
"mini_countryman.cooper_d.wheel_dimension_num" : '205/60 R16 92H',
"mini_countryman.cooper_d.wheels" : '2GP',
"mini_countryman.cooper_s.acceleration_0_100" : '7.6 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.basic_financing_price" : '€ 269.28',
"mini_countryman.cooper_s.basic_financing_price_num" : '269.28',
"mini_countryman.cooper_s.basic_price" : '€ 26,300',
"mini_countryman.cooper_s.basic_price_num" : '26300',
"mini_countryman.cooper_s.body_type" : 'GF',
"mini_countryman.cooper_s.co2_emission" : '143 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.cubic_capacity" : '1,598 cm³',
"mini_countryman.cooper_s.cubic_capacity_num" : '1598',
"mini_countryman.cooper_s.cushion_material" : 'T9E1',
"mini_countryman.cooper_s.dimensions" : '4,110 / 1,789 / 1,561 mm',
"mini_countryman.cooper_s.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_s.elasticity" : '7.1 / 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.exterior_mirror" : '383',
"mini_countryman.cooper_s.financing_disclaimer" : '',
"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.fuel_consumption_combined" : '6.1 l/100 km',
"mini_countryman.cooper_s.fuel_consumption_combined_num" : '7.1',
"mini_countryman.cooper_s.fuel_consumption_extra_urban" : '5.4 l/100 km',
"mini_countryman.cooper_s.fuel_consumption_extra_urban_num" : '5.7',
"mini_countryman.cooper_s.fuel_consumption_urban" : '7.5 l/100 km',
"mini_countryman.cooper_s.fuel_consumption_urban_num" : '9.5',
"mini_countryman.cooper_s.fuel_type" : 'ROZ 91-98',
"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 -1,170 litres',
"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 kW (184 hp) @ 5,500 rpm',
"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" : '1,780 kg',
"mini_countryman.cooper_s.max_permissible_weight_num" : '1780',
"mini_countryman.cooper_s.max_torque" : '240 Nm @ 1,600 - 5,000 rpm',
"mini_countryman.cooper_s.max_torque_num" : '240',
"mini_countryman.cooper_s.max_torque_overboost" : '260 Nm @ 1,600 rpm',
"mini_countryman.cooper_s.max_torque_overboost_num" : '260',
"mini_countryman.cooper_s.model_code" : 'ZC31',
"mini_countryman.cooper_s.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_countryman/cooper_s/index.html'),
"mini_countryman.cooper_s.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper_s/modelcomparison.jpg'),
"mini_countryman.cooper_s.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_countryman/cooper_s/model_filter_small.jpg'),
"mini_countryman.cooper_s.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '470',
"mini_countryman.cooper_s.rim_dimension" : '7J x 17 light alloy',
"mini_countryman.cooper_s.roof_color" : '383',
"mini_countryman.cooper_s.seat_type" : '481',
"mini_countryman.cooper_s.short_description" : '',
"mini_countryman.cooper_s.tank_capacity" : '47 litres',
"mini_countryman.cooper_s.tank_capacity_num" : '47',
"mini_countryman.cooper_s.top_speed" : '215 km/h',
"mini_countryman.cooper_s.top_speed_num" : '210',
"mini_countryman.cooper_s.transmission" : '',
"mini_countryman.cooper_s.unladen_weight" : '1,310 / 1,385 kg',
"mini_countryman.cooper_s.unladen_weight_num" : '1310',
"mini_countryman.cooper_s.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_s.wheels" : '2RR. 2GV',
"mini_countryman.cooper_sd.acceleration_0_100" : '9.3 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" : '',
"mini_countryman.cooper_sd.basic_financing_price" : '€ 269.28',
"mini_countryman.cooper_sd.basic_financing_price_num" : '269.28',
"mini_countryman.cooper_sd.basic_price" : '€ 26,300',
"mini_countryman.cooper_sd.basic_price_num" : '26300',
"mini_countryman.cooper_sd.body_type" : 'GF',
"mini_countryman.cooper_sd.charging_type" : '',
"mini_countryman.cooper_sd.co2_emission" : '122 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" : '',
"mini_countryman.cooper_sd.cubic_capacity" : '1,995 cm³',
"mini_countryman.cooper_sd.cubic_capacity_num" : '1995',
"mini_countryman.cooper_sd.cushion_material" : 'T9E1',
"mini_countryman.cooper_sd.cylinder_type_valve" : '',
"mini_countryman.cooper_sd.dimensions" : '4,110 / 1,789 / 1,561 mm',
"mini_countryman.cooper_sd.dimensions_num" : '4110 / 1789 / 1561',
"mini_countryman.cooper_sd.elasticity" : '7.9 / 10.1 s',
"mini_countryman.cooper_sd.elasticity_80_100_5" : '',
"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" : '',
"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 l/100 km',
"mini_countryman.cooper_sd.fuel_consumption_combined_num" : '4.6',
"mini_countryman.cooper_sd.fuel_consumption_extra_urban" : '4.3 l/100 km',
"mini_countryman.cooper_sd.fuel_consumption_extra_urban_num" : '4.3',
"mini_countryman.cooper_sd.fuel_consumption_urban" : '5.2 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 -1,170 litres',
"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 kW (143 hp) @ 4,000 rpm',
"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" : '1,790 kg',
"mini_countryman.cooper_sd.max_permissible_weight_num" : '1790',
"mini_countryman.cooper_sd.max_torque" : '305 Nm @ 1,750 - 2,700 rpm',
"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" : '',
"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" : '',
"mini_countryman.cooper_sd.rear_brakes" : '',
"mini_countryman.cooper_sd.rim_dimension" : '7J x 17 light alloy',
"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" : '',
"mini_countryman.cooper_sd.tank_capacity" : '47 litres',
"mini_countryman.cooper_sd.tank_capacity_num" : '47',
"mini_countryman.cooper_sd.top_speed" : '198 km/h',
"mini_countryman.cooper_sd.top_speed_num" : '198',
"mini_countryman.cooper_sd.transmission" : '',
"mini_countryman.cooper_sd.unladen_weight" : '1,320 / 1,395 kg',
"mini_countryman.cooper_sd.unladen_weight_num" : '1320',
"mini_countryman.cooper_sd.weight_ratio" : '',
"mini_countryman.cooper_sd.wheel_dimension_num" : '205/55 R17 91V RSC',
"mini_countryman.cooper_sd.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.basic_financing_price" : '€ 293.85',
"jcw.mini.basic_financing_price_num" : '293.85',
"jcw.mini.basic_price" : '€ 28,700',
"jcw.mini.basic_price_num" : '28700',
"jcw.mini.body_type" : 'CP',
"jcw.mini.co2_emission" : '165 g/km',
"jcw.mini.co2_emission_num" : '165',
"jcw.mini.color" : 'WA94',
"jcw.mini.color_line" : '4C1',
"jcw.mini.cubic_capacity" : '1,598 cm³',
"jcw.mini.cubic_capacity_num" : '1598',
"jcw.mini.cushion_material" : 'T9IN',
"jcw.mini.dimensions" : '3,729 / 1,683 / 1,407 mm',
"jcw.mini.dimensions_num" : '3729 / 1683 / 1407',
"jcw.mini.elasticity" : '5.2 / 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.exterior_mirror" : '3A3',
"jcw.mini.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"jcw.mini.financing_disclaimer_headline1" : '',
"jcw.mini.financing_disclaimer_headline2" : '',
"jcw.mini.folding_top_color" : '',
"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" : 'ROZ 91-98',
"jcw.mini.fuel_type_num" : '',
"jcw.mini.id" : 'mini',
"jcw.mini.infomaterial_id" : '',
"jcw.mini.interior_surface" : '4CY',
"jcw.mini.luggage_capacity" : '160 - 680 litres',
"jcw.mini.luggage_capacity_num" : '160',
"jcw.mini.market_attr1" : '',
"jcw.mini.market_attr2" : '',
"jcw.mini.market_attr3" : '',
"jcw.mini.max_output" : '155 (211 hp) @ 6,000 KW rpm',
"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,580 kg',
"jcw.mini.max_permissible_weight_num" : '1580',
"jcw.mini.max_torque" : '260 Nm @ 1,850-5,600 rpm',
"jcw.mini.max_torque_num" : '260',
"jcw.mini.max_torque_overboost" : '280 Nm @ 1,850-5,600 rpm',
"jcw.mini.max_torque_overboost_num" : '280',
"jcw.mini.model_code" : 'SV91',
"jcw.mini.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/john_cooper_works/financial_services/index.html'),
"jcw.mini.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/john_cooper_works/modelcomparison.jpg'),
"jcw.mini.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/john_cooper_works/model_filter_small.jpg'),
"jcw.mini.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '450 kg',
"jcw.mini.rim_dimension" : '7J x 17 light alloy',
"jcw.mini.roof_color" : '3A3',
"jcw.mini.seat_type" : '481',
"jcw.mini.short_description" : '',
"jcw.mini.tank_capacity" : '50 litres',
"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" : '1,140 / 1,215 kg',
"jcw.mini.unladen_weight_num" : '1130',
"jcw.mini.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini.wheels" : '2RV. -',
"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.basic_financing_price" : '€ 320.99',
"jcw.mini_cabrio.basic_financing_price_num" : '320.99',
"jcw.mini_cabrio.basic_price" : '€ 31,350',
"jcw.mini_cabrio.basic_price_num" : '31350',
"jcw.mini_cabrio.body_type" : 'CA',
"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.cubic_capacity" : '1,598 cm³',
"jcw.mini_cabrio.cubic_capacity_num" : '1598',
"jcw.mini_cabrio.cushion_material" : 'T8E1',
"jcw.mini_cabrio.dimensions" : '3,729 / 1,683 / 1,414 mm',
"jcw.mini_cabrio.dimensions_num" : '3729 / 1683 / 1414 mm',
"jcw.mini_cabrio.elasticity" : '5.7s / 6.8 s',
"jcw.mini_cabrio.elasticity_num" : '5.7',
"jcw.mini_cabrio.engine" : 'John Cooper Works Cabrio',
"jcw.mini_cabrio.engine_hood_stripes" : '327, 329, 3AZ',
"jcw.mini_cabrio.engine_num" : '',
"jcw.mini_cabrio.exterior_mirror" : '383, 3A3',
"jcw.mini_cabrio.financing_disclaimer" : '',
"jcw.mini_cabrio.financing_disclaimer_headline1" : '',
"jcw.mini_cabrio.financing_disclaimer_headline2" : '',
"jcw.mini_cabrio.folding_top_color" : '-',
"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" : 'ROZ 91-98',
"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 litres',
"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 kW (211 hp) @ 6,000 rpm',
"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 Nm @ 1,850-5,600 rpm',
"jcw.mini_cabrio.max_torque_num" : '260',
"jcw.mini_cabrio.max_torque_overboost" : '280 Nm @ 1,850-5,600 rpm',
"jcw.mini_cabrio.max_torque_overboost_num" : '280',
"jcw.mini_cabrio.model_code" : 'MS91',
"jcw.mini_cabrio.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_cabrio/john_cooper_works/financial_services/index.html'),
"jcw.mini_cabrio.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_cabrio.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_cabrio/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_cabrio.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '430 Kg',
"jcw.mini_cabrio.rim_dimension" : '7J x 17 light alloy',
"jcw.mini_cabrio.roof_color" : '-',
"jcw.mini_cabrio.seat_type" : '481',
"jcw.mini_cabrio.short_description" : '',
"jcw.mini_cabrio.tank_capacity" : '50 litres',
"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" : '1,230 / 1,305 kg',
"jcw.mini_cabrio.unladen_weight_num" : '1230',
"jcw.mini_cabrio.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini_cabrio.wheels" : '2RV. -',
"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.basic_financing_price" : '€ 312.28',
"jcw.mini_clubman.basic_financing_price_num" : '312.28',
"jcw.mini_clubman.basic_price" : '€ 30,500',
"jcw.mini_clubman.basic_price_num" : '30500',
"jcw.mini_clubman.body_type" : 'HB',
"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.cubic_capacity" : '1,598 cm³',
"jcw.mini_clubman.cubic_capacity_num" : '1598',
"jcw.mini_clubman.cushion_material" : 'ATP9',
"jcw.mini_clubman.dimensions" : '3,961 / 1,683 / 1,432 mm',
"jcw.mini_clubman.dimensions_num" : '3961/ 1683 / 1432',
"jcw.mini_clubman.elasticity" : '5.4 s / 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.exterior_mirror" : '3A3',
"jcw.mini_clubman.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"jcw.mini_clubman.financing_disclaimer_headline1" : '',
"jcw.mini_clubman.financing_disclaimer_headline2" : '',
"jcw.mini_clubman.folding_top_color" : '',
"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" : '',
"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" : 'ROZ 91-98',
"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 litres',
"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) / 6,000 kW (hp)/rpm',
"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 / 1,850-5,600 Nm/rpm',
"jcw.mini_clubman.max_torque_num" : '260',
"jcw.mini_clubman.max_torque_overboost" : '280 / 1,850-5,600 Nm/rpm',
"jcw.mini_clubman.max_torque_overboost_num" : '280',
"jcw.mini_clubman.model_code" : 'MM91',
"jcw.mini_clubman.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini_clubman/john_cooper_works/financial_services/index.html'),
"jcw.mini_clubman.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/modelcomparison.jpg'),
"jcw.mini_clubman.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini_clubman/john_cooper_works/model_filter_small.jpg'),
"jcw.mini_clubman.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_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.payload" : '485 kg',
"jcw.mini_clubman.rim_dimension" : '7J x 17 light alloy',
"jcw.mini_clubman.roof_color" : '3A3',
"jcw.mini_clubman.seat_type" : '481',
"jcw.mini_clubman.short_description" : '',
"jcw.mini_clubman.tank_capacity" : '50 litres',
"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" : '1,205 / 1,280 kg',
"jcw.mini_clubman.unladen_weight_num" : '1205',
"jcw.mini_clubman.wheel_dimension_num" : '205/45 R17 84W RSC',
"jcw.mini_clubman.wheels" : '-',
"minimalism.one_55_minimalist.acceleration_0_100" : '13.2 s',
"minimalism.one_55_minimalist.acceleration_0_100_num" : '13.2',
"minimalism.one_55_minimalist.acceleration_80_120" : '13.5',
"minimalism.one_55_minimalist.acceleration_80_120_num" : '13.5',
"minimalism.one_55_minimalist.basic_financing_price" : '€ 156.65',
"minimalism.one_55_minimalist.basic_financing_price_num" : '156.65',
"minimalism.one_55_minimalist.basic_price" : '€ 15,300',
"minimalism.one_55_minimalist.basic_price_num" : '15300',
"minimalism.one_55_minimalist.body_type" : 'CP',
"minimalism.one_55_minimalist.co2_emission" : '119 g/km',
"minimalism.one_55_minimalist.co2_emission_num" : '119',
"minimalism.one_55_minimalist.color" : 'U850',
"minimalism.one_55_minimalist.color_line" : '4C2',
"minimalism.one_55_minimalist.cubic_capacity" : '1,598 cm³',
"minimalism.one_55_minimalist.cubic_capacity_num" : '1598',
"minimalism.one_55_minimalist.cushion_material" : 'FKE1',
"minimalism.one_55_minimalist.dimensions" : '3,723 / 1,683 / 1,407 mm',
"minimalism.one_55_minimalist.dimensions_num" : '3723 / 1683 / 1407',
"minimalism.one_55_minimalist.elasticity" : '13.5 / 16.7 s',
"minimalism.one_55_minimalist.elasticity_num" : '13.5',
"minimalism.one_55_minimalist.engine" : 'One MINIMALIST (55 kW)',
"minimalism.one_55_minimalist.engine_hood_stripes" : 'ohne',
"minimalism.one_55_minimalist.engine_num" : '',
"minimalism.one_55_minimalist.exterior_mirror" : '-',
"minimalism.one_55_minimalist.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"minimalism.one_55_minimalist.financing_disclaimer_headline1" : '',
"minimalism.one_55_minimalist.financing_disclaimer_headline2" : '',
"minimalism.one_55_minimalist.folding_top_color" : '-',
"minimalism.one_55_minimalist.fuel_consumption_combined" : '5.1 l/100 km',
"minimalism.one_55_minimalist.fuel_consumption_combined_num" : '5.1',
"minimalism.one_55_minimalist.fuel_consumption_extra_urban" : '4.3 l/100 km',
"minimalism.one_55_minimalist.fuel_consumption_extra_urban_num" : '4.3',
"minimalism.one_55_minimalist.fuel_consumption_urban" : '6.5 l/100 km',
"minimalism.one_55_minimalist.fuel_consumption_urban_num" : '6.5',
"minimalism.one_55_minimalist.fuel_type" : 'ROZ 91-98',
"minimalism.one_55_minimalist.fuel_type_num" : '',
"minimalism.one_55_minimalist.id" : 'one_55_minimalist',
"minimalism.one_55_minimalist.infomaterial_id" : '',
"minimalism.one_55_minimalist.interior_surface" : '4BD',
"minimalism.one_55_minimalist.luggage_capacity" : '160 - 680 litres',
"minimalism.one_55_minimalist.luggage_capacity_num" : '160',
"minimalism.one_55_minimalist.market_attr1" : '',
"minimalism.one_55_minimalist.market_attr2" : '',
"minimalism.one_55_minimalist.market_attr3" : '',
"minimalism.one_55_minimalist.max_output" : '55 kW (75 hp) @ 6,000 rpm',
"minimalism.one_55_minimalist.max_output_num" : '55',
"minimalism.one_55_minimalist.max_permissible_roof_load" : '75 kg',
"minimalism.one_55_minimalist.max_permissible_roof_load_num" : '75',
"minimalism.one_55_minimalist.max_permissible_weight" : '1,520 kg',
"minimalism.one_55_minimalist.max_permissible_weight_num" : '1510',
"minimalism.one_55_minimalist.max_torque" : '140 Nm @ 2,250 rpm',
"minimalism.one_55_minimalist.max_torque_num" : '140',
"minimalism.one_55_minimalist.max_torque_overboost" : '-',
"minimalism.one_55_minimalist.max_torque_overboost_num" : '-',
"minimalism.one_55_minimalist.model_code" : 'SR81',
"minimalism.one_55_minimalist.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/financial_services/index.html'),
"minimalism.one_55_minimalist.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/modelcomparison.jpg'),
"minimalism.one_55_minimalist.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_small.jpg'),
"minimalism.one_55_minimalist.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_medium.jpg'),
"minimalism.one_55_minimalist.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_55_minimalist.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_55_minimalist.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_55_minimalist.model_name" : 'MINI One MINIMALIST 55 kW',
"minimalism.one_55_minimalist.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/model_quickfacts_55kw.html'),
"minimalism.one_55_minimalist.payload" : '450 kg',
"minimalism.one_55_minimalist.rim_dimension" : '5.5J x 15 steel',
"minimalism.one_55_minimalist.roof_color" : '-',
"minimalism.one_55_minimalist.seat_type" : '481',
"minimalism.one_55_minimalist.short_description" : '',
"minimalism.one_55_minimalist.tank_capacity" : '40 litres',
"minimalism.one_55_minimalist.tank_capacity_num" : '40',
"minimalism.one_55_minimalist.top_speed" : '175 km/h',
"minimalism.one_55_minimalist.top_speed_num" : '175',
"minimalism.one_55_minimalist.transmission" : '',
"minimalism.one_55_minimalist.unladen_weight" : '1,070 / 1,145 kg',
"minimalism.one_55_minimalist.unladen_weight_num" : '1070',
"minimalism.one_55_minimalist.wheel_dimension_num" : '175/65 R15 84H',
"minimalism.one_55_minimalist.wheels" : '-',
"minimalism.one_70_minimalist.acceleration_0_100" : '10.5 s',
"minimalism.one_70_minimalist.acceleration_0_100_num" : '10.5',
"minimalism.one_70_minimalist.acceleration_80_120" : '12.1 / 15.3 s',
"minimalism.one_70_minimalist.acceleration_80_120_num" : '12.1',
"minimalism.one_70_minimalist.basic_financing_price" : '€ 169.96',
"minimalism.one_70_minimalist.basic_financing_price_num" : '169.96',
"minimalism.one_70_minimalist.basic_price" : '€ 16,600',
"minimalism.one_70_minimalist.basic_price_num" : '16600',
"minimalism.one_70_minimalist.body_type" : 'CP',
"minimalism.one_70_minimalist.co2_emission" : '119 g/km',
"minimalism.one_70_minimalist.co2_emission_num" : '119',
"minimalism.one_70_minimalist.color" : 'U850',
"minimalism.one_70_minimalist.color_line" : '4C2',
"minimalism.one_70_minimalist.cubic_capacity" : '1,598 cm³',
"minimalism.one_70_minimalist.cubic_capacity_num" : '1598',
"minimalism.one_70_minimalist.cushion_material" : 'FKE1',
"minimalism.one_70_minimalist.dimensions" : '3,723 / 1,683 / 1,407 mm',
"minimalism.one_70_minimalist.dimensions_num" : '3723 / 1683 / 1407',
"minimalism.one_70_minimalist.elasticity" : '12.1 / 15.3 s',
"minimalism.one_70_minimalist.elasticity_num" : '12.1',
"minimalism.one_70_minimalist.engine" : 'One MINIMALIST (72 kW)',
"minimalism.one_70_minimalist.engine_hood_stripes" : 'ohne',
"minimalism.one_70_minimalist.engine_num" : '',
"minimalism.one_70_minimalist.exterior_mirror" : '-',
"minimalism.one_70_minimalist.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"minimalism.one_70_minimalist.financing_disclaimer_headline1" : '',
"minimalism.one_70_minimalist.financing_disclaimer_headline2" : '',
"minimalism.one_70_minimalist.folding_top_color" : '-',
"minimalism.one_70_minimalist.fuel_consumption_combined" : '5.1 l/100 km',
"minimalism.one_70_minimalist.fuel_consumption_combined_num" : '5.1',
"minimalism.one_70_minimalist.fuel_consumption_extra_urban" : '4.3 l/100 km',
"minimalism.one_70_minimalist.fuel_consumption_extra_urban_num" : '4.3',
"minimalism.one_70_minimalist.fuel_consumption_urban" : '6.5 l/100 km',
"minimalism.one_70_minimalist.fuel_consumption_urban_num" : '6.5',
"minimalism.one_70_minimalist.fuel_type" : 'ROZ 91-98',
"minimalism.one_70_minimalist.fuel_type_num" : '',
"minimalism.one_70_minimalist.id" : 'one_70_minimalist',
"minimalism.one_70_minimalist.infomaterial_id" : '',
"minimalism.one_70_minimalist.interior_surface" : '4BD',
"minimalism.one_70_minimalist.luggage_capacity" : '160 - 680 litres',
"minimalism.one_70_minimalist.luggage_capacity_num" : '160',
"minimalism.one_70_minimalist.market_attr1" : '',
"minimalism.one_70_minimalist.market_attr2" : '',
"minimalism.one_70_minimalist.market_attr3" : '',
"minimalism.one_70_minimalist.max_output" : '72 kW (98 hp) @ 6,000 rpm',
"minimalism.one_70_minimalist.max_output_num" : '72',
"minimalism.one_70_minimalist.max_permissible_roof_load" : '75 kg',
"minimalism.one_70_minimalist.max_permissible_roof_load_num" : '75',
"minimalism.one_70_minimalist.max_permissible_weight" : '1,520 kg',
"minimalism.one_70_minimalist.max_permissible_weight_num" : '1510',
"minimalism.one_70_minimalist.max_torque" : '153 Nm @ 3,000 rpm',
"minimalism.one_70_minimalist.max_torque_num" : '153',
"minimalism.one_70_minimalist.max_torque_overboost" : '-',
"minimalism.one_70_minimalist.max_torque_overboost_num" : '-',
"minimalism.one_70_minimalist.model_code" : 'SR51',
"minimalism.one_70_minimalist.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/financial_services/index.html'),
"minimalism.one_70_minimalist.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/modelcomparison.jpg'),
"minimalism.one_70_minimalist.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_small.jpg'),
"minimalism.one_70_minimalist.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_minimalist/model_filter_medium.jpg'),
"minimalism.one_70_minimalist.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_70_minimalist.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_70_minimalist.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_70_minimalist.model_name" : 'MINI One MINIMALIST 72 kW',
"minimalism.one_70_minimalist.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_minimalist/model_quickfacts_70kw.html'),
"minimalism.one_70_minimalist.payload" : '450 kg',
"minimalism.one_70_minimalist.rim_dimension" : '5.5J x 15 steel',
"minimalism.one_70_minimalist.roof_color" : '-',
"minimalism.one_70_minimalist.seat_type" : '481',
"minimalism.one_70_minimalist.short_description" : '',
"minimalism.one_70_minimalist.tank_capacity" : '40 litres',
"minimalism.one_70_minimalist.tank_capacity_num" : '40',
"minimalism.one_70_minimalist.top_speed" : '186 km/h',
"minimalism.one_70_minimalist.top_speed_num" : '186',
"minimalism.one_70_minimalist.transmission" : '',
"minimalism.one_70_minimalist.unladen_weight" : '1,070 / 1,145 kg',
"minimalism.one_70_minimalist.unladen_weight_num" : '1070',
"minimalism.one_70_minimalist.wheel_dimension_num" : '175/65 R15 84H',
"minimalism.one_70_minimalist.wheels" : '-',
"minimalism.one_d.acceleration_0_100" : '11.4 s',
"minimalism.one_d.acceleration_0_100_num" : '11.4',
"minimalism.one_d.acceleration_80_120" : '9.5  s / 11.8 s',
"minimalism.one_d.acceleration_80_120_num" : '9.5',
"minimalism.one_d.basic_financing_price" : '€ 185.32',
"minimalism.one_d.basic_financing_price_num" : '185.32',
"minimalism.one_d.basic_price" : '€ 18,100',
"minimalism.one_d.basic_price_num" : '18100',
"minimalism.one_d.body_type" : 'CP',
"minimalism.one_d.co2_emission" : '99 g/km',
"minimalism.one_d.co2_emission_num" : '99',
"minimalism.one_d.color" : 'U851, U850, WA95, WA94, WB22, M900, WA93, WB23, M857',
"minimalism.one_d.color_line" : '4C1',
"minimalism.one_d.cubic_capacity" : '1,560 cm³',
"minimalism.one_d.cubic_capacity_num" : '1560',
"minimalism.one_d.cushion_material" : 'FKE1',
"minimalism.one_d.dimensions" : '3,723 / 1,683 / 1,407 mm',
"minimalism.one_d.dimensions_num" : '3723 / 1683 / 1407',
"minimalism.one_d.elasticity" : '9.5 / 11.8 s',
"minimalism.one_d.elasticity_num" : '9.5',
"minimalism.one_d.engine" : 'One D',
"minimalism.one_d.engine_hood_stripes" : 'ohne',
"minimalism.one_d.engine_num" : '1.4',
"minimalism.one_d.exterior_mirror" : '3AB',
"minimalism.one_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"minimalism.one_d.financing_disclaimer_headline1" : '',
"minimalism.one_d.financing_disclaimer_headline2" : '',
"minimalism.one_d.folding_top_color" : '-',
"minimalism.one_d.fuel_consumption_combined" : '3.8 l/100 km',
"minimalism.one_d.fuel_consumption_combined_num" : '3.8',
"minimalism.one_d.fuel_consumption_extra_urban" : '3.5 l/100 km',
"minimalism.one_d.fuel_consumption_extra_urban_num" : '3.5',
"minimalism.one_d.fuel_consumption_urban" : '4.2 l/100 km',
"minimalism.one_d.fuel_consumption_urban_num" : '4.2',
"minimalism.one_d.fuel_type" : 'Diesel',
"minimalism.one_d.fuel_type_num" : '',
"minimalism.one_d.id" : 'one_d',
"minimalism.one_d.infomaterial_id" : '',
"minimalism.one_d.interior_surface" : '4BD',
"minimalism.one_d.luggage_capacity" : '160 - 680 litres',
"minimalism.one_d.luggage_capacity_num" : '160',
"minimalism.one_d.market_attr1" : '',
"minimalism.one_d.market_attr2" : '',
"minimalism.one_d.market_attr3" : '',
"minimalism.one_d.max_output" : '66 kW (90 hp) @ 4,000 rpm',
"minimalism.one_d.max_output_num" : '99',
"minimalism.one_d.max_permissible_roof_load" : '75 kg',
"minimalism.one_d.max_permissible_roof_load_num" : '75',
"minimalism.one_d.max_permissible_weight" : '1,540 kg',
"minimalism.one_d.max_permissible_weight_num" : '1540',
"minimalism.one_d.max_torque" : '215 Nm @ 1,750-2,500 rpm',
"minimalism.one_d.max_torque_num" : '215',
"minimalism.one_d.max_torque_overboost" : '-',
"minimalism.one_d.max_torque_overboost_num" : '-',
"minimalism.one_d.model_code" : 'MG51',
"minimalism.one_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/index.html'),
"minimalism.one_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_d/modelcomparison.jpg'),
"minimalism.one_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_d/model_filter_small.jpg'),
"minimalism.one_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/one_d/model_filter_medium.jpg'),
"minimalism.one_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.one_d.model_name" : 'MINI One D',
"minimalism.one_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/one_d/model_quickfacts.html'),
"minimalism.one_d.payload" : '450 kg',
"minimalism.one_d.rim_dimension" : '5.5J x 15 steel',
"minimalism.one_d.roof_color" : '-',
"minimalism.one_d.seat_type" : '481',
"minimalism.one_d.short_description" : '',
"minimalism.one_d.tank_capacity" : '40 litres',
"minimalism.one_d.tank_capacity_num" : '40',
"minimalism.one_d.top_speed" : '184 km/h',
"minimalism.one_d.top_speed_num" : '184',
"minimalism.one_d.transmission" : '',
"minimalism.one_d.unladen_weight" : '1,090 / 1,165 kg',
"minimalism.one_d.unladen_weight_num" : '1090',
"minimalism.one_d.wheel_dimension_num" : '175/65 R15 84H',
"minimalism.one_d.wheels" : '2GA',
"minimalism.cooper_d.acceleration_0_100" : '9.7 s',
"minimalism.cooper_d.acceleration_0_100_num" : '9.7',
"minimalism.cooper_d.acceleration_80_120" : '',
"minimalism.cooper_d.acceleration_80_120_num" : '',
"minimalism.cooper_d.basic_financing_price" : '€ 212.97',
"minimalism.cooper_d.basic_financing_price_num" : '212.97',
"minimalism.cooper_d.basic_price" : '€ 20,800',
"minimalism.cooper_d.basic_price_num" : '20800',
"minimalism.cooper_d.body_type" : 'CP',
"minimalism.cooper_d.co2_emission" : '99 g/km',
"minimalism.cooper_d.co2_emission_num" : '99',
"minimalism.cooper_d.color" : 'WA93',
"minimalism.cooper_d.color_line" : '4C2',
"minimalism.cooper_d.cubic_capacity" : '1,560 cm³',
"minimalism.cooper_d.cubic_capacity_num" : '1560',
"minimalism.cooper_d.cushion_material" : 'FTGW',
"minimalism.cooper_d.dimensions" : '3,723 / 1,683 / 1,407 mm',
"minimalism.cooper_d.dimensions_num" : '3723 / 1683 / 1407',
"minimalism.cooper_d.elasticity" : '7.4 / 9.2 s',
"minimalism.cooper_d.elasticity_num" : '7.4',
"minimalism.cooper_d.engine" : 'Cooper D',
"minimalism.cooper_d.engine_hood_stripes" : '327',
"minimalism.cooper_d.engine_num" : '',
"minimalism.cooper_d.exterior_mirror" : '382',
"minimalism.cooper_d.financing_disclaimer" : 'Wird vom Markt ergänzt.',
"minimalism.cooper_d.financing_disclaimer_headline1" : '',
"minimalism.cooper_d.financing_disclaimer_headline2" : '',
"minimalism.cooper_d.folding_top_color" : '',
"minimalism.cooper_d.fuel_consumption_combined" : '3.8 l/100 km',
"minimalism.cooper_d.fuel_consumption_combined_num" : '3.8',
"minimalism.cooper_d.fuel_consumption_extra_urban" : '3.5 l/100 km',
"minimalism.cooper_d.fuel_consumption_extra_urban_num" : '',
"minimalism.cooper_d.fuel_consumption_urban" : '4.2 l/100 km',
"minimalism.cooper_d.fuel_consumption_urban_num" : '4.2',
"minimalism.cooper_d.fuel_type" : 'Diesel',
"minimalism.cooper_d.fuel_type_num" : '',
"minimalism.cooper_d.id" : 'cooper_d',
"minimalism.cooper_d.infomaterial_id" : '',
"minimalism.cooper_d.interior_surface" : '-',
"minimalism.cooper_d.luggage_capacity" : '160 - 680 litres',
"minimalism.cooper_d.luggage_capacity_num" : '160',
"minimalism.cooper_d.market_attr1" : '',
"minimalism.cooper_d.market_attr2" : '',
"minimalism.cooper_d.market_attr3" : '',
"minimalism.cooper_d.max_output" : '82 kW (112 hp) @ 4,000 rpm',
"minimalism.cooper_d.max_output_num" : '82',
"minimalism.cooper_d.max_permissible_roof_load" : '75 kg',
"minimalism.cooper_d.max_permissible_roof_load_num" : '75',
"minimalism.cooper_d.max_permissible_weight" : '1,540 kg',
"minimalism.cooper_d.max_permissible_weight_num" : '1540',
"minimalism.cooper_d.max_torque" : '270 Nm @ 1,750- 2,250 rpm',
"minimalism.cooper_d.max_torque_num" : '270',
"minimalism.cooper_d.max_torque_overboost" : '-',
"minimalism.cooper_d.max_torque_overboost_num" : '-',
"minimalism.cooper_d.model_code" : 'MG31',
"minimalism.cooper_d.model_comparison_financing_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper_d/financial_services/index.html'),
"minimalism.cooper_d.model_comparison_img" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_d/modelcomparison.jpg'),
"minimalism.cooper_d.model_filter_img_1" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_d/model_filter_small.jpg'),
"minimalism.cooper_d.model_filter_img_2" : miniUrlFix.fixAbsoluteUrl('/mini2010_edit/_common/_shared_files/product_presentation/mini/cooper_d/model_filter_medium.jpg'),
"minimalism.cooper_d.model_filter_img_3" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.cooper_d.model_filter_img_4" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.cooper_d.model_filter_img_5" : miniUrlFix.fixAbsoluteUrl(''),
"minimalism.cooper_d.model_name" : 'MINI Cooper D',
"minimalism.cooper_d.model_quickfacts_link" : miniUrlFix.fixAbsoluteUrl('/mini/cooper/model_quickfacts.html'),
"minimalism.cooper_d.payload" : '450 kg',
"minimalism.cooper_d.rim_dimension" : '5.5J x 15 light alloy',
"minimalism.cooper_d.roof_color" : '382',
"minimalism.cooper_d.seat_type" : '481',
"minimalism.cooper_d.short_description" : '',
"minimalism.cooper_d.tank_capacity" : '40 litres',
"minimalism.cooper_d.tank_capacity_num" : '40',
"minimalism.cooper_d.top_speed" : '197 km/h',
"minimalism.cooper_d.top_speed_num" : '197',
"minimalism.cooper_d.transmission" : '',
"minimalism.cooper_d.unladen_weight" : '1,090 / 1,165 kg',
"minimalism.cooper_d.unladen_weight_num" : '1090',
"minimalism.cooper_d.wheel_dimension_num" : '175/65 R15 84H',
"minimalism.cooper_d.wheels" : '2GC'
};

var modelIdsByBodyTypeIds = {   
"mini"  :   ["one_55", "one_70", "one_55_minimalist", "one_70_minimalist", "one_d", "cooper", "cooper_d", "cooper_s", "cooper_sd", "mini"],
"mini_coupe" : ["cooper", "cooper_s", "cooper_sd", "mini_coupe"],
"mini_cabrio"  :   ["one", "cooper", "cooper_d", "cooper_s", "cooper_sd", "john_cooper_works"],
"mini_clubman"  :   ["one", "one_d", "cooper", "cooper_d", "cooper_s",  "cooper_sd", "john_cooper_works"],
"mini_countryman"  :   ["one", "one_d", "cooper", "cooper_d", "cooper_s", "cooper_sd"],
"jcw"  :   ["mini", "mini_coupe", "mini_cabrio", "mini_clubman"],
"minimalism"  :   ["one_55_minimalist", "one_70_minimalist", "one_d", "cooper_d"]
};


var bodyIdsToBodyName = {   
mini:'MINI'
,
mini_coupe:'MINI Coupé'
,
mini_cabrio:'MINI Cabrio'
,
mini_clubman:'MINI Clubman'
,
mini_countryman:'MINI Countryman'
,
jcw:'John Cooper Works'
,
minimalism:'MINIMALISM'

};


var  max  = {   
"fuel_consumption_urban_num" : 168.0,
"co2_emission_num" : 169.0,
"seat_type" : 481.0,
"max_permissible_weight" : 1685.0,
"max_torque_overboost_num" : 280.0,
"roof_color" : 383.0,
"basic_financing_price_num" : 320.99,
"payload" : 500.0,
"luggage_capacity_num" : 350.0,
"cubic_capacity_num" : 1995.0,
"unladen_weight_num" : 1395.0,
"max_permissible_roof_load_num" : 75.0,
"acceleration_0_100_num" : 13.9,
"acceleration_80_120_num" : 13.5,
"max_permissible_roof_load" : 75.0,
"fuel_consumption_combined_num" : 7.3,
"max_permissible_weight_num" : 1855.0,
"exterior_mirror" : 383.0,
"max_torque_num" : 305.0,
"basic_price_num" : 31350.0,
"elasticity_num" : 13.9,
"engine_hood_stripes" : 329.0,
"top_speed_num" : 240.0,
"acceleration_80_120" : 13.5,
"fuel_consumption_extra_urban_num" : 6.0,
"max_output_num" : 155.0,
"infomaterial_id" : 2.6846608E8,
"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_permissible_weight" : 1685.0,
"max_torque_overboost_num" : 0.0,
"roof_color" : 382.0,
"basic_financing_price_num" : 155.63,
"payload" : 460.0,
"luggage_capacity_num" : 125.0,
"cubic_capacity_num" : 1560.0,
"unladen_weight_num" : 1070.0,
"max_permissible_roof_load_num" : 75.0,
"acceleration_0_100_num" : 6.4,
"acceleration_80_120_num" : 5.1,
"max_permissible_roof_load" : 75.0,
"fuel_consumption_combined_num" : 3.8,
"max_permissible_weight_num" : 1380.0,
"exterior_mirror" : 382.0,
"max_torque_num" : 140.0,
"basic_price_num" : 15200.0,
"elasticity_num" : 5.2,
"engine_hood_stripes" : 327.0,
"top_speed_num" : 168.0,
"acceleration_80_120" : 11.6,
"fuel_consumption_extra_urban_num" : 3.5,
"max_output_num" : 55.0,
"infomaterial_id" : 2.6846608E8,
"tank_capacity_num" : 40.0,
"engine_num" : 1.4
};




var fuelTypes = new Array();fuelTypes[0] = 'ROZ 91-98';
fuelTypes[1] = 'Diesel';
fuelTypes[2] = 'petrol';

}catch(e){alert('Error in model_data_js: ' + e.description);}

// ---- m_perso_mapping ----
try{ function PersoMapping(){ 

	var ret = {

		CONF_PERSO_ENGINE_PID: 3,
		CONF_PERSOENGINE_URL: "http://Li0134.muc:7236/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.href.search(pattern)> -1) {
				
				
					return map_pattern_2_event[pattern];
				}
			}
	
			return "";  
		}
			};

	return ret;
}

var persoMap = PersoMapping();
}catch(e){alert('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 = $('#breadcrumb');
	// 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 = $('#breadcrumb>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){
	if ((typeof link === 'undefined') || (link == null))  return;
	var oldHref = link.attr('href');
	if (oldHref == null) return;
	var newHref = oldHref.split('?')[0];
	
	// Set new value for href
	link.attr('href', newHref);
}

function showBreadcrumb(){
	// Set tracking information
	$('#breadcrumb>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'));

		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);
		
		$('#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');
}

$(document).ready(
	function(){
		bcOriginal = $('#breadcrumb_for_seo').html();
		if(breadcrumbContainer==undefined){
			breadcrumbContainer = $('#breadcrumb');
		}
		
		// 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('#breadcrumb'); 

					showBreadcrumb();
				}
			);
		}
		else{
			showBreadcrumb();
		}
	}
);
}catch(e){alert('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){alert('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.text(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.text(minimizeText);
		table.find('.toogle_icon').toggleClass('toogle_icon_close');
	}
}
}catch(e){alert('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.platform,
					subString: "Linux",
					identity: "Linux"
				}
			]
		 
		};
		OsDetect.init();

$(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 : 150, /* 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() {
    		Cufon.replace('.l1_text, .l1_text_hover, .error_component_headline, .error_component_link_standard' );
    		
    		
		if(getInternetExplorerVersion() < 0){
			Cufon.replace('.submenu_text, .submenu_text_hover');
		}
    		$('.ul_level_1').mouseleave(function() {mainNavigation.setCloseTimer($(this).children('li:first'));});
            $('.ul_level_1 li').mouseenter(
            		function() {mainNavigation.setOpenTimer(this); }/*,
            		function(thisObj) {mainNavigation.setCloseTimer(this);}*/
            );
            $('.ul_level_1 li').click(
                        /* dummy click handler must be set to trigger iPhone to generate mouse move events */
            		function(){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');
    		}
    },
    /* 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();
            	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);
        isOpening = false;
    },

    /* 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);
            	this.items[i] = null;				
            }
        }
        if (this.level === 0 && !this.isOpening){
			this.setAppletContentVisible(true);
        }
    },
    closeMainNav : function() {
    	this.main_navigation_unhighlight();
    	this.closeMainNavSubMenu();
    },
    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').show();
    	}
    	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').show();
    	}
    	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){alert('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();
}

	var sharing_visible = true;

	$(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 Sharing(){ 
    	var obj = {
    			sh : this,
timer : null,
DELAY : 500, 
SPEED : 100,

initSharing : function() {
    		// to be removed in production
    		sound_visible = window.location.search.indexOf("audio=true") != -1;
    		// to be removed in production
    		print_visible = window.location.search.indexOf("print=true") != -1;
    		
    		if( sharing_visible || sound_visible || print_visible ) {		
	    		$.ajax( {
	    			url :  getRelativeMasterPath( "_general/_obj/sharing_buttons.html" ),
	    			dataType: 'html',
	    			timeout: 1000, 
	    			async: false,	
	    			success : function(data){
	    				$('#headericons').html(sharing.extractBody( data ) );
	    				if( sharing_visible ) {
	    	    			sharing.fill_sharing_layer()
	    	    		}
	    	    		if (sound_visible){
	    	    			soundInit();
	    	    		}
	    	    		if( print_visible) {
	    	    			printInit();
	    	    		}
	    			}
    			}
    			);
    		}    		
    	},

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;
	},

hideBookmark : function() {
	if(getInternetExplorerVersion() < 0) {
	   $('#bookmark').css('display', 'none');
	}
},
icon_highlight : function() {
    var img = $('.icon_share').children('.icon_share_img');
    img.attr('src', img.attr('src').replace('.png', '_active.png')); 
},
icon_unhighlight : function() {
    var img = $('.icon_share').children('.icon_share_img');
    img.attr('src', img.attr('src').replace('_active.png', '.png')); 
},
unsetSharingCloseTimer : function() {
    if( this.timer ) {
        window.clearTimeout(this.timer);
        this.timer = null;
    }
},
setSharingCloseTimer : function() {
        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');
},
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');
        }
    }
},



shareSite : function(sharetype, title) {
	if(sharetype == 'facebook') {
		var facebooklink = "http://www.facebook.com/sharer.php?u=";
	    facebooklink += $('#sharing_link').val();
	    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 += $('#sharing_link').val();
		digglink += "&title=";
		digglink += encodeURIComponent(title);
		window.open(digglink);
	} else if (sharetype == 'delicious') {
		var deliciouslink = "http://del.icio.us/post?v=2&url=";
		deliciouslink += $('#sharing_link').val();
		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 += $('#sharing_link').val();
		mrwonglink += "&bm_description=";
		mrwonglink += encodeURIComponent(title);
		window.open(mrwonglink);
	} else if (sharetype == 'twitter') {
		var twitterlink = "http://twitter.com/home?status=";
		twitterlink += encodeURIComponent(title + ": ");
		twitterlink += $('#sharing_link').val();
		window.open(twitterlink);
	} else if (sharetype == 'myspace') {
		var myspacelink = "http://www.myspace.com/Modules/PostTo/Pages/?u=";
		myspacelink += $('#sharing_link').val();
		myspacelink += "&t=";
		myspacelink += encodeURIComponent(title);
		window.open(myspacelink);
	} else if (sharetype == 'bookmark') {
		var favoritelink = $('#sharing_link').val();
		window.external.AddFavorite(favoritelink, title); 
	}
}
    	};
    	return obj;
	}
	sharing = Sharing();
	
	/* Sound controlling*/
	var SOUNDMUTE_COOKIE_NAME = "mini_sound_mute";
	var SOUNDMUTE_COOKIE_EXPIRES = 3650;
	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());});
        setSoundMute(getSoundMute());
	}
	function _sound_off () {
	    setSoundMuteCookie(true)
	    $('.player_component').flash(function() {
	          if (typeof this.setSoundMute == 'function') {
	              this.setSoundMute(true);
	          }
	    });
	    $('.flash_component').flash(function() {
	        if (typeof this.setSoundMute == 'function') {
	            this.setSoundMute(true);
	        }
	    });
	} 
	function _sound_on () {
	   setSoundMuteCookie(false)
	   $('.player_component').flash(function() {
	        if (typeof this.setSoundMute == 'function') {
	            this.setSoundMute(false);
	        }
	  });
	  $('.flash_component').flash(function() {
	      if (typeof this.setSoundMute == 'function') {
	          this.setSoundMute(false);
	      }
	  });
	} 

	function setSoundMuteCookie(value) {
		var expires = new Date();
		expires.setDate(expires.getDate() + SOUNDMUTE_COOKIE_EXPIRES);
		document.cookie = SOUNDMUTE_COOKIE_NAME + '=' + value + ';expires=' + expires.toGMTString();   
	}
	function getSoundMute() {
		var cookieKey = SOUNDMUTE_COOKIE_NAME + "=";
	    var ci = document.cookie.indexOf(cookieKey);
	    if(ci === -1){
	        return false;
	    }

	    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)) == 'true';
	}
	function setSoundMute(value) {
		if(value) {
			_sound_off ();
			var img = $('.icon_audio').children('img');
		    img.attr('src', img.attr('src').replace('_off_active.png', '_on_active.png'));
		    img.attr('src', img.attr('src').replace('_off.png', '_on.png'));
		}
		else {
			_sound_on ();
			var img = $('.icon_audio').children('img');
		    img.attr('src', img.attr('src').replace('_on_active.png', '_off_active.png'));
		    img.attr('src', img.attr('src').replace('_on.png', '_off.png'));
		} 
	}
	
	/* 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();});
		$("head").append("<link>");
	    css = $("head").children(":last");
	    css.attr({
	      rel:  "stylesheet",
	      type: "text/css",
	      href: getVIPURL("../../../../_common/_css/print.css" ),
	      media: "print"
	    });

	}
	
}catch(e){alert('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();
				}
			);
			$('.module_navigation_li').hover(
				function(){
					moduleNavigation.highLight(this);
				}, 
				function(){
					moduleNavigation.unhighLight(this);
				}
			);
		},
		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
			
			// 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');
		}
	};
	return obj;
}
moduleNavigation = ModuleNavigation();

}catch(e){alert('Error in m_module_navigation: ' + e.description);}

// ---- m_model_navigation ----
try{ $(document).ready(
	function() {
		modelNavigation.initModelNav();
}); 
function sn_configureModelNavigationMenu(id, flashFile, label) {
	modelNavigation.sn_configureModelNavigationMenu(id, flashFile, label);
}
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();
						}
					);
				/* 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);
				
				/* Open the model navi on the main page for some seconds*/
				if( $('#main_stage_teaser_area').length !== 0 ) {
					window.setTimeout(function(){ modelNavigation.sn_openMenu();}, 1500);
					this.actionTimer = window.setTimeout(function(){modelNavigation.closeMenu(2,-1);}, 4500);
				}
			},
			
			unsetTimer:function( ) {
				if( this.actionTimer ) {
						window.clearTimeout(this.actionTimer);						
						this.actionTimer = null;
				}
			},
			
			setOpenTimer:function(level, elem) {
				if($(elem).hasClass('modelnav_bare_text')){ // close details menue if necessary 
					if(typeof(this.detailItem) != 'undefined' && this.detailItem != null){ this.detailItem.slideLeft(); 
						this.detailItem.css('borderWidth','1px');
						this.detailItem.empty(); } //return; 
						}
				
				this.unsetTimer();
				if( level == 0) {
					this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openMenu();}, this.TIMEOUT);
				}
				else if ( level == 1  ) {
					this.actionTimer = window.setTimeout(function(){ modelNavigation.sn_openSubMenu(elem);}, this.TIMEOUT);
				}
				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);
				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) {

				if (this.subMenuItem.length > 0 && !this.subMenuItem.is(':visible')) {
				  this.detailItem.hide();
				  return;
				}

				this.highlightSubmenu( elemli);
				var qf_ur = $(elemli).children('.model_nav_quickfact_url');
				if(qf_ur.length > 0) {
					var url =  miniUrlFix.fixAbsoluteUrl(qf_ur.attr('title'));
					var urlToLoad =  url;
					if(isDealerArea)
						urlToLoad = urlToLoad + ";sticky_3kDk44d";
					
					if($(elemli).hasClass('modelnav_bare_text')) 
					return;
					
					this.detailItem.load(urlToLoad + " .model_quickfacts_container",
						function() {
							var tmpSubMenuItem = $('#model_selection_submenu_div');
							if (tmpSubMenuItem.length > 0 && !tmpSubMenuItem.is(':visible')) {
								$('#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];
								  var key2 = paths[1];
								  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');
									  }
								  }
								  break;
								}
							}


						}
					);
				}
				else {
					this.closeMenu(2,1);
				}
						
				return true;
			},
		
			/* Closes the menu */
			closeMenu:function( level, stopClose ) {
				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);
					/* 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;
				}
				
				if( level == 0 && stopClose < 0 ) {
					/* just to be sure */
					this.detailItem.hide();
					this.subMenuItem.hide();
					if( this.menuItem.is(':visible') ) {						
						this.menuItem.slideLeft();
					}
				}
			},
			
		    /**
		     * 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) {
		    	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";
		
			swfobject.embedSWF(miniUrlFix.fixAbsoluteUrl(flashFile), id, "216px", "39px", "9.0.124", null, flashvars, params, attributes);
		    }
	};
	return obj;
}
modelNavigation = ModelNavigation();


}catch(e){alert('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;
}


/**
 * quicklinkOverrides must be globally defined and initialized
 */
$(document).ready(function() {
	for ( var elem in quicklinkOverrides) {
        $("#" + elem).replaceWith(quicklinkOverrides[elem]);
	}
	Cufon.replace('.quicklinks_headline');
	Cufon.replace('.quicklink_link');
	
	$('.quicklink').hover(
      function() {
        $(this).addClass('quicklink_hover');
      }, 
      function() {
        $(this).removeClass('quicklink_hover');
      }
  );
 
});


}catch(e){alert('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);
 }
}); 

}catch(e){alert('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);
		
		// 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';
				}
				
				$("#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>');
			}
			
			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);
			
			// 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');
	}
	
	/*
		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;
				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);
	}
}catch(e){alert('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 options =
		{
			scrollingSpeed: 5,
			mouseDownSpeedBooster: 3, 
			//autoScroll: "onstart", 
			autoScrollDirection: "endlessloop", 
			autoScrollSpeed: 2, 
			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){alert('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 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_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 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){alert('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;
}

$(document).ready(function(){
	//initModelFilterApplication();
	}
);

function initModelFilterApplication(){

	var mf_ft = new Array();
	var ml_sl_ft = 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];
	}

	var options = {
		model_types: [],
		selected_model_types: [],
		selected_model_types_for_filter: [],
		
		// Frage:  fuel_types: PflegeElement
		fuel_types: mf_ft,
		selected_fuel_types: [],
		selected_fuel_types_for_filter: ml_sl_ft,
	
		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){alert('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
	};

function cufonReplaceHeadlines(prefix, pHover){
	if (version > -1 && version <= 8.0) {
		// IE 6, 7, 8 Browsers
		Cufon.replace(prefix+'.teaser_component_h100', {hover: pHover, fixLineHeight:fixLineHeightConfig['100'], leftOffset: -2, topOffset: 5});
		Cufon.replace(prefix+'.teaser_component_h80', {hover: pHover, fixLineHeight:fixLineHeightConfig['80'], leftOffset: -2, topOffset: 4});
		Cufon.replace(prefix+'.teaser_component_h60', {hover: pHover, fixLineHeight:fixLineHeightConfig['60'], leftOffset: -2, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h50', {hover: pHover, fixLineHeight:fixLineHeightConfig['50'], leftOffset: -2, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h40', {hover: pHover, fixLineHeight:fixLineHeightConfig['40'], leftOffset: -1, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h30', {hover: pHover, fixLineHeight:fixLineHeightConfig['30'], leftOffset: -1, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h25', {hover: pHover, fixLineHeight:fixLineHeightConfig['25'], leftOffset: 0, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h20', {hover: pHover, fixLineHeight:fixLineHeightConfig['20'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h15', {hover: pHover, fixLineHeight:fixLineHeightConfig['15'], leftOffset: 0, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h13', {hover: pHover, fixLineHeight:fixLineHeightConfig['13'], leftOffset: 0, topOffset: 2});
		Cufon.replace(prefix+'.teaser_component_h11', {hover: pHover, fixLineHeight:fixLineHeightConfig['11'], leftOffset: 0, topOffset: 2});
	} 
	else
	{
		// other browsers
		Cufon.replace(prefix+'.teaser_component_h100', {hover: pHover, fixLineHeight:fixLineHeightConfig['100'], leftOffset: -2, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h80', {hover: pHover, fixLineHeight:fixLineHeightConfig['80'], leftOffset: -1, topOffset: -1});
		Cufon.replace(prefix+'.teaser_component_h60', {hover: pHover, fixLineHeight:fixLineHeightConfig['60'], leftOffset: -1, topOffset: 0});
		Cufon.replace(prefix+'.teaser_component_h50', {hover: pHover, fixLineHeight:fixLineHeightConfig['50'], leftOffset: 0,topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h40', {hover: pHover, fixLineHeight:fixLineHeightConfig['40'], leftOffset: 0, topOffset: 1});
		Cufon.replace(prefix+'.teaser_component_h30', {hover: pHover, fixLineHeight:fixLineHeightConfig['30'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h25', {hover: pHover, fixLineHeight:fixLineHeightConfig['25'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h20', {hover: pHover, fixLineHeight:fixLineHeightConfig['20'], leftOffset: -1, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h15', {hover: pHover, fixLineHeight:fixLineHeightConfig['15'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h13', {hover: pHover, fixLineHeight:fixLineHeightConfig['13'], leftOffset: 0, topOffset: 3});
		Cufon.replace(prefix+'.teaser_component_h11', {hover: pHover, fixLineHeight:fixLineHeightConfig['11'], leftOffset: -1, topOffset: 2});
	}
	
	Cufon.replace(prefix+'.teaser_component_link a', { 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);
/* 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 urlLangVals = window.location.href.split("/");
var urlLangPart = urlLangVals[3];
if (urlLangPart.length === 2) {
    document.cookie = "geo-targeting=" + urlLangPart +  ',' + urlLangVals[0] + "/" + urlLangVals[1] + "/" + urlLangVals[2] + "/" + urlLangVals[3] + "/";
}


}catch(e){alert('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;
                }                
            }    
	    }
    }
    
     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){alert('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;

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;
}


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');
	}

	// 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) {
		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).append('">').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
		$('#'+resultsNodeId+' .searchResultItem').hover(
			function(){
				$(this).children('.normal').hide();
				$(this).children('.divHover').show();
			},
			function(){
				$(this).children('.normal').show();
				$(this).children('.divHover').hide();
			}
		);
	}
	
	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;&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;</a>');
				jQuery('.fastSearchPaging a:first').click(function(){
					var index = currentPage > 0 ? currentPage-1 : 0;
					searchGotoPage(index);
				});
			}
		}
	}

	// 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(){
							// 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();
	}	
}

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_searchEngineLoaded(){
return;

	if((typeof(console) !== 'undefined') && (console !== null)) {
		  console.log('MINI search engine loaded');
	}
	
	mini_smartsearch_fastSearchControl =
		new google.search.CustomSearchControl(mini_smartsearch_fastSearchKey);

	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){
		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_showSmartSearch(searchTerm){
	mini_smartsearch_hideSmartSearch();
	mini_smartsearch_fastSearchControl.clearAllResults();
	mini_smartsearch_inputText.val('');

	if(searchTerm){
		mini_smartsearch_inputText.val(searchTerm);
	}
	else{
		mini_smartsearch_inputText.val('');
	}

	mini_smartsearch_copyValue(null);

	jQuery('#fastSearchDiv').show();
	position_resultsDiv_Header();
	
	mini_smartsearch_inputText.focus().select();
}
*/

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(){

$('#headersearch').hide();	return;

         // 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(){

$('#headersearch').hide();	return;

	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(){

		// 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){alert('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);

				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){alert('Error in m_sitemap: ' + e.description);}

// ---- m_quickfacts_component ----
try{
var qfTimer = null;

$(document).ready(function() {
  if ($(".quickfacts_component").length === 0) return;
  
   /* fade quick facts out after 10 seconds QC 787*/
  var quickfacts_timeout = 10000;
  
  $(".qf_second_layer").show();
  $('.qf_disclaimer_body_scroll').css('visibility','visible');
  $('.qf_disclaimer_body_scroll').height($(".padding_div").height()-$(".padding_div ul").height()-$(".qf_header h3").height())-$(".qf_link_div").height();
  $('.qf_disclaimer_body_scroll').jScrollPane({showArrows:true}); // scrollable
  $(".qf_second_layer").hide();
  
  //remove show layer of 2nd quickfacts component:
  $(".qf_second_layer").children(".quickfacts_component_show").remove();
  
  $(".quickfacts_close").click(function() {
  
      miniTracking.handleLinkClickEvent(this);
      $(".qf_second_layer").hide();
      if(qfTimer != null){
        clearTimeout(qfTimer);
        
      qfTimer = null;
      
  }
   
	changeToDYKTeaser(0, true);//no fade out
    
  });

  $(".quickfacts_show").click(function() {
       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();
  }
}
  


/** called by turntable flash */
function hideQuickfacts() {
	if(qfTimer !== null){
		clearTimeout(qfTimer);
		changeToDYKTeaser(0, true);		
		qfTimer = null;
	}
	$(".quickfacts_container").parent().hide();
	$(".slideshow").hide();
}

/** called by turntable flash */
function showQuickfacts() {
	$(".quickfacts_container").parent().show();
	$(".slideshow:1").show();
}

}catch(e){alert('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 (window.location.search!="?rating=true") 
			return;
		
		$('#rating_form' ).show();
		$('.rating_form' ).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;
		
		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
			});
		}
});

function News(){ 
	var ret = {

	COOKIE_NAME: "MINI_NEWS_RATING",
	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("../../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,
		
	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
		
		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		
	},
	
	get_rating_cookie : function() {
			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) {
		window.location.href=window.location.pathname+'?page=' +pageNum;
	},
	
	set_rating_from_server : function (res) {
		var temp = parseInt(res.rating);
		if (temp>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;
                                        }
                                        );
                        });
	},
	
	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);
	}

	} // 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 the_request = news_obj.rating_servlet_path + "?oid=" + news_obj.news_oid + 
						  "&previous_rating=" + previous_value + "&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){alert('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){
	$('#'+id).cycle(
		{
			delay: 1000,
			speed: transitionSpeed,
			timeout: transitionInterval
		}
	);
	$('#'+id).show();
}

function showSlide(id, slideId, numberElements) {	
	for (var i = 0; i < numberElements; i++) {
		if (i == slideId) {
			$('#'+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 {
			$('#'+id + '_' + i).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");
			}
		}
	}
}

Cufon.replace('.slideshow_component a', { hover: true });


}catch(e){alert('Error in m_slideshow: ' + e.description);}

// ---- m_disclaimer ----
try{ /* Disclaimer Component of Financial Services*/
var scrollable = false;
	
	$(document).ready( function() {
		if($('.disclaimer').length > 0 && $('.disclaimer_container').length > 0 ) {
			disclaimer = Disclaimer();
			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() {
		var obj = {
				dc : this,
				dc_timeout : 300, /* timeout in ms */
				dc_timer : 0,
				dc_disclaimer_to_show : '.disclaimer_content_outermargins',
				
				init  : function () {
					/*Cufon.replace('.disclaimer_open_link, .dc_close_link, .disclaimer_body_headline'); */
					Cufon.replace('.disclaimer_open_link_cufon, .disclaimer_body_headline');
					$(".disclaimer_open_link").hover(function(){ disclaimer.dc_show_disclaimer();}, function(){ disclaimer.dc_setTimer();});
					$(this.dc_disclaimer_to_show).hover(function(){ disclaimer.dc_unsetTimer();});
					$('.dc_close_link').click(function(){ disclaimer.dc_hide_disclaimer();});
					$('.disclaimer_right_false').css('margin-left', "-" + ($('.disclaimer_right_false').children('.disclaimer_content_outermargins').width()+8) + "px" );
					if ($(".disclaimer_right_false").length <= 0){
						var width = $('.disclaimer_open_link img').position().left + $('.disclaimer_open_link img').width() + 10; 			
						$('.disclaimer').css('width', width + 'px');
					}
				},
				
				dc_show_disclaimer : function() {
				   this.dc_unsetTimer();
				   setPosition();
				   $(this.dc_disclaimer_to_show).show();
				   if( scrollable )
					   $('.disclaimer_body_scroll').jScrollPane({showArrows:true});
				},

				dc_hide_disclaimer : function() {
				   $(this.dc_disclaimer_to_show).hide();
				},

				dc_setTimer : function() {
				    this.dc_timer = window.setTimeout(this.dc_hide_disclaimer, this.dc_timeout);
				},

				dc_unsetTimer : function() { 
				    if (this.dc_timer) {
				        window.clearTimeout(this.dc_timer);
				        this.dc_timer = null;
				    }
				}
		};
		return obj;		
	}

	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){alert('Error in m_disclaimer: ' + e.description);}

// ---- jquery.swfobject.1-0-9.min ----
try{ (function(F,C){var D=function(H){var G,I=[];for(G in H){if(/string|number/.test(typeof H[G])&&H[G]!==""){I.push(G+'="'+H[G]+'"')}}return I[A]("")},E=function(I){var G,K,J=[],H;if(typeof I=="object"){for(G in I){if(typeof I[G]=="object"){H=[];for(K in I[G]){H.push([K,"=",encodeURIComponent(I[G][K])][A](""))}I[G]=H[A]("&amp;")}if(I[G]){J.push(['<param name="',G,'" value="',I[G],'" />'][A](""))}}I=J[A]("")}return I},B=false,A="join";F[C]=(function(){try{var G="0,0,0",H=navigator.plugins["Shockwave Flash"]||ActiveXObject;G=H.description||(function(){try{return(new H("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version")}catch(J){}}())}catch(I){}G=G.match(/^[A-Za-z\s]*?(\d+)[\.|,](\d+)(?:\s+[d|r]|,)(\d+)/);return{available:G[1]>0,activeX:H&&!H.name,version:{major:G[1]*1,minor:G[2]*1,release:G[3]*1},hasVersion:function(K){var N=this.version,L="major",M="minor",J="release";K=(/string|number/.test(typeof K))?K.toString().split("."):K||[0,0,0];K=[K[L]||K[0]||N[L],K[M]||K[1]||N[M],K[J]||K[2]||N[J]];return(K[0]<N[L])||(K[0]==N[L]&&K[1]<N[M])||(K[0]==N[L]&&K[1]==N[M]&&K[2]<=N[J])},expressInstall:"expressInstall.swf",create:function(J){if(!F[C].available||B||!typeof J=="object"||!J.swf){return false}if(J.hasVersion&&!F[C].hasVersion(J.hasVersion)){J={swf:J.expressInstall||F[C].expressInstall,attrs:{id:J.id||"SWFObjectExprInst",name:J.name,height:Math.max(J.height||137),width:Math.max(J.width||214)},params:{flashvars:{MMredirectURL:location.href,MMplayerType:(F[C].activeX)?"ActiveX":"PlugIn",MMdoctitle:document.title.slice(0,47)+" - Flash Player Installation"}}};B=true}else{J=F.extend(true,{attrs:{id:J.id,name:J.name,height:J.height||180,width:J.width||320},params:{wmode:J.wmode||"opaque",flashvars:J.flashvars}},J)}if(F[C].activeX){J.attrs.classid=J.attrs.classid||"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";J.params.movie=J.params.movie||J.swf}else{J.attrs.type=J.attrs.classid||"application/x-shockwave-flash";J.attrs.data=J.attrs.data||J.swf}return["<object ",D(J.attrs),">",E(J.params),"</object>"][A]("")}}}());F.fn[C]=function(G){if(typeof G=="object"){this.each(function(){var I=document.createElement(C);var H=F[C].create(G);if(H){I.innerHTML=H;if(I.childNodes[0]){this.appendChild(I.childNodes[0])}}})}else{if(typeof G=="function"){this.find("object").andSelf().filter("object").each(function(){var I=this,H="jsInteractionTimeoutMs";I[H]=I[H]||0;if(I[H]<660){if(I.clientWidth||I.clientHeight){G.call(this)}else{setTimeout(function(){F(I)[C](G)},I[H]+66)}}})}}return this}}(jQuery,"flash"));
}catch(e){alert('Error in jquery.swfobject.1-0-9.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){alert('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){alert('Error in jquery.mousewheel: ' + e.description);}

// ---- m_dealer_layer ----
try{ // JavaScript Document


/* 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";
  
  /**
   * cookie is accessible from / and expires never
   * @final
   */
  var COOKIE_OPTIONS = { path: '/', expires: 999 };
  COOKIE_OPTIONS['domain'] = getDomain();

  /**
   * Duration to fadeIn and fadeOut the subsidiary layer  (in ms)
   * @final
   */
  var FADE_TIME = 1000;

  /**
   * Number of visitits 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;
    
    /* check if the extInfoWindow was loaded successfully (see beginning of this script) */
    //if (!extInfoReady) return;
    
    //extInfoReady = false;
    /* clear timer and stop loading extInfoWindow */
    //window.clearInterval(layerTimer);
  
    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) { //  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 haven a cookie or we have 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;
  };
  
   /**
    * 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() {

        var url = miniSubsidiary.getUrl() ;
        // Get module navigation
        $.get(url+ "module_navigation.html", function(data) {

          // 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()));
          $("#mainnav .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
          $("#mainnav .ul_level_2:last").append(data);
      
          // prepend li element and dublicate each menu entry
          $("#mainnav .ul_level_2:last a").each(function() {
            var line = $('<li/>').addClass('main_nav_level_2');
            line.append($(this).clone().css('display', 'block'));
            $(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('#mainnav .main_nav_level_2_subsidiary');
          $("#menuChangeDealer").css('visibility','');
  
          // Fix URLs
          miniUrlFix.doPartialFix('#mainnav .ul_level_2:last');
          
          // Update MyMini Menu Link
          $('#mainnav .ul_level_2 a.mydealer').attr('href', miniSubsidiary.getUrl());
          
          // Update Sitemap
          updateSitemap();
          
          // Render Cufon
          if(getInternetExplorerVersion() < 0) {
            Cufon.replace("#mainnav .ul_level_2:last .submenu_text, #mainnav .ul_level_2:last .submenu_text_hover");
          }
  
          // Emulate menu behavior
          $('#mainnav .ul_level_2:last li').hover(
            function() {mainNavigation.setOpenTimer(this); },
            function() {mainNavigation.setCloseTimer(this);}
          );
        });  // get(module_navigation.html)
      }, function() { // errorCallback
	    $("#mainnav .ul_level_2:last").html($("#menuSelectDealer").html());
    
        // Update Sitemap
        updateSitemap();
      
        // Render Cufon
        if(getInternetExplorerVersion() < 0){
          Cufon.replace('#mainnav .ul_level_2:last a', {hover:true});
        }
        $('#mainnav .ul_level_2:last li').hover(
          function() {mainNavigation.setOpenTimer(this); },
          function() {mainNavigation.setCloseTimer(this);}
        );
	  }); // onSubsidiaryReady
    }
  };
 
  /**
   * 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 script 
      $.getScript(C2BScript, function() {    
          
        c2bDealerLocator.init(
        {
          "baseURL" : C2BBaseUrl,
          "brand" : "MINI",
          "key" : "MINI_DLO",
          "map" : "tmp_map", /* necessary since c2b bug TBD */
          "country" : topicCountry === '_master' ? 'DE' : topicCountry.toUpperCase(),
          "language" : topicCountry === '_master' ? '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);});
          }
        });
      }); // .getScript(C2BScript)
    }); // .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();
        var menuEntries = $("#mainnav .main_nav_level_1:last").children("ul").children();

        var i = 0;
        var len = menuEntries.length;
        // if there is more than one entry in the menu then ignore the first two entries
        if(len > 2) {
          i = 2;
        }
          
        for (; 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);
        }
    
		// 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() {

$('#headersearch').hide();	return;
  
  if(jQuery("#mainnav").length === 0) return;

  // Insert dealer into body tag 
  var selector = $("body");
      
  /* Bug: C2B expects google_maps parameter. Since we have this bug the following 3 lines are necessary. */
  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);  
  $("#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');
    });    
   
    // Update Dealer menu   
    if (!miniSubsidiary.isSubsidiarySelected()) {        
      $("#mainnav .ul_level_2:last").html($("#menuSelectDealer").html());
    
      // Update Sitemap
      updateSitemap();
      
      // Render Cufon
      if(getInternetExplorerVersion() < 0){
        Cufon.replace('#mainnav .ul_level_2:last a', {hover:true});
      }
      $('#mainnav .ul_level_2:last li').hover(
        function() {mainNavigation.setOpenTimer(this); },
        function() {mainNavigation.setCloseTimer(this);}
      );
    }
    if (miniSubsidiaryLayer.displayLayer()) {
      
      // Count visit and show layer
      //layerTimer = window.setInterval("miniSubsidiaryLayer.countVisit()", 100);
      miniSubsidiaryLayer.countVisit();
        
      // Hide if main menu is active
      /*$("#mainnav .main_nav_level_1").mouseover(function() {
        miniSubsidiaryLayer.hideLayer();
      });*/
    }
  
    // Update menu if a dealer is alread selected
    if (miniSubsidiary.isSubsidiarySelected()) {
      miniSubsidiaryLayer.updateMenu();
    }    
  });
}

}catch(e){alert('Error in m_dealer_layer: ' + e.description);}

// ---- m_dealer ----
try{  
var c2bSelectDealerText;
var c2bLocUnknownErr;
var c2bLocNotUniqueErr;
var c2bLocOutsideErr;
var c2bGeneralErr;
var distFVehicles;
var distTPartsService;
var distSMobileService;
var distGUsedCars;

var c2bMapImage;
var c2bSatelliteImage;
var c2bTerrainImage;

var C2BBaseUrl = 'https://c2b-services-i.bmw.com/c2b-localsearch/services/DealerLocatorService/';
var C2BScript = 'https://c2b-services-i.bmw.com/c2b-localsearch/static/dealerlocator/scripts/C2B_DealerLocator.js';

var distBranches = new Array();

function c2bDealerInit(mapImage, satelliteImage, terrainImage, selectDealerText, locUnknownErr, locNotUniqueErr, locOutsideErr,
  generalError, distF, distT, distS, distG, subsidiaryDir) {
    var dealerMap = new Object();
    
    c2bMapImage = mapImage;
    c2bSatelliteImage = satelliteImage;
    c2bTerrainImage = terrainImage;
    
    c2bSelectDealerText = selectDealerText;
    c2bLocUnknownErr = locUnknownErr;
    c2bLocNotUniqueErr = locNotUniqueErr;
    c2bLocOutsideErr = locOutsideErr;
    c2bGeneralErr = generalError;
    distBranches['F'] = distF;
    distBranches['T'] = distT;
    distBranches['S'] = distS;
    distBranches['G'] = distG;
    subsidiaryDir = miniSubsidiary.getDir(subsidiaryDir);
  
    miniSubsidiary.getCurrentLocation(function(data) {
      // Load c2b script 
      $.getScript(C2BScript, function(){
      
        c2bDealerLocator.init(
        {
          "baseURL" : C2BBaseUrl,
          "brand" : "MINI",
          "key" : "MINI_DLO",
          "country" : topicCountry === '_master' || topicCountry === '_master2' ? 'DE' : topicCountry.toUpperCase(),
          "language" : topicCountry === '_master' || topicCountry === '_master2'  ? 'de' : topicLanguage.toLowerCase(),
          "map" : "subsidiary_map",
          "maxDealerSubsidiary" : 200,
          "callbackHighlightDealer" : function( key )
          {
              c2bDealerLocator.highlightDealer(
              {
                  "key" : key,
                  "text" : getDealerInfoText( key )
              } );
              $("#info_window .c2bDlCSelectDealer").click(function() {               
                 miniSubsidiary.saveSubsidiary(key); 
              });
              Cufon.replace("#info_window_contents .c2bDlCSelectDealer");
          },
          "callbackDealerOffices" : updateDealers,
          "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'),
                  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]
              },
              "extInfoWindow" :
              {
                  "stylePrefix" : "info_window",
                  "beakOffset" : 18
              },
              "mapTypeDisplay" :
              {
                  "mapImage" : c2bMapImage,
                  "satelliteImage" : c2bSatelliteImage,
                  "terrainImage" : c2bTerrainImage
              }
          }
        },
        function()
        {
          jQuery("#search_spinner").show();
          if (data) { // geodata available
            // 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
              },
              updateDealers);
            }
            // Gecoord outside NSC (i.e geocoord is munich and nsc is mini.it)
            else {
              c2bDealerLocator.searchDealerSubsidiaries({"location": topicCountry}, 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);
          }
        } 
        ); // init 
        
      }); // .getScript(C2B)
    }); // .getCurrentLocation     
}

function dealerSearchSubmit()
{
  $("#subsidiary_result_overview").empty();
  $("#search_spinner").show();
  var comboValue = jQuery.trim(jQuery("#subsidiary_service").attr("value"));
  var distributionBranchCode = "";
  var service = "";
  
  if (comboValue ==  "F" || comboValue == "T" || comboValue == "G") {
    distributionBranchCode = comboValue;
  }
  if (comboValue == "1" || comboValue == "2" || comboValue == "3" || comboValue == "4") {
    service = comboValue;
  }
  
  c2bDealerLocator.searchDealerSubsidiaries(
  {
    "name" : jQuery.trim( jQuery("#subsidiary_name").attr( "value" ) ),
    "location" : jQuery.trim( jQuery("#subsidiary_town").attr( "value" ) ),
    "distributionBranchCode" : distributionBranchCode,
    "service" : service
  },
  updateDealers );
}


function updateDealers( dealers )
{
  updateGoogleMaps();
  if (dealers.length <= 0) return;

  $("#search_spinner").hide();
  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 ) {
      frag += "<div class='c2bDlCDistance'>" + dealer.distance.toFixed(1) + " km</div>";
    }
    frag += "<div class='c2bDlCStreet'>" + dealer.street + "</div>";
    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)' 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});
  }

}

function getDealerInfoText(key)
{
  var dealer = dealerMap[key];
  if (dealer) {
    var  result = new StringBuffer();
    
    var name = $('<p/>').attr('id', 'info_window_name').append($('<b/>'))
    
    result.append("<p style='line-height:17px'><b style='line-height:17px'>").append(dealer.name).append("</b><br />");
    result.append(dealer.street).append("<br />").append(dealer.zip).append(" ").append(dealer.city).append("");
    if (dealer.homepage && dealer.homepage.length > 0) {
      result.append("<br />&gt; <a href='").append(dealer.homepage).append("' style='color:#000000'>").append(dealer.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 (miniSubsidiary && miniSubsidiary.isSubsidiaryDefined(key)) {
      result.append("</p><br/><a class='c2bDlCSelectDealer' style='color:#000000;font-weight:bold' href='javascript:void(0)'");
      result.append(" onclick=javascript:miniSubsidiary.saveSubsidiary('").append(dealer.key).append("')> &gt; ");
      result.append(c2bSelectDealerText).append("</a>");
    }
    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 == "LOCATION_OUTSIDE_COUNTRY") {
    $(sel).html(p.text(c2bLocOutsideErr));
  }
  else {
    $(sel).html(p.text(c2bGeneralErr));
  }
}

function showDottedLine() {
  $('#dotted_line_top').css('visibility', 'visible');
  $('#dotted_line_bottom').css('visibility', 'visible');
}

function updateGoogleMaps() {
  console.log("updateGoogleMaps");
  // change 3D control
  $("#lmc3d img").attr("src", getRelativeWebsiteRootPath("_common/_img/01_framework/dealer/mapcontrols3d5_black.png"));
  // Set div with id lmc3d visible
  $('#lmc3d').show();
  // 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 };
  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;
        }
        //if (miniSubsidiary && miniSubsidiary.getUrl()) {
          //var loc = window.location.href;
          //var url = miniSubsidiary.getUrl() + "index.html";
          // if we are not allreay on dealer intro page
          //if (loc.indexOf(url) === -1 ) {
          //  window.location.href = 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) {
			  errorCallback();
              //logMsg("onSubsidiaryReady - Error: " + XMLHttpRequest.responseText);
              //logMsg("onSubsidiaryReady - textStatus: " + textStatus);
              //logMsg("onSubsidiaryReady - textStatus: " + errorThrown);
            },

            success: function(data) {
              logMsg("onSubsidiaryReady: success");
              subsidiary = data.subsidiary;
            dataLoading = false;
            executeCallbacks();
            }
            });
        }
      }
    }    
  };
  
  /**
   * 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) {
    return subsidiary ? subsidiary.requestservices[formType].available : 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];
    }
  };
  
  /**
   * 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;
  };
  
  /**
   * 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 = url.replace('\/de','');   
        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 = url.replace('\/de','');      
        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'), 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;
  }
}

// unload google maps to prevent memory leaks in IE
$(window).unload(function() {
  if(typeof GUnload == 'function') {
     GUnload();
  }  
});
}catch(e){alert('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 script asynchron
  $.getScript(C2BScript, function() {

    c2bDealerLocator.init(
    {
        "baseURL" : C2BBaseUrl,    
        "brand" : "MINI",
        "key" : "MINI_DLO",
        "country" : topicCountry === '_master' ? 'DE' : topicCountry.toUpperCase(),
        "language" : topicLanguage === 'en' ? '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]
            },
            "extInfoWindow" :
            {
                "stylePrefix" : "info_window",
                "beakOffset" : 18
            },
            "mapTypeDisplay" :
            {
                "mapImage" : mapImage,
                "satelliteImage" : satelliteImage,
                "terrainImage" : terrainImage
            }
        }
    },
    function() {
    c2bDealerLocator.searchDealerSubsidiary(
      'subsidiary_map',
      {
        "distributionPartnerId" : dpid,
        "outletId" : outletid,
        "radius" : 5
      },
      updateDealer);            
    });
  }); // .getScript()
}

/**
 * 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 = "<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>";
    }
    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){alert('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
  
  // 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: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';

  // 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');
  
  // Position all hint icons bg image
  $('.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();
  
  //set dealer id into form if available:  
  if (miniSubsidiary != null && miniSubsidiary.isSubsidiarySelected()) {
    miniSubsidiary.onSubsidiaryReady(function() {
      $("#element_req_partner input").attr("value", miniSubsidiary.getDistributionPartnerId());
      $("#element_req_outlet_id input").attr("value", miniSubsidiary.getOutletId());
      console.log('Set dealer information within form');
    }); 
  }
  
  
  setWishlist();  
  
  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);
  }
});

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');
  }
  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';
    
  var htmlInput = $('[name="'+inputName+'"]');
  var inputContainer = htmlInput.parents('.input_container');
  
  if(inputContainer.hasClass('error')){
    // 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){
  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);
  
  // fade in
  hintToDisplay.fadeIn();
  
  hideHintTimer = window.setTimeout("closeHint()", waitBeforeCloseErrorHint);
}

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){
  // 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
  $.ajax({
    url: formValidationUrl,
    data: formData,
    type: 'POST',
    dataType: 'xml',
    success: function(data, textStatus, XMLHttpRequest){
          
          // 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
            displayHint(htmlInput, errorText, true);
            
            /* 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');
              }
            });
            
          }
         }
    }
  );
}

/** 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);
      return true;
    }
  }
  return false;
}

/**
 *  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).children().removeClass('error');
    $(selector + " img").each(function(index) {
		var src = $(this).attr('src');
		src = src.replace('_error', '');
		$(this).attr('src', src);    
	});
}

/** 
  * 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]);
  }
  
  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) {			
          window.location = miniSubsidiary.getTeamContactUrl();
        }
        else {
          window.location = location.host + miniSubsidiary.getTeamContactUrl();
        }        
      }
    }); 
  }
  else {
    //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;
}

}catch(e){alert('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){alert('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( document.forms.length > 2 ) {
      document.forms[2][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( allowSend == true ){
     allowSend = false;
     if( cValue ){
       document.forms[2].elements['action_name'].value = cValue;
     }
     document.forms[2].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;
  }

}catch(e){alert('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.className.indexOf( newClassName )  < 0 ){
    objectRef.className += ' ' + newClassName;
  }
}
function objectRemoveCSSClass( objectID, oldClassName ){
  var objectRef = document.getElementById( 'element_' + objectID );
  if( 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 = document.forms[2][ 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 = document.forms[2][ 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' );
    document.forms[2][ 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 (document.forms[2][ depSelects[i] ].value != '') {
		  document.forms[2][ 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' );
    document.forms[2][ 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 ){
  document.forms[2].elements[ 'action_name' ].value = actionName;
  document.forms[2].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 = document.forms[2].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 document.forms[2].elements[ parentElement ] == 'object' ) {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
      if ( typeof document.forms[2].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, document.forms[2].elements[ controlElement ].value );
}
function handleDisplayReadonlyBehaviour ( parentElement, controlElement, imageId ) {
  //if ( document.forms[2].elements[ parentElement ].type == "hidden" && ( typeof document.getElementsByTagName( "div" )[ parentElement ] != 'undefined' ) ) {
	// NEU
	if ( document.forms[2].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 document.forms[2].elements[ parentElement ] == 'object' ) {
    if ( document.forms[2].elements[ parentElement ].type != 'hidden' ) {
      document.forms[2].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;
      }
    }
  }
  document.forms[2].elements[ parentElement ].readonly = false;
  setClassName( document.forms[2].elements[ parentElement ], 'input100' );
}
function handleVisibility ( parentElement, displayArray ) {
  if ( document.getElementById( "element_" + parentElement ) ) {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
      if ( typeof document.forms[2].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 document.forms[2].elements[ parentElement ] == 'object') {
    for ( var i = displayArray.length -1; i >= 0 ; i-- ) {
      if (typeof document.forms[2].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 document.forms[2] != 'undefined' ){
      var currentDependant;
      for ( currentDependant in dependingSelects ) {
        for( var i=0; i < dependingSelects[ currentDependant ].length; i++ ){
          if( ( typeof window[ "fe_" + dependingSelects[ currentDependant ][ i ] ] != "undefined" ) && document.forms[2][ currentDependant ] && document.forms[2][ 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){alert('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: 12000,

		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]);
			}

			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){
			var start = html.indexOf("<body>") + "<body>".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;
			
			teaser.showTeaserInSlot(this.slot, this.teaserEntry);
		},

		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);
			teaser.stopTeaserAutoChangeTimer();
		},
		
		showBigTeaserDelayed: function(){
			var bigDiv = $(this).siblings('.teaser_big');			
			var leftPos = ($(this).width() / 2) - (bigDiv.outerWidth() / 2);
			var topPos = - bigDiv.outerHeight() - 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);
		},

		hideAllBigTeaser: function(){
			jQuery('.teaser_big').css('display', 'none');

			teaser.startTeaserAutoChangeTimer();
		},

		hideBigTeaser: function(){
			$(this).css('display', 'none');

			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;
				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 = '';
							
							// 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');
					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
			};

			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;
					}

					ts.mainStage[i].flashUrl = t.swf;
					ts.mainStage[i].flashXmlUrl = t.xml;
				}
			}

			teaser.teaserSelection = ts;

			teaser.refreshMainStageTeaser();
			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)  
				window.location.href = miniUrlFix.fixAbsoluteUrl(select_dealer_page);
			else
				miniSubsidiary.onSubsidiaryReady(function() {
					window.location.href = miniSubsidiary.getUrl();
				}); 
		},
		redirectToDealerUsedCarsOrNSCUsedCars : function ( used_cars_topic ){
			if (miniSubsidiary.isSubsidiarySelected() == false)  
				window.location.href = miniUrlFix.fixAbsoluteUrl('/' + used_cars_topic + '/');
			else{
				miniSubsidiary.onSubsidiaryReady(function() {
					if (miniSubsidiary.hasUsedCarsBranch())
						window.location.href = miniUrlFix.fixAbsoluteUrl(miniSubsidiary.getUrl() + used_cars_topic + '/');
					else
						window.location.href = miniUrlFix.fixAbsoluteUrl('/' + used_cars_topic + '/');
					}
				);
			}
		}
	};

	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){alert('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){alert('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) {
	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);
			});
			//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);
}

function buildIFrame(uuid, frameId, base_url, height, width, position_left, target_type, back_link_prefix, back_link_default, automatic_resize) {  
	if (position_left) {
		iframe_width='100%';
		$('#iframe_container_' + uuid).css('position', 'absolute');
		$('#iframe_container_' + uuid).css('left', '0px');
		$('#iframe_container_' + uuid).css('width', '100%');		
		$('#iframe_container_' + uuid).addClass('applet_content');
	}
	
	$('#iframe_container_' + uuid).append("<iframe allowtransparency='true' scrolling='no' id=" + frameId + " name=" + frameId + " frameborder='0' width='" + width +"' height='" + height+ "' ></iframe>");
	
	var frameUrl = getCompleteUrl(base_url, back_link_prefix, back_link_default);

	<!-- iframe attributes can not be set using css -->
	$('#iframe_container_' + uuid + "> iframe").attr('src', frameUrl);
	$('#iframe_container_' + uuid + "> iframe").attr('scrolling', 'no');
	
	if (automatic_resize) {
		//need to be distinct ids
		iframeids[iframeids.length] = frameId;
		
		$(document).ready(
			//potentially called multiple times?
				function() {
					resizeCaller();
		}); 
	}
}

/** 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],				
				["process", null],
				["action", "dlo.selectDistributionPartner"],
				["distributionPartnerNumber", null],
				["outletId", null],
				["action", "vco.selectConfiguration"],
				["series", null],
				["body", null],
				["model", null],
				["features", null],
				["initTarget", null],
				["backLinkUrl", null],
				["process", 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) 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('=');      
      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 + " ") + 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) {
	var paramString = '&';
	if (base_url.indexOf('?') == -1) {
		paramString = '?';
	}
	for (var i = 0; i < params.length; i++) {
		thisParam = params[i];
		base_url += paramString + thisParam[0] + "=" + thisParam[1];
		paramString = '&';
    }
    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){

	var vars = getPageUrlVars();
	vars = addBackLinkName(vars, back_link_prefix, back_link_default);
	vars = addBackLinkUrl(vars);
	
	//merge base url with page vars:
	var unordered_url = buildUrlFromParams(base_url, vars);
	    
	return getOrderedUrl(unordered_url);
  }
}catch(e){alert('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){alert('Error in m_service_table: ' + e.description);}

// ---- m_galleryview ----
try{
$(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') ;
				}
			});
		}
	}
);

/* 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);}



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 options =
			{
				scrollingSpeed: 3,
				mouseDownSpeedBooster: 3, 
				//autoScroll: "onstart", 
				autoScrollDirection: "endlessloop", 
				autoScrollSpeed: 2, 
				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;
}

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

// ---- m_service ----
try{ function getDealerPrice(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)';
	// 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/offline_index.html");
	 }
	 location.href = url;
}
function openSubsidiaryServiceRequest(category) {
	var url = getRelativeMasterPath("contact/service/index.jsp?service_category_1=" + category);
	location.href = url;
}
}catch(e){alert('Error in m_service: ' + e.description);}

// ---- m_live_edit ----
try{ $(window).load(
	function(){
		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));
				hideAllLE();
			}
			
			// Add hover effect on ceEditIconLayout
			$('.ceEditIconLayout').hover(
				function(){
					$(this).parent().fadeTo('fast',0.5);
				},
				function(){				
					$(this).parent().fadeTo('fast', 1);
				}
			);
		}
	}
);

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();
}

function hideAllLE(){
	$('.ceEditIconLayout').hide();
	$('.ceEditIconLayout a').hide();
	
	// Hide all <a> with and oid attribute
	$('a[oid]').hide();
}
}catch(e){alert('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'];

var pleaseSelect = '';
var details = '';
var configure = '';
var mcObjectModelData;

function initModelComparisonApplication(){
	// 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;
			
			if (type!=null&&body!=null)
				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){alert('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){alert('Error in inputfield_replacements: ' + e.description);}

// ---- subsidiary_list ----
try{ var subsidiaries=new Array('30636_1','02429_2','02813_1','04582_1','32778_2','30637_2','22406_1','30637_1','03788_1','00083_2','00083_1','04107_1','34007_1');
}catch(e){alert('Error in subsidiary_list: ' + 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){alert('Error in m_special_offers: ' + e.description);}

// ---- contact_form_tracking ----
try{ var form_tracking = {};
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/quote/index.html')] = 'rfi';
form_tracking[miniUrlFix.fixAbsoluteUrl('/contact/quote/index.html')] = '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';

}catch(e){alert('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){alert('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.uri = window.location.pathname;
	
	_this.dealerId = '';
		
	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.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';
	
	// 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};
	
	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]);
		}
		else{
			// Webtrends Tracking request has occured already and no write only --> Track async.
			_this.tag.dcsMultiTrack(key1, value1);
		}
	}
	
	function _getLeadOrSuccessEvent(formName){
		return _this.formKeyMapping[formName];
	}
	
	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 formConfig = _getLeadOrSuccessEvent($('input[name="formName"]').val());
		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);
		}
	};

	// This function is called when the user selects a dealer
	this.dealerSelected = function(dealer_id){
		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;
		_writeCookie(p);
		_this.dealerId = dealer_id;
		
		_this.successEventTracking('DE_Select', '', dealer_id);
	};
	
	this.userActionTracking = function(event_type, event_params, writeOnly){
		var event_category = 'UA';
		var se_value = event_category + _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))
					se_value += _this.SEPERATOR + value;
			}
		}
		
		// Track DCSext.<event_category>
		_dcsMultiTrack('DCSext.'+event_category, se_value, writeOnly);
	};
	
	// This method can be called from outside this class to perform lead event tracking
	this.leadEventTracking = function(event_type, category, purchase_probability, user_logged_in, dealer_id, writeOnly){
		var wt_pi_value = 'LE';
		var contact_me = document.location.pathname.indexOf('/index2.html') > 0;
		
		wt_pi_value += _this.SEPERATOR + (_exists(event_type) ? event_type : '');
		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');

		// Track WT.pi
		_dcsMultiTrack('WT.pi', wt_pi_value, writeOnly);
		
		// Perform user segmentation
		_userSegmentation();
		
		// Perform quantitative analysis
		_quantitativeAnalysis('LE');
	}
	
	// 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){
		var wt_pi_value = 'SE';
		var contact_me = document.location.pathname.indexOf('/index2.html') > 0;
		
		wt_pi_value += _this.SEPERATOR + (_exists(event_type) ? event_type : '');
		wt_pi_value += _this.SEPERATOR + (_exists(category) ? category : 'nc');
		wt_pi_value += _this.SEPERATOR + (contact_me ? 'CY' : 'CN');
		wt_pi_value += _this.SEPERATOR + (_exists(dealer_id) ? dealer_id : 'no_DID');
		
		// Track WT.pi
		_dcsMultiTrack('WT.pi', wt_pi_value, writeOnly);
		
		// Perform user segmentation and quantitative analysis
		_userSegmentation();
		_quantitativeAnalysis('SE');
	};
	
	// This function performs the user segmentation.
	function _userSegmentation (){
		var lastWTSeg_1 = _parseCookie()['WT.seg_1'];
		var newWTSeg_1 = _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});
			}
		}
	};

	// This method will be executed before the WebTrends tracking occurs
	this.beforeWebTrendsTracking = function(){
		// Wrap native webtrends tracking methods like 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;
		}
		
		// 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);

			if(!isInternalReferrer){
				// User is not visiting this page from a page within this domain
				this.navigationTracking('div_direct', this.referrer, this.uri);
			}
		}
		
		// Check if we are on a form confirmation page
		if($('#form_success_page').length>0){
			// We are on a form confirmation page. Check the type of event 
			var event = _getLeadOrSuccessEvent($('input[name="formName"]').val());
			var isLeadEvent = _isLeadEvent(event);
			var isSuccessEvent = _isSuccessEvent(event);
			var category = '';
			var event_type = '';
			var dealer_id = $('input[name="d_id"]').val();
			
			if(isSuccessEvent || isLeadEvent){
				event_type = event.event_key;
				category = $('input[name="category"]').val();
			}
			
			if(isLeadEvent){
				// Perform Lead Event Tracking
				var purchase_probability = $('input[name="pp"]').val();
				
				// Rewrite purchase probability (undefined-> ignore it, 9999->PPnone, 1->PP1, 3->PP3, etc...)
				if(purchase_probability !== 'undefined' && purchase_probability !== '0' && purchase_probability !== ''){
					if(purchase_probability === '9999')
						purchase_probability = 'PPnone';
					else
						purchase_probability = 'PP'+purchase_probability;
				}
				else{
					purchase_probability = '';
				}
				var user_logged_in = _isUserLoggedIn();
				_this.leadEventTracking(event_type, category, purchase_probability, user_logged_in, 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]);
				}

				// Perform Success Event Tracking
				_this.successEventTracking(event_type, category, dealer_id);
			}
		}
	};
	
	// 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
	function _quantitativeAnalysis(event_type){
		var now = new Date();
		
		var paramKey;
		var paramValue;

		var customCookieValue = _parseCookie(customCookieName);
		
		if(event_type === 'LE'){
			paramKey = 'WT.seg_2';
		}
		else if(event_type === 'SE'){
			paramKey = 'WT.seg_3';
		}
		
		// Get current param value
		paramValue = customCookieValue[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();
	};
	
	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;
	}

	// This function is a wrapper to the original dcsDownload method from the Webtrends api
	this.dcsDownloadWrapper = function(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);
		}
		
		// Call native webtrends download method
		_this.tag._dcsDownload(event);
	};
	
	// This function is a wrapper to the original dcsMailTo method from the Webtrends api
	this.dcsMailToWrapper = function(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);
	};
	
	// This function is a wrapper to the original dcsOffsite method from the Webtrends api
	this.dcsOffsiteWrapper = function(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'];
				site = _this.sharingMapping[site];

				_this.userActionTracking('SI_' + site, [_this.getPageContentGroup()]);
			}
		}

		// Call native webtrends offsite method
		_this.tag._dcsOffsite(event);
	};
	
	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;
	};
	
	this.handleLinkClickEvent = function(htmlLinkElement){
		// Read data-tracking parameter
		var link = $(htmlLinkElement);
		var targetpage = htmlLinkElement.pathname;
		
		if(targetpage.indexOf('/') !== 0){
			targetpage = '/' + targetpage;
		}
		
		var dataTracking = _parseQueryValue(link.attr('data-tracking'));
		dataTracking['targetpage'] = targetpage;
		_this.handleClickEvent2(dataTracking);
	};
	
	this.handleClickEvent = function(targetpage, dataTracking){
		dataTracking['targetpage'] = targetpage;
		_this.handleClickEvent2(dataTracking);
	};
	
	// This method will be executed to handle click on any <a> on the page
	this.handleClickEvent2 = function(dataTracking){
		var targetpage = dataTracking['targetpage'];
		var linktype = dataTracking['linktype'];
		var action = dataTracking['action'];
		var wt_dl = dataTracking['wt_dl'];
		var dcsuri = this.uri;
		
		if(_exists(dataTracking['dcsuri'])){
			dcsuri = dataTracking['dcsuri'];
		}
		
		if(_exists(wt_dl)){
			// Track WT.dl
			_dcsMultiTrack('WT.dl', wt_dl);
		}

		if(_exists(action)){
			// Handle custom action
			if(action==='contact_dealer'){
				dataTracking['oncam'] = '';
				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, dcsuri, 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 formConfig = _getLeadOrSuccessEvent(form_tracking[targetpage]);
		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 === baseConfiguratorLink){
			oncam = 'VCO';
		}
		// - Or the user has clicked a special offer teaser link
		else if(navigationElement === 'TC_SPO' || navigationElement === 'TA_SPO'){
			oncam = 'SPO_' + (isDealerArea ? ('DE_'+miniSubsidiary.getCookieValue()) : 'NSC');
		}
		// - Or the user has clicked a dealer teaser in the teaser area from within NSC
		else if(!isDealerArea && navigationElement === 'TA_DET'){
			oncam = 'NSC_DE_'+miniSubsidiary.getCookieValue();
		}
		
		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(){
		// 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 = ';';
		
		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){
			// 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':linkpage, 'tp':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){
			writeCookie = true;
			// Write value only if it exists. Escape values to write
			if(_exists(currentValue[k]))
				cookieValue += k+"=" + escape(currentValue[k]) + "&";
		}
		
		if(writeCookie){
			// Write cookie
			$.cookie(name, cookieValue, cookieOptions);
		}
	};
	
	/*
		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;
	};
	
	// Trigger event for handlers waiting for mini tracking object to be ready
	$(window).trigger('minitrackingready', [_this]);
}
}catch(e){alert('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){alert('Error in m_perso_events: ' + e.description);}

// ---- _new_phase_2_js ----
try{ /*
 ### 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 #*/

var taf;
var taf_width = 328;
var url_prefix = getStage() === 'EDIT' ? '' : '/sticky_3kDk44d';
var taf_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/_tell_a_friend/tell_a_friend.html');
var taf_send_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/contact/sendmail/taf_sendmail.jsp');
var taf_captcha_url = miniUrlFix.fixAbsoluteUrl('/_common/captcha/captcha.jsp?p=TAF');
var hsi;

function loadTellAFriendLayer(){
	taf = $('#tell_a_friend_layer');
	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);
		});
		
		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();
			setPageVars();
			showTellAFriendLayer();
		});
	}
	else{
		setPageVars();
		showTellAFriendLayer();
	}
}

function setPageVars(){
	// Set url from current page in hidden input field.
	$('#tell_a_friend_layer input[name="ref_url"]').val(window.location.href);
	
	// Set title from current page in hidden input field.
	var title = $('#breadcrumb .current span').text();
	$('#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 newRcpt = taf_rcpts_last.clone();
	// Reset values
	newRcpt.find('input').val('');
	newRcpt.insertAfter(taf_rcpts_last);
}

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(){
	taf.hide();
	greyLayer_hide();
}

function showTellAFriendLayer(noReset){
	// 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 on
		var taf_rcpts = $('.taf_rcpts_data');
		for(var i=1; i<taf_rcpts.length; i++){
			$(taf_rcpts[i]).remove();
		}
	}
	
	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 showResponse(responseXML , statusText, xhr, $form){
	var errors = $('result[ok="false"]', responseXML);
	taf.find('div.taf_standard, div.taf_content').hide();
	
	if(errors.length>0){
		// There are errors --> show error header
		taf.find('.taf_error').show();
		// Mark error fields
	}
	else{
		// No errors --> Show success header
		taf.find('.taf_ok').show();
	}
} 

function sendTellAFriend(){
	var options = {
        success: showResponse,
		dataType: 'xml',
		type: 'POST',
        url: taf_send_url
    };
 
    // bind form using 'ajaxForm' 
    $('#tell_a_friend_form').ajaxSubmit(options); 
}

$(document).ready(
	function(){
		if(typeof getQueryParams()['taf'] !== 'undefined'){
			loadTellAFriendLayer();
		}
	}
);
var login_layer;
var login_layer_width = 367;
var url_prefix = getStage() === 'EDIT' ? '' : '/sticky_3kDk44d';

var login_action_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/login.silo?country='+topicCountry+'&language='+topicLanguage);
var login_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/contact/login/login_layer.html');

function loadLoginLayer(){
	login_layer = $('#login_layer');
	greyLayer_show();
	
	if(login_layer.length===0){
		$('body').append($('<div/>').attr('id','login_layer').hide());
		login_layer = $('#login_layer');
		
		// Defined in m_tell_a_friend.js
		hsi = $('.header_search_icons');
		
		login_layer.load(login_url+' #login_box', function(){
			Cufon.replace('#login_box .teaser_component_h15');
			Cufon.replace('#login_box .register_button a, #login_box .login_button a', {leftOffset: 1, fixLineHeight: true});
			Cufon.replace('#login_box .teaser_component_link a', { hover: true });
			
			// Replace checkboxes
			$('#login_box .login_remember_me').customInput();
			showLoginLayer();
		});
	}
	else{
		showLoginLayer();
	}
}

function closeLoginLayer(){
	login_layer.hide();
	greyLayer_hide();
}

function showLoginLayer(noReset){
	// Reset all login input fields fields
	if(typeof noReset === 'undefined' || noReset===false){
		login_layer.find('#login_box input[type="text"]').val('');
		login_layer.find('#login_box input[type="password"]').val('');
		login_layer.find('#login_box input[type="checkbox"]').attr("checked", false).trigger('updateState');
	}
	
	login_layer.show();
}

function showResponse(responseXML , statusText, xhr, $form){
	var errors = $('result[ok="false"]', responseXML);
} 

function login(){
	var options = {
        success: showResponse,
		dataType: 'xml',
		type: 'POST',
        url: login_action_url
    };
 
    // bind form using 'ajaxForm' 
    $('#login_form').ajaxSubmit(options); 
}

$(document).ready(
	function(){
		if(typeof getQueryParams()['login'] !== 'undefined'){
			loadLoginLayer();
		}
	}
);

}catch(e){alert('Error in _new_phase_2_js: ' + e.description);}

// ---- m_tell_a_friend ----
try{ var taf;
var taf_width = 328;
var url_prefix = getStage() === 'EDIT' ? '' : '/sticky_3kDk44d';
var taf_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/_tell_a_friend/tell_a_friend.html');
var taf_send_url = miniUrlFix.fixAbsoluteUrl(url_prefix+'/contact/sendmail/taf_sendmail.jsp');
var taf_captcha_url = miniUrlFix.fixAbsoluteUrl('/_common/captcha/captcha.jsp?p=TAF');
var hsi;

function loadTellAFriendLayer(){
	taf = $('#tell_a_friend_layer');
	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);
		});
		
		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();
			setPageVars();
			showTellAFriendLayer();
		});
	}
	else{
		setPageVars();
		showTellAFriendLayer();
	}
}

function setPageVars(){
	// Set url from current page in hidden input field.
	$('#tell_a_friend_layer input[name="ref_url"]').val(window.location.href);
	
	// Set title from current page in hidden input field.
	var title = $('#breadcrumb .current span').text();
	$('#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 newRcpt = taf_rcpts_last.clone();
	// Reset values
	newRcpt.find('input').val('');
	newRcpt.insertAfter(taf_rcpts_last);
}

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(){
	taf.hide();
	greyLayer_hide();
}

function showTellAFriendLayer(noReset){
	// 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 on
		var taf_rcpts = $('.taf_rcpts_data');
		for(var i=1; i<taf_rcpts.length; i++){
			$(taf_rcpts[i]).remove();
		}
	}
	
	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 showResponse(responseXML , statusText, xhr, $form){
	var errors = $('result[ok="false"]', responseXML);
	taf.find('div.taf_standard, div.taf_content').hide();
	
	if(errors.length>0){
		// There are errors --> show error header
		taf.find('.taf_error').show();
		// Mark error fields
	}
	else{
		// No errors --> Show success header
		taf.find('.taf_ok').show();
	}
} 

function sendTellAFriend(){
	var options = {
        success: showResponse,
		dataType: 'xml',
		type: 'POST',
        url: taf_send_url
    };
 
    // bind form using 'ajaxForm' 
    $('#tell_a_friend_form').ajaxSubmit(options); 
}

$(document).ready(
	function(){
		if(typeof getQueryParams()['taf'] !== 'undefined'){
			loadTellAFriendLayer();
		}
	}
);
}catch(e){alert('Error in m_tell_a_friend: ' + 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){alert('Error in jquery.url: ' + e.description);}

function NoWebTrends() {
	var ret = {
		dcsGetId : function() {}, 
		dcsCollect : function() {}, 
		evi :  new function() { this.cookie = "" ;},
		DCS : new function() { this.dcsuri = ""; }
	}
	return ret;
}

