<script type="text/javascript">
(function (cjs, an) {

var p; // shortcut to reference prototypes
var lib={};var ss={};var img={};
lib.webFontTxtInst = {}; 
var loadedTypekitCount = 0;
var loadedGoogleCount = 0;
var gFontsUpdateCacheList = [];
var tFontsUpdateCacheList = [];
lib.ssMetadata = [
		{name:"kseal_engine_components_new_atlas_", frames: [[0,1522,859,464],[0,725,873,795],[1449,1280,335,119],[1117,374,808,246],[1438,1612,479,423],[1449,622,505,245],[0,0,1115,723],[1449,1091,384,187],[1117,0,791,372],[861,1612,575,422],[875,725,572,885],[1449,869,350,220],[1786,1280,164,114],[1801,869,191,177]]}
];



lib.updateListCache = function (cacheList) {		
	for(var i = 0; i < cacheList.length; i++) {		
		if(cacheList[i].cacheCanvas)		
			cacheList[i].updateCache();		
	}		
};		

lib.addElementsToCache = function (textInst, cacheList) {		
	var cur = textInst;		
	while(cur != null && cur != exportRoot) {		
		if(cacheList.indexOf(cur) != -1)		
			break;		ro
		cur = cur.parent;		
	}		
	if(cur != exportRoot) {		
		var cur2 = textInst;		
		var index = cacheList.indexOf(cur);		
		while(cur2 != null && cur2 != cur) {		
			cacheList.splice(index, 0, cur2);		
			cur2 = cur2.parent;		
			index++;		
		}		
	}		
	else {		
		cur = textInst;		
		while(cur != null && cur != exportRoot) {		
			cacheList.push(cur);		
			cur = cur.parent;		
		}		
	}		
};		

lib.gfontAvailable = function(family, totalGoogleCount) {		
	lib.properties.webfonts[family] = true;		
	var txtInst = lib.webFontTxtInst && lib.webFontTxtInst[family] || [];		
	for(var f = 0; f < txtInst.length; ++f)		
		lib.addElementsToCache(txtInst[f], gFontsUpdateCacheList);		

	loadedGoogleCount++;		
	if(loadedGoogleCount == totalGoogleCount) {		
		lib.updateListCache(gFontsUpdateCacheList);		
	}		
};		

lib.tfontAvailable = function(family, totalTypekitCount) {		
	lib.properties.webfonts[family] = true;		
	var txtInst = lib.webFontTxtInst && lib.webFontTxtInst[family] || [];		
	for(var f = 0; f < txtInst.length; ++f)		
		lib.addElementsToCache(txtInst[f], tFontsUpdateCacheList);		

	loadedTypekitCount++;		
	if(loadedTypekitCount == totalTypekitCount) {		
		lib.updateListCache(tFontsUpdateCacheList);		
	}		
};
// symbols:



(lib.CylinderHead = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(0);
}).prototype = p = new cjs.Sprite();



(lib.EngineBlock = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(1);
}).prototype = p = new cjs.Sprite();



(lib.FreezePlug = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(2);
}).prototype = p = new cjs.Sprite();



(lib.HeadGasket = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(3);
}).prototype = p = new cjs.Sprite();



(lib.HeaterCore = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(4);
}).prototype = p = new cjs.Sprite();



(lib.HoseHeaterCore = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(5);
}).prototype = p = new cjs.Sprite();



(lib.HoseLower = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(6);
}).prototype = p = new cjs.Sprite();



(lib.HoseReturn = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(7);
}).prototype = p = new cjs.Sprite();



(lib.HoseWaterPump = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(8);
}).prototype = p = new cjs.Sprite();



(lib.IntakeManifold = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(9);
}).prototype = p = new cjs.Sprite();



(lib.Radiator = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(10);
}).prototype = p = new cjs.Sprite();



(lib.Reservoir = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(11);
}).prototype = p = new cjs.Sprite();



(lib.Thermostat = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(12);
}).prototype = p = new cjs.Sprite();



(lib.WaterPump = function() {
	this.spriteSheet = ss["kseal_engine_components_new_atlas_"];
	this.gotoAndStop(13);
}).prototype = p = new cjs.Sprite();
// helper functions:

function mc_symbol_clone() {
	var clone = this._cloneProps(new this.constructor(this.mode, this.startPosition, this.loop));
	clone.gotoAndStop(this.currentFrame);
	clone.paused = this.paused;
	clone.framerate = this.framerate;
	return clone;
}

function getMCSymbolPrototype(symbol, nominalBounds, frameBounds) {
	var prototype = cjs.extend(symbol, cjs.MovieClip);
	prototype.clone = mc_symbol_clone;
	prototype.nominalBounds = nominalBounds;
	prototype.frameBounds = frameBounds;
	return prototype;
	}


