src/js/utils.js
author hamidouk
Tue, 29 Nov 2011 11:09:08 +0100
branchpopcorn-port
changeset 345 8a088f7daa66
parent 308 495ef0f3e483
child 354 002c314cabbf
permissions -rw-r--r--
rollover over the interface buttons now works as expected. Also changed the width of the buttons to the correct size. Resized the width and height of the sprites to be the same as the boxes we display them in.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     1
/* utils.js - various utils that don't belong anywhere else */
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     2
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     3
/* trace function, for debugging */
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     4
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     5
IriSP.traceNum = 0;
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     6
IriSP.trace = function( msg, value ) {
73
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
     7
/*
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     8
	if( IriSP.config.gui.debug === true ) {
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
     9
		IriSP.traceNum += 1;
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    10
		IriSP.jQuery( "<div>"+IriSP.traceNum+" - "+msg+" : "+value+"</div>" ).appendTo( "#Ldt-output" );
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    11
	}
73
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    12
*/
31
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    13
};
cbb1425bc769 begun breaking the code across multiple files.
hamidouk
parents:
diff changeset
    14
73
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    15
/* used in callbacks - because in callbacks we lose "this",
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    16
   we need to have a special function which wraps "this" in 
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    17
   a closure. This way, the 
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    18
*/   
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    19
IriSP.wrap = function (obj, fn) {
253
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    20
  return function() {    
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    21
    var args = Array.prototype.slice.call(arguments, 0);
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    22
    return fn.apply(obj, args);
73
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    23
  }
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    24
}
a8192c57c87d added a function to make closures (for use in callbacks).
hamidouk
parents: 60
diff changeset
    25
99
912f100fecb0 added a small utility function to convert a time to a progression percentage.
hamidouk
parents: 78
diff changeset
    26
/* convert a time to a percentage in the media */
103
2dfd89e91c3a added a method to sort the json annotations. changed the tests accordingly.
hamidouk
parents: 99
diff changeset
    27
IriSP.timeToPourcent = function(time, timetotal){
253
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    28
	var time = Math.abs(time);
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    29
  var timetotal = Math.abs(timetotal);
95c6b77f005e added more test for utility functions.
hamidouk
parents: 252
diff changeset
    30
  
160
d3f336807ec3 a little tweak to timeToPourcent.
hamidouk
parents: 103
diff changeset
    31
	return Math.floor((time/timetotal) * 100);
99
912f100fecb0 added a small utility function to convert a time to a progression percentage.
hamidouk
parents: 78
diff changeset
    32
};
912f100fecb0 added a small utility function to convert a time to a progression percentage.
hamidouk
parents: 78
diff changeset
    33
256
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    34
IriSP.padWithZeros = function(num) {
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    35
  if (Math.abs(num) < 10) {
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    36
    return "0" + num.toString();
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    37
  } else {
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    38
    return num.toString();
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    39
  }
8e1181b855bd added a function to pad a number with zeros. waiting for the helpers to land into
hamidouk
parents: 254
diff changeset
    40
};
252
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    41
/* convert a number of seconds to a tuple of the form 
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    42
   [hours, minutes, seconds]
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    43
*/
254
cafaa694b709 fixed the conversion function to accomodate mustache.
hamidouk
parents: 253
diff changeset
    44
IriSP.secondsToTime = function(secs) {  
252
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    45
  var hours = Math.abs(parseInt( secs / 3600 ) % 24);
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    46
  var minutes = Math.abs(parseInt( secs / 60 ) % 60);
254
cafaa694b709 fixed the conversion function to accomodate mustache.
hamidouk
parents: 253
diff changeset
    47
  var seconds = parseFloat(Math.abs(secs % 60).toFixed(0));
252
fd84e0fb26d8 added a function to convert a number of seconds to an hour, minutes, seconds.
hamidouk
parents: 160
diff changeset
    48
  
308
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    49
  var toString_fn = function() {
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    50
    var ret = "";
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    51
    if (hours > 0)
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    52
       ret = IriSP.padWithZeros(this.hours) + ":";
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    53
    ret += IriSP.padWithZeros(this.minutes) + ":" + IriSP.padWithZeros(this.seconds);
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    54
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    55
    return ret;
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    56
  }
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    57
  return {"hours" : hours, "minutes" : minutes, "seconds" : seconds, toString: toString_fn};
285
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    58
};
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    59
308
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    60
IriSP.secondsToString
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    61
285
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    62
/* format a tweet - replaces @name by a link to the profile, #hashtag, etc. */
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    63
IriSP.formatTweet = function(tweet) {
297
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    64
  var rNickname = /@(\w+)/gi; // matches a @handle
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    65
  var rHashtag = /#(\w+)/gi;  // matches a hashtag
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    66
  var rUrl = /((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi; // copied from http://codegolf.stackexchange.com/questions/464/shortest-url-regex-match-in-javascript/480#480
285
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    67
  
297
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    68
  var i1 = tweet.replace(rUrl, "<a href='$1'>$1</a>");
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    69
  var i2 = i1.replace(rNickname, "<a href='http://twitter.com/$1'>@$1</a>");
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    70
  var i3 = i2.replace(rHashtag, "<a href='http://twitter.com/search?q=%23$1'>#$1</a>");
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    71
ed4a459c9290 fixed the formatTweet to create links to urls.
hamidouk
parents: 285
diff changeset
    72
  return i3;
285
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    73
};
b7aa28af2c10 added a function to format a tweet.
hamidouk
parents: 256
diff changeset
    74
60
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    75
/* for ie compatibility
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    76
if (Object.prototype.__defineGetter__&&!Object.defineProperty) {
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    77
   Object.defineProperty=function(obj,prop,desc) {
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    78
      if ("get" in desc) obj.__defineGetter__(prop,desc.get);
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    79
      if ("set" in desc) obj.__defineSetter__(prop,desc.set);
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    80
   }
ffc038fdb8f1 commented ie8 helper function
hamidouk
parents: 31
diff changeset
    81
}
308
495ef0f3e483 added a toString method to the object returned by IriSP.secondsToTime.
hamidouk
parents: 297
diff changeset
    82
*/