/*=============================================================================================================================================
                                                               JUNE    FRAMEWORK    v 2.0                                                      
=============================================================================================================================================*/

/*==================================================================================
    Copyright (c) 2008 Costin Trifan                        http://www.june-js.com/ 
                                                                                    
    Permission is hereby granted, free of charge, to any person obtaining a copy    
    of this software and associated documentation files (the "Software"), to deal   
    in the Software without restriction, including without limitation the rights    
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell       
    copies of the Software, and to permit persons to whom the Software is           
    furnished to do so, subject to the following conditions:                        
                                                                                    
    The above copyright notice and this permission notice shall be included in      
    all copies or substantial portions of the Software.                             
                                                                                    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR      
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,        
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE     
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER          
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,   
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN       
    THE SOFTWARE.                                                                   
                                                                                    
==================================================================================*/

/*==============================================================
        Description:                                            
            This is the Framework's main file.                  
        version: 2.0                                            
        Package: JUNE FRAMEWORK                                 
        Last Edited: Oct 27, 2008                               
==============================================================*/

var JUNE=(function(){var _version='2.0';return{start:function(runnable){return JUNE.Event.addHandler(window,"load",runnable.init);},getVersion:function(){return _version;}}})();JUNE.Event=(function(){if(document.addEventListener){var addHandler=function(domElement,type,handler){domElement.addEventListener(type,handler,false);};var removeHandler=function(domElement,type,handler){domElement.removeEventListener(type,handler,false);};var preventDefault=function(event){return event.preventDefault();};var stopPropagation=function(event){return event.stopPropagation();};var addHandlers=function(domElements,events,handler){if(!JUNE.Util.isArray(domElements)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < domElements > must be an Array!'));}if(!JUNE.Util.isArray(events)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < events > must be an Array!'));}for(var i=0;i<domElements.length;i++){for(var e=0;e<events.length;e++){addHandler(domElements[i],events[e],handler);}}};var removeHandlers=function(domElements,events,handler){if(!JUNE.Util.isArray(domElements)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < domElements > must be an Array!'));}if(!JUNE.Util.isArray(events)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < events > must be an Array!'));}for(var i=0;i<domElements.length;i++){for(var e=0;e<events.length;e++){removeHandler(domElements[i],events[e],handler);}}};}else if(document.attachEvent){var addHandler=function(domElement,type,handler){if(_findHandler(domElement,type,handler)!=-1){return;}var handler2=function(){var event=window.event;if(Function.prototype.call){handler.call(domElement,event);}else{domElement._currentListener=handler;domElement._currentListener(event);domElement._currentListener=null;}};domElement.attachEvent("on"+type,handler2);var handlerRecord={domElement:domElement,type:type,handler:handler,handler2:handler2};var targetDocument=domElement.document||domElement;var targetWindow=targetDocument.parentWindow;var handlerId="1"+_handlerCounter++;if(!targetWindow._allHandlers){targetWindow._allHandlers={};}targetWindow._allHandlers[handlerId]=handlerRecord;if(!domElement._handlers){domElement._handlers=[];}domElement._handlers[domElement._handlers.length]=handlerId;if(!targetWindow._unloadHandlerAdded){targetWindow._unloadHandlerAdded=true;targetWindow.attachEvent("onunload",_removeAllHandlers);}};var removeHandler=function(domElement,type,handler){var handlerIndex=_findHandler(domElement,type,handler);if(handlerIndex==-1){return;}var targetDocument=domElement.document||domElement;var targetWindow=targetDocument.parentWindow;var handlerId=domElement._handlers[handlerIndex];var handlerRecord=targetWindow._allHandlers[handlerId];domElement.detachEvent("on"+type,handlerRecord.handler2);domElement._handlers.splice(handlerIndex,1);delete targetWindow._allHandlers[handlerId];};var _findHandler=function(domElement,type,handler){var handlers=domElement._handlers;if(!handlers){return-1;}var targetDocument=domElement.document||domElement;var targetWindow=targetDocument.parentWindow;for(var i=handlers.length-1;i>=0;i--){var handlerId=handlers[i];var handlerRecord=targetWindow._allHandlers[handlerId];if(handlerRecord.type==type&&handlerRecord.handler==handler){return i;}}return-1;};var _removeAllHandlers=function(){var targetWindow=this;for(id in targetWindow._allHandlers){var handlerRecord=targetWindow._allHandlers[id];handlerRecord.domElement.detachEvent("on"+handlerRecord.type,handlerRecord.handler2);delete targetWindow._allHandlers[id];}};var addHandlers=function(domElements,events,handler){if(!JUNE.Util.isArray(domElements)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < domElements > must be an Array!'));}if(!JUNE.Util.isArray(events)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < events > must be an Array!'));}for(var i=0;i<domElements.length;i++){for(var e=0;e<events.length;e++){addHandler(domElements[i],events[e],handler);}}};var removeHandlers=function(domElements,events,handler){if(!JUNE.Util.isArray(domElements)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < domElements > must be an Array!'));}if(!JUNE.Util.isArray(events)){throw new Error(JUNE.Exception.generalError('JUNE.Event.addHandlers','The argument < events > must be an Array!'));}for(var i=0;i<domElements.length;i++){for(var e=0;e<events.length;e++){removeHandler(domElements[i],events[e],handler);}}};_handlerCounter=0;var preventDefault=function(event){return event.returnValue=false;};var stopPropagation=function(event){return event.cancelBubble=true;};}return{addHandler:function(domElement,type,handler){return addHandler(domElement,type,handler);},removeHandler:function(domElement,type,handler){return removeHandler(domElement,type,handler);},addHandlers:function(domElements,events,handler){return addHandlers(domElements,events,handler);},removeHandlers:function(domElements,events,handler){return removeHandlers(domElements,events,handler);},preventDefault:function(event){return preventDefault(event);},stopPropagation:function(event){return stopPropagation(event);}}})();JUNE.Browser=(function(){var UA=window.navigator.userAgent.toLowerCase();return{isIE:function(version){if(JUNE.Browser.isOpera()){return false;}switch(version){case 6:{return UA.indexOf("msie 6")>=0;};case 7:{return UA.indexOf("msie 7")>=0;};case 8:{return UA.indexOf("msie 8")>=0;};default:{return UA.indexOf("msie")>=0;};}},isOpera:function(){return(UA.indexOf("opera")>=0);},isMozilla:function(){return(UA.indexOf("gecko")>=0);},isFlock:function(){return(UA.indexOf("flock")>=0);},isSafari:function(){return(UA.indexOf("safari")>=0);},isFirefox:function(){if(JUNE.Browser.isFlock()||JUNE.Browser.isSafari()){return false;}else{return(UA.indexOf("firefox")>=0)?true:false;}},isCSS1Compat:function(){return document.compatMode=="CSS1Compat";},createImagePreview:function(images,closeWithParent,windowFeatures){if(!images){throw new Error(JUNE.Exception.missingArgument("JUNE.Browser.createImagePreview","images"));}if(!JUNE.Util.isArray(images)){throw new Error(JUNE.Exception.generalError("JUNE.Browser.createImagePreview","The < images > argument must be an Array."));}for(var i=0;i<images.length;i++){var image=images[i];JUNE.Event.addHandler(image,'click',function(event){var imageSrc=this.getAttribute("src");if(!imageSrc){throw new Error(JUNE.Exception.generalError("JUNE.Browser.createImagePreview","The source of the image is missing."));}windowFeatures=windowFeatures||"width=400, height=200";window.popWin=window.open(imageSrc,'ImagePreviewWindow',windowFeatures);window.popWin.focus();});}if(closeWithParent==null){JUNE.Event.addHandler(window,'unload',function(event){try{if(!window.popWin.closed){window.popWin.close();}}catch(e){}});}},detectPopupBlocker:function(){var url='http://june-js.com/',title='test',features='width=10, height=10',testWindow=window.open(url,title,features);try{testWindow.close();return false;}catch(ex){return;}return true;},refresh:function(){return window.location=unescape(window.location.pathname);},redirect:function(location){if(location){return window.location.href=location;}else{throw new Error(JUNE.Exception.missingArgument("JUNE.Browser.redirect","location"));}},addToFavorites:function(pageTitle,pageUrl){if(!pageTitle){pageTitle=document.title||"DefaultDocument";}if(!pageUrl){pageUrl=document.URL;}try{if(document.all){window.external.AddFavorite(pageUrl,pageTitle);}else if(window.sidebar){window.sidebar.addPanel(pageTitle,pageUrl,"");}else{throw new Error(JUNE.Exception.generalError("JUNE.Browser.addToFavorites","The operation could not be completed."));}}catch(ex){alert(ex.message);}},setAsHomePage:function(domElement,pageUrl){if(!domElement){JUNE.Exception.missingArgument("JUNE.Browser.setAsHomePage","domElement");}var url=pageUrl||window.location.href;try{domElement.style.behavior="url(#default#homepage)";domElement.setHomePage(url);}catch(ex){throw new Error(JUNE.Exception.generalError("JUNE.Browser.setAsHomePage","The operation is not supported by this browser."));}},parseQueryString:function(keyName){if(!keyName){throw new Error(JUNE.Exception.missingArgument("JUNE.Browser.parseQueryString","keyName"));}var qs=window.location.search.substring(1);if(qs){var qvars=qs.split("&");for(var i=0;i<qvars.length;i++){var qvar=qvars[i].split("=");if(keyName==qvar[0]){return qvar[1];}}}else{return"";}},getWindowWidth:function(){var Width=0;if(typeof(window.innerWidth)=='number'){return Width=window.innerWidth;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){return Width=document.documentElement.clientWidth;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){return Width=document.body.clientWidth;}return Width;},getWindowHeight:function(){var Height=0;if(typeof(window.innerWidth)=='number'){return Height=window.innerHeight;}else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){return Height=document.documentElement.clientHeight;}else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){return Height=document.body.clientHeight;}return Height;}}})();JUNE.Cookie=(function(){return{cookiesEnabled:function(){return navigator.cookieEnabled;},setCookie:function(cookieName,value,expiresAfter,path,domain,secure){if(!JUNE.Cookie.cookiesEnabled()){return null;}if(!cookieName){throw new Error(JUNE.Exception.missingArgument('JUNE.Cookie.setCookie','cookieName'));}var expires='';if(expiresAfter){var date=new Date(),time=date.getTime(),period=(expiresAfter*24*60*60*1000);date.setTime(time+period);expires='; expires='+date.toGMTString();}var optionals=((path)?('; path='+path):'')+((domain)?('; domain='+domain):'')+((secure)?('; secure'):'');document.cookie=cookieName+"="+escape(value)+expires+optionals;},getCookie:function(cookieName){if(!JUNE.Cookie.cookiesEnabled()){return null;}if(!cookieName){throw new Error(JUNE.Exception.missingArgument('JUNE.Cookie.getCookie','cookieName'));}var ckName=cookieName+"=",cookies=document.cookie.split(';'),_c=null;for(var i=0;i<cookies.length;i++){_c=cookies[i];while(_c.charAt(0)==' '){_c=_c.substring(1,_c.length);}if(_c.indexOf(ckName)==0){return unescape(_c.substring(ckName.length,_c.length));}}return null;},deleteCookie:function(cookieName,path,domain){try{if(!JUNE.Cookie.cookiesEnabled()){return null;}if(!cookieName){throw new Error(JUNE.Exception.missingArgument('JUNE.Cookie.deleteCookie','cookieName'));}var optionals=((path)?('; path='+path):'')+((domain)?('; domain='+domain):'');JUNE.Cookie.setCookie(cookieName,'',-7,optionals);}catch(ex){return;}}}})();JUNE.Dom=(function(){return{find:function(domElement){var args=arguments;var Elements=[];if(args.length>=2){for(var i=0;i<args.length;i++){var _element=args[i];if(typeof _element=='string'){if(document.getElementById){_element=document.getElementById(_element);Elements.push(_element);}else if(document.all){_element=document.all[_element];Elements.push(_element);}else if(document.layers){_element=document.layers[_element];Elements.push(_element);}}else{Elements.push(_element);}}return Elements;}else{if(typeof domElement=='string'){if(document.getElementById){return document.getElementById(domElement);}else if(document.all){return document.all[domElement];}else if(document.layers){return document.layers[domElement];}}return domElement;}},getByClass:function(theClassName,parentContainer){if(!theClassName){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.getByClass","theClassName"));}var resultArray=[],element=null,elements=null,_class=null;if(JUNE.Util.isArray(theClassName)){elements=parentContainer?JUNE.Dom.getByTags('*',parentContainer):JUNE.Dom.getByTags('*');for(var e=0;e<elements.length;e++){element=elements[e];for(var i=0;i<theClassName.length;i++){_class=theClassName[i];if(JUNE.Dom.hasClass(element,_class)){resultArray.push(element);}}}return resultArray;}else if(!JUNE.Util.isArray(theClassName)){elements=parentContainer?JUNE.Dom.getByTags('*',parentContainer):JUNE.Dom.getByTags('*');for(var e=0;e<elements.length;e++){element=elements[e];if(JUNE.Dom.hasClass(element,theClassName)){resultArray.push(element);}}return resultArray;}},hasClass:function(domElement,theClassName){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.hasClass","domElement"));}if(!theClassName){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.hasClass","theClassName"));}var pattern=new RegExp("(^| )"+theClassName+"( |$)");if(pattern.test(domElement.className)){return true};return false;},addClass:function(domElement,theClassName){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.addClass","domElement"));}if(!theClassName){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.addClass","theClassName"));}if(!JUNE.Dom.hasClass(domElement,theClassName)){if(domElement.className==""){domElement.className=theClassName;}else{domElement.className+=" "+theClassName;}}},removeClass:function(domElement,theClassName){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.removeClass","domElement"));}if(!theClassName){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.removeClass","theClassName"));}var pattern=new RegExp("(^| )"+theClassName+"( |$)");domElement.className=domElement.className.replace(pattern,"$1");domElement.className=domElement.className.replace(/ $/,"");},getComputedStyle:function(domElement,styleProperty){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.getComputedStyle","domElement"));}if(!styleProperty){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.getComputedStyle","styleProperty"));}var computedStyle='';if(typeof(domElement.currentStyle)!="undefined"){computedStyle=domElement.currentStyle[styleProperty];}else{computedStyle=document.defaultView.getComputedStyle(domElement,null).getPropertyValue(styleProperty);}return computedStyle;},showCentered:function(domElement){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.showCentered","domElement"));}var pos=JUNE.Dom.getComputedStyle(domElement,"position");if(!pos||pos!='absolute'){pos='absolute';domElement.style.position=pos;}var elementWidth=0,elementHeight=0;elementWidth=parseInt(JUNE.Dom.getComputedStyle(domElement,"width"),10);elementHeight=parseInt(JUNE.Dom.getComputedStyle(domElement,"height"),10);var windowWidth=JUNE.Browser.getWindowWidth(),windowHeight=JUNE.Browser.getWindowHeight(),Left=Math.round((windowWidth-elementWidth)/2),Top=Math.round((windowHeight-elementHeight)/2);domElement.style.left=Left+"px";domElement.style.top=Top+"px";},toggleClass:function(domElement,defaultClass,newClass){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.toggleClass","domElement"));}if(!defaultClass){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.toggleClass","defaultClass"));}if(!newClass){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.setStyles","newClass"));}if(!JUNE.Dom.hasClass(domElement,newClass)){JUNE.Dom.addClass(domElement,newClass);JUNE.Dom.removeClass(domElement,defaultClass);}else{JUNE.Dom.removeClass(domElement,newClass);JUNE.Dom.addClass(domElement,defaultClass);}},toggleState:function(domElement,defaultState,newState){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.toggleState","domElement"));}if(!defaultState){defaultState='block';}if(!newState){newState='none';}var originalState=JUNE.Dom.getComputedStyle(domElement,'display');if(originalState==defaultState){return domElement.style.display=(domElement.style.display!=newState)?newState:defaultState;}else{return domElement.style.display=(domElement.style.display!=defaultState)?defaultState:newState;}},removeChild:function(domElement){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.removeChild","domElement"));}var parent=domElement.parentNode;try{parent.removeChild(domElement);}catch(ex){return;}},removeAllChildren:function(parentContainer){if(!parentContainer){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.removeAllChildren","parentContainer"));}while(parentContainer.hasChildNodes()){var child=parentContainer.firstChild;parentContainer.removeChild(child);}},insertBefore:function(parentContainer,referenceNode,nodeToInsert){if(!parentContainer){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.insertBefore","parentContainer"));}if(!referenceNode){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.insertBefore","referenceNode"));}if(!nodeToInsert){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.insertBefore","nodeToInsert"));}return parentContainer.insertBefore(nodeToInsert,referenceNode);},insertAfter:function(parentContainer,referenceNode,nodeToInsert){return parentContainer.insertBefore(nodeToInsert,referenceNode.nextSibling);},getNextSibling:function(referenceNode){var next_Sibling=referenceNode.nextSibling;while(next_Sibling.nodeType!=1){next_Sibling=next_Sibling.nextSibling;}return next_Sibling;},getPreviousSibling:function(referenceNode){var prevSibling=referenceNode.previousSibling;while(prevSibling.nodeType!=1){prevSibling=prevSibling.previousSibling;}return prevSibling;},setStyles:function(targetElements,styles){if(!targetElements){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.setStyles","targetElements"));}if(!styles){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.setStyles","styles"));}var setStyle=function(targetElements,prop,val){if(JUNE.Util.isArray(targetElements)){var _length=targetElements.length;for(var i=0;i<_length;i++){targetElements[i].style[prop]=val;}}else{return targetElements.style[prop]=val;}};for(var prop in styles){if(styles.hasOwnProperty(prop)){setStyle(targetElements,prop,styles[prop]);}}},getByTags:function(tags,parentContainer){if(!tags){throw new Error(JUNE.Exception.missingArgument('JUNE.Dom.getByTags','tags'));}var elements=[],tempTags=null,tempTagsLength=null;if(JUNE.Util.isArray(tags)){for(var a=0;a<tags.length;a++){var element=tags[a];tempTags=(parentContainer)?parentContainer.getElementsByTagName(element):document.getElementsByTagName(_element);tempTagsLength=tempTags.length;for(var i=0;i<tempTagsLength;i++){elements.push(tempTags[i]);}}return elements;}else{tempTags=(parentContainer)?parentContainer.getElementsByTagName(tags):document.getElementsByTagName(tags);tempTagsLength=tempTags.length;for(i=0;i<tempTagsLength;i++){elements.push(tempTags[i]);}return elements;}},createElement:function(newElement,content,newElementID,cssClass,style,child_nodes){if(!newElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Dom.Create.element","newElement"));}var element=document.createElement(newElement);if(content){element.innerHTML=content;}if(newElementID){element.id=newElementID;}if(cssClass){element.className=cssClass;}if(style){element.setAttribute("style",style);}if(child_nodes&&JUNE.Util.isArray(child_nodes)&&child_nodes.length>0){for(var i=0;i<child_nodes.length;i++){element.appendChild(child_nodes[i]);}}return element;},getByAttribute:function(attributeName,attributeValues,parentContainer){var DomElements=parentContainer?parentContainer.getElementsByTagName('*'):document.getElementsByTagName('*');var Elements=[];if(attributeValues.indexOf(',')>=0){var ValuesList=attributeValues;if(ValuesList.indexOf(' ')>=0){ValuesList=ValuesList.replace(' ','');}ValuesList=ValuesList.split(',');for(var i=0;i<ValuesList.length;i++){var value=ValuesList[i];for(var j=0;j<DomElements.length;j++){var ctl=DomElements[j];if(ctl.getAttribute(attributeName)){var pattern=new RegExp("(^| )"+value+"( |$)");if(pattern.test(ctl.getAttribute(attributeName))){Elements.push(ctl);}}}}}else{for(var j=0;j<DomElements.length;j++){var ctl=DomElements[j];if(ctl.getAttribute(attributeName)){var pattern=new RegExp("(^| )"+attributeValues+"( |$)");if(pattern.test(ctl.getAttribute(attributeName))){Elements.push(ctl);}}}}return Elements;}}})();JUNE.Form=(function(){return{getForm:function(theForm){if(!theForm){throw new Error(JUNE.Exception.missingArgument('JUNE.Form.getForm','theForm'));}if(document.forms){return theForm=document.forms[theForm];}else{return theForm=JUNE.Dom.find(theForm);}},hasElements:function(theForm){if(!theForm){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.hasElements","theForm"));}var childs=theForm.elements;return(childs.length>0);},toggleInputFieldText:function(domElement){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.toggleInputFieldText","domElement"));}if(!domElement.title){throw new Error(JUNE.Exception.generalError("JUNE.Form.toggleInputFieldText","The value and the title attributes have to be set and their values must match!"));}if(domElement.value==domElement.title){return domElement.value='';}if(domElement.value==null||domElement.value==''){return domElement.value=domElement.title;}},clearElements:function(targetElements){if(!targetElements){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.clearElements","targetElements"));}if(!JUNE.Util.isArray(targetElements)){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.clearElements","The 'targetElements' argument must be an Array."));}else{for(var i=0;i<targetElements.length;i++){if(targetElements[i].value){targetElements[i].value='';}}}},disableElements:function(targetElements){if(!targetElements){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.disableElements","targetElements"));}if(!JUNE.Util.isArray(targetElements)){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.disableElements","The 'targetElements' argument must be an Array."));}else{for(var i=0;i<targetElements.length;i++){targetElements[i].blur();targetElements[i].disabled=true;}}},enableElements:function(targetElements){if(!targetElements){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.enableElement","targetElements"));}if(JUNE.Util.isArray(targetElements)){for(var i=0;i<targetElements.length;i++){targetElements[i].disabled=false;}}},isNullOrEmpty:function(domElement){if(arguments.length==1){return(domElement==null)||(domElement.value.length==0);}else{throw new Error(JUNE.Exception.missingArgument("JUNE.Form.isNullOrEmpty","domElement"));}},requiredField:function(domElement,friendlyTitle,defaultCssClass,errorCssClass,onValidate){if(!domElement){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.requiredField","domElement"));}if(!friendlyTitle){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.requiredField","friendlyTitle"));}if(!defaultCssClass){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.requiredField","defaultCssClass"));}if(!errorCssClass){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.requiredField","errorCssClass"));}if(!onValidate){throw new Error(JUNE.Exception.missingArgument("JUNE.Form.requiredField","onValidate"));}try{domElement.setAttribute('title',friendlyTitle);}catch(ex){}function onActivated(event){if(JUNE.Dom.hasClass(domElement,errorCssClass)){JUNE.Dom.removeClass(domElement,errorCssClass);JUNE.Dom.addClass(domElement,defaultCssClass);}}JUNE.Event.addHandlers([domElement],["click","focus"],onActivated);}}})();JUNE.DateTime=(function(){return{displayCurrentDate:function(domElement,separator){if(!domElement){throw new Error(JUNE.Exception.missingArgument('JUNE.DateTime.displayCurrentDate',"domElement"));}if(!separator){separator='/';}var months=["January","February","March","April","May","June","July","August","September","October","November","December"],days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],thisTime=new Date(),thisMonth=months[thisTime.getMonth()],thisDate=thisTime.getDate(),thisYear=thisTime.getFullYear();if(domElement.tagName.toLowerCase()=='input'||domElement.tagName.toLowerCase()=='textarea'){domElement.value=thisMonth+separator+thisDate+separator+thisYear;}else{domElement.innerHTML=thisMonth+separator+thisDate+separator+thisYear;}},isLeapYear:function(year){if(!year){throw new Error(JUNE.Exception.missingArgument('JUNE.DateTime.isLeapYear',"year"));}return!(year%4)&&(year%100)||!(year%400)?true:false;}}})();JUNE.Util=(function(){return{isArray:function(value){return value&&typeof value==='object'&&typeof value.length==='number'&&typeof value.splice==='function'&&!(value.propertyIsEnumerable('length'));},randomNumber:function(limitNumber){if(limitNumber&&!JUNE.Validate.Number(limitNumber)){throw new Error(JUNE.Exception.generalError('JUNE.Util.randomNumber','The argument "limitNumber" has to be a valid Number!'));}if(!limitNumber){limitNumber='200';}return Math.floor(Math.random()*limitNumber);},preloadImages:function(){if(!arguments.length>=1){throw new Error(JUNE.Exception.generalError('JUNE.Util.preloadImages','At least one argument has to be provided!'));}if(document.images){for(var i=0;i<arguments.length;i++){var img=new Image();img.src=arguments[i];}}},scrollTo:function(domElement){if(domElement){domElement.scrollIntoView();}else{throw new Error(JUNE.Exception.missingArgument('JUNE.Util.scrollTo','domElement'));}},escapeFromFrame:function(){if(top!=self){top.location=location;}},toggleStyleSheet:function(){if(!arguments.length>0){throw new Error(JUNE.Exception.generalError("JUNE.Util.toggleStyleSheet","At least one argument must be provided!"));}var stylesheets=[],stylesheet=null;for(var i=0;i<arguments.length;i++){stylesheet=JUNE.Dom.find(arguments[i]);if(stylesheet.getAttribute('type')&&stylesheet.getAttribute('type').indexOf('text/css')>=0){stylesheets.push(stylesheet);}}for(var j=0;j<stylesheets.length;j++){stylesheet=stylesheets[j];if(stylesheet.disabled==false){stylesheet.disabled=true;}else{stylesheet.disabled=false;}}},disableStyleSheets:function(titleSelector){if(!titleSelector){throw new Error(JUNE.Exception.missingArgument('JUNE.Util.disableStyleSheets','titleSelector'));}var whichSheets=[],pageHeader=JUNE.Dom.getByTags('head')[0],links=JUNE.Dom.getByTags('link',pageHeader);for(var i=0;i<links.length;i++){var temp=links[i];if(temp.rel.indexOf('stylesheet')>=0&&temp.title.indexOf(titleSelector)>=0){whichSheets.push(temp);}}for(var j in whichSheets){whichSheets[j].disabled=true;}},loadDependantFile:function(fileUrl,position,title){if(!fileUrl){throw new Error(JUNE.Exception.missingArgument('JUNE.Util.LoadDependantFile','fileUrl'));}var pageHeader=document.getElementsByTagName('head')[0];var FileExists=function(_fileUrl){if(pageHeader){var files=JUNE.Dom.getByTags(['link','script'],pageHeader);for(var i=0;i<files.length;i++){var file=files[i];if(file.tagName.toLowerCase()=='link'){try{if(file.getAttribute('href').indexOf(_fileUrl)>=0){return true;}}catch(ex){}}else if(file.tagName.toLowerCase()=='script'){try{if(file.getAttribute('src').indexOf(_fileUrl)>=0){return true;}}catch(ex){}}}}return false;};var LoadStyleSheet=function(fileUrl,position,title){if(pageHeader&&!FileExists(fileUrl)){var link=document.createElement('link');link.setAttribute('rel','stylesheet');link.setAttribute('type','text/css');link.setAttribute('href',fileUrl);if(title){link.setAttribute('title',title);}if(position){return link=pageHeader.insertBefore(link,pageHeader.childNodes[position]);}else{return pageHeader.appendChild(link);}}};var LoadJavaScript=function(fileUrl,position,title){if(pageHeader&&!FileExists(fileUrl)){var script=document.createElement('script');script.setAttribute('type','text/javascript');script.setAttribute('src',fileUrl);script.text='';if(position){return script=pageHeader.insertBefore(script,pageHeader.childNodes[position]);}else{return pageHeader.appendChild(script);}}};var url=fileUrl.toLowerCase();if(url.indexOf('.css')>=0){return LoadStyleSheet(fileUrl,position,title);}else if(url.indexOf('.js')>=0){return LoadJavaScript(fileUrl,position);}},addMethodsTo:function(theObject,methods){try{if(!theObject){throw new Error(JUNE.Exception.missingArgument("JUNE.Util.addMethodsTo","theObject!"));}if(!methods){throw new Error(JUNE.Exception.missingArgument("JUNE.Util.addMethodsTo","methods!"));}for(var property in methods){theObject[property]=methods[property];}}catch(ex){return;}},clone:function(instanceToClone){if(!instanceToClone){throw new Error(JUNE.Exception.missingArgument("JUNE.Util.clone","instanceToClone!"));}if(instanceToClone){try{if(typeof(instanceToClone)=='object'){var Clone={};for(var method in instanceToClone){Clone[method]=instanceToClone[method];}return Clone;}else{return instanceToClone;}}catch(ex){if(Clone){Clone=null;}}}else{throw new Error(JUNE.Exception.missingArgument('JUNE.Util.clone','instanceToClone'));}}}})();JUNE.Keyboard=(function(){var Keys={KEY_RETURN:13,KEY_ESCAPE:27,KEY_TAB:9,KEY_SPACEBAR:32};return{isEnterKey:function(event){if(event){var keyCode=event.keyCode?event.keyCode:event.which?event.which:event.charCode;return keyCode==Keys.KEY_RETURN;}},getKeyName:function(event){if(event){return String.fromCharCode(event.charCode?event.charCode:event.keyCode);}},getKeyNumber:function(event){if(event){return event.keyCode?event.keyCode:event.which?event.which:event.charCode;}}}})();JUNE.Effect=(function(){return{highlight:function(domElement,timeout){if(!domElement){throw new Error(JUNE.Exception.missingArgument('JUNE.Effect.highlight','domElement'));}if(!timeout){timeout=60;}var b=155;(function fade(){domElement.style.background='rgb(255,255,'+(b+=4)+')';if(b<255){setTimeout(fade,timeout);}else{domElement.style.background='Transparent';}})();}}})();JUNE.Exception=(function(){return{generalError:function(_function,_errorMessage){if(!_function){_function='';}if(!_errorMessage){_errorMessage='';}return"Internal Error. \n\nFunction: "+_function+"\n\nError: "+_errorMessage;},missingArgument:function(_function,_argumentName){if(!_function){_function='';}if(!_argumentName){_argumentName='';}return"Internal Error. \n\nFunction: "+_function+"\n\nError: The argument "+_argumentName+" is required!";}}})();JUNE.Validate=(function(){var isNumber=function(theNumberToTest){var numberPattern=new RegExp(/^-?[0-9]+$/);return numberPattern.test(theNumberToTest);};var isDecimal=function(number){if(isNumber(number)){return false;}var decimalNumberPattern=new RegExp(/^-?(\d+|(\d*[.,]\d+))$/);return decimalNumberPattern.test(number);};var isString=function(stringToValidate){var stringPattern=new RegExp("^[a-z A-Z]+$");return stringPattern.test(stringToValidate);};return{email:function(emailToValidate){try{if(!emailToValidate){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.email','emailToValidate'));}}catch(ex){return false;}var emailPattern=new RegExp("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$","i"),data=emailToValidate.toLowerCase();return emailPattern.test(data);},url:function(urlToValidate){try{if(!urlToValidate){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.url','urlToValidate'));}}catch(ex){return false;}var urlPattern=new RegExp("^(ftp|http|https)+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"),data=urlToValidate.toLowerCase();return urlPattern.test(data);},zipCode:function(zipCodeToValidate,country){try{if(!zipCodeToValidate){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.zipCode','zipCodeToValidate'));}if(!country){country='US';}}catch(ex){return false;}var usZipCodePattern=new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);switch(country.toUpperCase()){case'US':{return usZipCodePattern.test(zipCodeToValidate);}default:{return usZipCodePattern.test(zipCodeToValidate);}}},number:function(numberToValidate,allowDecimals){try{if(numberToValidate==null){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.number','numberToValidate'));}}catch(ex){return false;}return(allowDecimals)?isDecimal(numberToValidate):isNumber(numberToValidate);},range:function(numberToValidate,lowerBound,upperBound){try{if(numberToValidate==null){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.range','numberToValidate'));}if(lowerBound==null){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.range','lowerBound'));}if(upperBound==null){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.range','upperBound'));}}catch(ex){return false;}if(typeof(numberToValidate)=='string'){if(numberToValidate.indexOf(',')>=0){numberToValidate=numberToValidate.replace(',','.');}}if(typeof(lowerBound)=='string'){if(lowerBound.indexOf(',')>=0){lowerBound=lowerBound.replace(',','.');}}if(typeof(upperBound)=='string'){if(upperBound.indexOf(',')>=0){upperBound=upperBound.replace(',','.');}}return(numberToValidate>=lowerBound)&&(numberToValidate<=upperBound);},valueMatch:function(dataToValidate,matchValue){try{if(dataToValidate==null){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.valueMatch','dataToValidate'));}}catch(ex){return false;}return matchValue==dataToValidate;},string:function(stringToValidate){try{if(!stringToValidate){throw new Error(JUNE.Exception.missingArgument('JUNE.Validate.string','stringToValidate'));}}catch(ex){return false;}return isString(stringToValidate);}}})();JUNE.Widget={};

JUNE.Util.escapeFromFrame();