//#include "mc_tween2.as"
/*
How to use me
Example เลยละกัน










________________________________________________________________________________
easyMove
--------------------------------------------------------------------------------
สมมุตใน  Stage มี mc1 อันนึง ให้ Dupplicate มาอีกตัวนึง แล้วใส่ i('ไอ') ไว้ข้างหลัง เป็น mc1i 
สรุปง่ายๆ มีสองตัว 
ตัวที่ 1 คือ mc1 
ตัวที่ 2 คือ mc1i 
ทดลองด้วยการนำ mc1 ไว้กลาง Stage และนำ mc1i ไว้ตรงไหนก็ได้  ( ทดลองดูแล้วจะเข้าใจ ... ง่ายก่าผมอธิบายนะครับ  ^^)

วิธีใช้
1.) mc1.easyMove();
หรือ
2.) mc1.easyMove(MCtime,MCtween,Delay_ToStart,callBackFunction)

---------------------------------------------------------------------------------









_________________________________________________________________________________
getRandom(min:Number, max:Number)
---------------------------------------------------------------------------------
ตรงตัวเลยแล้วกันครับ
จะ return ค่า random กลับมาให้เรา

วิธีใช้ 
1.) myRandom = getRandom(5,15)
จะได้เลขที่ random ระหว่าง 5 - 15 นะครับบ
---------------------------------------------------------------------------------








_________________________________________________________________________________
addKey(fx, k)
---------------------------------------------------------------------------------
แอดฟังก์ชั่น เพื่อใช้ในการทดสอบ
สมมุติว่ามี 
function hello(){
trace('สวัสดีครับ')
}

วิธีใช้ 
1.) addKey(hello, 1)
เมื่อกด 1 ( Numpad key ) ก้อจะเข้าฟังก์ชั่น hello ให้เลย
หมายเหตุ : เปิดใช้คร่าวๆตอนนี้แค่เลข 1~9 เท่านั้น 
---------------------------------------------------------------------------------








_________________________________________________________________________________
rollEffect(MovieClip)
---------------------------------------------------------------------------------
เป็นฟังก์ชั่นเอาไว้สั่ง ให้มัน  onRollOver และ onRollOut
โดยข้อดีคือ 
A.) ใช้ onEnterFrame
B.) ใช้ rollOut แบบ ย้อนกลับจากเฟรมปัจจุบัน ทำให้ดู smooth สวยงาม
C.) ใน MovieClip จะมีกี่เฟรมก็ได้

วิธีใช้
1.) สร้าง MovieClip ขึ้นมา 1 ตัว ( เป็น symbol แบบ movieClip )
2.) ตั้งชื่อให้มัน ( เช่น  mc1 )
3.) ดับเบิ้ลคลิกเข้าไปข้างใน ... แล้ว tween  เช่น ให้มันใหญ่ขึ้น นิดนึง ( ให้ต่างกับเฟรมแรก )
4.) stop() ไว้ที่เฟรมแรก
เสร็จแล้วออกมาที่หน้า หลัก 
ใช้คำสั่ง  rollEffect(mc1)
ทดสอบโดยการนำเม้าส์ over และ out ดูครับ
---------------------------------------------------------------------------------








_________________________________________________________________________________
topDepths(MovieClip)
---------------------------------------------------------------------------------
ฟังก์ชั่นนี้ก็เหมือนกับสั่ง mc.swapDepths(this.getNextHighestDepth());
แต่ว่ามันยาวครับ ขี้เกียจพิมพ์ ^^

วิธีใช้ 
1.) topDepths(mc)
---------------------------------------------------------------------------------








_________________________________________________________________________________
getInt(MovieClip)
---------------------------------------------------------------------------------
การเอาตัวเลขจาก ชื่อของ MC 
เช่น 
mc154648.onPress  = function(){
trace(getInt(this))
}

ก็จะได้ค่าออกมาเป็น  154648 

ประโยชน์ ใช้ทำ ballon , ใช้ เรียก movie ตามเลขของปุ่มได้เลย
---------------------------------------------------------------------------------






_________________________________________________________________________________
loadMovieX(_mcLoad:MovieClip, _path:String, _alphaLoad:Boolean)
---------------------------------------------------------------------------------
การ  loadMovie แบบไม่ซ้ำของเก่า
---------------------------------------------------------------------------------





_________________________________________________________________________________
smoothImageLoad(imgURL,targetMovie)
---------------------------------------------------------------------------------
//smoothImageLoad("sample.jpg", mcLoad) // จะโหลดรูปภาพแบบ smooth
หรือ %++
mcLoad.loadImage('sample.jpg')

//mcLoad.loadMovie("sample.jpg")        // แบบโหลดทั่วไป ไม่ smooth ภาพแตก
---------------------------------------------------------------------------------



_________________________________________________________________________________
mc.page.grooveFrame()
---------------------------------------------------------------------------------
การกระจายเฟรมต่างๆ 
เช่น mc ตัวนั้น ข้างใน มีอยู่ 5 เฟรม  ก้อพิมพ์ไปเลย
เหมาะสำหรับพวกปุ่ม / หรือ ballon หรือ tooltips
---------------------------------------------------------------------------------



_________________________________________________________________________________
mc.onDoubleClick
---------------------------------------------------------------------------------
mmm.onDoubleClick = function() {
trace(1)
};
mmm._onPress = function() {
trace(2)
};
monica.onPress = function(){
trace(2)
}
---------------------------------------------------------------------------------


_________________________________________________________________________________
easyFade(clickFrom:MovieClip, mcAlpha:MovieClip, apStart:Number, apStop:Number, alphaSpeed:Number)
---------------------------------------------------------------------------------
เช่นการกดปุ่มที่ mc ที่เป็นปุ่ม
แล้วสั่งให้ mc อีกตัว Fade alpha ขึ้นมา
ที่ต้องใส่ clickFrom เพราะกันการกดซ้ำปุ่มเดิมเอาไว้
---------------------------------------------------------------------------------



_________________________________________________________________________________
getDecimal(num)
---------------------------------------------------------------------------------
แปลงค่าเป็นทศนิยม เหมาะสำหรับเครื่องคิดเลข
เช่น 
13 		เท่ากับ 	13.00
13.1	เท่ากับ		13.10
13.12	เท่ากับ 	13.12
13.123	เท่ากับ 	13.12
13.126	เท่ากับ		13.12
---------------------------------------------------------------------------------











[HISTORY LOG]
- since DEC 2009 : รำคาญต้องมานั่งพิมพ์ นั่งก๊อบปี้ ทีละส่วนๆ 
- 4 FEB 2010 : easyMove น้องใหม่!
- 4 FEB 2010 : จัดทุกอย่างยัดเป็น  external ActionScript
-11 FEB 2010 : smoothImageLoad || ref : http://www.frontend-multimedia.com/smoothImageLoader/  
   || ref : http://www.thaiflashdev.com/home/index.php?topic=9683.0
-12 FEB 2010 : smoothImageLoad ||สามารถใช้ได้เป็น  mc.loadImage('img.jpg')
-24 FEB 2010 : mc.page.grooveFrame()
-26 FEB 2010 : MovieClip.onDoubleClick
-02 MAR 2010 : MovieClip.onDoubleClick [---- BUG! ----]
-23 MAR 2010 : easyFade(clickFrom, mcAlpha, apStart, apStop, alphaSpeed)
-10 MAY 2010 : getDecimal(num)

[UPDATE : 10 MAY 2010 : Tlecoco]

 
*/
var __mcData:Array = new Array();
var __tempNum:Number = 0;
MovieClip.prototype.easyMove = function(This:MovieClip, MCtime:Number, MCtween:String, Delay_ToStart:Number, callBackFunction:Function) {
	if (This._alpha == undefined) {
		this.onEnterFrame = function() {
			trace('# easyMove : Require "this" in a first properties');
		};
	}
	if (MCtime == undefined) {
		MCtime = 1;
	}
	if (MCtween == undefined) {
		MCtween = 'easeoutcirc';
	}
	if (Delay_ToStart == undefined) {
		Delay_ToStart = 0;
	}
	if (callBackFunction == undefined) {
		//callBackFunction = false;
	}
	var integer:String = "";
	var junkSting:String = '';
	var str:String = this._name.split("");
	for (var i = 0; i<=str.length; i++) {
		if ((Number(str[i])*0) != 0 && str[i] != undefined) {
			junkSting += str[i];
		}
	}
	tempNum = getInt(this);
	if (!tempNum) {
		tempNum = '';
		__tempNum++;
		__mcData[__tempNum] = new Object(x, y, h, w, a, r);
		__mcData[__tempNum].x = this._x;
		__mcData[__tempNum].y = this._y;
		__mcData[__tempNum].w = this._width;
		__mcData[__tempNum].h = this._height;
		__mcData[__tempNum].a = this._alpha;
		__mcData[__tempNum].r = this._rotation;
	} else {
		__mcData[tempNum] = new Object(x, y, h, w, a, r);
		__mcData[tempNum].x = this._x;
		__mcData[tempNum].y = this._y;
		__mcData[tempNum].w = this._width;
		__mcData[tempNum].h = this._height;
		__mcData[tempNum].a = this._alpha;
		__mcData[tempNum].r = this._rotation;
	}
	// 
	rp = This;
	this._x = rp[junkSting+tempNum+'i']._x;
	this._y = rp[junkSting+tempNum+'i']._y;
	this._width = rp[junkSting+tempNum+'i']._width;
	this._height = rp[junkSting+tempNum+'i']._height;
	this._alpha = rp[junkSting+tempNum+'i']._alpha;
	this._rotation = rp[junkSting+tempNum+'i']._rotation;
	//
	rp[junkSting+tempNum+'i']._visible = false;
	//
	if (tempNum == '') {
		this.slideTo(__mcData[__tempNum].x, __mcData[__tempNum].y, MCtime, MCtween, Delay_ToStart, callBackFunction);
		this.alphaTo(__mcData[__tempNum].a, MCtime, MCtween, Delay_ToStart);
		this.rotateTo(__mcData[__tempNum].r, MCtime, MCtween, Delay_ToStart);
		this.resizeTo(__mcData[__tempNum].w, __mcData[__tempNum].h, MCtime, MCtween, Delay_ToStart);
	} else {
		this.slideTo(__mcData[tempNum].x, __mcData[tempNum].y, MCtime, MCtween, Delay_ToStart, callBackFunction);
		this.alphaTo(__mcData[tempNum].a, MCtime, MCtween, Delay_ToStart);
		this.rotateTo(__mcData[tempNum].r, MCtime, MCtween, Delay_ToStart);
		this.resizeTo(__mcData[tempNum].w, __mcData[tempNum].h, MCtime, MCtween, Delay_ToStart);
	}
	//
	//[ edit by TLECOCO][last updated 04/02/10 ]
	//[ u can get the Initial of your MovieClip always @>  __mcData[yourMovieClipNumber].Property  ,,, ex: mc13.__mcData[13].x ,,, so u got!! the initial of mc13._x]
};
function getRandom(min:Number, max:Number) {
	temp = Math.floor(Math.random()*(max-min+1))+min;
	return temp;
}
//
//
//
//
//
function topDepths(ths:MovieClip) {
	ths.swapDepths(this.getNextHighestDepth());
}
//
//
//
function getInit(arr:Array, ths:MovieClip) {
	arr.push({x:ths._x, y:ths._y, w:ths._width, h:ths._height, a:ths._alpha,r:ths._rotation});
}
//
//
//
MovieClip.prototype.rollEffect = function(getTop) {
	this.onRollOver = function() {
		if (getTop) {
			topDepths(this);
		}
		this.onEnterFrame = function() {
			this.nextFrame();
			if (this._currentframe == this._totalframes) {
				delete this.onEnterFrame;
			}
		};
	};
	this.onRollOut = function() {
		this.onEnterFrame = function() {
			this.prevFrame();
			if (this._currentframe == 1) {
				delete this.onEnterFrame;
			}
		};
	};
};
//
//
//
//
MovieClip.prototype.grooveFrame = function() {
	tmp = getInt(this._parent);
	this.gotoAndStop(tmp);
};
//
//
function getInt(n) {
	tmp_str = new String(n);
	str = tmp_str;
	for (var i = str.length; i>0; i--) {
		if (str.charCodeAt(i-1)<48 || str.charCodeAt(i-1)>57) {
			break;
		}
	}
	return parseInt(str.substring(i, str.length));
}
//
//
var tempPath:String = 'please, add the path of default-page to : tempPath';
function loadMovieX(_mcLoad:MovieClip, _path:String, _alphaLoad:Boolean) {
	if (tempPath == 'please, add the path of default-page to : tempPath') {
		trace(tempPath);
	} else {
		if (tempPath != path) {
			tempPath == path;
			if (_alphaLoad) {
				_mcLoad._alpha = 0;
				_mcLoad.loadMovie(_path);
				_mcLoad.alphaTo(100, 2, 'easeoutcirc');
			} else {
				_mcLoad.loadMovie(_path);
			}
		}
	}
}
//
//
//
//
/////////////////-----------------------------------    smoothImageLoad
//
//example!!!
//
//smoothImageLoad("sample.jpg", mymc)
//mymc.loadMovie("sample.jpg")
//
/////////////////-----------------------------------
_global.smoothImageLoad = function(imgURL, targetMovie) {
	var i = 0;
	do {
		i++;
	} while (eval("_root.smoothImageLoadTemp"+i) != undefined);
	tmc = _root.createEmptyMovieClip("smoothImageLoadTemp"+i, _root.getNextHighestDepth());
	tmc.createEmptyMovieClip("ti", tmc.getNextHighestDepth());
	tmc.tm = targetMovie;
	with (tmc) {
		tmcl = new MovieClipLoader();
		tmcl.onLoadComplete = function() {
			ti.onEnterFrame = function() {
				pixelData = new flash.display.BitmapData(ti._width, ti._height);
				pixelData.draw(ti);
				tm.attachBitmap(pixelData, 1, true, true);
				tm.smoothImageLoadComplete();
				removeMovieClip(ti._parent);
			};
		};
		tmcl.loadClip(imgURL, tmc.ti);
	}
};
mymc.smoothImageLoadComplete = function() {
	trace("yeah baby yeah!!!");
};
MovieClip.prototype.loadImage = function(path) {
	smoothImageLoad(path, this);
};
//
//
//
//
//
//
//
//
//
//
//
//
//
this.createEmptyMovieClip('__oef_easyFade', this.getNextHighestDepth());
var _easyFade_oldTemp:MovieClip;
function easyFade(clickFrom:MovieClip, mcAlpha:MovieClip, apStart:Number, apStop:Number, alphaSpeed:Number) {
	if (alphaSpeed == undefined) {
		//default alphaSpeed
		alphaSpeed = 10;
	}
	if (_easyFade_oldTemp != clickFrom) {
		mcAlpha._alpha = apStart;
		__oef_easyFade.onEnterFrame = function() {
			mcAlpha._alpha = mcAlpha._alpha-((mcAlpha._alpha-apStop)/alphaSpeed);
			if (mcAlpha._alpha == apStop) {
				delete __oef_easyFade.onEnterFrame;
			}
		};
		_easyFade_oldTemp = clickFrom;
	}
}