(lib.mcHoseWaterPump = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseWaterPump();
	this.instance.parent = this;
	this.instance.setTransform(-197.7,-93,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseWaterPump, new cjs.Rectangle(-197.7,-93,395.5,186), null);


(lib.mcHoseReturn = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseReturn();
	this.instance.parent = this;
	this.instance.setTransform(-96,-46.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseReturn, new cjs.Rectangle(-96,-46.7,192,93.5), null);


(lib.mcHoseLower = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseLower();
	this.instance.parent = this;
	this.instance.setTransform(-278.7,-180.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseLower, new cjs.Rectangle(-278.7,-180.7,557.5,361.5), null);


(lib.mcHoseHeaterCore = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.HoseHeaterCore();
	this.instance.parent = this;
	this.instance.setTransform(-126.2,-61.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHoseHeaterCore, new cjs.Rectangle(-126.2,-61.2,252.5,122.5), null);


(lib.mcDot = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// dot
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#F56723").s().p("AhBBCQgbgbAAgnQAAgmAbgbQAcgbAlAAQAmAAAcAbQAbAbAAAmQAAAngbAbQgcAbgmAAQglAAgcgbg");

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(72));

	// ring 1
	this.shape_1 = new cjs.Shape();
	this.shape_1.graphics.f().s("#F56723").ss(2,1,1).p("ABQAAQAAAdgSAWQgDADgCADQgYAXghAAQggAAgYgXQgCgDgDgDQgBgBgBgBQgQgVAAgcQAAgbAQgVQAEgEADgEQAYgXAgAAQAhAAAYAXQAXAYAAAgg");

	this.shape_2 = new cjs.Shape();
	this.shape_2.graphics.f().s("rgba(245,103,35,0.965)").ss(2,1,1).p("AhRAAQAAgbARgWQAIgKACgBQAXgVAfAAQAkACAWAWQAYAYAAAhQgBAegRAWQgDADgDADQgZAYghAAQAAAAAAAAQgggBgYgWQgBAAAAgBQgDgDgDgDQgBgBAAgBQgRgWAAgcg");

	this.shape_3 = new cjs.Shape();
	this.shape_3.graphics.f().s("rgba(245,103,35,0.929)").ss(1.9,1,1).p("AhTAAQAAgcARgWQAJgKABgBQAYgWAgAAQAkABAYAXQAYAZAAAiQAAAfgSAWQgDADgDAEQgaAYgiAAQAAAAAAAAQghAAgZgXQAAgBgBAAQgDgEgDgDQgBgBAAAAQgRgXAAgdg");

	this.shape_4 = new cjs.Shape();
	this.shape_4.graphics.f().s("rgba(245,103,35,0.898)").ss(1.9,1,1).p("AhVAAQAAgdARgWQAJgKABgBQAZgXAhAAQAlABAYAYQAZAaAAAiQAAAfgTAXQgDAEgDADQgaAZgiAAQgBAAAAAAQgiAAgZgYQgBAAgBgBQgCgDgDgDQgBgBgBgBQgRgXAAgeg");

	this.shape_5 = new cjs.Shape();
	this.shape_5.graphics.f().s("rgba(245,103,35,0.863)").ss(1.8,1,1).p("AhXAAQAAgeARgXQAJgKACgBQAZgXAiAAQAmABAZAYQAZAbAAAjQAAAggTAYQgDADgDADQgbAagjAAQgBAAAAAAQgjAAgagYQgBgBAAgBQgDgDgDgDQgBgBgBgBQgRgXAAgfg");

	this.shape_6 = new cjs.Shape();
	this.shape_6.graphics.f().s("rgba(245,103,35,0.827)").ss(1.8,1,1).p("AhZAAQAAgeASgYQAJgKABgBQAagYAiAAQAoABAZAZQAaAbAAAkQAAAhgTAYQgDADgDAEQgcAagkAAQgBAAAAAAQgkAAgagZQgBgBgBAAQgDgEgDgDQgBgBAAgBQgSgYAAgfg");

	this.shape_7 = new cjs.Shape();
	this.shape_7.graphics.f().s("rgba(245,103,35,0.792)").ss(1.7,1,1).p("AhcAAQAAgfATgYQAJgLACgBQAagYAjgBQApACAaAZQAaAcABAlQgBAhgTAZQgEAEgDADQgcAbglABQgBAAAAAAQglgBgbgZQgBgBAAgBQgDgDgDgDQgBgCgBAAQgTgZAAggg");

	this.shape_8 = new cjs.Shape();
	this.shape_8.graphics.f().s("rgba(245,103,35,0.757)").ss(1.7,1,1).p("AheAAQAAggATgYQAJgLACgBQAbgZAkgBQApABAbAbQAcAcAAAmQgBAigUAZQgDAEgDAEQgdAbgmABQgBAAAAAAQglgBgcgaQgBgBgBAAQgDgEgDgDQgBgBgBgBQgTgZAAghg");

	this.shape_9 = new cjs.Shape();
	this.shape_9.graphics.f().s("rgba(245,103,35,0.725)").ss(1.6,1,1).p("AhgAAQAAggATgaQAKgKABgCQAcgZAlgBQAqABAbAbQAdAdAAAnQgBAjgUAaQgDAEgEADQgdAdgnAAQgBAAAAAAQgmgBgdgbQgBAAgBgBQgDgDgDgEQgBgBgBgBQgTgZAAgig");

	this.shape_10 = new cjs.Shape();
	this.shape_10.graphics.f().s("rgba(245,103,35,0.69)").ss(1.6,1,1).p("AhiAAQAAghAUgaQAJgLACgBQAcgaAlgBQAsABAcAbQAdAeAAAoQAAAkgVAaQgEAEgDAEQgeAdgoAAQgBAAAAAAQgnAAgegcQAAgBgBgBQgDgDgEgEQgBgBAAgBQgUgaAAgig");

	this.shape_11 = new cjs.Shape();
	this.shape_11.graphics.f().s("rgba(245,103,35,0.655)").ss(1.5,1,1).p("AhkAAQAAgiAUgaQAKgLABgBQAdgbAmgBQAtABAcAcQAeAeAAApQAAAkgWAbQgDAEgEAEQgeAegpAAQgBAAAAAAQgoAAgegdQgBAAgBgBQgDgEgDgDQgBgBgBgBQgUgbAAgjg");

	this.shape_12 = new cjs.Shape();
	this.shape_12.graphics.f().s("rgba(245,103,35,0.62)").ss(1.5,1,1).p("AhmAAQAAgjAUgaQAKgLACgCQAdgbAngBQAuABAdAcQAeAfAAAqQAAAlgWAbQgDAFgEADQgfAfgqAAQAAAAgBAAQgpAAgfgdQgBgBAAgBQgEgDgDgEQgBgBgBgBQgUgbAAgkg");

	this.shape_13 = new cjs.Shape();
	this.shape_13.graphics.f().s("rgba(245,103,35,0.584)").ss(1.4,1,1).p("AhoAAQAAgjAVgcQAJgLACgBQAegcAngBQAvAAAeAeQAfAfAAArQAAAmgWAcQgEAEgDAEQggAfgrAAQAAAAgBAAQgqAAgfgeQgBgBgBAAQgDgEgEgEQgBgBAAgBQgVgbAAglg");

	this.shape_14 = new cjs.Shape();
	this.shape_14.graphics.f().s("rgba(245,103,35,0.553)").ss(1.4,1,1).p("AhrAAQAAgkAWgcQAKgLABgCQAfgcAogCQAwABAfAeQAfAgABAsQgBAmgWAdQgEAEgEAEQggAggrABQgBAAgBAAQgrgBgggeQgBgBgBgBQgDgEgDgDQgBgCgBgBQgWgcAAglg");

	this.shape_15 = new cjs.Shape();
	this.shape_15.graphics.f().s("rgba(245,103,35,0.518)").ss(1.3,1,1).p("AhtAAQAAglAWgcQAKgMACgBQAfgdApgCQAxABAfAfQAgAgABAtQgBAngXAdQgDAFgEAEQghAggsABQgBAAgBAAQgsgBgggfQgBgBgBgBQgEgDgDgEQgBgBgBgBQgWgdAAgmg");

	this.shape_16 = new cjs.Shape();
	this.shape_16.graphics.f().s("rgba(245,103,35,0.482)").ss(1.2,1,1).p("AhvAAQAAglAWgdQAKgMACgBQAggeAqgCQAyABAgAfQAhAiAAAtQAAAogYAdQgEAFgEAEQgiAhgsABQgBAAgBAAQgsAAgiggQgBgBgBgBQgDgEgEgEQgBgBgBgBQgWgdAAgng");

	this.shape_17 = new cjs.Shape();
	this.shape_17.graphics.f().s("rgba(245,103,35,0.447)").ss(1.2,1,1).p("AhxAAQAAgmAXgeQAKgLACgCQAggeAqgCQA0ABAgAgQAiAiAAAuQAAApgYAeQgEAEgEAFQgjAhgtABQgBAAgBAAQgtAAgighQgBgBgBgBQgEgEgEgEQgBgBAAgBQgXgdAAgog");

	this.shape_18 = new cjs.Shape();
	this.shape_18.graphics.f().s("rgba(245,103,35,0.416)").ss(1.1,1,1).p("AhzAAQAAgnAXgeQAKgMACgBQAhgfArgCQA1ABAhAgQAiAjAAAvQAAApgYAfQgEAFgFAEQgjAjguAAQgBAAgBAAQguAAgjghQgBgBgBgCQgEgDgDgEQgBgCgBgBQgXgeAAgog");

	this.shape_19 = new cjs.Shape();
	this.shape_19.graphics.f().s("rgba(245,103,35,0.38)").ss(1.1,1,1).p("Ah1AAQAAgnAXgfQALgMABgCQAigfAsgCQA1AAAiAiQAjAjAAAwQAAAqgZAfQgEAFgEAFQgkAjgvAAQgBAAgBAAQgvAAgjgiQgBgBgCgBQgDgEgEgEQgBgBgBgBQgXgfAAgpg");

	this.shape_20 = new cjs.Shape();
	this.shape_20.graphics.f().s("rgba(245,103,35,0.345)").ss(1,1,1).p("Ah3AAQAAgoAXgfQALgMACgCQAiggAtgCQA2AAAjAiQAjAkAAAwQAAAsgZAfQgEAFgEAFQglAkgwAAQgBAAgBAAQgwAAgkgiQgBgCgBgBQgEgEgEgEQgBgBgBgBQgXgfAAgqg");

	this.shape_21 = new cjs.Shape();
	this.shape_21.graphics.f().s("rgba(245,103,35,0.31)").ss(1,1,1).p("Ah6AAQAAgpAZggQAKgMACgCQAjggAtgDQA4ABAjAjQAkAkABAxQgBAsgZAhQgEAFgFAEQglAlgxABQgBAAgBAAQgxgBgkgjQgCgBgBgBQgEgEgDgEQgBgCgBgBQgZgfAAgrg");

	this.shape_22 = new cjs.Shape();
	this.shape_22.graphics.f().s("rgba(245,103,35,0.275)").ss(0.9,1,1).p("Ah8AAQAAgqAZggQALgMACgCQAjghAugDQA5ABAkAjQAkAlABAyQAAAtgbAhQgEAFgEAFQgmAlgyABQgBAAgBAAQgyAAglgkQgBgCgBgBQgEgEgEgEQgBgBgBgCQgZggAAgrg");

	this.shape_23 = new cjs.Shape();
	this.shape_23.graphics.f().s("rgba(245,103,35,0.243)").ss(0.9,1,1).p("Ah+AAQAAgqAZghQALgNACgBQAjgjAwgCQA6ABAkAjQAlAmABAzQAAAugbAhQgEAFgFAFQgmAmgyABQgCAAgBAAQgzAAgmglQgBgBgBgCQgEgEgEgEQgBgBgBgBQgZghAAgsg");

	this.shape_24 = new cjs.Shape();
	this.shape_24.graphics.f().s("rgba(245,103,35,0.208)").ss(0.8,1,1).p("AiAAAQAAgrAaghQAKgNACgCQAkgjAwgCQA7AAAlAlQAnAmAAA0QAAAvgbAhQgEAGgFAFQgnAmgzABQgCAAgBAAQgzAAgngmQgBgBgCgBQgEgEgEgFQgBgBAAgBQgaghAAgtg");

	this.shape_25 = new cjs.Shape();
	this.shape_25.graphics.f().s("rgba(245,103,35,0.173)").ss(0.8,1,1).p("AiCAAQAAgsAagiQALgMACgCQAkgkAxgCQA8AAAmAlQAnAnAAA1QAAAvgbAjQgFAFgFAFQgnAng0ABQgCAAgBAAQg0AAgogmQgBgBgBgCQgEgEgEgEQgBgCgBgBQgaghAAgug");

	this.shape_26 = new cjs.Shape();
	this.shape_26.graphics.f().s("rgba(245,103,35,0.137)").ss(0.7,1,1).p("AiEAAQAAgsAagjQALgNACgCQAlgkAygCQA9AAAmAmQAoAnAAA2QAAAwgcAjQgEAFgFAGQgoAng1ABQgCAAgBAAQg1AAgognQgBgBgCgBQgEgFgEgEQgBgBgBgCQgagiAAgug");

	this.shape_27 = new cjs.Shape();
	this.shape_27.graphics.f().s("rgba(245,103,35,0.102)").ss(0.7,1,1).p("AiGAAQAAgtAagjQAMgNACgCQAlglAzgCQA+AAAnAmQAoAoAAA3QAAAxgcAjQgEAGgFAFQgpAog2ABQgBAAgCAAQg2AAgpgnQgBgCgBgBQgFgEgEgFQgBgBgBgBQgagjAAgvg");

	this.shape_28 = new cjs.Shape();
	this.shape_28.graphics.f().s("rgba(245,103,35,0.071)").ss(0.6,1,1).p("AiIAAQAAguAbgjQALgNACgCQAmgmAzgCQBAAAAnAnQApApAAA3QAAAxgcAkQgFAGgFAFQgpAqg3AAQgBAAgCAAQg3AAgpgoQgCgBgBgCQgEgEgEgEQgBgCgBgBQgbgjAAgwg");

	this.shape_29 = new cjs.Shape();
	this.shape_29.graphics.f().s("rgba(245,103,35,0.035)").ss(0.6,1,1).p("AiLAAQAAgvAcgkQALgNACgCQAngmA0gDQBAAAApAoQApAqABA4QAAAygdAlQgFAFgFAGQgqAqg4ABQgBAAgCAAQg4AAgqgpQgBgCgCgBQgEgFgEgEQgBgCgBgBQgcgjAAgxg");

	this.shape_30 = new cjs.Shape();
	this.shape_30.graphics.f().s("rgba(245,103,35,0)").ss(0.5,1,1).p("ACOAAQAAA7gqApQgpAqg7AAQg5AAgqgqQgqgpAAg7QAAg6AqgpQAqgqA5AAQA7AAApAqQAqApAAA6g");

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_1}]}).to({state:[{t:this.shape_2}]},1).to({state:[{t:this.shape_3}]},1).to({state:[{t:this.shape_4}]},1).to({state:[{t:this.shape_5}]},1).to({state:[{t:this.shape_6}]},1).to({state:[{t:this.shape_7}]},1).to({state:[{t:this.shape_8}]},1).to({state:[{t:this.shape_9}]},1).to({state:[{t:this.shape_10}]},1).to({state:[{t:this.shape_11}]},1).to({state:[{t:this.shape_12}]},1).to({state:[{t:this.shape_13}]},1).to({state:[{t:this.shape_14}]},1).to({state:[{t:this.shape_15}]},1).to({state:[{t:this.shape_16}]},1).to({state:[{t:this.shape_17}]},1).to({state:[{t:this.shape_18}]},1).to({state:[{t:this.shape_19}]},1).to({state:[{t:this.shape_20}]},1).to({state:[{t:this.shape_21}]},1).to({state:[{t:this.shape_22}]},1).to({state:[{t:this.shape_23}]},1).to({state:[{t:this.shape_24}]},1).to({state:[{t:this.shape_25}]},1).to({state:[{t:this.shape_26}]},1).to({state:[{t:this.shape_27}]},1).to({state:[{t:this.shape_28}]},1).to({state:[{t:this.shape_29}]},1).to({state:[{t:this.shape_30}]},1).to({state:[]},1).wait(42));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-9.3,-9.3,18.6,18.6);


