Yesterday on the way back from the Ship, Ee Leen was talking to me in her half-sleepy mood, where her brain couldn't process what she was talking about until she told me "Jon, I'm really tired and my dain bread." At first I didn't quite understand what was her last sentence until she paused for a while and laughed. Then I come to realize that it was actually brain dead LOL.Read more...

"An Apple a day is good for you"

Yeah man, eating this Apple is reaaaaaally good for you!

This new 13" Apple Macbook laptop, which my bro bought it few days ago! Wahahahaha I want this Apple too =x

Celcom12032 sent me this:

Alert! Beware of spam SMS inviting you to switch to other networks (Maxis/DIGI/U Mobile). Keep your number & remain with Celcom, the widest and best network.

Hahahahahaha I guess Celcom is now afraid of losing its customers. They do sound very desperate and really hope customers won't leave them. Even my dad is planning to switch to Digi!

Hoho~

This morning when I woke up and was preparing to go for college, I received an e-mail from Amazon's Payment site (Something like Paypal.com site) that I have sent USD$1k. Wooo interesting... I thought it was a fake e-mail kinda thing. So I check in detail about that Amazon Payment site and yes, the e-mail sent to me was authentic, original... REAL! Gosh...

I didn't know that Amazon has a payment site also to do transactions and I logged in to my account to check out this transaction. Then, I was totally shocked sampai saya tak tahu nak kata apa to see this...


My account has been hacked!

So yeah, my account was hacked and this guy, whoever that hacked into my account was attempting to send a huge amount of money to Amazon's subsidiary company, Alexa Internet (Or somebody else). Thank God the USD4k and USD2k transaction was declined. The only transaction that went through was the USD1k.

I informed my dad about this wonderful horror I had and he called up the bank to inquiry about this transaction. Indeed, the bank said the USD1k transaction has been made to Alexa Internet via Amazon.com, but the payment was still pending on the bank's side. Phew, I'm glad to hear that it was still pending. Even though they said the money will definitely be sent, but I guess we could dispute this false transaction after that since we already informed the bank earlier.

All I have to do now is wait about the update of the transaction. What a morning horror...

Long time no see you and I don't think I will be see-ing too often already huhu!

Since upgraded to iTunes 8, I have problem syncing my applications with my iPhone. Not sure whether the problem does occur in iTunes 7 though.

Anyway the problem I had was "The application "abc" was not installed on the "Jon's iPhone" because you are not authorized for it on this computer."

The solution is very simple: Go to your iTunes, and at the top menu bar where the File, Edit, View etc.Read more...

Andy: I want my computer to last up to 2 years le.

Daniel: 2 years after that your comp very old jor. Play Solitaire also hang...

Andy: ... Choi!

Jon: HAHAHAHA.

Hidden Street will not be just an ordinary information database for MapleStory, but it will do its best to cover as many online games as possible with the help of the community of course, and post up new announcement and updates of the online games.

Huhu~ A great new adventure for Hidden Street.

Anybody wants to join the Read more...

Currently watching 1 Litre of Tears.

You need to allow pop-ups for this Flash.

I have created a Flash program which has no purpose at all. Yeah, I know it sounds dumb for wasting my time to create this, but I am still glad that I manage to develop a simple program in Flash through the concept of Object-Oriented Programming.

Still I feel that the way I wrote the codes are not efficient and lots of repetitive. So yeah I still need to buck up on my OOP.

You could check out the Flash program though by clicking the little red button in the Flash above. LiL.Jon will be there to help you out on how to use the program.

View the source code for this flash: [spoiler]
import caurina.transitions.*;

const Z = 90;
const X = 88;
var statusMove:int = 1;
var count:int; //Determines the case for the dynamic text
var temp:int;
var isJonIn:Boolean = false;
var introTimer:Timer = new Timer(7000); //Timer for 4 seconds each dialog in intro
var randomTimer:Timer = new Timer(12000);
var timer:Timer = new Timer(8000);
var usedBeforeArray:Array;

/****************************************
[0] = Clicked on auto run before
[1] = Used custom size field before
[2] = Used custom rotate before
[3] = Clicked on rotation button before
[4] = Clicked on arrow buttons before
*/
usedBeforeArray = new Array(false, false, false, false, false);