function getDecimal(num) {
	var _checkLength:Number = String(String(num).split(".").pop()).length;
	_div = (_checkLength == 1 && _checkLength != num) ? 10 : 100;
	tmpStr = String(Math.floor(num*_div)/_div).split(".").pop();
	if (tmpStr == num) {
		return (_div == 10) ? num+'.00' : num+'.00';
	} else {
		return (_div == 10) ? num+'0' : String(num);
	}
}













/////////////////----------------------------------- 
//
//
//
/*
MovieClip.prototype.onPress = function() {
if (this.__doubleClickInterval != -1) {
this.onDoubleClick();
this.__doubleClickTimeout();
}
this.__doubleClickInterval = setInterval(this, "__doubleClickTimeout", this.doubleClickSpeed);
//this._onPress();
};
MovieClip.prototype.__doubleClickTimeout = function() {
clearInterval(this.__doubleClickInterval);
this.__doubleClickInterval = -1;
};
MovieClip.prototype.__doubleClickInterval = -1;
MovieClip.prototype.doubleClickSpeed = 500;
MovieClip.prototype.onDoubleClick = function() {
};
MovieClip.prototype._onPress = function() {
};
*/
//
//
//
//
/*
for(i=0;i<total;i++){
//
}
*/
//RANDOM เฟรมแบบไม่ซ้ำ