(lib.mcCalloutBackground = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#FFFFFF").s().p("A2pZoQgyAAAAg6MAAAgxbQAAg6AyAAMAtTAAAQAyAAAAA6MAAAAxbQAAA6gyAAg");

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCalloutBackground, new cjs.Rectangle(), null);


(lib.btnCalloutButton = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.shape = new cjs.Shape();
	this.shape.graphics.f("#F76707").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape.setTransform(0,0,0.723,1);

	this.shape_1 = new cjs.Shape();
	this.shape_1.graphics.f("#C55206").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape_1.setTransform(0,0,0.723,1);

	this.shape_2 = new cjs.Shape();
	this.shape_2.graphics.f("#000000").s().rr(-79.55,-23.5,159.1,47,5);
	this.shape_2.setTransform(0,0,0.723,1);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape}]}).to({state:[{t:this.shape_1}]},1).to({state:[{t:this.shape_2}]},1).wait(2));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(-57.5,-23.5,115.1,47);


(lib.mcWaterPump = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-1,30.1);

	this.instance_1 = new lib.WaterPump();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-47.7,-44.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcWaterPump, new cjs.Rectangle(-47.7,-44.2,95.5,88.5), null);


(lib.mcThermostat = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-5,-7.9);

	this.instance_1 = new lib.Thermostat();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-41,-28.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcThermostat, new cjs.Rectangle(-41,-28.5,82,57), null);