var randomSayArray:Array;
randomSayArray = new Array("JonLoh created me when he was 18 years old. He have no idea why he created me.",
"Oh yeah, do come back and visit www.JonLoh.net next time.",
"JonLoh took about 3 days developing this no-so-useful Flash program.",
"I have a headphone stucked on my head because JonLoh loves music and he wants me to hear it 24/7.",
"Simple fact about the Bible - 66 books, over 40 inspired authors, about 85 prophecies being fulfilled.",
"Need someone to design and build your website? JonLoh would be able to do that. Contact him!",
"JonLoh feels the way he programmed this Flash isn't efficient and lots of repeating codes. That's bad!",
"Interesting read-up for Software Engineers: Google for No Silver Bullet.");

btn1.addEventListener(MouseEvent.CLICK, theBtn1);
btn2.addEventListener(MouseEvent.CLICK, theBtn2);
btn3.addEventListener(MouseEvent.CLICK, theBtn3);
btn4.addEventListener(MouseEvent.CLICK, theBtn4);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownListener);
bg_mc.btnSquare.addEventListener(MouseEvent.CLICK, theSquare);

function theBtn1(e:Event):void{ Tweener.addTween(bg_mc, {width: stage.stageWidth * 0.2,
height:stage.stageHeight * 0.2, time: 1}); };

function theBtn2(e:Event):void{ Tweener.addTween(bg_mc, {width: stage.stageWidth * 0.5,
height:stage.stageHeight * 0.5, time: 1}); };

function theBtn3(e:Event):void{ Tweener.addTween(bg_mc, {width: stage.stageWidth * 0.8,
height:stage.stageHeight * 0.8, time: 1}); };

function theBtn4(e:Event):void{ Tweener.addTween(bg_mc, {width: customWidth.text,
height:customHeight.text, time: 1}); };

btnTop.addEventListener(MouseEvent.CLICK, theBtnTop);
btnRight.addEventListener(MouseEvent.CLICK, theBtnRight);
btnBottom.addEventListener(MouseEvent.CLICK, theBtnBottom);
btnLeft.addEventListener(MouseEvent.CLICK, theBtnLeft);
btnCenter.addEventListener(MouseEvent.CLICK, theBtnCenter);

function theBtnTop(e:Event):void{ bg_mc.y -= 2; jonForMove(); };
function theBtnRight(e:Event):void{ bg_mc.x += 2; jonForMove(); };
function theBtnBottom(e:Event):void{ bg_mc.y += 2; jonForMove(); };
function theBtnLeft(e:Event):void{ bg_mc.x -= 2; jonForMove(); };
function theBtnCenter(e:Event):void{ Tweener.addTween(bg_mc, {x: stage.stageWidth * 0.5 - 30,
y:stage.stageHeight * 0.5, time: 0.5, rotation: 0});};

rotateClock.addEventListener(MouseEvent.CLICK, theRotateClock);
rotateAntiClock.addEventListener(MouseEvent.CLICK, theRotateAntiClock);
btnRotate.addEventListener(MouseEvent.CLICK, theCustomRotate);

function theRotateClock(e:Event):void{
bg_mc.rotation += 2;
jonForRotate()
};
function theRotateAntiClock(e:Event):void{
bg_mc.rotation -= 2;
jonForRotate()
};
function theCustomRotate(e:Event):void {
Tweener.addTween(bg_mc, {time: 0.5, rotation: customRotate.text});
};

function keyDownListener(e:KeyboardEvent):void {
if (e.keyCode==Keyboard.LEFT) {
theBtnLeft(e);
}else if (e.keyCode==Keyboard.RIGHT) {
theBtnRight(e);
}else if (e.keyCode==Keyboard.UP) {
theBtnTop(e);
}else if (e.keyCode==Keyboard.DOWN) {
theBtnBottom(e);
}else if (e.keyCode==Z) {
theRotateAntiClock(e);
}else if (e.keyCode==X) {
theRotateClock(e);
}else if (e.keyCode == Keyboard.ENTER) {
if (stage.focus == customHeight || stage.focus == customWidth) {
theBtn4(e);
} else {
theCustomRotate(e);
}
}
};

function theSquare(e:MouseEvent):void {
if(usedBeforeArray[0] == false) {
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
liljon.jonSays.text = "You have just clicked the box to auto turn and move it. Click on it again to stop it!";
usedBeforeArray[0] = true;
} else {
callJonOut();
callJonOutIntro();
}
if (statusMove == 1) {
statusMove = 0;
keepMoving();
} else {
Tweener.addTween(bg_mc, {x: bg_mc.x, y: bg_mc.y, rotation: bg_mc.rotation, time: 1});
statusMove = 1;
}
};

function keepMoving() {
Tweener.addTween(bg_mc, {x: Math.random()*(stage.stageWidth-50), y: Math.random()*stage.stageHeight,
rotation: Math.random()*180, time: 0.8, onComplete: keepMoving});
};

