xbox-1.0.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. function XboxButtonAnimation () {
  2. var _intervalID = 0;
  3. var cyclesCounter = 0;
  4. var totFrames = 4; // NUMBER OF ANIMATION FRAMES
  5. var loadingTime_default = 2000;
  6. var frameDuration_default = 300;
  7. var exitDuration_default = 400;
  8. var cycles_default = 2;
  9. var LoadingTime = loadingTime_default;
  10. var FrameDuration = frameDuration_default;
  11. var ExitDuration = exitDuration_default;
  12. var Cycles = cycles_default;
  13. var cyclesCounter = 0;
  14. this.SetCycles = SetCycles;
  15. this.SetLoadingTime = SetLoadingTime;
  16. this.SetFrameDuration = SetFrameDuration;
  17. this.SetExitDuration= SetExitDuration;
  18. // --------
  19. this.ValidateInstance=ValidateInstance;
  20. this.Start=Start;
  21. this.RenderFrame=RenderFrame;
  22. this._ClearCallingInterval=_ClearCallingInterval;
  23. this._ClearCallingIntervalExit=_ClearCallingIntervalExit;
  24. this.FrameFactory=FrameFactory;
  25. this.Reset=Reset;
  26. this.Exit=Exit;
  27. // Properties
  28. function SetCycles(cycles) {
  29. Cycles = !isNaN(cycles) ? cycles : 0;
  30. }
  31. function SetExitDuration(exitduration) {
  32. ExitDuration = !isNaN(exitduration) ? exitduration : 0;
  33. }
  34. function SetFrameDuration(frameduration) {
  35. FrameDuration = !isNaN(frameduration) ? frameduration : 0;
  36. }
  37. function SetLoadingTime(loadingtime) {
  38. LoadingTime = !isNaN(loadingtime) ? loadingtime : 0;
  39. }
  40. // Methods
  41. function ValidateInstance() {
  42. if (isNaN(Cycles) || (Cycles==0)) Cycles = cycles_default;
  43. if (isNaN(LoadingTime) || (LoadingTime==0)) LoadingTime = loadingTime_default;
  44. if (isNaN(FrameDuration) || (FrameDuration==0)) FrameDuration = frameDuration_duration;
  45. if (isNaN(ExitDuration) || (ExitDuration==0)) ExitDuration = exitDuration_duration;
  46. }
  47. function Start() {
  48. ValidateInstance();
  49. cyclesCounter = Cycles;
  50. FrameFactory(1);
  51. }
  52. function RenderFrame(step) {
  53. $('.xbox').attr( 'src', 'img/button_xbox3_frame_' + step + '.gif' );
  54. }
  55. function _ClearCallingInterval() {
  56. if (_intervalID!=0) window.clearTimeout(_intervalID);
  57. }
  58. function _ClearCallingIntervalExit() {
  59. if (_intervalID!=0) window.clearInterval(_intervalID);
  60. }
  61. function FrameFactory(iframe) {
  62. _ClearCallingInterval();
  63. RenderFrame(iframe);
  64. if (iframe==1 && (cyclesCounter==Cycles)) {
  65. // FROM THE FIRST FRAME
  66. _intervalID=window.setTimeout(function() {FrameFactory(iframe+1);}, LoadingTime);
  67. } else {
  68. if (iframe==totFrames) {
  69. // LAST FRAME
  70. cyclesCounter--;
  71. if (cyclesCounter>=1) {
  72. // LOAD FIRST FRAME
  73. _intervalID=window.setTimeout(function() {FrameFactory(1);}, FrameDuration);
  74. } else {
  75. // END ANIMATION
  76. _intervalID=window.setTimeout(function() {Exit(true);}, FrameDuration);
  77. }
  78. } else {
  79. // NORMAL LOAD
  80. _intervalID=window.setTimeout(function() {FrameFactory(iframe+1);}, FrameDuration);
  81. }
  82. }
  83. }
  84. function Reset() {
  85. _ClearCallingIntervalExit();
  86. cyclesCounter=Cycles;
  87. $('.xbox').attr( 'src', 'img/button_xbox3.gif' );
  88. }
  89. function Exit(success) {
  90. _intervalID=window.setInterval(function() {Reset();}, ExitDuration);
  91. if (success) window.open( $('#xboxlink').attr( 'value' ) , '' ,'_blank');
  92. }
  93. }
  94. var PageXboxButtonAni = null;
  95. <!-- Click - Event Handler -->
  96. $(function() {
  97. $(".xbox").click(function () {
  98. // Xbox Animation
  99. if (!PageXboxButtonAni) {
  100. PageXboxButtonAni = new XboxButtonAnimation();
  101. PageXboxButtonAni.SetCycles(2);
  102. PageXboxButtonAni.SetLoadingTime(2000);
  103. PageXboxButtonAni.SetFrameDuration(300);
  104. PageXboxButtonAni.SetExitDuration(400);
  105. PageXboxButtonAni.Start();
  106. PageXboxButtonAni = null;
  107. }
  108. })
  109. })