(lib.mcReservoir = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(4,-18.9);

	this.instance_1 = new lib.Reservoir();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-87.5,-55,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcReservoir, new cjs.Rectangle(-87.5,-55,175,110), null);


(lib.mcRadiator = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(41,-78.9);

	this.instance_1 = new lib.Radiator();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-143,-221.2,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcRadiator, new cjs.Rectangle(-143,-221.2,286,442.5), null);


(lib.mcIntakeManifold = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(38,-51.9);

	this.instance_1 = new lib.IntakeManifold();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-143.7,-105.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcIntakeManifold, new cjs.Rectangle(-143.7,-105.5,287.5,211), null);


(lib.mcHeaterCore = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(71,39.1);

	this.instance_1 = new lib.HeaterCore();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-119.7,-105.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHeaterCore, new cjs.Rectangle(-119.7,-105.7,239.5,211.5), null);


(lib.mcHeadGasket = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-121,38.1);

	this.instance_1 = new lib.HeadGasket();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-202,-61.5,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcHeadGasket, new cjs.Rectangle(-202,-61.5,404,123), null);


(lib.mcFreezePlug = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-8,-4.9);

	this.instance_1 = new lib.FreezePlug();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-83.7,-29.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcFreezePlug, new cjs.Rectangle(-83.7,-29.7,167.5,59.5), null);


(lib.mcEngineBlock = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-120,91);

	this.instance_1 = new lib.EngineBlock();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-218.2,-198.7,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcEngineBlock, new cjs.Rectangle(-218.2,-198.7,436.5,397.5), null);


(lib.mcCylinderHead = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_1
	this.instance = new lib.mcDot();
	this.instance.parent = this;
	this.instance.setTransform(-116,-21.5);

	this.instance_1 = new lib.CylinderHead();
	this.instance_1.parent = this;
	this.instance_1.setTransform(-214.7,-116,0.5,0.5);

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.instance_1},{t:this.instance}]}).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCylinderHead, new cjs.Rectangle(-214.7,-116,429.5,232), null);


(lib.mcCalloutButton = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// Layer_2
	this.txtCalloutButton = new cjs.Text("Learn More", "normal 700 18px 'Fira Sans'", "#FFFFFF");
	this.txtCalloutButton.name = "txtCalloutButton";
	this.txtCalloutButton.lineHeight = 30;
	this.txtCalloutButton.lineWidth = 98;
	this.txtCalloutButton.parent = this;
	this.txtCalloutButton.setTransform(-47,-12.5);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtCalloutButton);
	}

	this.timeline.addTween(cjs.Tween.get(this.txtCalloutButton).wait(1));

	// Layer_1
	this.instance = new lib.btnCalloutButton();
	this.instance.parent = this;
	new cjs.ButtonHelper(this.instance, 0, 1, 2, false, new lib.btnCalloutButton(), 3);

	this.timeline.addTween(cjs.Tween.get(this.instance).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCalloutButton, new cjs.Rectangle(-57.5,-23.5,115.1,47), null);


(lib.mcCallout = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// timeline functions:
	this.frame_0 = function() {
		/* Click to Go to Web Page
		Clicking on the specified symbol instance loads the URL in a new browser window.
		
		Instructions:
		1. Replace http://www.adobe.com with the desired URL address.
		   Keep the quotation marks ("").
		*/
		
		//this.mcCalloutButton.bg_clickTag.cursor = "pointer"
		this.mcCalloutButton.addEventListener("click", fl_ClickToGoToWebPage);
		
		function fl_ClickToGoToWebPage() {
			window.open(currentComponentLink, "_parent");
		}
	}

	// actions tween:
	this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(1));

	// Layer_1
	this.mcCalloutButton = new lib.mcCalloutButton();
	this.mcCalloutButton.name = "mcCalloutButton";
	this.mcCalloutButton.parent = this;
	this.mcCalloutButton.setTransform(-76,126);

	this.txtComponentDescription = new cjs.Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ultrices purus non ipsum feugiat, nec efficitur sem porttitor. Aenean sit amet sapien sit amet massa aliquam pretium.", "normal 400 18px 'Fira Sans'", "#333333");
	this.txtComponentDescription.name = "txtComponentDescription";
	this.txtComponentDescription.lineHeight = 28;
	this.txtComponentDescription.lineWidth = 267;
	this.txtComponentDescription.parent = this;
	this.txtComponentDescription.setTransform(-133.6,-109.3);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtComponentDescription);
	}

	this.txtComponentName = new cjs.Text("Component Name", "normal 700 22px 'Fira Sans'", "#234287");
	this.txtComponentName.name = "txtComponentName";
	this.txtComponentName.lineHeight = 36;
	this.txtComponentName.lineWidth = 267;
	this.txtComponentName.parent = this;
	this.txtComponentName.setTransform(-133.6,-154.3);
	if(!lib.properties.webfonts['Fira Sans']) {
		lib.webFontTxtInst['Fira Sans'] = lib.webFontTxtInst['Fira Sans'] || [];
		lib.webFontTxtInst['Fira Sans'].push(this.txtComponentName);
	}

	this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.txtComponentName},{t:this.txtComponentDescription},{t:this.mcCalloutButton}]}).wait(1));

	// Layer_2
	this.mcCalloutBackground = new lib.mcCalloutBackground();
	this.mcCalloutBackground.name = "mcCalloutBackground";
	this.mcCalloutBackground.parent = this;
	this.mcCalloutBackground.shadow = new cjs.Shadow("rgba(153,153,153,1)",0,5,15);

	this.timeline.addTween(cjs.Tween.get(this.mcCalloutBackground).wait(1));

}).prototype = getMCSymbolPrototype(lib.mcCallout, new cjs.Rectangle(-166,-175,336,364), null);


