
SAPO.namespace('Utility');if(!Array.prototype.forEach){Array.prototype.forEach=function forEach(cb,thisArg){var O,len,T,k,kValue;if(this===null||this===undefined){throw new TypeError('this is null or not defined');}
O=Object(this);len=O.length>>>0;if({}.toString.call(cb)!=='[object Function]'){throw new TypeError(cb+' is not a function');}
if(thisArg){T=thisArg;}
k=0;while(k<len){if(Object.prototype.hasOwnProperty.call(O,k)){kValue=O[k];cb.call(T,kValue,k,O);}
++k;}};}
if(!Array.prototype.map){Array.prototype.map=function(callback,thisArg){var T,A,k;if(this===null||this===undefined){new TypeError(" this is null or not defined");}
var O=Object(this);var len=O.length>>>0;if({}.toString.call(callback)!=="[object Function]"){throw new TypeError(callback+" is not a function");}
if(thisArg){T=thisArg;}
A=new Array(len);k=0;while(k<len){var kValue,mappedValue;if(k in O){kValue=O[k];mappedValue=callback.call(T,kValue,k,O);A[k]=mappedValue;}
++k;}
return A;};}
SAPO.Utility.Array={inArray:function(value,arr){if(typeof arr==='object'){for(var i=0,f=arr.length;i<f;++i){if(arr[i]===value){return true;}}}
return false;},sortMulti:function(arr,key){if(typeof arr==='undefined'||arr.constructor!==Array){return false;}
if(typeof key!=='string'){return arr.sort();}
if(arr.length>0){if(typeof(arr[0][key])==='undefined'){return false;}
arr.sort(function(a,b){var x=a[key];var y=b[key];return((x<y)?-1:((x>y)?1:0));});}
return arr;},keyValue:function(value,arr,first){if(typeof value!=='undefined'&&typeof arr==='object'&&this.inArray(value,arr)){var aKeys=[];for(var i=0,f=arr.length;i<f;++i){if(arr[i]===value){if(typeof first!=='undefined'&&first===true){return i;}else{aKeys.push(i);}}}
return aKeys;}
return false;},shuffle:function(arr){if(typeof(arr)!=='undefined'&&arr.constructor!==Array){return false;}
var total=arr.length,tmp1=false,rnd=false;while(total--){rnd=Math.floor(Math.random()*(total+1));tmp1=arr[total];arr[total]=arr[rnd];arr[rnd]=tmp1;}
return arr;},each:function(arr,cb){var arrCopy=arr.slice(0),total=arrCopy.length,iterations=Math.floor(total/8),leftover=total%8,i=0;if(leftover>0){do{cb(arrCopy[i++],i-1,arr);}while(--leftover>0);}
if(iterations===0){return arr;}
do{cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);cb(arrCopy[i++],i-1,arr);}while(--iterations>0);return arr;},some:function(arr,cb,context){"use strict";if(arr==null){throw new TypeError('First argument is invalid.');}
var t=Object(arr);var len=t.length>>>0;if(typeof cb!=="function"){throw new TypeError('Second argument must be a function.');}
for(var i=0;i<len;i++){if(i in t&&cb.call(context,t[i],i,t)){return true;}}
return false;},intersect:function(arr1,arr2){if(!arr1||!arr2||arr1 instanceof Array===false||arr2 instanceof Array===false){return[];}
var shared=[];for(var i=0,I=arr1.length;i<I;++i){for(var j=0,J=arr2.length;j<J;++j){if(arr1[i]===arr2[j]){shared.push(arr1[i]);}}}
return shared;},convert:function(arr){return Array.prototype.slice.call(arr||[],0);},insert:function(arr,idx,value){arr.splice(idx,0,value);},remove:function(arr,from,rLen){var output=[];for(var i=0,iLen=arr.length;i<iLen;i++){if(i>=from&&i<from+rLen){continue;}
output.push(arr[i]);}
return output;}};