Section 1
//CustomSharedObject (classes.CustomSharedObject)
package classes {
import flash.net.*;
public class CustomSharedObject {
public static var data:Object;
private static var so:SharedObject;
public static function wipe(_arg1:Object):void{
var _local2:*;
for (_local2 in _arg1) {
delete so.data[_local2];
};
so.flush();
data = so.data;
}
public static function set(_arg1:Object):void{
var _local2:*;
for (_local2 in _arg1) {
so.data[_local2] = _arg1[_local2];
};
so.flush();
data = so.data;
}
public static function clear():void{
so.clear();
so.flush();
data = so.data;
}
public static function init(_arg1:String, _arg2:String="/"):void{
so = SharedObject.getLocal(_arg1, _arg2);
data = so.data;
}
public static function checkData(_arg1:String, _arg2=null){
if (so.data[_arg1] != undefined){
return (so.data[_arg1]);
};
if (_arg2 != null){
so.data[_arg1] = _arg2;
};
return (_arg2);
}
public static function updateData(_arg1:Object):void{
var _local2:*;
for (_local2 in _arg1) {
so.data[_local2] = _arg1[_local2];
};
so.flush();
data = so.data;
}
public static function deleteData(_arg1:Object):void{
var _local2:*;
for (_local2 in _arg1) {
delete so.data[_local2];
};
so.flush();
data = so.data;
}
public static function get(_arg1:String, _arg2=null){
if (so.data[_arg1] != undefined){
return (so.data[_arg1]);
};
if (_arg2 != null){
so.data[_arg1] = _arg2;
};
return (_arg2);
}
}
}//package classes
Section 2
//Debug (classes.Debug)
package classes {
import flash.events.*;
import flash.net.*;
public class Debug {
private static var conn:LocalConnection;
public static function init():void{
if (conn == null){
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
};
}
private static function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "status":
break;
case "error":
break;
};
}
public static function iTrace(_arg1:String):void{
var traceString = _arg1;
trace(traceString);
try {
sendMessage(traceString);
} catch(e:Error) {
};
}
private static function sendMessage(_arg1:String):void{
if (conn == null){
throw (new Error("Debug LocalConnection not initialised"));
};
conn.send("_myConnection", "lcHandler", _arg1);
}
}
}//package classes
Section 3
//InboxTag (classes.InboxTag)
package classes {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class InboxTag {
private static var timeOut:int = 600;
private static var clientId:int = 0;
private static var maxTagDepth:int = 10;
private static var isDebugMode:Boolean = true;
private static var tagPath:String = "http://www.inboxtag.com/";
private static var isInit:Boolean = false;
private static var tagData:Object;
private static var viralCount:int = 5;
private static var tagHolder:Sprite;
private static var viralCalled:int = 0;
private static var curTagDepth:int = initTagDepth;
private static var initTagDepth:int = 1;
public static function checkViralChartSend(){
viralCalled++;
if (viralCalled >= viralCount){
callViralChart();
viralCalled = 0;
};
}
public static function init(_arg1:Stage):void{
clientId = InboxTagData.clientId;
tagData = InboxTagData.tagData;
Security.allowDomain(tagPath);
if (!isInit){
tagHolder = new Sprite();
};
isInit = true;
}
public static function callViralChart():void{
var _local1:URLRequest;
var _local2:Loader;
debugTrace("call viral chart");
_local1 = new URLRequest((("http://www.viralchart.com/tracker.php?media=" + Settings.get("viralChartId")) + "&f=F"));
_local2 = new Loader();
_local2.load(_local1);
}
public static function callTag(_arg1, _arg2:int=-1):void{
var _local3:*;
var _local4:*;
var _local5:Loader;
var _local6:URLRequest;
var _local7:URLVariables;
var _local8:*;
var _local9:LoaderContext;
if (tagData == null){
throw (new Error("tagData is undefined. Check that InboxTag.init() has been called"));
};
if (_arg1.pg == "enterGame"){
TimeStore.startTimer();
};
if (isNaN(_arg1.pg)){
_local3 = _arg1.pg;
_arg1.pg = tagData[_arg1.pg];
};
if (_arg1.pg != undefined){
if (Settings.get("isFacebook")){
_arg1.sc = 913;
} else {
_arg1.sc = Settings.get("mySource");
};
if (_arg1.pg == 2688){
_arg1.i1 = TimeStore.getPassed();
};
debugTrace("start callTag---------------------");
if (_local3 != undefined){
debugTrace((" " + _local3));
};
for (_local4 in _arg1) {
debugTrace((((" " + _local4) + "=") + _arg1[_local4]));
};
debugTrace("end callTag---------------------------------");
if (LangContent.isMultiLang){
_arg1.p5 = LangContent.lang;
};
_local5 = new Loader();
_local6 = new URLRequest((tagPath + "tag.swf"));
_local7 = new URLVariables();
if (_arg2 != -1){
_local7.cl = _arg2;
} else {
_local7.cl = clientId;
};
_local7.js = "yes";
_local7.isFlashCall = true;
_local7.ti = 600;
for (_local8 in _arg1) {
_local7[_local8] = _arg1[_local8];
};
_local7.rnd = new Date().getTime();
_local6.data = _local7;
_local9 = new LoaderContext();
_local9.checkPolicyFile = true;
_local5.load(_local6, _local9);
tagHolder.addChild(_local5);
} else {
trace("------InboxTag Error-----------------------------");
trace((" Page undefined - tagDataID:" + _local3));
trace("---------------------------------------------------");
};
}
private static function debugTrace(_arg1):void{
if (isDebugMode){
Debug.iTrace(("InboxTag - " + _arg1));
};
}
}
}//package classes
Section 4
//InboxTagData (classes.InboxTagData)
package classes {
public class InboxTagData {
private static var _tagData:Object = {initLoadFlash:2516, enterGame:2518, playGame:2517, playLevel:2686, showInterstital:2687, clickToHalifax:2688, playInFaceBookLink:2689, viewFaceBookLeague:2690, sendToAfriend:2691, completeGame:2692, inviteFacebook:2694, completeFeedBack:2696};
private static var _clientId:int = 122;
public static function get tagData():Object{
return (_tagData);
}
public static function get clientId():int{
return (_clientId);
}
}
}//package classes
Section 5
//LangContent (classes.LangContent)
package classes {
import flash.events.*;
import flash.net.*;
import flash.system.*;
import flash.utils.*;
public class LangContent extends EventDispatcher {
public static const LOADED:String = "loaded";
public static const CHANGE:String = "change";
private static var errorCharacter:String = "!";
private static var currentLang:String = "en";
private static var isDebugMode:Boolean = true;
private static var defaultLang:String = "en";
private static var _status:String;
private static var isTestMode:Boolean = false;
private static var isInitLoad:Boolean = true;
private static var langContentList:Array = [];
private static var langList:Array = [];
private static var isErrorToDefaultLang:Boolean = false;
private static var firstLoadCount:int;
protected static var disp:EventDispatcher;
private static function parseLang(_arg1:String, _arg2:String):void{
var _local3:Array;
var _local4:*;
var _local5:Array;
_local3 = _arg1.split("&");
for (_local4 in _local3) {
_local5 = _local3[_local4].split("=");
langContentList[_arg2][_local5[0]] = decodeURIComponent(_local5[1]);
};
}
public static function returnFailure(_arg1:IOErrorEvent):void{
debugTrace(("returnFailure - event:" + _arg1));
status = "failed";
currentLang = defaultLang;
langContentList[currentLang] = LangLocalStrings.stringsData;
if (isInitLoad){
dispatchEvent(new Event(LOADED));
} else {
dispatchEvent(new Event(CHANGE));
};
isInitLoad = false;
}
public static function returnSuccess(_arg1:Event):void{
var _local2:URLLoader;
debugTrace("- returnSuccess");
_local2 = URLLoader(_arg1.target);
parseLang(_local2.data, currentLang);
status = "loaded";
firstLoadCount++;
if (isInitLoad){
if (firstLoadCount == 2){
dispatchEvent(new Event(LOADED));
isInitLoad = false;
};
} else {
dispatchEvent(new Event(CHANGE));
};
}
public static function changeLang(_arg1:String):void{
CustomSharedObject.updateData({myLang:_arg1});
InboxTag.callTag({pg:"changeLang", p1:_arg1, p2:currentLang});
currentLang = _arg1;
loadLang(currentLang);
}
public static function init(_arg1:String="", _arg2:Boolean=true):void{
var _local3:String;
var _local4:Boolean;
var _local5:int;
var _local6:String;
debugTrace("initialise");
debugTrace((" forceLang:" + _arg1));
langList = LangLocalStrings.langList;
isTestMode = _arg2;
if (isTestMode){
currentLang = defaultLang;
langContentList[currentLang] = LangLocalStrings.stringsData;
status = "success";
dispatchEvent(new Event(LOADED));
} else {
if (((!((CustomSharedObject.checkData("myLang", "none") == "none"))) && (!(Settings.get("isLocal"))))){
_local6 = CustomSharedObject.checkData("myLang");
} else {
if (_arg1 != null){
_local6 = _arg1;
} else {
_local6 = Capabilities.language.slice(0, 2);
};
};
_local3 = "";
_local4 = false;
_local5 = 0;
while (((!(_local4)) && ((_local5 < langList.length)))) {
if (langList[_local5].code == _local6){
_local4 = true;
_local3 = _local6;
} else {
_local5++;
};
};
debugTrace((" isFoundValidLanguage:" + _local4));
debugTrace((" initLang:" + _local3));
debugTrace((" sniffLang:" + _local6));
if (!_local4){
_local3 = defaultLang;
};
if (_local3 == defaultLang){
firstLoadCount = 1;
} else {
firstLoadCount = 0;
loadLang(defaultLang);
};
if (Settings.get("isLocal")){
isErrorToDefaultLang = true;
};
currentLang = _local3;
CustomSharedObject.updateData({myLang:currentLang});
loadLang(currentLang);
};
}
public static function get status():String{
return (_status);
}
public static function removeEventListener(... _args):void{
if (disp == null){
return;
};
disp.removeEventListener.apply(null, _args);
}
public static function getLangList():Array{
return (langList);
}
public static function addEventListener(... _args):void{
if (disp == null){
disp = new EventDispatcher();
};
disp.addEventListener.apply(null, _args);
}
public static function checkValidText(_arg1:String):Boolean{
if (langContentList[currentLang] != null){
if (langContentList[currentLang][_arg1] != null){
return (true);
};
return (false);
//unresolved jump
};
return (false);
}
public static function getText(_arg1:String):String{
var _local2:*;
if (langContentList[currentLang] != null){
_local2 = langContentList[currentLang][_arg1];
} else {
_local2 = null;
};
if (_local2 == null){
debugTrace(("Error - text id not found:" + _arg1));
if (isErrorToDefaultLang){
_local2 = langContentList[defaultLang][_arg1];
if (_local2 == null){
if (_arg1 == ""){
_local2 = "";
} else {
_local2 = (errorCharacter + _arg1);
};
};
} else {
if (_arg1 == ""){
_local2 = "";
} else {
_local2 = (errorCharacter + _arg1);
};
};
};
return (Validation.trimText(_local2));
}
public static function set status(_arg1:String):void{
_status = _arg1;
}
private static function debugTrace(_arg1):void{
if (isDebugMode){
Debug.iTrace(("LangContent - " + _arg1));
};
}
public static function dispatchEvent(... _args):void{
if (disp == null){
return;
};
disp.dispatchEvent.apply(null, _args);
}
public static function get lang():String{
return (currentLang);
}
private static function loadLang(_arg1:String):void{
var req:URLRequest;
var vars:*;
var langVars:*;
var langToLoad = _arg1;
debugTrace("loadLang");
debugTrace((" langToLoad:" + langToLoad));
langContentList[currentLang] = {};
status = "loading";
if (Settings.get("isLocal")){
req = new URLRequest((("langs/" + langToLoad) + ".txt"));
} else {
req = new URLRequest((((Settings.get("flashFilesPath") + "langs/") + langToLoad) + ".txt"));
};
vars = new URLVariables();
try {
langVars = new URLLoader(req);
} catch(e:Error) {
returnFailure(null);
};
langVars.addEventListener(Event.COMPLETE, returnSuccess);
langVars.addEventListener(IOErrorEvent.IO_ERROR, returnFailure);
}
public static function get isMultiLang():Boolean{
if (langList.length <= 1){
return (false);
};
return (true);
}
}
}//package classes
Section 6
//LangLocalStrings (classes.LangLocalStrings)
package classes {
public class LangLocalStrings {
private static const STRINGS_DATA:Object = {splashPlayGame:"Play Game", footerCopyright:"", scoreLabel:"Score", startGame:"Start Game", formEnterForename:"Enter forename", startGame:"word"};
private static const LANGS_LIST:Array = [{name:"English", code:"en"}];
public static function get langList():Array{
return (LANGS_LIST);
}
public static function get stringsData():Object{
return (STRINGS_DATA);
}
}
}//package classes
Section 7
//Settings (classes.Settings)
package classes {
import flash.display.*;
public class Settings {
private static var isInit:Boolean = false;
private static var propertyData:Object = {};
public static function init(_arg1:LoaderInfo):void{
var _local2:*;
if (!isInit){
_local2 = {};
_local2.isFacebook = false;
_local2.gameName = "helipopter";
_local2.gamePath = "http://www.helipopter.co.uk/";
_local2.cgiPath = "http://www.helipopter.co.uk/cgi-bin/helipopter/";
_local2.leagueStandingsPath = "http://www.viewstandings.com/helipopter/";
_local2.leagueCgiPath = "http://www.inboxtag.com/cgi-bin/inboxtag/";
_local2.viralChartId = "811";
_local2.isLocal = ((_arg1.url.slice(0, 4) == "file")) ? true : false;
_local2.gameTitle = "helipopter";
_local2.gameFacebookAPIKey = "752a160d764adbb1287392855e596b93";
if (_local2.isLocal){
_local2.flashFilesPath = "";
_local2.soundFilesPath = "";
} else {
_local2.flashFilesPath = "http://www.helipopter.co.uk/";
_local2.soundFilesPath = "http://www.helipopter.co.uk/";
};
_local2.levelPath = "http://www.helipopter.co.uk/levels/";
_local2.versionNumber = ((_arg1.parameters.game_version == undefined)) ? "1.7.5" : _arg1.parameters.game_version;
_local2.checklevel = ((_arg1.parameters.checklevel == "yes")) ? true : false;
_local2.loaderInfoStore = _arg1.parameters;
_local2.mySource = 912;
_local2.halifaxLink = "http://www.halifax.co.uk/creditcards/CLPs/popmain.asp";
_local2.halifaxFBLink = "http://www.halifax.co.uk/creditcards/CLPs/helipopter_face.asp";
set(_local2);
isInit = true;
};
}
public static function get(_arg1:String){
if (propertyData[_arg1] == null){
throw (new Error((("Settings property:" + _arg1) + " not found")));
};
return (propertyData[_arg1]);
}
public static function set(_arg1:Object):void{
var _local2:*;
for (_local2 in _arg1) {
propertyData[_local2] = _arg1[_local2];
};
}
}
}//package classes
Section 8
//Validation (classes.Validation)
package classes {
public class Validation {
public static function validatePassword(_arg1:String, _arg2:String, _arg3:Number=0):String{
if (_arg1.length < _arg3){
return ("password too short");
};
if (_arg1 != _arg2){
return ("passwords don't match");
};
return ("success");
}
public static function validateText(_arg1:String, _arg2:Number=0):String{
if (_arg1.length < _arg2){
return ("name too short");
};
return ("success");
}
public static function validatePostcode(_arg1:String=null):String{
var _local2:*;
var _local3:*;
var _local4:int;
if ((((_arg1.length == 0)) || ((_arg1 == null)))){
return ("noPostcode");
};
_local2 = _arg1.split(" ");
_local3 = "";
_local4 = 0;
while (_local4 < _local2.length) {
_local3 = (_local3 + _local2[_local4]);
_local4++;
};
if (_local3.length > 7){
return ("tooLong");
};
if (_local3.length < 5){
return ("tooShort");
};
if (!isNaN(_local3.substr(0, 1))){
return ("startWithNumber");
};
if (!isNaN(_local3.substr(-1, 1))){
return ("last digit is a number");
};
if (!isNaN(_local3.substr(-2, 1))){
return ("2nd to last digit is a number");
};
if (isNaN(_local3.substr(-3, 1))){
return ("3rd to last digit is a letter");
};
if (isNaN(_local3.substr(-4, 1))){
return ("4th to last digit is a letter");
};
return ("success");
}
public static function validateEmail(_arg1:String):String{
var _local2:RegExp;
_local2 = /^[a-z][\w.-]+@\w[\w.-]+\.[\w.-]*[a-z][a-z]$/i;
if (_local2.test(_arg1)){
return ("success");
};
return ("invalidEmail");
}
public static function trimText(_arg1:String):String{
var _local2:*;
_local2 = 0;
while ((((_arg1.charCodeAt(_local2) == 32)) || ((_arg1.charCodeAt(_local2) == 10)))) {
_arg1 = _arg1.slice(1, _arg1.length);
};
_local2 = (_arg1.length - 1);
while ((((_arg1.charCodeAt(_local2) == 32)) || ((_arg1.charCodeAt(_local2) == 10)))) {
_arg1 = _arg1.slice(0, (_arg1.length - 1));
_local2 = (_arg1.length - 1);
};
return (_arg1);
}
}
}//package classes
Section 9
//MainTimeline (otherhelipopter_fla.MainTimeline)
package otherhelipopter_fla {
import flash.display.*;
import flash.events.*;
import classes.*;
import flash.net.*;
import flash.system.*;
import flash.utils.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.printing.*;
import flash.text.*;
import flash.ui.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var tempLoader;
public var asc;
public var url:URLRequest;
public var variables:URLVariables;
public var inboxTagClientId:Number;
public var inboxTagList:Array;
public function MainTimeline(){
addFrameScript(0, frame1);
}
function frame1(){
Settings.init(loaderInfo);
Settings.set({stage:stage});
inboxTagClientId = 122;
inboxTagList = [];
asc = 918;
InboxTagData.tagData["quickTag"] = 2713;
InboxTag.init(stage);
InboxTag.callTag({pg:"quickTag", sc:asc});
Security.allowDomain("http://www.helipopter.co.uk");
url = new URLRequest("http://www.helipopter.co.uk/shell.swf");
variables = new URLVariables();
variables.rnd = new Date().getTime();
url.method = URLRequestMethod.GET;
url.data = variables;
tempLoader = new Loader();
tempLoader.load(url);
addChild(tempLoader);
}
}
}//package otherhelipopter_fla
Section 10
//TimeStore (TimeStore)
package {
import flash.utils.*;
public class TimeStore {
public static var myTime:Number = 0;
public static function startTimer(){
myTime = getTimer();
}
public static function getPassed():Number{
var _local1:Number;
_local1 = (getTimer() - myTime);
startTimer();
return (_local1);
}
}
}//package