// stage content:
(lib.ksealenginecomponents = function(mode,startPosition,loop) {
	this.initialize(mode,startPosition,loop,{});

	// timeline functions:
	this.frame_0 = function() {
		this.stop();
		
		var root = this;
		
		//counts the number of reasons that the callout should be visible
		calloutShow = 0;
		calloutVisibility();
		
		//gather up all the components
		var engineComponents = [this.mcRadiator,
								this.mcHoseLower,
								this.mcReservoir,
								this.mcThermostat,
								this.mcHoseWaterPump,
								this.mcIntakeManifold,
								this.mcWaterPump,
								this.mcCylinderHead,
								this.mcHeadGasket,
								this.mcFreezePlug,
								this.mcEngineBlock,
								this.mcHoseHeaterCore,
								this.mcHeaterCore,
								this.mcHoseReturn
								];
		
		
		//initialize engine components
		engineComponents.forEach(function(item, index, array) {
			
			//set origin x and y
			item.originX = item.x;
			item.originY = item.y;
				
			//add mouseover and mouseout listeners only to important components
			if( index == 1 || index == 4 || index == 11 || index == 13 ){
					//do nothing
			} else {
				
				//add component mouseover listener
				item.addEventListener("mouseover", componentRollOver);
				item.addEventListener("MouseEvent.CLICK", componentRollOver);
			
				//add component mouseout listener
				item.addEventListener("mouseout", componentRollOut);
			}
		});
		
		//holds the web link for the current component
		currentComponentLink = "";
		
		// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		// !-- Set the text and links for the callouts here --!
		// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		
		//text for the callout button
		this.mcCallout.mcCalloutButton.txtCalloutButton.text = "Learn More";
		
		//callout headline
		this.mcRadiator.txtComponentName = "Radiator";
		
		//callout body copy
		this.mcRadiator.txtComponentDescription = "The radiator is designed to transfer heat between the cooling system and the atmosphere in order to maintain the correct engine temperature. The main reason radiators fail is due to corrosion or damage causing a leak, which can lead to the engine overheating  - potentially costing you a lot of money to get it fixed. So how can you look out for a leak, and fix it?";
		
		//callout link address (use absolute links)
		//this.mcRadiator.txtComponentLink = "1131";
		this.mcRadiator.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/radiator";
		
		
		
		this.mcReservoir.txtComponentName = "Reservoir";
		this.mcReservoir.txtComponentDescription = "Known as the expansion tank, header tank or reservoir, this is a container located near the radiator that holds the excess or overflowing cooling agent used in the engine. In most modern cars this is also where you would top up the coolant and add K-Seal. In older cars you may still need to add K-Seal via the radiator.";
		//this.mcReservoir.txtComponentLink = "28";
		
		
		this.mcReservoir.txtComponentLink = "https://www.kseal.com/using-k-seal/instructions/how-to-use-k-seal";
		
		
		this.mcThermostat.txtComponentName = "Thermostat";
		this.mcThermostat.txtComponentDescription = "Sitting between the engine and the radiator, the thermostat is critical to making your car’s cooling system work. If the engine is too hot, the thermostat acknowledges this and lets coolant flow freely through the radiator in order to cool the engine. If the engine is too cool the thermostat reduces or stops the flow of coolant to the radiator allowing the engine to warm up.";
		//this.mcThermostat.txtComponentLink = "1131";
		this.mcThermostat.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/radiator";
		
		this.mcIntakeManifold.txtComponentName = "Intake Manifold";
		this.mcIntakeManifold.txtComponentDescription = "Your vehicle’s intake manifold is a vital part of the internal combustion engine. Its primary purpose is to evenly distribute the mixture of air and fuel into the cylinders. The intake manifold also conducts coolant through the cylinders to reduce engine temperature – helping to keep your engine running smoothly. However, it can be very difficult to identify symptoms as related to intake manifold failure – unless you know what to look out for.";
		//this.mcIntakeManifold.txtComponentLink = "1134";
		this.mcIntakeManifold.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/intake-manifold";
		
		this.mcWaterPump.txtComponentName = "Water Pump";
		this.mcWaterPump.txtComponentDescription = "The water pump ensures that enough coolant liquid is flowing around the cooling system in order to remove sufficient heat to prevent the engine overheating. The more the engine works the faster coolant is pushed around the cooling system. Water pumps do malfunction from time to time, but the most common issue is the casing developing a leak.  This will lead to overheating which can cause serious damage to other parts of the engine, including the cylinder head and block. Fortunately, there is an affordable way to fix this…";
		//this.mcWaterPump.txtComponentLink = "1133";
		this.mcWaterPump.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/water-pump";
		
		this.mcCylinderHead.txtComponentName = "Cylinder Head";
		this.mcCylinderHead.txtComponentDescription = "A cylinder head sits on top of the engine block and covers its cylinders, creating the combustion chamber. A complicated part of the engine, if the cylinder head fails it will lead to the engine (and by extension the vehicle) breaking down. Any problem it might develop should therefore be repaired as quickly as possible.";
		//this.mcCylinderHead.txtComponentLink = "1136";
		this.mcCylinderHead.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/cylinder-head";
		
		this.mcHeadGasket.txtComponentName = "Head Gasket";
		this.mcHeadGasket.txtComponentDescription = "A head gasket acts as the seal between the engine block and cylinder head. It seals the combustion gases within the engine and keeps out the coolant that is designed to cool the engine cylinder. If you don’t notice the early symptoms of head gasket leaks and continue to drive the car, things will get progressively worse. And should the head gasket blow, some motorists may find it cheaper to scrap the vehicle than fork out to have it repaired.";
		//this.mcHeadGasket.txtComponentLink = "1128";
		this.mcHeadGasket.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/head-gasket";
		
		this.mcFreezePlug.txtComponentName = "Freeze Plug";
		this.mcFreezePlug.txtComponentDescription = "Commonly known as a freeze plug, core plug, or expansion plug, this engine component is left over from the casting process when the engine block was manufactured. Corrosion can result in the core plug leaking leading to more severe problems due to overheating.";
		//this.mcFreezePlug.txtComponentLink = "1130";
		this.mcFreezePlug.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/engine-block";
		
		this.mcEngineBlock.txtComponentName = "Engine Block";
		this.mcEngineBlock.txtComponentDescription = "The engine or cylinder block is the key component of an internal combustion engine, where the power to drive the vehicle is generated by igniting a mixture of fuel and air to produce an explosion. Performing a number of functions, the engine block needs to be monitored to ensure the engine – and car as a whole – continue to run safely. Leave a problem unchecked, and it could cost you thousands to repair. But there are ways to recognise the symptoms before the problem gets worse.";
		//this.mcEngineBlock.txtComponentLink = "1130";
		this.mcEngineBlock.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/engine-block";
		
		
		this.mcHeaterCore.txtComponentName = "Heater Core";
		this.mcHeaterCore.txtComponentDescription = "The heater core is also known as the heater matrix. Instead of removing heat to the outside air like the radiator, the heater core transfers heat to the vehicle interior to help keep you warm. If the heater core leaks, you may no longer be able to warm up your vehicle’s interior, and more coolant than usual may be being used up. Getting this replaced or repaired is a time consuming and expensive job.";
		//this.mcHeaterCore.txtComponentLink = "1132";
		this.mcHeaterCore.txtComponentLink = "https://www.kseal.com/expert-advice/engine-problems/heater-core";
		
		
		// !!!!!!!!!!!!!!!!!!!!!!!!!
		// !-- Stop editing here --!
		// !!!!!!!!!!!!!!!!!!!!!!!!!
		
		//adjust component target X and Y
		this.mcRadiator.targetX = 223;
		this.mcRadiator.targetY = 537;
		
		this.mcHoseLower.targetX = 845;
		this.mcHoseLower.targetY = 680;
		
		this.mcReservoir.targetX = 530;
		this.mcReservoir.targetY = 773;
		
		this.mcThermostat.targetX = 954;
		this.mcThermostat.targetY = 445;
		
		this.mcHoseWaterPump.targetX = 697;
		this.mcHoseWaterPump.targetY = 457;
		
		this.mcIntakeManifold.targetX = 770;
		this.mcIntakeManifold.targetY = 535;
		
		this.mcWaterPump.targetX = 407;
		this.mcWaterPump.targetY = 538;
		
		this.mcCylinderHead.targetX = 626;
		this.mcCylinderHead.targetY = 144;
		
		this.mcHeadGasket.targetX = 622;
		this.mcHeadGasket.targetY = 295;
		
		this.mcFreezePlug.targetX = 864;
		this.mcFreezePlug.targetY = 664;
		
		this.mcEngineBlock.targetX = 623;
		this.mcEngineBlock.targetY = 526;
		
		this.mcHoseHeaterCore.targetX = 881;
		this.mcHoseHeaterCore.targetY = 345;
		
		this.mcHeaterCore.targetX = 972;
		this.mcHeaterCore.targetY = 283;
		
		this.mcHoseReturn.targetX = 395;
		this.mcHoseReturn.targetY = 356;
		
		
		//initialize original z-index
		this.mcRadiator.originZ = 14;
		this.mcHoseLower.originZ = 13;
		this.mcReservoir.originZ = 12;
		this.mcThermostat.originZ = 11;
		this.mcHoseWaterPump.originZ = 10;
		this.mcIntakeManifold.originZ = 9;
		this.mcWaterPump.originZ = 8;
		this.mcCylinderHead.originZ = 7;
		this.mcHeadGasket.originZ = 6;
		this.mcFreezePlug.originZ = 5;
		this.mcEngineBlock.originZ = 4;
		this.mcHoseHeaterCore.originZ = 3;
		this.mcHeaterCore.originZ = 2;
		this.mcHoseReturn.originZ = 1;
		
		//reorders components into correct z-order stack
		function resetZ() {
			engineComponents.forEach(function(item, index, array) {
				item.parent.setChildIndex(item, item.originZ);
			});
		}
		
		////mouse over listener
		stage.enableMouseOver(10);
		var mouse = {x:0, y:0};
		
		
		//stage mouseover listener
		stage.addEventListener("mouseover", over.bind(this));
		function over(){
			//explode the components to their target locations
		  engineComponents.forEach(function(item, index, array) {
				TweenLite.to(item, 0.75, {y:item.targetY, x:item.targetX, ease:Power1.easeInOut});
			});
			
		}
		
		stage.addEventListener("mouseout", out.bind(this));
		function out(){
			//implode the components to their original location
		  engineComponents.forEach(function(item, index, array) {
				TweenLite.to(item, 0.75, {x:item.originX, y:item.originY, ease:Power1.easeInOut});
			});
		}
		
		
		//when mouse rolls over a component
		function componentRollOver(e) {
			
			var compName = e.currentTarget.txtComponentName;
			var compDesc = e.currentTarget.txtComponentDescription;
			var compLink = e.currentTarget.txtComponentLink;
			
			jQuery('.lightbox .dialogue-box').html('<h2>' + compName + '</h2>' + '<p>' + compDesc + '</p>' + '<a href="'+ compLink +'" class="btn-primary btn">Learn More </a>');
			
			jQuery('.tooltip-title').html(compName).show();
			
			if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { jQuery('.phone-moreinfo').show(); }
						
			jQuery('.canvas-wrap').css( 'cursor', 'pointer' );
			
			
			//scale up the target
			TweenLite.to(e.currentTarget, 0.3, {scaleX:1.1, scaleY:1.1, ease:Power1.easeInOut});
			//pop it to the top of the Z index stack
			e.currentTarget.parent.setChildIndex( e.currentTarget, e.currentTarget.parent.getNumChildren()-1 );
			
			//get values for bitmap cache
			var cachewidth = e.currentTarget.getBounds().width;
			var cacheheight = e.currentTarget.getBounds().height;
			var cacheleft = cachewidth * -0.5;
			var cachetop = cacheheight * -0.5;
			
			//crate bitmap cache for GSAP EaselPlugin
			e.currentTarget.cache(cacheleft, cachetop, cachewidth, cacheheight, 2); //left, top, width, height
			
			//colorize the target component
			TweenLite.to(e.currentTarget, 0.3, {easel:{colorize:"#F56723", colorizeAmount:1}});
		
			//set the callout text and link
			root.mcCallout.txtComponentName.text = e.currentTarget.txtComponentName;
			root.mcCallout.txtComponentDescription.text = e.currentTarget.txtComponentDescription;
			currentComponentLink = e.currentTarget.txtComponentLink;
			
			calloutShow += 1;
			calloutVisibility();
		
			//set position of callout
			var calloutWidth = root.mcCallout.getBounds().width;
			var calloutHeight = root.mcCallout.getBounds().width;	
			var calloutSide = 1;
			
			//decide whether callout should appear to right or left of component
			if(e.currentTarget.x > root.stage.getBounds().width - (calloutWidth/2) - (cachewidth/2) - 50){
				calloutSide = -1;
			}
			
			//set x of callout
			root.mcCallout.x = e.currentTarget.x + (((cachewidth/2) + (calloutWidth/2) + 25) * calloutSide);
			
			//set y of callout
			if(e.currentTarget.y < (calloutHeight/2) + 100){
				//too high
				root.mcCallout.y = (calloutHeight/2) + 100;
			} else if(e.currentTarget.y > root.stage.getBounds().height - (calloutHeight/2) - 100) {
				//too low
				root.mcCallout.y = root.stage.getBounds().height - (calloutHeight/2);
			} else {
				//just right
				root.mcCallout.y = e.currentTarget.y;
			}
			
			
		//	callout.parent.setChildIndex(callout, callout.parent.getNumChildren()-1 );
		}
		
		//when mouse rolls off a component
		function componentRollOut(e) {
			calloutShow -= 1;
			calloutVisibility();
								
			//return target to original Z index
			e.currentTarget.parent.setChildIndex(e.currentTarget, e.currentTarget.originZ);
				
			//scale down target
			TweenLite.to(e.currentTarget, 0.3, {scaleX:1, scaleY:1, ease:Power1.easeInOut});
				
			//de-colorize target
			TweenLite.to(e.currentTarget, 0.3, {easel:{colorize:"#F56723", colorizeAmount:0}});
			
		}
		
		//decides if Callout should be visible
		function calloutVisibility(){
			//if callout has 1 or more reasons to show
			//console.log(calloutShow);
			if(calloutShow > 0) {
				//show the callout
				root.mcCallout.visible = false;
				//pop it to the top of the z index stack
				root.mcCallout.parent.setChildIndex( root.mcCallout, root.mcCallout.parent.getNumChildren()-1 );
			} else {
				//otherwise hide callout
				root.mcCallout.visible = false;
				calloutShow = 0;
			}
		}
		
		//add component mouseover listener
		this.mcCallout.addEventListener("mouseover", calloutRollOver);
			
		//add component mouseout listener
		this.mcCallout.addEventListener("mouseout", calloutRollOut);
		
		function calloutRollOver(){
			calloutShow += 1;
			calloutVisibility();
		}
		
		function calloutRollOut() {
			calloutShow -= 1;
			calloutVisibility();
		}
	}

	// actions tween:
	this.timeline.addTween(cjs.Tween.get(this).call(this.frame_0).wait(2));

	// callout
	this.mcCallout = new lib.mcCallout();
	this.mcCallout.name = "mcCallout";
	this.mcCallout.parent = this;
	this.mcCallout.setTransform(1029.9,714);

	this.timeline.addTween(cjs.Tween.get(this.mcCallout).wait(2));

	// radiator
	this.mcRadiator = new lib.mcRadiator();
	this.mcRadiator.name = "mcRadiator";
	this.mcRadiator.parent = this;
	this.mcRadiator.setTransform(308.5,387.9);

	this.timeline.addTween(cjs.Tween.get(this.mcRadiator).wait(1).to({x:223,y:537},0).wait(1));

	// hose lower
	this.mcHoseLower = new lib.mcHoseLower();
	this.mcHoseLower.name = "mcHoseLower";
	this.mcHoseLower.parent = this;
	this.mcHoseLower.setTransform(709.1,406.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseLower).wait(1).to({x:845,y:671},0).wait(1));

	// reservoir
	this.mcReservoir = new lib.mcReservoir();
	this.mcReservoir.name = "mcReservoir";
	this.mcReservoir.parent = this;
	this.mcReservoir.setTransform(521.2,322.9);

	this.timeline.addTween(cjs.Tween.get(this.mcReservoir).wait(1).to({x:530,y:773},0).wait(1));

	// thermostat
	this.mcThermostat = new lib.mcThermostat();
	this.mcThermostat.name = "mcThermostat";
	this.mcThermostat.parent = this;
	this.mcThermostat.setTransform(889.5,235.2);

	this.timeline.addTween(cjs.Tween.get(this.mcThermostat).wait(1).to({x:95445,y:445.5},0).wait(1));

	// hose water pump
	this.mcHoseWaterPump = new lib.mcHoseWaterPump();
	this.mcHoseWaterPump.name = "mcHoseWaterPump";
	this.mcHoseWaterPump.parent = this;
	this.mcHoseWaterPump.setTransform(695.9,324.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseWaterPump).wait(1).to({x:697.3,y:456.8},0).wait(1));

	// intake manifold
	this.mcIntakeManifold = new lib.mcIntakeManifold();
	this.mcIntakeManifold.name = "mcIntakeManifold";
	this.mcIntakeManifold.parent = this;
	this.mcIntakeManifold.setTransform(709.6,290.5);

	this.timeline.addTween(cjs.Tween.get(this.mcIntakeManifold).wait(1).to({x:770.3,y:535.1},0).wait(1));

	// water pump
	this.mcWaterPump = new lib.mcWaterPump();
	this.mcWaterPump.name = "mcWaterPump";
	this.mcWaterPump.parent = this;
	this.mcWaterPump.setTransform(489.1,389.1);

	this.timeline.addTween(cjs.Tween.get(this.mcWaterPump).wait(1).to({x:407.4,y:538},0).wait(1));

	// cylinder head
	this.mcCylinderHead = new lib.mcCylinderHead();
	this.mcCylinderHead.name = "mcCylinderHead";
	this.mcCylinderHead.parent = this;
	this.mcCylinderHead.setTransform(625.6,199.7);

	this.timeline.addTween(cjs.Tween.get(this.mcCylinderHead).wait(1).to({x:626.6,y:144},0).wait(1));

	// head gasket
	this.mcHeadGasket = new lib.mcHeadGasket();
	this.mcHeadGasket.name = "mcHeadGasket";
	this.mcHeadGasket.parent = this;
	this.mcHeadGasket.setTransform(621.6,250.6);

	this.timeline.addTween(cjs.Tween.get(this.mcHeadGasket).wait(1).to({y:294.7},0).wait(1));

	// freeze plug
	this.mcFreezePlug = new lib.mcFreezePlug();
	this.mcFreezePlug.name = "mcFreezePlug";
	this.mcFreezePlug.parent = this;
	this.mcFreezePlug.setTransform(684.8,430.6);

	this.timeline.addTween(cjs.Tween.get(this.mcFreezePlug).wait(1).to({x:824.5,y:663.7},0).wait(1));

	// engine block
	this.mcEngineBlock = new lib.mcEngineBlock();
	this.mcEngineBlock.name = "mcEngineBlock";
	this.mcEngineBlock.parent = this;
	this.mcEngineBlock.setTransform(623,391.6);

	this.timeline.addTween(cjs.Tween.get(this.mcEngineBlock).wait(1).to({x:623.3,y:525.6},0).wait(1));

	// hose heater core
	this.mcHoseHeaterCore = new lib.mcHoseHeaterCore();
	this.mcHoseHeaterCore.name = "mcHoseHeaterCore";
	this.mcHoseHeaterCore.parent = this;
	this.mcHoseHeaterCore.setTransform(900.2,183.8);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseHeaterCore).wait(1).to({x:881.3,y:345.5},0).wait(1));

	// heater core
	this.mcHeaterCore = new lib.mcHeaterCore();
	this.mcHeaterCore.name = "mcHeaterCore";
	this.mcHeaterCore.parent = this;
	this.mcHeaterCore.setTransform(932,144.7);

	this.timeline.addTween(cjs.Tween.get(this.mcHeaterCore).wait(1).to({x:971.9,y:283.3},0).wait(1));

	// hose return
	this.mcHoseReturn = new lib.mcHoseReturn();
	this.mcHoseReturn.name = "mcHoseReturn";
	this.mcHoseReturn.parent = this;
	this.mcHoseReturn.setTransform(362.4,201);

	this.timeline.addTween(cjs.Tween.get(this.mcHoseReturn).wait(1).to({x:395,y:356.4},0).wait(1));

	// background
	this.shape = new cjs.Shape();
	this.shape.graphics.f().s().p("EhdvBGUMAAAiMnMC7fAAAMAAACMng");
	this.shape.setTransform(600,450);

	this.timeline.addTween(cjs.Tween.get(this.shape).wait(2));

}).prototype = p = new cjs.MovieClip();
p.nominalBounds = new cjs.Rectangle(600,450,1200,904);
// library properties:
lib.properties = {
	id: '6DEFC84FD411479E841AF2F7606C5481',
	width: 1200,
	height: 900,
	fps: 24,
	color: "#FFFFFF",
	opacity: 0.00,
	webfonts: {},
	manifest: [
		{src:"https://www.kseal.com/wp-content/uploads/2017/11/kseal_engine_components_atlas_.png", id:"kseal_engine_components_new_atlas_"}
	],
	preloads: []
};