var before:Array = ['s1', 's2', 's3', 's4', 's5'];
var frameStep:Array = [];
while (before.length) {
	frameStep.push(before.splice(Math.floor(Math.random()*before.length), 1)[0]);
}
var key1:Function;
var key2:Function;
var key3:Function;
var key4:Function;
var key5:Function;
var key6:Function;
var key7:Function;
var key8:Function;
var key9:Function;
var key_Up:Function;
var key_Down:Function;
var key_Left:Function;
var key_Right:Function;
function addKey(fx, k) {
	this['key'+k] = fx;
	if (k == 'up') {
		key_Up = fx;
	}
	if (k == 'down') {
		key_Down = fx;
	}
	if (k == 'left') {
		key_Left = fx;
	}
	if (k == 'right') {
		key_Right = fx;
	}
}
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
	// compare return value of getCode() to constant
	if (Key.getCode() == 97) {
		//show_trace('virsual 1');
		key1();
	}
	if (Key.getCode() == 98) {
		//show_trace('virsual 2');
		key2();
	}
	if (Key.getCode() == 99) {
		//show_trace('virsual 3');
		key3();
	}
	if (Key.getCode() == 100) {
		//show_trace('virsual 4');
		key4();
	}
	if (Key.getCode() == 101) {
		//show_trace('virsual 5');
		key5();
	}
	if (Key.getCode() == 102) {
		//show_trace('virsual 6');
		key6();
	}
	if (Key.getCode() == 103) {
		//show_trace('virsual 7');
		key7();
	}
	if (Key.getCode() == 104) {
		//show_trace('virsual 8');
		key8();
	}
	if (Key.getCode() == 105) {
		//show_trace('virsual 9');
		key9();
	}
	if (Key.getCode() == 37) {
		//show_trace('virsual left');
		//key_Left();
		//
		//LearnTech
		//pageNavi.pv.onPress();
	}
	if (Key.getCode() == 39) {
		//show_trace('virsual right');
		//key_Right();
		//
		//LearnTech
		//pageNavi.nx.onPress();
	}
	if (Key.getCode() == 38) {
		//show_trace('virsual up');
		//key_Up();
	}
	if (Key.getCode() == 40) {
		//show_trace('virsual down');
		//key_Down();
	}
	keyListener.onKeyUp = function() {
		//show_trace('- You releasedd a key - ');
	};
};
Key.addListener(keyListener);
_trace = false;
function show_trace(str) {
	if (_trace) {
		//trace(str);
	}
}

