var Jiffy=function(){this.addBulkLoad=function(d,e){i.captured[d]=e};this.getUID=function(){return Math.round(Math.random()*1E15)};this.checkRemoveEvent=function(d){if(a[d]!=null){d=a[d];Jiffy.utils.removeEvent(d.element_id,d.browser_event,d.callback_func,true)}};this.addMarksMeasures=function(d,e,h,k){m.push({name:d,evt:e,et:h,rt:k})};var a={},b=window.JiffyParams!=undefined&&JiffyParams.jsStart!=undefined?JiffyParams.jsStart:(new Date).getTime(),c=window.JiffyParams!=undefined&&JiffyParams.pname!=
undefined?JiffyParams.pname:encodeURI(window.location),f=window.JiffyParams!=undefined&&JiffyParams.uid!=undefined?JiffyParams.uid:getUID(),g=[],i={pn:c,st:b,uid:f,captured:{}},m=[];return{addMeasure:function(d,e){addMarksMeasures("PageStart",d,e,(new Date).getTime())},mark:function(d){var e=(new Date).getTime();g[d]={startTime:e,lastTime:e}},measure:function(d,e){if(!(Jiffy.options.USE_JIFFY==undefined||!Jiffy.options.USE_JIFFY)){var h=typeof d=="string"?d:(d||window.event).type,k=(new Date).getTime(),
j,l;if(e!=null&&g[e]!=null){j=g[e].lastTime;l=k-j;g[e].lastTime=k}else{j=b;l=k-j}if(e!=null)addMarksMeasures(e,h,l,j);else{g.PageStart={startTime:j,lastTime:k};addMarksMeasures("PageStart",h,l,j)}if(Jiffy.options.ISBULKLOAD&&h!="unload")addBulkLoad(h,l);else{e=Jiffy.utils.formatMeasure(h,l);Jiffy.Ajax.report("img","http://jiffy.sonico.com/rx",{uid:f,st:b,pn:c,ets:e})}checkRemoveEvent(d)}},_bulkLoad:function(){Jiffy.measure("load");var d=Jiffy.getMeasures(),e=d.length,h="";for(x=0;x<e;x++)h+=Jiffy.utils.formatMeasure(d[x].evt,
d[x].et)+",";h=h.replace(/\,$/g,"");Jiffy.Ajax.report("img","http://jiffy.sonico.com/rx",{uid:f,st:b,pn:c,ets:h})},getMeasures:function(){return m},clearMeasures:function(){m=[];g=[]}}}();Jiffy.options={USE_JIFFY:true,ISBULKLOAD:true,BROWSER_EVENTS:{unload:window,load:window},SOFT_ERRORS:false};
Jiffy.utils={inArray:function(a,b){for(var c=0,f=a.length;c<f;c++)if(b==a[c])return true;return false},get:function(a){return document.getElementById(a)},onDOMReady:function(a){document.addEventListener&&document.addEventListener("DOMContentLoaded",a,false);/WebKit/i.test(navigator.userAgent)&&setInterval(function(){/loaded|complete/.test(document.readyState)},10)},on:function(a,b,c,f){f=f||false;if(b=="DOMReady"){this.onDOMReady(c);return true}else{a=typeof a=="string"?this.get(a):a;if(window.addEventListener){a.addEventListener(b,
c,f);return true}else if(window.attachEvent){a.attachEvent("on"+b,c);return true}else return false}},serialize:function(a){var b="";if(typeof a=="object")for(key in a)b+=key+"="+a[key]+"&";return b.replace(/&$/,"")},formatMeasure:function(a,b){return a+":"+b},hashToJiffyList:function(a){var b="";if(typeof a=="object")for(key in a)if(typeof a[key]=="object")Jiffy.utils.hashToJiffyList(a[key]);else b+=Jiffy.utils.formatMeasure(key,a[key])+",";return b.replace(/,$/,"")},removeEvent:function(a,b,c,f){a=
typeof a=="string"?this.get(a):a;if(window.removeEventListener){a.removeEventListener(b,c,f);return true}else if(window.detachEvent){a.detachEvent("on"+b,c);return true}else return false},getUID:function(){return Math.round(Math.random()*1E15)},hashMerge:function(a,b){for(var c in a)if(b[c]!=null)b[c]=a[c]}};
Jiffy.Ajax={connection:function(){return window.XMLHttpRequest?new XMLHttpRequest:window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null},report:function(a,b,c,f,g){var i=this.connection();c=typeof c=="string"?c:Jiffy.utils.serialize(c);b+="?"+c;i.onreadystatechange=!f&&!g?function(){}:function(){if(i.readyState==4)if(i.status==200)f&&f.call(i);else g&&g.call(i)};switch(a){case "get":i.open("GET",b,true);i.send(null);break;case "post":i.open("POST",b,true);i.send(c);break;case "img":document.createElement("img").setAttribute("src",
b);break}}};var _jiffy=_jiffy||[];
Jiffy.init=function(){window.JiffyOptions!=undefined&&Jiffy.utils.hashMerge(window.JiffyOptions,Jiffy.options);if(!(Jiffy.options.USE_JIFFY==undefined||!Jiffy.options.USE_JIFFY)){var a=Jiffy.options.BROWSER_EVENTS;for(var b in a){var c=a[b];c&&Jiffy.utils.on(c,b,Jiffy.measure)}Jiffy.options.ISBULKLOAD&&Jiffy.utils.on(window,"load",Jiffy._bulkLoad);if(typeof _jiffy=="object")for(var f in _jiffy){a=_jiffy[f];if(a[0]=="measure")Jiffy.addMeasure(a[1],a[2]-JiffyParams.jsStart);else a[0]=="addMeasure"&&
Jiffy.addMeasure(a[1],a[2])}_jiffy.push=function(g){if(g[0]=="measure")Jiffy.addMeasure(g[1],g[2]-JiffyParams.jsStart);else g[0]=="addMeasure"&&Jiffy.addMeasure(g[1],g[2])}}};Jiffy.init();