// bootstrap callback support:

(lib.Stage = function(canvas) {
	createjs.Stage.call(this, canvas);
}).prototype = p = new createjs.Stage();

p.setAutoPlay = function(autoPlay) {
	this.tickEnabled = autoPlay;
}
p.play = function() { this.tickEnabled = true; this.getChildAt(0).gotoAndPlay(this.getTimelinePosition()) }
p.stop = function(ms) { if(ms) this.seek(ms); this.tickEnabled = false; }
p.seek = function(ms) { this.tickEnabled = true; this.getChildAt(0).gotoAndStop(lib.properties.fps * ms / 1000); }
p.getDuration = function() { return this.getChildAt(0).totalFrames / lib.properties.fps * 1000; }

p.getTimelinePosition = function() { return this.getChildAt(0).currentFrame / lib.properties.fps * 1000; }

an.bootcompsLoaded = an.bootcompsLoaded || [];
if(!an.bootstrapListeners) {
	an.bootstrapListeners=[];
}

an.bootstrapCallback=function(fnCallback) {
	an.bootstrapListeners.push(fnCallback);
	if(an.bootcompsLoaded.length > 0) {
		for(var i=0; i<an.bootcompsLoaded.length; ++i) {
			fnCallback(an.bootcompsLoaded[i]);
		}
	}
};

