                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

if(typeof vp=="undefined"){var vp={};}
vp.events=function(){};vp.events.cancelEvent=function(oEvent)
{oEvent=oEvent||window.event;if(!oEvent)
{throw new Error("No event argument was passed into vp.events.cancelEvent()");}
oEvent.returnValue=false;if(oEvent.preventDefault){oEvent.preventDefault();}};vp.events.cancelBubble=function(oEvent){oEvent=oEvent||window.event;if(!oEvent)
{throw new Error("No event argument was passed into vp.events.cancelBubble()");}
if(oEvent.stopPropagation)
{oEvent.stopPropagation();oEvent.bubbleCanceled=true;}
else
{oEvent.cancelBubble=true;}};vp.events.cancel=function(oEvent)
{vp.events.cancelEvent(oEvent);vp.events.cancelBubble(oEvent);};vp.events.blurAll=function()
{var oBlurElement=document.getElementById("__blurElement");if(!oBlurElement)
{oBlurElement=document.createElement("INPUT");oBlurElement.type="text";oBlurElement.style.position="absolute";oBlurElement.style.backgroundColor="transparent";oBlurElement.id="__blurElement";document.body.appendChild(oBlurElement);}
oBlurElement.style.top=Math.max(document.documentElement.scrollTop,document.body.scrollTop)+10;oBlurElement.style.left=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft)+10;oBlurElement.style.visibility="visible";oBlurElement.focus();oBlurElement.blur();oBlurElement.style.visibility="hidden";};vp.events._callHandlers=function(oEvent)
{oEvent=window.event||oEvent;if(this.handlers[oEvent.type])
{for(var i=0;i<this.handles[oEvent.type].length;i++)
{this.handlers[oEvent.type](oEvent);}}};vp.events.add=function(vTarget,sEvent,fnHandler)
{var oTarget=vp.core.getElement(vTarget,"vp.events.add");var oEventMap=vp.events._initializeBoundObject(oTarget,sEvent);if(!oEventMap.enableInProgress)
{oEventMap.handlers.push(fnHandler);}
if(oEventMap.enabled)
{if(oTarget.addEventListener)
{oTarget.addEventListener(sEvent,fnHandler,false);}
else if(oTarget.attachEvent)
{oTarget.attachEvent("on"+sEvent,fnHandler);}
else
{if(!oTarget.handlers)
{oTarget.handlers={};}
if(!oTarget.handlers[sEvent])
{oTarget.handlers[sEvent]=[];}
oTarget.handlers[sEvent][oTarget.handlers[sEvent].length]=fnHandler;oTarget["on"+sEvent]=vp.events._callHandlers;}}};vp.events.remove=function(vTarget,sEvent,fnHandler)
{var oTarget=vp.core.getElement(vTarget,"vp.events.remove");var bDoRemove=true;try
{var oEventMap=vp.events._initializeBoundObject(oTarget,sEvent);if(!oEventMap.enableInProgress)
{oEventMap.handlers.removeValue(fnHandler);}
if(!oEventMap.enabled&&!oEventMap.enableInProgress)
{bDoRemove=false;}}
catch(ex)
{}
if(bDoRemove)
{try
{if(oTarget.closed)
{return;}}
catch(ex)
{return;}
if(oTarget.removeEventListener)
{oTarget.removeEventListener(sEvent,fnHandler,false);}
else if(oTarget.detachEvent)
{oTarget.detachEvent("on"+sEvent,fnHandler);}
else
{if(!oTarget.handlers)
{oTarget.handlers={};}
if(!oTarget.handlers[sEvent])
{oTarget.handlers[sEvent]=[];}
var aHandlers=oTarget.handlers[sEvent];var iLen=aHandlers.length;for(var i=0;i<iLen;i++)
{if(aHandlers[i]==fnHandler)
{aHandlers[i]=new Function();}}
aHandlers[aHandlers.length]=fnHandler;oTarget["on"+sEvent]=vp.events._callHandlers;}}};vp.events.removeAll=function()
{for(var sElemId in vp.events._boundObjects)
{try
{var sTemp=vp.events._boundObjects[sElemId].target._eventId;}
catch(ex)
{continue;}
for(var sEvent in vp.events._boundObjects[sElemId].events)
{var aHandlers=vp.events._boundObjects[sElemId].events[sEvent].handlers;if(aHandlers)
{var iLen=aHandlers.length;for(var i=iLen-1;i>=0;i--)
{var fnAction=function()
{vp.events.remove(vp.events._boundObjects[sElemId].target,sEvent,aHandlers[i]);};if(window.isDebug)
{fnAction();}
else
{try
{fnAction();}
catch(ex)
{}}}}}}};vp.events._boundObjects={};vp.events._eventIdCounter=0;vp.events._initializeBoundObject=function(oElement,sEvent)
{if(!oElement._eventId)
{oElement._eventId="evt"+vp.events._eventIdCounter;vp.events._eventIdCounter++;}
var oMap=vp.events._boundObjects[oElement._eventId];if(!oMap)
{oMap={target:oElement,events:{}};vp.events._boundObjects[oElement._eventId]=oMap;}
if(!oMap.events[sEvent])
{oMap.events[sEvent]={handlers:[],enabled:true};}
return oMap.events[sEvent];};vp.events.enable=function(vElement,sEvent,bEnable)
{if(typeof(bEnable)=="undefined")
{bEnable=true;}
var oElement=vp.core.getElement(vElement,"vp.events.enableEvents");var oEventMap=vp.events._initializeBoundObject(oElement,sEvent);if(oEventMap.enabled==bEnable)
{return;}
oEventMap.enabled=bEnable;var sSourceProp="on"+sEvent+(bEnable?"_disabled":"");var sTargetProp="on"+sEvent+(!bEnable?"_disabled":"");if(oElement[sSourceProp])
{oElement[sTargetProp]=oElement[sSourceProp];oElement[sSourceProp]=null;}
else
{oEventMap.enableInProgress=true;var fnChange=bEnable?vp.events.add:vp.events.remove;for(var i=0;i<oEventMap.handlers.length;i++)
{fnChange(oElement,sEvent,oEventMap.handlers[i]);}
oEventMap.enableInProgress=false;}};vp.events.addRecursive=function(oElement,sEvent,fnHandler)
{vp.events.add(oElement,sEvent,fnHandler);for(var i=0;i<oElement.childNodes.length;i++)
{var oChild=oElement.childNodes[i];if(oChild.nodeType==1)
{arguments.callee(oChild,sEvent,fnHandler);}}};vp.events.addToOnLoad=function(fnHandler)
{vp.events.add(window,"load",fnHandler);};vp.events.addToOnUnload=function(fnHandler)
{vp.events.add(window,"unload",fnHandler);};vp.events.addToOnLoad(function(){vp.events.isLoadComplete=true;});vp.events.runAfterLoadComplete=function(fnHandler)
{if(vp.events.isLoadComplete)
{fnHandler();}
else
{vp.events.addToOnLoad(fnHandler);}};vp.events.getEvent=function(oEvent)
{oEvent=oEvent||window.event;if(typeof oEvent.target!="object"&&oEvent.srcElement)
{oEvent.target=oEvent.srcElement;}
oEvent.realTarget=oEvent.target;if(oEvent.target&&oEvent.target.nodeType==3)
{oEvent.realTarget=oEvent.target.parentNode;}
if(typeof oEvent.charCode!="number"&&oEvent.keyCode)
{oEvent.charCode=oEvent.keyCode;}
if(typeof oEvent.pageX!="number"&&oEvent.offsetX)
{oEvent.pageX=oEvent.offsetX;oEvent.pageY=oEvent.offsetY;}
if(oEvent.type=="mouseout"&&typeof oEvent.toElement!="undefined"&&!oEvent.relatedTarget)
{oEvent.relatedTarget=oEvent.toElement;}
if(oEvent.type=="mouseover"&&typeof oEvent.fromElement!="undefined"&&!oEvent.relatedTarget)
{oEvent.relatedTarget=oEvent.fromElement;}
return oEvent;};vp.events.isRightClick=function(e)
{if(e.button==2||e.type=="contextmenu")
{return true;}};vp.events.isVisibleKeyCode=function(iKeyCode)
{if(iKeyCode>=112&&iKeyCode<=123)
{return false;}
if(iKeyCode>=33&&iKeyCode<=40)
{return false;}
if(iKeyCode>=14&&iKeyCode<=31)
{return false;}
switch(iKeyCode)
{case 9:case 45:case 91:case 145:return false;break;default:return true;}
return true;};vp.events.isFreedFunction=function(fnPointer)
{try
{var oTemp=fnPointer.valueOf();}
catch(ex)
{return true;}
return false;};vp.events.CustomEvent=function(oObj,sEventName)
{var _aHandlers=[];var _oObj=oObj;var _sEventName=sEventName;var me=this;this.useUnsafeClosures=false;this.addHandler=function(fnHandler)
{var fn;if(me.useUnsafeClosures)
{fn=fnHandler;}
else
{fn=fnHandler.__isClosure?fnHandler:fnHandler.getClosure(_oObj);}
fn.__freedCheck=true;_aHandlers.push(fn);};var removeFreedHandlers=function()
{for(var i=0;i<_aHandlers.length;i++)
{if(vp.events.isFreedFunction(_aHandlers[i]))
{_aHandlers.splice(i,1);i--;}}};this.removeHandler=function(fnHandler)
{removeFreedHandlers();for(var i=0;i<_aHandlers.length;i++)
{var bRemove=false;if(me.useUnsafeClosures&&_aHandlers[i]==fnHandler)
{bRemove=true;}
else if(_aHandlers[i].__funId==fnHandler.__funId)
{bRemove=true;}
if(bRemove)
{_aHandlers.splice(i,1);return;}}};this.removeAll=function()
{_aHandlers=[];};this.fire=function(e)
{if(!e)
{e={};}
if(!e.target)
{e.target=_oObj;}
if(!e.type)
{e.type=_sEventName;}
removeFreedHandlers();for(var i=0;i<_aHandlers.length;i++)
{_aHandlers[i](e);}
return e.cancelCustomEvent?false:true;};};vp.events.CustomAggregatedEvent=function(oObj,sEventName,iAggregationDelay)
{var me=this;this.inheritFrom=vp.events.CustomEvent;this.inheritFrom(oObj,sEventName);this.aggregationDelay=iAggregationDelay||350;var _iTimer=null;var fire_base=this.fire;this.fire=function(e)
{if(_iTimer!==null)
{clearTimeout(_iTimer);_iTimer=null;}
setTimeout(function(){fire_base(e);},me.aggregationDelay);};};vp.events.addOnDOMLoadHandler=function(fnCallback)
{var iTimer;var fnCallbackWrapper=function()
{if(arguments.callee.done)
{return;}
arguments.callee.done=true;if(iTimer)
{clearInterval(iTimer);}
fnCallback();};if(document.addEventListener)
{document.addEventListener("DOMContentLoaded",fnCallbackWrapper,false);}
else if(document.all)
{if(window.location.protocol=="https:")
{document.write("<script id=\"__ie_onload\" defer src='/vp/js-lib/common/empty.js'><\/script>");}
else
{document.write("<script id=\"__ie_onload\" defer src='javascript:void(0);'><\/script>");}
var oScript=document.getElementById("__ie_onload");if(oScript)
{oScript.onreadystatechange=function()
{if(this.readyState=="complete")
{fnCallbackWrapper();}}.getClosure(oScript);}}
else if(/WebKit/i.test(navigator.userAgent))
{iTimer=setInterval(function()
{if(/loaded|complete/.test(document.readyState)){fnCallbackWrapper();}},10);}
vp.events.add(window,"load",fnCallbackWrapper);};vp.events.addOnDOMLoadHandler(function(){vp.events.isDOMLoadComplete=true;});vp.events.runAfterDOMLoadComplete=function(fnHandler)
{if(vp.events.isDOMLoadComplete)
{fnHandler();}
else
{vp.events.addOnDOMLoadHandler(fnHandler);}};vp.events._eventHashProps=["type","altKey","altLeft","button","clientX","clientY","ctrlKey","ctrlLeft","dataFld","offsetX","offsetY","propertyName","qualifier","reason","repeat","screenX","screenY","shiftKey","shiftLeft","srcUrn","x","y"];vp.events._getEventSignature=function(oEvent)
{var aHash=[];var iLen=vp.events._eventHashProps.length;for(var i=0;i<iLen;i++)
{var sProp=vp.events._eventHashProps[i];var sVal="o";switch(typeof(oEvent[sProp]))
{case"string":case"number":sVal=oEvent[sProp];break;case"boolean":sVal=oEvent[sProp]?1:0;break;default:break;}
aHash.push(sVal);}
return aHash.join("");};vp.events._ieEventsPropertyCache=[];vp.events._getIEEventsPropertyFromCache=function(sID)
{for(var i=vp.events._ieEventsPropertyCache.length-1;i>=0;i--)
{if(vp.events._ieEventsPropertyCache[i].id==sID)
{return vp.events._ieEventsPropertyCache[i];}}
return null;};vp.events.setEventData=function(oEvent,sKey,vValue)
{if(document.all)
{var sID=vp.events._getEventSignature(oEvent);var oCachedProps=vp.events._getIEEventsPropertyFromCache(sID);if(!oCachedProps)
{oCachedProps={"id":sID,"customAttributes":{}};oCachedProps.customAttributes[sKey]=vValue;vp.events._ieEventsPropertyCache.push(oCachedProps);}
else
{oCachedProps.customAttributes[sKey]=vValue;}}
else
{if(!oEvent.customAttributes)
{oEvent.customAttributes={};}
oEvent.customAttributes[sKey]=vValue;}};vp.events.getEventData=function(oEvent,sKey)
{if(document.all)
{var aCache=vp.events._ieEventsPropertyCache;var iLen=vp.events._ieEventsPropertyCache.length;if(iLen>100)
{vp.events._ieEventsPropertyCache=vp.events._ieEventsPropertyCache.slice(iLen-100);}
var sID=vp.events._getEventSignature(oEvent);var oCachedProps=vp.events._getIEEventsPropertyFromCache(sID);if(oCachedProps)
{return oCachedProps.customAttributes[sKey];}}
else
{if(oEvent.customAttributes&&typeof(oEvent.customAttributes[sKey])!="undefined")
{return oEvent.customAttributes[sKey];}}
return null;};vp.events.fireEvent=function(oTarget,sEvent,oSrcEvent,oCustomArgs)
{var oEventArgs={bubbles:true,cancelable:true,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false,keyCode:0,charCode:0,button:0,detail:1,screenX:1,screenY:1,clientX:1,clientY:1,relatedTarget:oTarget};if(oSrcEvent)
{for(var sProp in oEventArgs)
{oEventArgs[sProp]=oSrcEvent[sProp];}}
if(document.createEvent)
{var oEvent=null;if(sEvent.indexOf("key")!=-1)
{oEvent=document.createEvent("KeyboardEvent");oEvent.initKeyEvent(sEvent,oEventArgs.bubbles,oEventArgs.cancelable,window,oEventArgs.ctrlKey,oEventArgs.altKey,oEventArgs.shiftKey,oEventArgs.metaKey,oEventArgs.keyCode,oEventArgs.charCode);}
else
{oEvent=document.createEvent("MouseEvents");oEvent.initMouseEvent(sEvent,oEventArgs.bubbles,oEventArgs.cancelable,window,oEventArgs.detail,oEventArgs.screenX,oEventArgs.screenY,oEventArgs.clientX,oEventArgs.clientY,oEventArgs.ctrlKey,oEventArgs.altKey,oEventArgs.shiftKey,oEventArgs.metaKey,oEventArgs.button,oEventArgs.relatedTarget);}
if(oCustomArgs)
{for(var sCustomProp in oCustomArgs)
{oEvent[sCustomProp]=oCustomArgs[sCustomProp];}}
oTarget.dispatchEvent(oEvent);}
else
{oTarget.fireEvent("on"+sEvent);}};vp.events.isModifierKey=function(e)
{return vp.browser.OS.isMac?e.metaKey:e.ctrlKey;};vp.events.EventManager=function()
{var _aEvents=[];this.add=function(oElement,sEvent,fnHandler)
{vp.events.add(oElement,sEvent,fnHandler);_aEvents.add([oElement,sEvent,fnHandler]);};this.remove=function(oElement,sEvent,fnHandler)
{for(var i=0;i<_aEvents.length;i++)
{if(oElement==_aEvents[i][0]&&sEvent==_aEvents[i][1]&&fnHandler==_aEvents[i][2])
{_aEvents.remove(i);vp.events.remove(oElement,sEvent,fnHandler);break;}}};this.removeAll=function()
{for(var i=0;i<_aEvents.length;i++)
{vp.events.remove(_aEvents[i][0],_aEvents[i][1],_aEvents[i][2]);}
_aEvents=[];};};
