/* **************************************************
JAST Egg it: JAvaScript Toolkit
url: http://www.jastegg.it 
--------------------------------------------------
Version:		0.9 beta
Author: 		Diego La Monica (http://diegolamonica.info)
Revision of: 	2008-06-18
Works With:		Internet Explorer 6+
				Firefox 2.0+ 
				Safari 3.x
				Opera 9.x
************************************************** */
JASTEggIt={Browser:{name:null,version:null,agent:navigator.userAgent,relDate:navigator.productSub?navigator.productSub:'',dom:(!document.layers&&document.getElementById!=null),ns4:(document.layers?true:false),opera:(navigator.userAgent.indexOf('Opera')!=-1),safari:(navigator.userAgent.indexOf('Safari')!=-1),konqueror:(!this.safari&&(navigator.userAgent.indexOf('Konqueror')!=-1)),mozilla:((!this.safari&&!this.konqueror)&&(navigator.userAgent.indexOf('Gecko')!=-1)),ie:((navigator.userAgent.indexOf('MSIE')!=-1)&&!this.opera)},_eggs:'',_internal:{idCount:0,required:[]},_el:function(el){if(typeof(el)!='object')return JASTEggIt._id(el);else return el;},_id:function(id){return document.getElementById(id);},_get:function(cascade,from,p){if(!this.Array.is(cascade))cascade=cascade.split('>');if(from==null)from=0;if(p==null)p=document;if(from==cascade.length)return p;var attrs={};var item=cascade[from];if(item.substring(0,1)=='#')attrs={id:item.substring(1,item.length)};else if(item.substring(0,1)=='.')attrs={className:item.substring(1,item.length)};else attrs={name:item};var ret=this.DOM.find(p,attrs);for(var i=0;i<ret.length;i++){var k=i;ret[k]=this._get(cascade,from+1,ret[k]);};for(var i=0;i<ret.length;i++){var k=i;if(ret[k]=='')ret[k]=null;if(this.Array.is(ret[k])){this.Array.merge(ret,ret[k]);ret[k]=null;};};ret=this.Array.purge(ret);return ret;},_class:function(className,elm,tag){var testClass=new RegExp("(^|\\\\s)"+className+"(\\\\s|$)");var tag=tag||"*";var elm=elm||document;var elm=JASTEggIt._el(elm);var elements=JASTEggIt._name(tag,elm);var returnElements=[];var current;var length=elements.length;for(var i=0;i<length;i++){current=elements[i];if(testClass.test(current.className)){returnElements.push(current);}}return returnElements;},_name:function(name,parent){if(parent==null)parent=document;return parent.getElementsByTagName(name);},_works:function(){alert('JAST framewor is working fine!');},_ready:false,_startup:function(){var j=JASTEggIt;var eggs=j._eggs.split(',');for(var i=0;i<eggs.length;i++){var keyVar=eggs[i];if(typeof(j[keyVar])=='object'&&j[keyVar].startup!=null)j[keyVar].startup();}JASTEggIt._ready=true;},eggs:function(){var eggs=Array();for(egg in this)if(typeof egg==='object'&&egg.info!=null)eggs[eggs.length]=egg.info;return eggs;},require:function(e){for(var i=0;i<e.length;i++){if(JASTEggIt[e[i]]==null){if(this.Array.isIn(this._internal.required,e[i]))return false;this._internal.required[this._internal.required.length]=e[i];this.xhttp.options.asyncMode=false;this.xhttp.get('/JAST/JAST-'+e[i]+'.js','',function(buffer){eval(buffer)});this.xhttp.options.asyncMode=true;}}},generateUniqueId:function(prefix){var d=new Date();var id=prefix+'-';var summa=d.getDay();summa+=d.getMonth();summa+=d.getYear();summa+=d.getHours();summa+=d.getMinutes();summa+=d.getSeconds();summa+=d.getMilliseconds();id+=summa;id+='-'+this._internal.idCount++;return id;},mergeOptions:function(src,full,replace){if(replace==null)replace=false;if(src==null)src=full;for(o in full)if(src[o]==null||replace==true)src[o]=full[o];return src;},startup:function(){var b=JASTEggIt.Browser;if(b.name==null)JASTEggIt._browser();if((b.mozilla||b.opera)&&!b.safari){JASTEggIt.event(document,"DOMContentLoaded",JASTEggIt._startup);}else if(b.ie){document.write("<scr"+"ipt id=__ie_init defer=true "+"src=\"//:\"><\/script>");var script=JASTEggIt._id("__ie_init");if(script)script.onreadystatechange=function(){if(this.readyState!="complete")return;JASTEggIt._startup();};script=null;}else if(b.safari)JASTEggIt._onlyForSafari=setInterval(function(){if(document.readyState=="loaded"||document.readyState=="complete"){clearInterval(JASTEggIt._onlyForSafari);JASTEggIt._onlyForSafari=null;JASTEggIt._startup();}},10);},extend:function(key,object){this[key]=object;this[key].name=key;this._eggs+=(this._eggs!=''?',':'')+key;if(this._ready&&(this[key].startup!=null)){this[key].startup();};},event:function(item,event,fn){return this.Events.add(item,event,fn);},Events:{generator:function(event){if(event==null)event=window.event;if(event.target)return event.target;else if(event.srcElement)return event.srcElement;return null;},add:function(item,event,fn){var f=null;var obj=(typeof(item)=='object'?item:JASTEggIt._id(item));if(typeof(fn)==='function'){f=fn;}else{fn=fn.replace(/this\./g,'JASTEggIt._id(\''+item+'\').');f=function(event){eval(fn);};}if(document.addEventListener){obj.addEventListener(event,f,true);}else if(document.attachEvent){obj.attachEvent('on'+event,f);}else{obj.setAttribute('on'+event,f);};}},Accessibility:{clickEvent:function(id,fn){JASTEggIt.Events.add(id,'click',fn);JASTEggIt.Events.add(id,'keypress',function(event){var keynum=JASTEggIt.kbd.getKeyPressed(event);if(keynum==32||(keynum==13&&window.event)){fn(event);return false;}});},listItemsToButtons:function(itemsList){if(!JASTEggIt.Array.is(itemsList)){var el=JASTEggIt._el(itemsList);if(el==null)return false;if(el.tagName.toUpperCase()=='UL'){itemsList=JASTEggIt._name('li',el);}else if(el.tagName.toUpperCase()=='LI'){itemsList[0]=el;}}for(var iterator_lists=0;iterator_lists<itemsList.length;iterator_lists++){var selId=itemsList[iterator_lists];var liElement=JASTEggIt._el(selId);var link=JASTEggIt._name('a',liElement)[0];if(liElement!=null&&!JASTEggIt.DOM.hasClass(selId,'skip')&&link!=null){var ev=function(event){var gen=JASTEggIt.Events.generator(event);if(gen.tagName.toUpperCase()=='A')return;var li=gen;while(li.tagName.toUpperCase()!='LI'){li=li.parentNode;}if(li.id!=null&&li.id!=''){var lnk=JASTEggIt._name('a',li)[0];var link=lnk.href;if(typeof(lnk.onclick)=="function"){var result=lnk.onclick();if(result==null||result)window.location.href=link;}else{window.location.href=link;}}else{return false;}};liElement.setAttribute('tabIndex','0');if(liElement.title==null||liElement.title=='')liElement.title=link.title;if(liElement.id==null||liElement.id=='')liElement.id=JASTEggIt.generateUniqueId('jast');link.setAttribute('tabIndex','-1');JASTEggIt.DOM.setStyle(selId,{cursor:'pointer'});var subEl=JASTEggIt.DOM.find(liElement,{nodeType:1});for(var i=0;i<subEl.length;i++){if(subEl[i].tagName!='A'&&subEl[i].tagName!='BR'){JASTEggIt.Accessibility.clickEvent(subEl[i],ev);}}JASTEggIt.Accessibility.clickEvent(selId,ev);}}}},Array:{is:function(a){return(a)&&(!a.length!=null)&&(typeof a==='object')&&(typeof a.length==='number');},isIn:function(a,v){for(var i=0;i<a.length;i++){if(a[i]==v)return true;}return false;},toString:function(a){var buffer='';for(var i=0;i<a.length;i++){if(buffer!='')buffer+=',';if(this.is(a[i])){buffer+=this.toString(a[i]);}else if(typeof a[i]==='object'){buffer+=(typeof a[i]);}else{buffer+=a[i];};};buffer='['+buffer+']';return buffer;},merge:function(a1,a2){if(a2==null)return a1;for(var i=0;i<a2.length;i++)a1[a1.length]=a2[i];return a1;},purge:function(a){var ret=Array();for(var i=0;i<a.length;i++){var k=i;if(a[k]!=null)ret[ret.length]=a[k];};return ret;}},Objects:{clone:function(myObj){if(typeof(myObj)!='object')return myObj;if(myObj==null)return myObj;var myNewObj=new Object();for(var i in myObj)myNewObj[i]=this.clone(myObj[i]);return myNewObj;}},strings:{trim:function(s){while(s.substr(0,1)==' ')s=s.substr(1,s.length);while(s.substr(s.length-1,1)==' ')s=s.substring(0,s.length-1);return s;},split:function(stringa,separatore){var newArray=stringa.toString().split(separatore);return this.removeLastChar(newArray,separatore);},removeLastChar:function(textArray,lastChar){for(var i=0;i<textArray.length;i++){var l=textArray[i].length;if(textArray[i].substr(l-1,1)==lastChar)textArray[i]=textArray[i].substr(0,l-1);};return textArray;}},DOM:{createContainer:function(el,tagName){var el=JASTEggIt._el(el);var e=document.createElement(tagName);e.id=JASTEggIt.generateUniqueId(tagName);var p=el.parentNode;if(p!=null)p.appendChild(e);e.appendChild(el);return e;},createChild:function(tagName,parentTag,id){parentTag=JASTEggIt._el(parentTag);var e=document.createElement(tagName);parentTag.appendChild(e);if(id!=null)e.id=id;return e;},createOnDocument:function(tagName,beforeItem,afterItem,id,attributes){var e=document.createElement(tagName);for(a in attributes)e[a]=attributes[a];var body=JASTEggIt._name('BODY')[0];if(beforeItem==null&&afterItem==null){body.appendChild(e);}else if(beforeItem){beforeItem=JASTEggIt._el(beforeItem);var p=beforeItem.parentNode;p.insertBefore(e,beforeItem);}else if(afterItem){afterItem=JASTEggIt._el(afterItem);var n=afterItem.nextSibling;var p=afterItem.parentNode;if(n==null){p.appendChild(e);}else{p.insertBefore(e,n);}}e.id=(id==null?JASTEggIt.generateUniqueId(tagName):id);return e;},remove:function(el){el=JASTEggIt._el(el);if(el==null)return false;if(el.parentNode==null)return false;el.parentNode.removeChild(el);return true;},position:function(el){var sl=0,st=0;var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)sl=el.scrollLeft;if(is_div&&el.scrollTop)st=el.scrollTop;var r={x:el.offsetLeft-sl,y:el.offsetTop-st};if(el.offsetParent){var tmp=this.position(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;};return r;},style:function(el,at){var e=JASTEggIt._el(el);var st=null;if(window.getComputedStyle)st=window.getComputedStyle(e,null);else if(e!=null&&e.currentStyle)st=e.currentStyle;if(st==null)return null;if(at==null)return st;at=at.split(' ');var ret=new Object();for(var i=0;i<at.length;i++)ret[at[i]]=st[at[i]];return ret;},setStyle:function(el,rules){var e=JASTEggIt._el(el);for(rule in rules)try{e.style[rule]=rules[rule];}catch(ex){}},realSize:function(el){el=JASTEggIt._el(el);var att=this.style(el,'width height paddingTop paddingBottom paddingLeft paddingRight marginTop marginBottom');var buffer="";for(prop in att){att[prop]=parseInt(att[prop]);if(isNaN(att[prop]))att[prop]=0;buffer+=prop+" = "+att[prop]+'\n';};var width=(att.width==0?el.offsetWidth-(att.paddingLeft+att.paddingRight):att.width);var height=(att.height==0?el.offsetHeight-(att.paddingTop+att.paddingBottom):att.height);return{width:width,height:height};},locate:function(el,x,y,w,h,p){el=JASTEggIt._el(el);if(p==null)p='absolute';el.style.position=p;el.style.width=w+'px';el.style.height=h+'px';el.style.left=x+'px';el.style.top=y+'px';},nodeMatch:function(e,attrs){for(a in attrs){if(e[a]==null){if(e.attributes==null)return false;if(e.attributes[a]==null)return false;if(e.attributes[a].value!=attrs[a])return false;}else{if(attrs[a]!=e[a])return false;}}return true;},find:function(p,match){var ret=Array();for(var i=0;i<p.childNodes.length;i++){var node=p.childNodes[i];if(this.nodeMatch(node,match))ret[ret.length]=node;ret=JASTEggIt.Array.merge(ret,this.find(node,match));};return ret;},hasClass:function(element,className){element=JASTEggIt._el(element);var c=' '+element.className+' ';return(c.indexOf(' '+className+' ')!=-1);},appendClass:function(element,className){element=JASTEggIt._el(element);if(element.className==null||element.className==''){element.className=className;}else{if(!this.hasClass(element,className))element.className+=' '+className;}},removeClass:function(element,className){element=JASTEggIt._el(element);if(this.hasClass(element,className)){var c=' '+element.className+' ';var i=c.indexOf(' '+className+' ');c=c.substr(0,i)+c.substr(i+className.length+2,c.length);element.className=JASTEggIt.strings.trim(c);}}},Listener:{_listener:[],_interval:null,_inside:false,_watch:function(){if(this._inside)return false;this._inside=true;for(i=0;i<this._listener.length;i++){var itm=this._listener[i];var obj=JASTEggIt._id(itm.id);if(obj!=null&&itm.execute!=null){var attributes=itm.attribute.split('|');for(j=0;j<attributes.length;j++){var k=j;if(obj[attributes[k]]!=itm.lastValue[k]){itm.lastValue[k]=obj[attributes[k]];itm.execute(itm);};};};};this._inside=false;},clear:function(){if(this._interval==null)clearInterval(this._interval);_listener=[];},watch:function(id,attribute,fn){this._listener[this._listener.length]={id:id,attribute:attribute,lastValue:[],execute:fn};if(this._interval==null)this._interval=setInterval('JASTEggIt.Listener._watch()',10);}},kbd:{getKeyPressed:function(event){var keynum=0;if(window.event)keynum=window.event.keyCode;else if(event.which)keynum=event.which;return keynum;}},xhttp:{options:{userName:null,password:null,asyncMode:true,plusAsChar:true,headers:[{key:'Pragma',value:'no-cache'},{key:'Cache-Control',value:'no-cache'},{key:'Expires',value:'-1'}]},_xssInstances:0,_xhrInstances:0,_loaderId:'',_xhr:[],_createXhr:function(){var obj=null;if(typeof(XMLHttpRequest)==="function"||typeof(XMLHttpRequest)==="object"){obj=new XMLHttpRequest();}else if(window.ActiveXObject){obj=this._createXhrFromActiveX();};return obj;},_createXhrFromActiveX:function(){var aVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];for(var i=0;i<aVersions.length;i++){try{var oXmlHttp=new ActiveXObject(aVersions[i]);return oXmlHttp;}catch(e){};};return null;},_createQueryString:function(parameters){var params='';if(typeof(parameters)=='object'){for(keys in parameters){if(params!='')params+='&';params+=escape(keys)+'='+escape(parameters[keys]);};}else{params=parameters;};return params;},get:function(url,parameters,retFunction,_this){return this.sendRequest('get',url,parameters,retFunction,_this);},post:function(url,parameters,retFunction,_this){return this.sendRequest('post',url,parameters,retFunction,_this);},sendRequest:function(method,url,parameters,retFunction,_this){var w=JASTEggIt;var _xhr=this._createXhr();if(_xhr==null)return false;_xhr.jastIndex=this._xhr.length;this._xhr[this._xhr.length]=_xhr;this._xhrInstances+=1;if(this._loaderId!='')w._id(this._loaderId).style.display='';var params=this._createQueryString(parameters);if(this.options.plusAsChar)params=params.replace(/\+/g,"%2b");_xhr.onreadystatechange=function(){document.title=_xhr.readyState;if(_xhr.readyState==4){var output_buffer=_xhr.responseText;output_buffer=output_buffer;if(retFunction!=null){if(typeof retFunction==='function'){retFunction(output_buffer,_this);}else{retFunction=retFunction.replace('%%BUFFER%%','output_buffer');eval(retFunction);}};_xhr=null;var x=w.xhttp;var ldr=x._loaderId;x._xhrInstances-=1;if(x._xhrInstances==0&&ldr!='')w._id(ldr).style.display='none';return true;};};if(method=="POST"){_xhr.open("POST",url,this.options.asyncMode);for(var i=0;i<this.options.headers.lenght;i++){var h=this.options.headers[i];_xhr.setRequestHeader(h.key,h.value);}_xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');_xhr.send(params);}else{if(params!='')url+=(url.indexOf('?')!=-1?'&':'?')+params;_xhr.open("GET",url,this.options.asyncMode);for(var i=0;i<this.options.headers.lenght;i++){var h=this.options.headers[i];_xhr.setRequestHeader(h.key,h.value);}_xhr.setRequestHeader("connection","close");_xhr.send(null);};return true;},xsRequest:function(url,parameters,retFunction){var _=JASTEggIt;var h=JASTEggIt._name('head').item(0);if(this._xssInstances!=0){var old=JASTEggIt._id('xsrequest-script');if(old)head.removeChild(old);this._xssInstances=0;};var s=document.createElement('SCRIPT');var params=this._createQueryString(parameters);url+=(url.indexOf('?')!=-1?'&':'?')+params;s.type='text/javascript';this._xssInstances+=1;s.id='xsrequest-script';s.defer=true;s.src=url;s.returnTo=retFunction;h.appendChild(s);},xsResponse:function(data){var _=JASTEggIt;var old=JASTEggIt._id('xsrequest-script');this._xssInstances=0;old.returnTo(data);if(old){var h=JASTEggIt._name('head').item(0);h.removeChild(old);};}},include:function(url,type){var _=JASTEggIt;var h=JASTEggIt._name('head').item(0);var attr=null;switch(type){case'css':obj='LINK';attr={rel:'stylesheet',type:'text/css',href:url};break;default:obj='SCRIPT';attr={type:'text/javascript',src:url,defer:true};break;};var s=document.createElement(obj);JASTEggIt.mergeOptions(s,attr,true);h.appendChild(s);},_browser:function(){b=JASTEggIt.Browser;var name=navigator.appName;var ver=navigator.appVersion;var aver='';if(b.opera){str_pos=b.agent.indexOf('Opera');aver=b.agent.substr((str_pos+6),4);b.name='Opera';}else if(b.safari){str_pos=b.agent.indexOf('Safari');aver=b.agent.substr((str_pos+7),5);b.name='Safari';}else if(b.konqueror){str_pos=b.agent.indexOf('Konqueror');aver=b.agent.substr((str_pos+10),3);b.name='Konqueror';}else if(b.mozilla){var pattern=/[(); \n]/;var mozTypes=new Array('Firebird','Phoenix','Firefox','Iceweasel','Galeon','K-Meleon','Camino','Epiphany','Netscape6','Netscape','MultiZilla','Gecko Debian','rv');var rev_pos=b.agent.indexOf('rv');var rev_full=b.agent.substr(rev_pos+3,6);var rev_slice=(rev_full.search(pattern)!=-1)?rev_full.search(pattern):'';(rev_slice)?rev_full=rev_full.substr(0,rev_slice):'';aver=rev_full.substr(0,3);for(var i=0;i<mozTypes.length;i++){if(b.agent.indexOf(mozTypes[i])!=-1){moz_brow=mozTypes[i];break;}};if(moz_brow){var str_pos=b.agent.indexOf(moz_brow);var moz_brow_aver=b.agent.substr((str_pos+moz_brow.length+1),3);moz_brow_aver=(isNaN(moz_brow_aver))?moz_brow_aver=aver:moz_brow_aver;moz_brow_aver_sub=b.agent.substr((str_pos+moz_brow.length+1),8);sub_aver_slice=(moz_brow_aver_sub.search(pattern)!=-1)?moz_brow_aver_sub.search(pattern):'';(sub_aver_slice)?moz_brow_aver_sub=moz_brow_aver_sub.substr(0,sub_aver_slice):'';};if(moz_brow=='Netscape6')moz_brow='Netscape';else if(moz_brow=='rv'||moz_brow=='')moz_brow='Mozilla';if(!moz_brow_aver){moz_brow_aver=aver;moz_brow_aver_sub=aver;};name=moz_brow;aver=moz_brow_aver;}else if(b.ie){var str_pos=b.agent.indexOf('MSIE');aver=b.agent.substr((str_pos+5),3);b.name='Microsoft Internet Explorer';}else b.name=name;if(b.opera&&(aver.substring(0,1)==5))b.version=5;else if(b.opera&&(aver.substring(0,1)==6))b.version=6;else if(b.opera&&(aver.substring(0,1)==7))b.version=7;else if(b.opera&&(aver.substring(0,1)==8))b.version=8;else if(b.opera&&(aver.substring(0,1)==9))b.version=9;else if(b.ie&&!b.dom)b.version=4;else if(b.ie&&(aver.substring(0,1)==6))b.version=6;else if(b.ie&&(aver.substring(0,1)==7))b.version=7;else{if(!aver)b.version=ver.substring(0,1);else b.version=aver.substring(0,1);}if(b.name==null)b.name=name;}};var _=JASTEggIt;JASTEggIt.startup();