function countDown() {
timer.stop();
timer.addEventListener(TimerEvent.TIMER, callJonTimeOut);
timer.start();
};

function callJonIn() {
Tweener.addTween(liljon, {y: liljon.y-60, time: 0.6});
countDown();
randomTimer.stop();
isJonIn = true;
};

function callJonOut() {
Tweener.addTween(liljon, {y: 400, time: 1});
randomTimer.start();
isJonIn = false;
};

function callJonTimeOut(e:TimerEvent):void {
callJonOut();
};

function callJonOutIn() {
countDown();
Tweener.addTween(liljon, {y: 400, time: 0.3, onComplete: callJonIn});
isJonIn = false;
};

customHeight.addEventListener(MouseEvent.CLICK, theCustomHeightField);
customWidth.addEventListener(MouseEvent.CLICK, theCustomWidthField);
customRotate.addEventListener(MouseEvent.CLICK, theCustomRotateField);

function theCustomHeightField(e:MouseEvent):void {
if (usedBeforeArray[1] == false) {
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
liljon.jonSays.text = "The box will transform based on the values you defined. Press Resize or Enter key to resize.";
usedBeforeArray[1] = true;
}
};

function theCustomWidthField(e:MouseEvent):void {
theCustomHeightField(e);
};

function theCustomRotateField(e:MouseEvent):void {
if (usedBeforeArray[2] == false) {
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
liljon.jonSays.text = "The box will rotate according to the entered value. The recommended value would be 0 to 180.";
usedBeforeArray[2] = true;
}
};

function jonForMove() {
if (usedBeforeArray[4] == false) {
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
liljon.jonSays.text = "You could use the keyboard to move it too with the UP, DOWN, LEFT and RIGHT arrow key.";
usedBeforeArray[4] = true;
}
};

function jonForRotate() {
if (usedBeforeArray[3] == false) {
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
liljon.jonSays.text = "You could use the keyboard to rotate it too. Z for clockwise, X for anti-clockwise.";
usedBeforeArray[3] = true;
}
};

function jonIntro() {
introTimer.addEventListener(TimerEvent.TIMER, callJonTimeOutInIntro);
introTimer.start();
callJonInIntro();
};

function callJonInIntro() {
jonSaysWhat();
Tweener.addTween(liljon2, {y: liljon2.y-60, time: 0.6});
isJonIn = true;
};

function callJonOutIntro() {
Tweener.addTween(liljon2, {y: 410, time: 1});
introTimer.stop();
randomTimer.addEventListener(TimerEvent.TIMER, jonSaysRandom);
randomTimer.start();
isJonIn = false;
};

function callJonTimeOutInIntro(e:TimerEvent):void {
callJonOutInIntro();
};

function callJonTimeOutIntro(e:TimerEvent):void {
callJonOutIntro();
};

function callJonOutInIntro() {
Tweener.addTween(liljon2, {y: 410, time: 1, onComplete: callJonInIntro});
jonSaysWhat();
count++;
isJonIn = false;
};

function jonSaysWhat() {
switch (count) {
case 0:
liljon2.jonSays.text = "Hello there! I am JonLoh's web representative, lilJon and it's very nice to meet you!";
break;
case 1:
liljon2.jonSays.text = "You might have seen me before in his previous Flash work where you have to wake me up and sleep.";
break;
case 2:
liljon2.jonSays.text = "Anyway, you are currently looking at JonLoh's first interactive Flash program.";
break;
case 3:
liljon2.jonSays.text = "This little Flash program is a simple program where you can define the size of the box...";
break;
case 4:
liljon2.jonSays.text = "Move the box around the empty area and also to rotate the box clockwise or anti-clockwise!";
break;
case 5:
liljon2.jonSays.text = "To start off, click on any box button under the Size section in the right panel. Try it!";
introTimer.stop();
introTimer.addEventListener(TimerEvent.TIMER, callJonTimeOutIntro);
introTimer.start();
break;
default:
break;
}
};

function jonSaysRandom(e:TimerEvent) {
var decision:int = 0;
var randomSay:int = 0;
decision = Math.random() * 2;

do {
randomSay = Math.random() * randomSayArray.length;
} while(temp == randomSay);

trace("randomSay: " + randomSay);
trace("temp: " + temp);

if (decision != 0) {
liljon.jonSays.text = randomSayArray[randomSay];
if (isJonIn == true) {
callJonOutIn();
callJonOutIntro();
} else {
callJonIn();
}
temp = randomSay;
}
};

jonIntro();
[/spoiler]