<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":2199,"date":"2019-04-03T15:52:20","date_gmt":"2019-04-03T14:52:20","guid":{"rendered":"https:\/\/www.kseal.com\/common-problems\/radiator\/"},"modified":"2026-01-28T16:04:43","modified_gmt":"2026-01-28T16:04:43","slug":"radiator","status":"publish","type":"page","link":"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator","title":{"rendered":"Repairing car radiator leaks with a radiator stop leak"},"content":{"rendered":"<h2>What is a car radiator?<\/h2>\n<p>The main function of a car\u2019s radiator is to cool the internal combustion engine that powers the vehicle &#8211; not to heat it up!<\/p>\n<figure id=\"attachment_17166\" aria-describedby=\"caption-attachment-17166\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17166\" src=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2020\/03\/car-radiator-schematic-1024x816.png\" alt=\"A car radiator highlighted in an exploded diagram of a car engine.\" width=\"650\" height=\"518\" srcset=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2020\/03\/car-radiator-schematic-1024x816.png 1024w, https:\/\/www.kseal.com\/wp-content\/uploads\/2020\/03\/car-radiator-schematic-300x239.png 300w, https:\/\/www.kseal.com\/wp-content\/uploads\/2020\/03\/car-radiator-schematic-768x612.png 768w, https:\/\/www.kseal.com\/wp-content\/uploads\/2020\/03\/car-radiator-schematic.png 1288w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><figcaption id=\"caption-attachment-17166\" class=\"wp-caption-text\">A car radiator is usually located at the front of a car\u2019s engine.<\/figcaption><\/figure>\n<p>The radiator is designed to remove the heat generated by the engine to the air in order to regulate the engine temperature and prevent overheating. If the engine overheats<span style=\"font-weight: 400;\">, it will stop working, leading to a <\/span><a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator\/car-radiator-repair-cost\"><span style=\"font-weight: 400;\">costly replacement<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>To avoid this, it\u2019s critical to understand how your car radiator works so you can quickly identify any <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator\/car-radiator-leak-symptoms\">common radiator leak symptoms<\/a>, such as radiator hissing and frequent engine overheating.<\/p>\n<h2>How does a car radiator work?<\/h2>\n<p>An engine needs to burn fuel to run, a process which naturally produces an immense amount of heat. The engine therefore needs to be cooled as much as possible so that the pistons do not break down and destroy the entire system.<\/p>\n<p>This is where the car radiator, which is part of the engine\u2019s cooling system, comes in.<\/p>\n<figure id=\"attachment_5962\" aria-describedby=\"caption-attachment-5962\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5962 size-full\" src=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2017\/07\/car-radiator.jpg\" alt=\"K-Seal will permanently car radiator leaks\" width=\"650\" height=\"433\" \/><figcaption id=\"caption-attachment-5962\" class=\"wp-caption-text\">A car radiator.<\/figcaption><\/figure>\n<h3><span style=\"font-weight: 600;\">How your car radiator cools the engine<\/span><\/h3>\n<ol>\n<li>The <b>coolant in an engine is passed through tubes inside the car radiator<\/b>, where heat it has absorbed from the engine is dissipated into the atmosphere, before the coolant returns to the engine. This is why it&#8217;s also important to keep an eye on your <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/normal-engine-coolant-temperature\">coolant temperature level<\/a>.<\/li>\n<li>Coolant enters the pipes in an overheated state, <strong>c<\/strong><b>ausing it to become highly pressurized<\/b> (aided by turbulence inside the car radiator pipes).<\/li>\n<li>This <b>causes the pressure cap to open<\/b> at a predetermined pressure point.<\/li>\n<li>The <b>heat is released<\/b>, allowing any excess coolant to escape into an overflow tank attached to the side of the radiator.<\/li>\n<li>That <b>coolant is then returned to the car radiator<\/b> when its temperature has sufficiently lowered.<\/li>\n<\/ol>\n<p>Car radiator and cooling systems vary slightly from model to model (especially in older cars versus newer models), but this is the process that the majority of systems employ.<\/p>\n<h2>Why do car radiators fail?<\/h2>\n<p>The main reason for car radiator failure is a\u00a0<b><a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/what-causes-coolant-to-leak\">coolant leak<\/a><\/b>, which can lead to the cooling system failing.<\/p>\n<p>If the coolant has not been checked or topped up properly, the radiator, hoses and hose connections will become clogged and begin to rust. Over time, such corrosion will cause small holes or \u2018pinhole leaks\u2019 to develop in the car radiator. This will result in engine coolant loss, and a need for car radiator repair &#8211; or even the <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator\/car-radiator-repair-cost\">costly complete replacement of your radiator<\/a>.<\/p>\n<h2>How to repair car radiator leaks<\/h2>\n<p>If you\u2019ve identified a <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator\/car-radiator-leak-symptoms\">common symptom of a leaking car radiator<\/a>, act quickly to get it fixed. To start with, you need the best radiator stop leak you can get your hands on.<\/p>\n<p><a href=\"https:\/\/www.kseal.com\/nz\/where-to-buy\">Find your local supplier<\/a> and grab yourself a bottle of <a href=\"https:\/\/www.kseal.com\/nz\/products\/k-seal\">K-Seal<\/a>. A highly reliable car radiator stop leak, <a href=\"https:\/\/www.kseal.com\/nz\/products\">K-Seal products<\/a> will repair and fix most leaks in the radiator or radiator casing &#8211; putting a stop to those troublesome pinhole leaks in your car radiator.<\/p>\n<h2>How to use car radiator stop leak<\/h2>\n<p>Using K-Seal as a radiator stop leak is simple:<\/p>\n<ol>\n<li>Shake the bottle.<\/li>\n<li>Put car radiator stop leak in the coolant reservoir or radiator.<\/li>\n<li>Run the engine up to operating temperature.<\/li>\n<\/ol>\n<p>The liquid formula will make its way around the engine and fill any pinhole leaks, holes and cracks in your radiator or cooling system to fix it. <span style=\"font-weight: 400;\">K-Seal is also a <\/span><a href=\"https:\/\/www.kseal.com\/nz\/using-k-seal\/how-does-k-seal-work\/scientifically-tested\"><span style=\"font-weight: 400;\">scientifically tested formula<\/span><\/a><span style=\"font-weight: 400;\">, meaning there is no risk that this radiator leak sealant will cause overheating.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-19876\" src=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2024\/04\/K-Seal-bottle.jpg\" alt=\"K-Seal being poured to fix a car radiator leak.\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.kseal.com\/wp-content\/uploads\/2024\/04\/K-Seal-bottle.jpg 600w, https:\/\/www.kseal.com\/wp-content\/uploads\/2024\/04\/K-Seal-bottle-300x200.jpg 300w, https:\/\/www.kseal.com\/wp-content\/uploads\/2024\/04\/K-Seal-bottle-360x240.jpg 360w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<h2>Why you should choose K-Seal to fix your leaking car radiator<\/h2>\n<p>Although the car radiator may be one of the cheaper components in the car engine, it can still <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/radiator\/car-radiator-repair-cost\">cost hundreds to have it repaired or replaced<\/a>.<\/p>\n<p><a href=\"https:\/\/www.kseal.com\/nz\/using-k-seal\/how-does-k-seal-work\/scientifically-tested\">Scientifically tested<\/a>, <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/difference-k-seal-k-seal-hd\">K-Seal, K-Seal HD<\/a> and <a href=\"https:\/\/www.kseal.com\/nz\/products\/k-seal-ultimate\">K-Seal Ultimate<\/a> are the #1 <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/engine-problems\/how-to-fix-a-blown-head-gasket\/does-head-gasket-sealer-work\">head gasket sealer<\/a> and radiator leak repair, able to do the following:<\/p>\n<ul>\n<li>seal holes up to 0.635mm in diameter<\/li>\n<li>seal slots or crack up to 0.254mm wide by 12.7mm long<\/li>\n<\/ul>\n<p>Just one bottle of K-Seal could save you a lot of money by <a href=\"https:\/\/www.kseal.com\/nz\/expert-advice\/what-causes-coolant-to-leak\">fixing an engine coolant leak<\/a> instead of you having to replace the parts.<\/p>\n<p><a class=\"btn btn-primary\" style=\"color: white; text decoration: none;\" role=\"button\" href=\"https:\/\/www.kseal.com\/nz\/where-to-buy\">Grab a bottle of K-Seal today<\/a><\/p>\n<h2>Could other parts of my engine be affected?<\/h2>\n<p>Although your car radiator could be the source of your engine troubles, it might not be the only part of your engine you need to take a look at.<\/p>\n<p>Select an engine part in the interactive diagram below to explore your engine and the important components that keep everything ticking over.<\/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 is a car radiator? The main function of a car\u2019s radiator is to cool the internal combustion engine that powers the vehicle &#8211; not to heat it up! The radiator is designed to remove the heat generated by the engine to the air in order to regulate the engine temperature and prevent overheating. If<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":170,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"acf":[],"_links":{"self":[{"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/pages\/2199"}],"collection":[{"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/comments?post=2199"}],"version-history":[{"count":32,"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/pages\/2199\/revisions"}],"predecessor-version":[{"id":20958,"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/pages\/2199\/revisions\/20958"}],"up":[{"embeddable":true,"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/pages\/170"}],"wp:attachment":[{"href":"https:\/\/www.kseal.com\/nz\/wp-json\/wp\/v2\/media?parent=2199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}