an.compositions = an.compositions || {};
an.compositions['6DEFC84FD411479E841AF2F7606C5481'] = {
	getStage: function() { return exportRoot.getStage(); },
	getLibrary: function() { return lib; },
	getSpriteSheet: function() { return ss; },
	getImages: function() { return img; }
};

an.compositionLoaded = function(id) {
	an.bootcompsLoaded.push(id);
	for(var j=0; j<an.bootstrapListeners.length; j++) {
		an.bootstrapListeners[j](id);
	}
}

an.getComposition = function(id) {
	return an.compositions[id];
}



})(createjs = createjs||{}, AdobeAn = AdobeAn||{});
var createjs, AdobeAn;
</script>{"id":39590,"date":"2015-01-12T14:34:03","date_gmt":"2015-01-12T14:34:03","guid":{"rendered":"https:\/\/www.kseal.com\/expert-advice\/engine-problems\/intake-manifold"},"modified":"2015-01-12T14:34:03","modified_gmt":"2015-01-12T14:34:03","slug":"intake-manifold","status":"publish","type":"page","link":"https:\/\/www.kseal.com\/za\/expert-advice\/engine-problems\/intake-manifold","title":{"rendered":"Intake manifold leaks and repair"},"content":{"rendered":"<h2><b>What are intake manifolds?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">An intake manifold, <\/span><span style=\"font-weight: 400;\">also known as the inlet manifold<\/span><span style=\"font-weight: 400;\">, directs the mixture of air and fuel to the right cylinder to be combusted so it can power the engine.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Additionally, the intake manifold conducts coolant through to the cylinders in order to reduce the temperature of the engine.<\/span><\/p>\n<h3><span style=\"font-weight: 600;\">Attachment and maintenance<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The intake manifold is attached to the top of the engine by the intake manifold gasket, which has to be monitored as it is susceptible to cracking under the heat and pressure and allowing coolant or oil to escape.<\/span><\/p>\n<figure id=\"attachment_5971\" aria-describedby=\"caption-attachment-5971\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5971\" src=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2015\/01\/Intake-Manifold-1024x680.jpg\" alt=\"Inlet Manifold\" width=\"600\" height=\"399\" \/><figcaption id=\"caption-attachment-5971\" class=\"wp-caption-text\">Inlet Manifold<\/figcaption><\/figure>\n<h2><b>How does an intake manifold work?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The intake manifold uses pistons to conduct the air-fuel mixture and the coolant through the engine block via the valves to the relevant areas. It is important that these mixtures are distributed evenly, otherwise the engine will not work as efficiently. <\/span><span style=\"font-weight: 400;\">Here&#8217;s how it works step-by-step:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Air Intake<\/b><span style=\"font-weight: 400;\">: The intake manifold draws in air from the vehicle&#8217;s air filter. This air is essential for combustion in the engine.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Fuel Mixing:<\/b><span style=\"font-weight: 400;\"> The air passes through the throttle body, where it mixes with fuel. In modern vehicles with fuel injection systems, fuel is injected into the air stream just before or as it enters the intake manifold.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Distribution: <\/b><span style=\"font-weight: 400;\">Once the air and fuel are mixed, the intake manifold&#8217;s design ensures that the mixture is evenly distributed to each cylinder. It directs the flow into the cylinder heads through intake ports.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Combustion<\/b><span style=\"font-weight: 400;\">: Inside the cylinders, the air-fuel mixture is compressed and ignited by the spark plug, which creates an explosion. This explosion forces the piston down, generating power to run the engine.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Cooling<\/b><span style=\"font-weight: 400;\">: Some intake manifolds also conduct coolant through passages in the manifold, helping to regulate the temperature of the engine and prevent overheating.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">The intake manifold\u2019s role in delivering the air-fuel mixture and managing engine temperature is key for smooth engine performance and efficiency.<\/span><\/p>\n<h2><b>What causes intake manifold leaks?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Intake manifolds fail because of the high levels of constantly-changing heat and pressure they are subjected to on a daily basis. The strain they are put under inevitably leads to cracks developing \u2013 it is up to the driver to diagnose the problem and deal with it at the earliest opportunity.<\/span><\/p>\n<h2><b>What are the symptoms of intake manifold leak?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Symptoms of intake manifold failure can be difficult to identify as such, so it\u2019s important that you are familiar with problems that might seem relatively minor, but which could be an indication of significant intake manifold issues.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The following can be symptoms of an intake manifold leak:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Difference in air-to-fuel ratio resulting in backfires and rough idling<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Milky-looking engine oil<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Coolant leaking onto the ground under the vehicle while it is stationary<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Regular or quick engine overheating<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Poor fuel economy<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Decreased acceleration<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Engine misfires<\/span><\/li>\n<\/ul>\n<h2><b>How to repair an intake manifold<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Repairing an intake manifold usually\u00a0 involves replacing the intake manifold or associated components. This can be costly and could be avoided by giving <\/span><a href=\"https:\/\/www.kseal.com\/za\/k-seal\"><span style=\"font-weight: 400;\">K-Seal<\/span><\/a><span style=\"font-weight: 400;\"> a try first.<\/span><\/p>\n<h3><span style=\"font-weight: 600;\">How much will intake manifold repair cost at a garage?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Although the cost of replacing an intake manifold will vary depending on the make and model of the car, many estimates have the cost of the part up to <\/span><span style=\"font-weight: 400;\">$300<\/span><span style=\"font-weight: 400;\">, with much of the cost of the job coming from labour and time spent on it. This can be a significantly higher sum \u2013 as much as<\/span> <span style=\"font-weight: 400;\">$900 <\/span><span style=\"font-weight: 400;\">\u2013 and in some cars it may not be worth going ahead with the job.<\/span><\/p>\n<h3><span style=\"font-weight: 600;\">Can K-Seal fix my intake manifold?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">If there is a coolant leak then, in most cases, using <\/span><a href=\"\/?page_id=14\"><span style=\"font-weight: 400;\">K-Seal<\/span><\/a><span style=\"font-weight: 400;\"> will help to quickly and stop the leak, saving you a lot of time and money. <\/span><a href=\"\/?page_id=21286\"><span style=\"font-weight: 400;\">Use our simple stockist search facility<\/span><\/a><span style=\"font-weight: 400;\"> to find a bottle and get back on the road.<\/span><\/p>\n<h3><span style=\"font-weight: 600;\">Could Other Parts of My Engine Be Affected?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Although your intake manifold could be the source of your engine troubles, it might not be the only component you need to take a look at. Select an engine part in the interactive diagram below to explore your engine and the important components that keep everything ticking over.<\/span><\/p>\n<div class=\"schematic-desc\">Click on the engine components below for details<div class=\"tooltip-title\"><\/div><a href=\"javascript:void(0);\" class=\"phone-moreinfo\">More Info &raquo;<\/a><\/div><div id=\"smallWrap\" class=\"canvas-wrap\">\r\n\t<div id=\"animation_container\" style=\"background-color:rgba(255, 255, 255, 0.00); width:100% !important; height:auto !important\">\r\n\t\t<canvas id=\"canvas\" width=\"1200\" height=\"900\" style=\"position: absolute; display: block; background-color:rgba(255, 255, 255, 0.00);\"><\/canvas>\r\n\t\t<div id=\"dom_overlay_container\" style=\"pointer-events:none; overflow:hidden; width:100% !important; height:auto !important; position: absolute; left: 0px; top: 0px; display: block;\">\r\n\t\t<\/div>\r\n\t<\/div><\/div>  \r\n\n<p>Still not sure what the problem is? <a href=\"https:\/\/www.kseal.com\/expert-advice\/common-symptoms\/60-second-problem-solver\">Try our 60 second problem solver<\/a> to quickly identify what the issue is based on your symptoms.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What are intake manifolds? An intake manifold, also known as the inlet manifold, directs the mixture of air and fuel to the right cylinder to be combusted so it can power the engine. Additionally, the intake manifold conducts coolant through to the cylinders in order to reduce the temperature of the engine. Attachment and maintenance<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":39579,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"acf":[],"_links":{"self":[{"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/pages\/39590"}],"collection":[{"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/comments?post=39590"}],"version-history":[{"count":0,"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/pages\/39590\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/pages\/39579"}],"wp:attachment":[{"href":"https:\/\/www.kseal.com\/za\/wp-json\/wp\/v2\/media?parent=39590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}