﻿/**
 *
 * Date picker
 * Author: Stefan Petre www.eyecon.ro
 * 
 * Dual licensed under the MIT and GPL licenses
 * 
 */
(function($){var DatePicker=function(){var ids={},views={years:"datepickerViewYears",moths:"datepickerViewMonths",days:"datepickerViewDays"},tpl={wrapper:'<div class="datepicker"><div class="datepickerBorderT" /><div class="datepickerBorderB" /><div class="datepickerBorderL" /><div class="datepickerBorderR" /><div class="datepickerBorderTL" /><div class="datepickerBorderTR" /><div class="datepickerBorderBL" /><div class="datepickerBorderBR" /><div class="datepickerContainer"><table cellspacing="0" cellpadding="0"><tbody><tr></tr></tbody></table></div></div>',head:["<td>",'<table cellspacing="0" cellpadding="0">',"<thead>","<tr>",'<th class="datepickerGoPrev"><a href="#"><span><%=prev%></span></a></th>','<th colspan="6" class="datepickerMonth"><a href="#"><span></span></a></th>','<th class="datepickerGoNext"><a href="#"><span><%=next%></span></a></th>',"</tr>",'<tr class="datepickerDoW">',"<th><span><%=week%></span></th>","<th><span><%=day1%></span></th>","<th><span><%=day2%></span></th>","<th><span><%=day3%></span></th>","<th><span><%=day4%></span></th>","<th><span><%=day5%></span></th>","<th><span><%=day6%></span></th>","<th><span><%=day7%></span></th>","</tr>","</thead>","</table></td>"],space:'<td class="datepickerSpace"><div></div></td>',days:['<tbody class="datepickerDays">',"<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[0].week%></span></a></th>','<td class="<%=weeks[0].days[0].classname%>"><a href="#"><span><%=weeks[0].days[0].text%></span></a></td>','<td class="<%=weeks[0].days[1].classname%>"><a href="#"><span><%=weeks[0].days[1].text%></span></a></td>','<td class="<%=weeks[0].days[2].classname%>"><a href="#"><span><%=weeks[0].days[2].text%></span></a></td>','<td class="<%=weeks[0].days[3].classname%>"><a href="#"><span><%=weeks[0].days[3].text%></span></a></td>','<td class="<%=weeks[0].days[4].classname%>"><a href="#"><span><%=weeks[0].days[4].text%></span></a></td>','<td class="<%=weeks[0].days[5].classname%>"><a href="#"><span><%=weeks[0].days[5].text%></span></a></td>','<td class="<%=weeks[0].days[6].classname%>"><a href="#"><span><%=weeks[0].days[6].text%></span></a></td>',"</tr>","<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[1].week%></span></a></th>','<td class="<%=weeks[1].days[0].classname%>"><a href="#"><span><%=weeks[1].days[0].text%></span></a></td>','<td class="<%=weeks[1].days[1].classname%>"><a href="#"><span><%=weeks[1].days[1].text%></span></a></td>','<td class="<%=weeks[1].days[2].classname%>"><a href="#"><span><%=weeks[1].days[2].text%></span></a></td>','<td class="<%=weeks[1].days[3].classname%>"><a href="#"><span><%=weeks[1].days[3].text%></span></a></td>','<td class="<%=weeks[1].days[4].classname%>"><a href="#"><span><%=weeks[1].days[4].text%></span></a></td>','<td class="<%=weeks[1].days[5].classname%>"><a href="#"><span><%=weeks[1].days[5].text%></span></a></td>','<td class="<%=weeks[1].days[6].classname%>"><a href="#"><span><%=weeks[1].days[6].text%></span></a></td>',"</tr>","<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[2].week%></span></a></th>','<td class="<%=weeks[2].days[0].classname%>"><a href="#"><span><%=weeks[2].days[0].text%></span></a></td>','<td class="<%=weeks[2].days[1].classname%>"><a href="#"><span><%=weeks[2].days[1].text%></span></a></td>','<td class="<%=weeks[2].days[2].classname%>"><a href="#"><span><%=weeks[2].days[2].text%></span></a></td>','<td class="<%=weeks[2].days[3].classname%>"><a href="#"><span><%=weeks[2].days[3].text%></span></a></td>','<td class="<%=weeks[2].days[4].classname%>"><a href="#"><span><%=weeks[2].days[4].text%></span></a></td>','<td class="<%=weeks[2].days[5].classname%>"><a href="#"><span><%=weeks[2].days[5].text%></span></a></td>','<td class="<%=weeks[2].days[6].classname%>"><a href="#"><span><%=weeks[2].days[6].text%></span></a></td>',"</tr>","<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[3].week%></span></a></th>','<td class="<%=weeks[3].days[0].classname%>"><a href="#"><span><%=weeks[3].days[0].text%></span></a></td>','<td class="<%=weeks[3].days[1].classname%>"><a href="#"><span><%=weeks[3].days[1].text%></span></a></td>','<td class="<%=weeks[3].days[2].classname%>"><a href="#"><span><%=weeks[3].days[2].text%></span></a></td>','<td class="<%=weeks[3].days[3].classname%>"><a href="#"><span><%=weeks[3].days[3].text%></span></a></td>','<td class="<%=weeks[3].days[4].classname%>"><a href="#"><span><%=weeks[3].days[4].text%></span></a></td>','<td class="<%=weeks[3].days[5].classname%>"><a href="#"><span><%=weeks[3].days[5].text%></span></a></td>','<td class="<%=weeks[3].days[6].classname%>"><a href="#"><span><%=weeks[3].days[6].text%></span></a></td>',"</tr>","<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[4].week%></span></a></th>','<td class="<%=weeks[4].days[0].classname%>"><a href="#"><span><%=weeks[4].days[0].text%></span></a></td>','<td class="<%=weeks[4].days[1].classname%>"><a href="#"><span><%=weeks[4].days[1].text%></span></a></td>','<td class="<%=weeks[4].days[2].classname%>"><a href="#"><span><%=weeks[4].days[2].text%></span></a></td>','<td class="<%=weeks[4].days[3].classname%>"><a href="#"><span><%=weeks[4].days[3].text%></span></a></td>','<td class="<%=weeks[4].days[4].classname%>"><a href="#"><span><%=weeks[4].days[4].text%></span></a></td>','<td class="<%=weeks[4].days[5].classname%>"><a href="#"><span><%=weeks[4].days[5].text%></span></a></td>','<td class="<%=weeks[4].days[6].classname%>"><a href="#"><span><%=weeks[4].days[6].text%></span></a></td>',"</tr>","<tr>",'<th class="datepickerWeek"><a href="#"><span><%=weeks[5].week%></span></a></th>','<td class="<%=weeks[5].days[0].classname%>"><a href="#"><span><%=weeks[5].days[0].text%></span></a></td>','<td class="<%=weeks[5].days[1].classname%>"><a href="#"><span><%=weeks[5].days[1].text%></span></a></td>','<td class="<%=weeks[5].days[2].classname%>"><a href="#"><span><%=weeks[5].days[2].text%></span></a></td>','<td class="<%=weeks[5].days[3].classname%>"><a href="#"><span><%=weeks[5].days[3].text%></span></a></td>','<td class="<%=weeks[5].days[4].classname%>"><a href="#"><span><%=weeks[5].days[4].text%></span></a></td>','<td class="<%=weeks[5].days[5].classname%>"><a href="#"><span><%=weeks[5].days[5].text%></span></a></td>','<td class="<%=weeks[5].days[6].classname%>"><a href="#"><span><%=weeks[5].days[6].text%></span></a></td>',"</tr>","</tbody>"],months:['<tbody class="<%=className%>">',"<tr>",'<td colspan="2"><a href="#"><span><%=data[0]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[1]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[2]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[3]%></span></a></td>',"</tr>","<tr>",'<td colspan="2"><a href="#"><span><%=data[4]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[5]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[6]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[7]%></span></a></td>',"</tr>","<tr>",'<td colspan="2"><a href="#"><span><%=data[8]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[9]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[10]%></span></a></td>','<td colspan="2"><a href="#"><span><%=data[11]%></span></a></td>',"</tr>","</tbody>"]},defaults={flat:false,starts:1,prev:"&#9664;",next:"&#9654;",lastSel:false,mode:"single",view:"days",calendars:1,format:"Y-m-d",position:"bottom",eventName:"click",onRender:function(){return{}},onChange:function(){return true},onShow:function(){return true},onBeforeShow:function(){return true},onHide:function(){return true},locale:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekMin:"wk"}},fill=function(el){var options=$(el).data("datepicker");var cal=$(el);var currentCal=Math.floor(options.calendars/2),date,data,dow,month,cnt=0,week,days,indic,indic2,html,tblCal;cal.find("td>table tbody").remove();for(var i=0;i<options.calendars;i++){date=new Date(options.current);date.addMonths(-currentCal+i);tblCal=cal.find("table").eq(i+1);switch(tblCal[0].className){case"datepickerViewDays":dow=formatDate(date,"B, Y");break;case"datepickerViewMonths":dow=date.getFullYear();break;case"datepickerViewYears":dow=(date.getFullYear()-6)+" - "+(date.getFullYear()+5);break}tblCal.find("thead tr:first th:eq(1) span").text(dow);dow=date.getFullYear()-6;data={data:[],className:"datepickerYears"};for(var j=0;j<12;j++){data.data.push(dow+j)}html=tmpl(tpl.months.join(""),data);date.setDate(1);data={weeks:[],test:10};month=date.getMonth();var dow=(date.getDay()-options.starts)%7;date.addDays(-(dow+(dow<0?7:0)));week=-1;cnt=0;while(cnt<42){indic=parseInt(cnt/7,10);indic2=cnt%7;if(!data.weeks[indic]){week=date.getWeekNumber();data.weeks[indic]={week:week,days:[]}}data.weeks[indic].days[indic2]={text:date.getDate(),classname:[]};if(month!=date.getMonth()){data.weeks[indic].days[indic2].classname.push("datepickerNotInMonth")}if(date.getDay()==0){data.weeks[indic].days[indic2].classname.push("datepickerSunday")}if(date.getDay()==6){data.weeks[indic].days[indic2].classname.push("datepickerSaturday")}var fromUser=options.onRender(date);var val=date.valueOf();if(fromUser.selected||options.date==val||$.inArray(val,options.date)>-1||(options.mode=="range"&&val>=options.date[0]&&val<=options.date[1])){data.weeks[indic].days[indic2].classname.push("datepickerSelected")}if(fromUser.disabled){data.weeks[indic].days[indic2].classname.push("datepickerDisabled")}if(fromUser.className){data.weeks[indic].days[indic2].classname.push(fromUser.className)}data.weeks[indic].days[indic2].classname=data.weeks[indic].days[indic2].classname.join(" ");cnt++;date.addDays(1)}html=tmpl(tpl.days.join(""),data)+html;data={data:options.locale.monthsShort,className:"datepickerMonths"};html=tmpl(tpl.months.join(""),data)+html;tblCal.append(html)}},parseDate=function(date,format){if(date.constructor==Date){return new Date(date)}var parts=date.split(/\W+/);var against=format.split(/\W+/),d,m,y,h,min,now=new Date();for(var i=0;i<parts.length;i++){switch(against[i]){case"d":case"e":d=parseInt(parts[i],10);break;case"m":m=parseInt(parts[i],10)-1;break;case"Y":case"y":y=parseInt(parts[i],10);y+=y>100?0:(y<29?2000:1900);break;case"H":case"I":case"k":case"l":h=parseInt(parts[i],10);break;case"P":case"p":if(/pm/i.test(parts[i])&&h<12){h+=12}else{if(/am/i.test(parts[i])&&h>=12){h-=12}}break;case"M":min=parseInt(parts[i],10);break}}return new Date(y===undefined?now.getFullYear():y,m===undefined?now.getMonth():m,d===undefined?now.getDate():d,h===undefined?now.getHours():h,min===undefined?now.getMinutes():min,0)},formatDate=function(date,format){var m=date.getMonth();var d=date.getDate();var y=date.getFullYear();var wn=date.getWeekNumber();var w=date.getDay();var s={};var hr=date.getHours();var pm=(hr>=12);var ir=(pm)?(hr-12):hr;var dy=date.getDayOfYear();if(ir==0){ir=12}var min=date.getMinutes();var sec=date.getSeconds();var parts=format.split(""),part;for(var i=0;i<parts.length;i++){part=parts[i];switch(parts[i]){case"a":part=date.getDayName();break;case"A":part=date.getDayName(true);break;case"b":part=date.getMonthName();break;case"B":part=date.getMonthName(true);break;case"C":part=1+Math.floor(y/100);break;case"d":part=(d<10)?("0"+d):d;break;case"e":part=d;break;case"H":part=(hr<10)?("0"+hr):hr;break;case"I":part=(ir<10)?("0"+ir):ir;break;case"j":part=(dy<100)?((dy<10)?("00"+dy):("0"+dy)):dy;break;case"k":part=hr;break;case"l":part=ir;break;case"m":part=(m<9)?("0"+(1+m)):(1+m);break;case"M":part=(min<10)?("0"+min):min;break;case"p":case"P":part=pm?"PM":"AM";break;case"s":part=Math.floor(date.getTime()/1000);break;case"S":part=(sec<10)?("0"+sec):sec;break;case"u":part=w+1;break;case"w":part=w;break;case"y":part=(""+y).substr(2,2);break;case"Y":part=y;break}parts[i]=part}return parts.join("")},extendDate=function(options){if(Date.prototype.tempDate){return}Date.prototype.tempDate=null;Date.prototype.months=options.months;Date.prototype.monthsShort=options.monthsShort;Date.prototype.days=options.days;Date.prototype.daysShort=options.daysShort;Date.prototype.getMonthName=function(fullName){return this[fullName?"months":"monthsShort"][this.getMonth()]};Date.prototype.getDayName=function(fullName){return this[fullName?"days":"daysShort"][this.getDay()]};Date.prototype.addDays=function(n){this.setDate(this.getDate()+n);this.tempDate=this.getDate()};Date.prototype.addMonths=function(n){if(this.tempDate==null){this.tempDate=this.getDate()}this.setDate(1);this.setMonth(this.getMonth()+n);this.setDate(Math.min(this.tempDate,this.getMaxDays()))};Date.prototype.addYears=function(n){if(this.tempDate==null){this.tempDate=this.getDate()}this.setDate(1);this.setFullYear(this.getFullYear()+n);this.setDate(Math.min(this.tempDate,this.getMaxDays()))};Date.prototype.getMaxDays=function(){var tmpDate=new Date(Date.parse(this)),d=28,m;m=tmpDate.getMonth();d=28;while(tmpDate.getMonth()==m){d++;tmpDate.setDate(d)}return d-1};Date.prototype.getFirstDay=function(){var tmpDate=new Date(Date.parse(this));tmpDate.setDate(1);return tmpDate.getDay()};Date.prototype.getWeekNumber=function(){var tempDate=new Date(this);tempDate.setDate(tempDate.getDate()-(tempDate.getDay()+6)%7+3);var dms=tempDate.valueOf();tempDate.setMonth(0);tempDate.setDate(4);return Math.round((dms-tempDate.valueOf())/(604800000))+1};Date.prototype.getDayOfYear=function(){var now=new Date(this.getFullYear(),this.getMonth(),this.getDate(),0,0,0);var then=new Date(this.getFullYear(),0,0,0,0,0);var time=now-then;return Math.floor(time/24*60*60*1000)}},layout=function(el){var options=$(el).data("datepicker");var cal=$("#"+options.id);if(!options.extraHeight){var divs=$(el).find("div");options.extraHeight=divs.get(0).offsetHeight+divs.get(1).offsetHeight;options.extraWidth=divs.get(2).offsetWidth+divs.get(3).offsetWidth}var tbl=cal.find("table:first").get(0);var width=tbl.offsetWidth;var height=tbl.offsetHeight;cal.css({width:width+options.extraWidth+"px",height:height+options.extraHeight+"px"}).find("div.datepickerContainer").css({width:width+"px",height:height+"px"})},click=function(ev){if($(ev.target).is("span")){ev.target=ev.target.parentNode}var el=$(ev.target);if(el.is("a")){ev.target.blur();if(el.hasClass("datepickerDisabled")){return false}var options=$(this).data("datepicker");var parentEl=el.parent();var tblEl=parentEl.parent().parent().parent();var tblIndex=$("table",this).index(tblEl.get(0))-1;var tmp=new Date(options.current);var changed=false;var fillIt=false;if(parentEl.is("th")){if(parentEl.hasClass("datepickerWeek")&&options.mode=="range"&&!parentEl.next().hasClass("datepickerDisabled")){var val=parseInt(parentEl.next().text(),10);tmp.addMonths(tblIndex-Math.floor(options.calendars/2));if(parentEl.next().hasClass("datepickerNotInMonth")){tmp.addMonths(val>15?-1:1)}tmp.setDate(val);options.date[0]=(tmp.setHours(0,0,0,0)).valueOf();tmp.setHours(23,59,59,0);tmp.addDays(6);options.date[1]=tmp.valueOf();fillIt=true;changed=true;options.lastSel=false}else{if(parentEl.hasClass("datepickerMonth")){tmp.addMonths(tblIndex-Math.floor(options.calendars/2));switch(tblEl.get(0).className){case"datepickerViewDays":tblEl.get(0).className="datepickerViewMonths";el.find("span").text(tmp.getFullYear());break;case"datepickerViewMonths":tblEl.get(0).className="datepickerViewYears";el.find("span").text((tmp.getFullYear()-6)+" - "+(tmp.getFullYear()+5));break;case"datepickerViewYears":tblEl.get(0).className="datepickerViewDays";el.find("span").text(formatDate(tmp,"B, Y"));break}}else{if(parentEl.parent().parent().is("thead")){switch(tblEl.get(0).className){case"datepickerViewDays":options.current.addMonths(parentEl.hasClass("datepickerGoPrev")?-1:1);break;case"datepickerViewMonths":options.current.addYears(parentEl.hasClass("datepickerGoPrev")?-1:1);break;case"datepickerViewYears":options.current.addYears(parentEl.hasClass("datepickerGoPrev")?-12:12);break}fillIt=true}}}}else{if(parentEl.is("td")&&!parentEl.hasClass("datepickerDisabled")){switch(tblEl.get(0).className){case"datepickerViewMonths":options.current.setMonth(tblEl.find("tbody.datepickerMonths td").index(parentEl));options.current.setFullYear(parseInt(tblEl.find("thead th.datepickerMonth span").text(),10));options.current.addMonths(Math.floor(options.calendars/2)-tblIndex);tblEl.get(0).className="datepickerViewDays";break;case"datepickerViewYears":options.current.setFullYear(parseInt(el.text(),10));tblEl.get(0).className="datepickerViewMonths";break;default:var val=parseInt(el.text(),10);tmp.addMonths(tblIndex-Math.floor(options.calendars/2));if(parentEl.hasClass("datepickerNotInMonth")){tmp.addMonths(val>15?-1:1)}tmp.setDate(val);switch(options.mode){case"multiple":val=(tmp.setHours(0,0,0,0)).valueOf();if($.inArray(val,options.date)>-1){$.each(options.date,function(nr,dat){if(dat==val){options.date.splice(nr,1);return false}})}else{options.date.push(val)}break;case"range":if(!options.lastSel){options.date[0]=(tmp.setHours(0,0,0,0)).valueOf()}val=(tmp.setHours(23,59,59,0)).valueOf();if(val<options.date[0]){options.date[1]=options.date[0]+86399000;options.date[0]=val-86399000}else{options.date[1]=val}options.lastSel=!options.lastSel;break;default:options.date=tmp.valueOf();break}break}fillIt=true;changed=true}}if(fillIt){fill(this)}if(changed){options.onChange.apply(this,prepareDate(options))}}return false},prepareDate=function(options){var tmp;if(options.mode=="single"){tmp=new Date(options.date);return[formatDate(tmp,options.format),tmp,options.el]}else{tmp=[[],[],options.el];$.each(options.date,function(nr,val){var date=new Date(val);tmp[0].push(formatDate(date,options.format));tmp[1].push(date)});return tmp}},getViewport=function(){var m=document.compatMode=="CSS1Compat";return{l:window.pageXOffset||(m?document.documentElement.scrollLeft:document.body.scrollLeft),t:window.pageYOffset||(m?document.documentElement.scrollTop:document.body.scrollTop),w:window.innerWidth||(m?document.documentElement.clientWidth:document.body.clientWidth),h:window.innerHeight||(m?document.documentElement.clientHeight:document.body.clientHeight)}},isChildOf=function(parentEl,el,container){if(parentEl==el){return true}if(parentEl.contains){return parentEl.contains(el)}if(parentEl.compareDocumentPosition){return !!(parentEl.compareDocumentPosition(el)&16)}var prEl=el.parentNode;while(prEl&&prEl!=container){if(prEl==parentEl){return true}prEl=prEl.parentNode}return false},show=function(ev){var cal=$("#"+$(this).data("datepickerId"));if(!cal.is(":visible")){var calEl=cal.get(0);fill(calEl);var options=cal.data("datepicker");options.onBeforeShow.apply(this,[cal.get(0)]);var pos=$(this).offset();var viewPort=getViewport();var top=pos.top;var left=pos.left;var oldDisplay=$.curCSS(calEl,"display");cal.css({visibility:"hidden",display:"block"});layout(calEl);switch(options.position){case"top":top-=calEl.offsetHeight;break;case"left":left-=calEl.offsetWidth;break;case"right":left+=this.offsetWidth;break;case"bottom":top+=this.offsetHeight;break}if(top+calEl.offsetHeight>viewPort.t+viewPort.h){top=pos.top-calEl.offsetHeight}if(top<viewPort.t){top=pos.top+this.offsetHeight+calEl.offsetHeight}if(left+calEl.offsetWidth>viewPort.l+viewPort.w){left=pos.left-calEl.offsetWidth}if(left<viewPort.l){left=pos.left+this.offsetWidth}cal.css({visibility:"visible",display:"block",top:top+"px",left:left+"px"});if(options.onShow.apply(this,[cal.get(0)])!=false){cal.show()}$(document).bind("mousedown",{cal:cal,trigger:this},hide)}return false},hide=function(ev){if(ev.target!=ev.data.trigger&&!isChildOf(ev.data.cal.get(0),ev.target,ev.data.cal.get(0))){if(ev.data.cal.data("datepicker").onHide.apply(this,[ev.data.cal.get(0)])!=false){ev.data.cal.hide()}$(document).unbind("mousedown",hide)}};return{init:function(options){options=$.extend({},defaults,options||{});extendDate(options.locale);options.calendars=Math.max(1,parseInt(options.calendars,10)||1);options.mode=/single|multiple|range/.test(options.mode)?options.mode:"single";return this.each(function(){if(!$(this).data("datepicker")){options.el=this;if(options.date.constructor==String){options.date=parseDate(options.date,options.format);options.date.setHours(0,0,0,0)}if(options.mode!="single"){if(options.date.constructor!=Array){options.date=[options.date.valueOf()];if(options.mode=="range"){options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf())}}else{for(var i=0;i<options.date.length;i++){options.date[i]=(parseDate(options.date[i],options.format).setHours(0,0,0,0)).valueOf()}if(options.mode=="range"){options.date[1]=((new Date(options.date[1])).setHours(23,59,59,0)).valueOf()}}}else{options.date=options.date.valueOf()}if(!options.current){options.current=new Date()}else{options.current=parseDate(options.current,options.format)}options.current.setDate(1);options.current.setHours(0,0,0,0);var id="datepicker_"+parseInt(Math.random()*1000),cnt;options.id=id;$(this).data("datepickerId",options.id);var cal=$(tpl.wrapper).attr("id",id).bind("click",click).data("datepicker",options);if(options.className){cal.addClass(options.className)}var html="";for(var i=0;i<options.calendars;i++){cnt=options.starts;if(i>0){html+=tpl.space}html+=tmpl(tpl.head.join(""),{week:options.locale.weekMin,prev:options.prev,next:options.next,day1:options.locale.daysMin[(cnt++)%7],day2:options.locale.daysMin[(cnt++)%7],day3:options.locale.daysMin[(cnt++)%7],day4:options.locale.daysMin[(cnt++)%7],day5:options.locale.daysMin[(cnt++)%7],day6:options.locale.daysMin[(cnt++)%7],day7:options.locale.daysMin[(cnt++)%7]})}cal.find("tr:first").append(html).find("table").addClass(views[options.view]);fill(cal.get(0));if(options.flat){cal.appendTo(this).show().css("position","relative");layout(cal.get(0))}else{cal.appendTo(document.body);$(this).bind(options.eventName,show)}}})},showPicker:function(){return this.each(function(){if($(this).data("datepickerId")){show.apply(this)}})},hidePicker:function(){return this.each(function(){if($(this).data("datepickerId")){$("#"+$(this).data("datepickerId")).hide()}})},setDate:function(date,shiftTo){return this.each(function(){if($(this).data("datepickerId")){var cal=$("#"+$(this).data("datepickerId"));var options=cal.data("datepicker");options.date=date;if(options.date.constructor==String){options.date=parseDate(options.date,options.format);options.date.setHours(0,0,0,0)}if(options.mode!="single"){if(options.date.constructor!=Array){options.date=[options.date.valueOf()];if(options.mode=="range"){options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf())}}else{for(var i=0;i<options.date.length;i++){options.date[i]=(parseDate(options.date[i],options.format).setHours(0,0,0,0)).valueOf()}if(options.mode=="range"){options.date[1]=((new Date(options.date[1])).setHours(23,59,59,0)).valueOf()}}}else{options.date=options.date.valueOf()}if(shiftTo){options.current=new Date(options.mode!="single"?options.date[0]:options.date)}fill(cal.get(0))}})},getDate:function(formated){if(this.size()>0){return prepareDate($("#"+$(this).data("datepickerId")).data("datepicker"))[formated?0:1]}},clear:function(){return this.each(function(){if($(this).data("datepickerId")){var cal=$("#"+$(this).data("datepickerId"));var options=cal.data("datepicker");if(options.mode!="single"){options.date=[];fill(cal.get(0))}}})},fixLayout:function(){return this.each(function(){if($(this).data("datepickerId")){var cal=$("#"+$(this).data("datepickerId"));var options=cal.data("datepicker");if(options.flat){layout(cal.get(0))}}})}}}();$.fn.extend({DatePicker:DatePicker.init,DatePickerHide:DatePicker.hidePicker,DatePickerShow:DatePicker.showPicker,DatePickerSetDate:DatePicker.setDate,DatePickerGetDate:DatePicker.getDate,DatePickerClear:DatePicker.clear,DatePickerLayout:DatePicker.fixLayout})})(jQuery);(function(){var cache={};this.tmpl=function tmpl(str,data){var fn=!/\W/.test(str)?cache[str]=cache[str]||tmpl(document.getElementById(str).innerHTML):new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn}})();

//Treeview 1.4 - http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ - Copyright (c) 2007 Jörn Zaefferer - Dual licensed under the MIT and GPL licenses
;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("<div class=\""+CLASSES.hitarea+"\"/>").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery);

//jquery.validationEngine.js - Inline Form Validation Engine 1.6.4
//Copyright(c) 2009, Cedric Dugas - http://www.position-relative.net - Licenced under the MIT Licence
(function($) {
	$.fn.validationEngineLanguage = function() {};
	$.validationEngineLanguage = {
		//inglese
		newLangEng: function() {
			$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"This field is required",
						"alertTextCheckboxMultiple":"Please select an option",
						"alertTextCheckboxe":"This checkbox is required"},
					"length":{
						"regex":"none",
						"alertText":"Between ",
						"alertText2":" and ",
						"alertText3": " characters allowed"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Checks allowed Exceeded"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Please select ",
						"alertText2":" options"},	
					"confirm":{
						"regex":"none",
						"alertText":"Your field is not matching"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Invalid phone number"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Invalid email address"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Invalid date, must be in DD/MM/YYYY format"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Numbers only"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"No special caracters allowed"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"This user is available",	
						"alertTextLoad":"Loading, please wait",
						"alertText":"This user is already taken"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"This email is already subscribed to the newsletter",
						"alertTextOk":"Valid mail",	
						"alertTextLoad":"Loading, please wait"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Letters only"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Consent to the processing of personal data is required"}
					}	
		},
		//italiano
		newLangIta: function() {
			$.validationEngineLanguage.allRules = {"required":{    
						"regex":"none",
						"alertText":"Questo campo è obbligatorio",
						"alertTextCheckboxMultiple":"Scegliere un’opzione",
						"alertTextCheckboxe":"Questa checkbox è obbligatoria"},
					"length":{
						"regex":"none",
						"alertText":"Tra i ",
						"alertText2":" e i ",
						"alertText3":" caratteri richiesti"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Numero di scelte consentite superato"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Per favore seleziona",
						"alertText2":" opzioni"},	
					"confirm":{
						"regex":"none",
						"alertText":"I due campi devono essere identici"},		
					"telephone":{
						"regex":"/^[0-9\-./\(\)\ ]+$/",
						"alertText":"Numero di telefono non valido"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Indirizzo mail non valido"},	
					"date":{
                             "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Data non valida, formato GG/MM/AAAA richiesto"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Accetta soltanto cifre"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"Non accetta caratteri speciali"},	
					"onlyLetter":{
						"regex":"/^[a-zA-ZÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ\ \'’]+$/",
						"alertText":"Accetta soltanto lettere"},
					"ajaxUser":{
						"file":"validateUser.php",
						"alertTextOk":"Questo username è disponibile",	
						"alertTextLoad":"Caricamento, per favore attendere",
						"alertText":"Questo username è già in uso"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"Questa mail risulta già iscritta alla newsletter",
						"alertTextOk":"Mail valida",	
						"alertTextLoad":"Caricamento, per favore attendere"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Il consenso al trattamento dei dati è obbligatorio"}
					}	
		},
				//Belgio francese
		newLangBe_fr: function() {
			$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"Champ obligatoire",
						"alertTextCheckboxMultiple":"S'il vous plait, sélectionnez une option",
						"alertTextCheckboxe":"Sélection obligatoire"},
					"length":{
						"regex":"none",
						"alertText":"Entre ",
						"alertText2":" et ",
						"alertText3": " Liste de caractères admis"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Le maximum de sélections possible est dépassé"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Please select ",
						"alertText2":" options"},	
					"confirm":{
						"regex":"none",
						"alertText":"Your field is not matching"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Numéro de téléphone invalide"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Adresse e-mail invalide"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Date invalide, le format doit être JJ/MM/AAAA"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Seulement des chiffres"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"Pas de caractère special possible"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"Cet identité est disponible",	
						"alertTextLoad":"En charge, attendez s'il vous plait",
						"alertText":"Cet identité n'est pas disponible"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"Cette adresse e-mail est déjà inscrite à la newsletter",
						"alertTextOk":"Adresse e-mail valide",	
						"alertTextLoad":"En charge, attendez s'il vous plait"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Seulement des letters"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Vous devez autoriser l'utilisation de vos données personnelles"}
					}	
		},
		//francese
		newLangFra: function() {
			$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"Champ obligatoire",
						"alertTextCheckboxMultiple":"S'il vous plait, sélectionnez une option",
						"alertTextCheckboxe":"Sélection obligatoire"},
					"length":{
						"regex":"none",
						"alertText":"Entre ",
						"alertText2":" et ",
						"alertText3": " Liste de caractères admis"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Le maximum de sélections possible est dépassé"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Please select ",
						"alertText2":" options"},	
					"confirm":{
						"regex":"none",
						"alertText":"Your field is not matching"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Numéro de téléphone invalide"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Adresse e-mail invalide"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Date invalide, le format doit être JJ/MM/AAAA"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Seulement des chiffres"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"Pas de caractère special possible"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"Cet identité est disponible",	
						"alertTextLoad":"En charge, attendez s'il vous plait",
						"alertText":"Cet identité n'est pas disponible"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"Cette adresse e-mail est déjà inscrite à la newsletter",
						"alertTextOk":"Adresse e-mail valide",	
						"alertTextLoad":"En charge, attendez s'il vous plait"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Seulement des letters"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Vous devez autoriser l'utilisation de vos données personnelles"}
					}	
		},
		//tedesco
		newLangDeu: function() {
						$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"Pflichtfeld",
						"alertTextCheckboxMultiple":"Bitte wählen Sie aus ",
						"alertTextCheckboxe":"Dieses Feld muss ausgefüllt werden"},
					"length":{
						"regex":"none",
						"alertText":"Zwischen ",
						"alertText2":" Und ",
						"alertText3": " Sonderzeichen sind zulässig"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Checks allowed Exceeded"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Bitte wählen ",
						"alertText2":" Sie aus"},	
					"confirm":{
						"regex":"none",
						"alertText":"Bitte überprüfen Sie Ihre Eingabe"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Ungültige Telefonnummer"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Ungültige e-mail Adresse"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Ungültiges Datum-Format, Eingabeformat TT/MM/YYYY"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Nur Ziffern"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"Keine Sonderzeichen"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"Dieser Nutzername ist verfügbar",	
						"alertTextLoad":"Daten werden geladen, einen Moment bitte",
						"alertText":"Dieser Nutzername ist bereits vergeben"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"Sie sind bereits mit dieser e-mail für den Newsletter registriert",
						"alertTextOk":"Gültige e-mail Adresse",	
						"alertTextLoad":"Daten werden geladen, einen Moment bitte"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Nur Buchstaben"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Ihre Einwilligung zur Speicherung Ihrer persönlichen Daten ist erforderlich"}
					}	
		},
		//olandese
		newLangDut: function() {
			$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"This field is required",
						"alertTextCheckboxMultiple":"Please select an option",
						"alertTextCheckboxe":"This checkbox is required"},
					"length":{
						"regex":"none",
						"alertText":"Between ",
						"alertText2":" and ",
						"alertText3": " characters allowed"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Checks allowed Exceeded"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Please select ",
						"alertText2":" options"},	
					"confirm":{
						"regex":"none",
						"alertText":"Your field is not matching"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Invalid phone number"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Invalid email address"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Invalid date, must be in DD/MM/YYYY format"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Numbers only"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"No special caracters allowed"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"This user is available",	
						"alertTextLoad":"Loading, please wait",
						"alertText":"This user is already taken"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"This email is already subscribed to the newsletter",
						"alertTextOk":"Valid mail",	
						"alertTextLoad":"Loading, please wait"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Letters only"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Consent to the processing of personal data is required"}
					}	
		},
		//polacco
		newLangPol: function() {
			$.validationEngineLanguage.allRules = 	{"required":{ 
						"regex":"none",
						"alertText":"Pole obowiązkowe",
						"alertTextCheckboxMultiple":"Proszę wybrać odpowiednią opcje",
						"alertTextCheckboxe":"Pole obowiązkowe"},
					"length":{
						"regex":"none",
						"alertText":"Pomiędzy ",
						"alertText2":" I ",
						"alertText3": " Znaki dozwolone"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"Lista dostępnych opcji została przekroczona"},	
					"minCheckbox":{
						"regex":"none",
						"alertText":"Proszę wybrać ",
						"alertText2":" odpowiednią opcje"},	
					"confirm":{
						"regex":"none",
						"alertText":"Niedopasowane pole"},		
					"telephone":{
						"regex":"/^[0-9\-\(\)\ ]+$/",
						"alertText":"Nieważny numer telefonu"},	
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"Nieważny adres e-mail"},	
					"date":{
                         "regex":"/^[0-9]{1,2}\[/]\[0-9]{1,2}\[/]\[0-9]{4}$/",
                         "alertText":"Nieważna data, wymagany format to DD/MM/YYYY"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"Dozwolone wyłącznie cyfry"},	
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"Znaki specjalne niedozwolone"},	
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"Nazwa użytkownika dostępna",	
						"alertTextLoad":"Informacje są ładowane, proszę czekać",
						"alertText":"Nazwa użytkownika niedostępna"},	
					"ajaxMail":{
						"file":"validateUser.php",
						"alertText":"Adres e-mail już otrzymuje news-letter",
						"alertTextOk":"Poprawny adres e-mail",	
						"alertTextLoad":"Informacje są ładowane, proszę czekać"},		
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"Wyłącznie litery"},
					"validatePrivacy":{
    					"nname":"validatePrivacy",
    					"alertText":"Wymagana jest zgoda na przetwarzanie danych osobowych "}
					}	
		}
	}
})(jQuery);
//funzione specifica per validare il campo privacy
function validatePrivacy(){
	if($("#checkPrivacy input:checked").val() != 1){
		return true;
	}else{
		return false;
	}
}

(function($){$.fn.validationEngine=function(settings){if($.validationEngineLanguage){allRules=$.validationEngineLanguage.allRules}else{$.validationEngine.debug("Validation engine rules are not loaded check your external file")}settings=jQuery.extend({allrules:allRules,validationEventTriggers:"focusout",inlineValidation:true,returnIsValid:false,liveEvent:true,unbindEngine:true,ajaxSubmit:false,scroll:true,promptPosition:"topRight",success:false,beforeSuccess:function(){},failure:function(){}},settings);$.validationEngine.settings=settings;$.validationEngine.ajaxValidArray=new Array();if(settings.inlineValidation==true){if(!settings.returnIsValid){allowReturnIsvalid=false;if(settings.liveEvent){$(this).find("[class*=validate][type!=checkbox]").live(settings.validationEventTriggers,function(caller){_inlinEvent(this)});$(this).find("[class*=validate][type=checkbox]").live("click",function(caller){_inlinEvent(this)})}else{$(this).find("[class*=validate]").not("[type=checkbox]").bind(settings.validationEventTriggers,function(caller){_inlinEvent(this)});$(this).find("[class*=validate][type=checkbox]").bind("click",function(caller){_inlinEvent(this)})}firstvalid=false}function _inlinEvent(caller){$.validationEngine.settings=settings;if($.validationEngine.intercept==false||!$.validationEngine.intercept){$.validationEngine.onSubmitValid=false;$.validationEngine.loadValidation(caller)}else{$.validationEngine.intercept=false}}}if(settings.returnIsValid){if($.validationEngine.submitValidation(this,settings)){return false}else{return true}}$(this).bind("submit",function(caller){$.validationEngine.onSubmitValid=true;$.validationEngine.settings=settings;if($.validationEngine.submitValidation(this,settings)==false){if($.validationEngine.submitForm(this,settings)==true){return false}}else{settings.failure&&settings.failure();return false}});$(".formError").live("click",function(){$(this).fadeOut(150,function(){$(this).remove()})})};$.validationEngine={defaultSetting:function(caller){if($.validationEngineLanguage){allRules=$.validationEngineLanguage.allRules}else{$.validationEngine.debug("Validation engine rules are not loaded check your external file")}settings={allrules:allRules,validationEventTriggers:"blur",inlineValidation:true,returnIsValid:false,scroll:true,unbindEngine:true,ajaxSubmit:false,promptPosition:"topRight",success:false,failure:function(){}};$.validationEngine.settings=settings},loadValidation:function(caller){if(!$.validationEngine.settings){$.validationEngine.defaultSetting()}rulesParsing=$(caller).attr("class");rulesRegExp=/\[(.*)\]/;getRules=rulesRegExp.exec(rulesParsing);str=getRules[1];pattern=/\[|,|\]/;result=str.split(pattern);var validateCalll=$.validationEngine.validateCall(caller,result);return validateCalll},validateCall:function(caller,rules){var promptText="";if(!$(caller).attr("id")){$.validationEngine.debug("This field have no ID attribut( name & class displayed): "+$(caller).attr("name")+" "+$(caller).attr("class"))}caller=caller;ajaxValidate=false;var callerName=$(caller).attr("name");$.validationEngine.isError=false;$.validationEngine.showTriangle=true;callerType=$(caller).attr("type");for(i=0;i<rules.length;i++){switch(rules[i]){case"optional":if(!$(caller).val()){$.validationEngine.closePrompt(caller);return $.validationEngine.isError}break;case"required":_required(caller,rules);break;case"custom":_customRegex(caller,rules,i);break;case"exemptString":_exemptString(caller,rules,i);break;case"ajax":if(!$.validationEngine.onSubmitValid){_ajax(caller,rules,i)}break;case"length":_length(caller,rules,i);break;case"maxCheckbox":_maxCheckbox(caller,rules,i);groupname=$(caller).attr("name");caller=$("input[name='"+groupname+"']");break;case"minCheckbox":_minCheckbox(caller,rules,i);groupname=$(caller).attr("name");caller=$("input[name='"+groupname+"']");break;case"confirm":_confirm(caller,rules,i);break;case"funcCall":_funcCall(caller,rules,i);break;default:}}radioHack();if($.validationEngine.isError==true){linkTofield=$.validationEngine.linkTofield(caller);($("div."+linkTofield).size()==0)?$.validationEngine.buildPrompt(caller,promptText,"error"):$.validationEngine.updatePromptText(caller,promptText)}else{$.validationEngine.closePrompt(caller)}function radioHack(){if($("input[name='"+callerName+"']").size()>1&&(callerType=="radio"||callerType=="checkbox")){caller=$("input[name='"+callerName+"'][type!=hidden]:first");$.validationEngine.showTriangle=false}}function _required(caller,rules){callerType=$(caller).attr("type");if(callerType=="text"||callerType=="password"||callerType=="textarea"){if(!$(caller).val()){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules[rules[i]].alertText+"<br />"}}if(callerType=="radio"||callerType=="checkbox"){callerName=$(caller).attr("name");if($("input[name='"+callerName+"']:checked").size()==0){$.validationEngine.isError=true;if($("input[name='"+callerName+"']").size()==1){promptText+=$.validationEngine.settings.allrules[rules[i]].alertTextCheckboxe+"<br />"}else{promptText+=$.validationEngine.settings.allrules[rules[i]].alertTextCheckboxMultiple+"<br />"}}}if(callerType=="select-one"){if(!$(caller).val()){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules[rules[i]].alertText+"<br />"}}if(callerType=="select-multiple"){if(!$(caller).find("option:selected").val()){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules[rules[i]].alertText+"<br />"}}}function _customRegex(caller,rules,position){customRule=rules[position+1];pattern=eval($.validationEngine.settings.allrules[customRule].regex);if(!pattern.test($(caller).attr("value"))){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules[customRule].alertText+"<br />"}}function _exemptString(caller,rules,position){customString=rules[position+1];if(customString==$(caller).attr("value")){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules.required.alertText+"<br />"}}function _funcCall(caller,rules,position){customRule=rules[position+1];funce=$.validationEngine.settings.allrules[customRule].nname;var fn=window[funce];if(typeof(fn)==="function"){var fn_result=fn();$.validationEngine.isError=fn_result;promptText+=$.validationEngine.settings.allrules[customRule].alertText+"<br />"}}function _ajax(caller,rules,position){customAjaxRule=rules[position+1];postfile=$.validationEngine.settings.allrules[customAjaxRule].file;fieldValue=$(caller).val();ajaxCaller=caller;fieldId=$(caller).attr("id");ajaxValidate=true;ajaxisError=$.validationEngine.isError;if(!$.validationEngine.settings.allrules[customAjaxRule].extraData){extraData=$.validationEngine.settings.allrules[customAjaxRule].extraData}else{extraData=""}if(!ajaxisError){$.ajax({type:"POST",url:postfile,async:true,data:"validateValue="+fieldValue+"&validateId="+fieldId+"&validateError="+customAjaxRule+extraData,beforeSend:function(){if($.validationEngine.settings.allrules[customAjaxRule].alertTextLoad){if(!$("div."+fieldId+"formError")[0]){return $.validationEngine.buildPrompt(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load")}else{$.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load")}}},error:function(data,transport){$.validationEngine.debug("error in the ajax: "+data.status+" "+transport)},success:function(data){data=eval("("+data+")");ajaxisError=data.jsonValidateReturn[2];customAjaxRule=data.jsonValidateReturn[1];ajaxCaller=$("#"+data.jsonValidateReturn[0])[0];fieldId=ajaxCaller;ajaxErrorLength=$.validationEngine.ajaxValidArray.length;existInarray=false;if(ajaxisError=="false"){_checkInArray(false);if(!existInarray){$.validationEngine.ajaxValidArray[ajaxErrorLength]=new Array(2);$.validationEngine.ajaxValidArray[ajaxErrorLength][0]=fieldId;$.validationEngine.ajaxValidArray[ajaxErrorLength][1]=false;existInarray=false}$.validationEngine.ajaxValid=false;promptText+=$.validationEngine.settings.allrules[customAjaxRule].alertText+"<br />";$.validationEngine.updatePromptText(ajaxCaller,promptText,"",true)}else{_checkInArray(true);$.validationEngine.ajaxValid=true;if(!customAjaxRule){$.validationEngine.debug("wrong ajax response, are you on a server or in xampp? if not delete de ajax[ajaxUser] validating rule from your form ")}if($.validationEngine.settings.allrules[customAjaxRule].alertTextOk){$.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextOk,"pass",true)}else{ajaxValidate=false;$.validationEngine.closePrompt(ajaxCaller)}}function _checkInArray(validate){for(x=0;x<ajaxErrorLength;x++){if($.validationEngine.ajaxValidArray[x][0]==fieldId){$.validationEngine.ajaxValidArray[x][1]=validate;existInarray=true}}}}})}}function _confirm(caller,rules,position){confirmField=rules[position+1];if($(caller).attr("value")!=$("#"+confirmField).attr("value")){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules.confirm.alertText+"<br />"}}function _length(caller,rules,position){startLength=eval(rules[position+1]);endLength=eval(rules[position+2]);feildLength=$(caller).attr("value").length;if(feildLength<startLength||feildLength>endLength){$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules.length.alertText+startLength+$.validationEngine.settings.allrules.length.alertText2+endLength+$.validationEngine.settings.allrules.length.alertText3+"<br />"}}function _maxCheckbox(caller,rules,position){nbCheck=eval(rules[position+1]);groupname=$(caller).attr("name");groupSize=$("input[name='"+groupname+"']:checked").size();if(groupSize>nbCheck){$.validationEngine.showTriangle=false;$.validationEngine.isError=true;promptText+=$.validationEngine.settings.allrules.maxCheckbox.alertText+"<br />"}}function _minCheckbox(caller,rules,position){nbCheck=eval(rules[position+1]);groupname=$(caller).attr("name");groupSize=$("input[name='"+groupname+"']:checked").size();if(groupSize<nbCheck){$.validationEngine.isError=true;$.validationEngine.showTriangle=false;promptText+=$.validationEngine.settings.allrules.minCheckbox.alertText+" "+nbCheck+" "+$.validationEngine.settings.allrules.minCheckbox.alertText2+"<br />"}}return($.validationEngine.isError)?$.validationEngine.isError:false},submitForm:function(caller){if($.validationEngine.settings.ajaxSubmit){if($.validationEngine.settings.ajaxSubmitExtraData){extraData=$.validationEngine.settings.ajaxSubmitExtraData}else{extraData=""}$.ajax({type:"POST",url:$.validationEngine.settings.ajaxSubmitFile,async:true,data:$(caller).serialize()+"&"+extraData,error:function(data,transport){$.validationEngine.debug("error in the ajax: "+data.status+" "+transport)},success:function(data){if(data=="true"){$(caller).css("opacity",1);$(caller).animate({opacity:0,height:0},function(){$(caller).css("display","none");$(caller).before("<div class='ajaxSubmit'>"+$.validationEngine.settings.ajaxSubmitMessage+"</div>");$.validationEngine.closePrompt(".formError",true);$(".ajaxSubmit").show("slow");if($.validationEngine.settings.success){$.validationEngine.settings.success&&$.validationEngine.settings.success();return false}})}else{data=eval("("+data+")");if(!data.jsonValidateReturn){$.validationEngine.debug("you are not going into the success fonction and jsonValidateReturn return nothing")}errorNumber=data.jsonValidateReturn.length;for(index=0;index<errorNumber;index++){fieldId=data.jsonValidateReturn[index][0];promptError=data.jsonValidateReturn[index][1];type=data.jsonValidateReturn[index][2];$.validationEngine.buildPrompt(fieldId,promptError,type)}}}});return true}if(!$.validationEngine.settings.beforeSuccess()){if($.validationEngine.settings.success){if($.validationEngine.settings.unbindEngine){$(caller).unbind("submit")}$.validationEngine.settings.success&&$.validationEngine.settings.success();return true}}else{return true}return false},buildPrompt:function(caller,promptText,type,ajaxed){if(!$.validationEngine.settings){$.validationEngine.defaultSetting()}deleteItself="."+$(caller).attr("id")+"formError";if($(deleteItself)[0]){$(deleteItself).stop();$(deleteItself).remove()}var divFormError=document.createElement("div");var formErrorContent=document.createElement("div");linkTofield=$.validationEngine.linkTofield(caller);$(divFormError).addClass("formError");if(type=="pass"){$(divFormError).addClass("greenPopup")}if(type=="load"){$(divFormError).addClass("blackPopup")}if(ajaxed){$(divFormError).addClass("ajaxed")}$(divFormError).addClass(linkTofield);$(formErrorContent).addClass("formErrorContent");$("body").append(divFormError);$(divFormError).append(formErrorContent);if($.validationEngine.showTriangle!=false){var arrow=document.createElement("div");$(arrow).addClass("formErrorArrow");$(divFormError).append(arrow);if($.validationEngine.settings.promptPosition=="bottomLeft"||$.validationEngine.settings.promptPosition=="bottomRight"){$(arrow).addClass("formErrorArrowBottom");$(arrow).html('<div class="line1"><!-- --></div><div class="line2"><!-- --></div><div class="line3"><!-- --></div><div class="line4"><!-- --></div><div class="line5"><!-- --></div><div class="line6"><!-- --></div><div class="line7"><!-- --></div><div class="line8"><!-- --></div><div class="line9"><!-- --></div><div class="line10"><!-- --></div>')}if($.validationEngine.settings.promptPosition=="topLeft"||$.validationEngine.settings.promptPosition=="topRight"){$(divFormError).append(arrow);$(arrow).html('<div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div>')}}$(formErrorContent).html(promptText);callerTopPosition=$(caller).offset().top;callerleftPosition=$(caller).offset().left;callerWidth=$(caller).width();inputHeight=$(divFormError).height();if($.validationEngine.settings.promptPosition=="topRight"){callerleftPosition+=callerWidth-30;callerTopPosition+=-inputHeight-10}if($.validationEngine.settings.promptPosition=="topLeft"){callerTopPosition+=-inputHeight-10}if($.validationEngine.settings.promptPosition=="centerRight"){callerleftPosition+=callerWidth+13}if($.validationEngine.settings.promptPosition=="bottomLeft"){callerHeight=$(caller).height();callerleftPosition=callerleftPosition;callerTopPosition=callerTopPosition+callerHeight+15}if($.validationEngine.settings.promptPosition=="bottomRight"){callerHeight=$(caller).height();callerleftPosition+=callerWidth-30;callerTopPosition+=callerHeight+15}$(divFormError).css({top:callerTopPosition,left:callerleftPosition,opacity:0});return $(divFormError).animate({opacity:0.87},function(){return true})},updatePromptText:function(caller,promptText,type,ajaxed){linkTofield=$.validationEngine.linkTofield(caller);var updateThisPrompt="."+linkTofield;if(type=="pass"){$(updateThisPrompt).addClass("greenPopup")}else{$(updateThisPrompt).removeClass("greenPopup")}if(type=="load"){$(updateThisPrompt).addClass("blackPopup")}else{$(updateThisPrompt).removeClass("blackPopup")}if(ajaxed){$(updateThisPrompt).addClass("ajaxed")}else{$(updateThisPrompt).removeClass("ajaxed")}$(updateThisPrompt).find(".formErrorContent").html(promptText);callerTopPosition=$(caller).offset().top;inputHeight=$(updateThisPrompt).height();if($.validationEngine.settings.promptPosition=="bottomLeft"||$.validationEngine.settings.promptPosition=="bottomRight"){callerHeight=$(caller).height();callerTopPosition=callerTopPosition+callerHeight+15}if($.validationEngine.settings.promptPosition=="centerRight"){callerleftPosition+=callerWidth+13}if($.validationEngine.settings.promptPosition=="topLeft"||$.validationEngine.settings.promptPosition=="topRight"){callerTopPosition=callerTopPosition-inputHeight-10}$(updateThisPrompt).animate({top:callerTopPosition})},linkTofield:function(caller){linkTofield=$(caller).attr("id")+"formError";linkTofield=linkTofield.replace(/\[/g,"");linkTofield=linkTofield.replace(/\]/g,"");return linkTofield},closePrompt:function(caller,outside){if(!$.validationEngine.settings){$.validationEngine.defaultSetting()}if(outside){$(caller).fadeTo("fast",0,function(){$(caller).remove()});return false}if(typeof(ajaxValidate)=="undefined"){ajaxValidate=false}if(!ajaxValidate){linkTofield=$.validationEngine.linkTofield(caller);closingPrompt="."+linkTofield;$(closingPrompt).fadeTo("fast",0,function(){$(closingPrompt).remove()})}},debug:function(error){if(!$("#debugMode")[0]){$("body").append("<div id='debugMode'><div class='debugError'><strong>This is a debug mode, you got a problem with your form, it will try to help you, refresh when you think you nailed down the problem</strong></div></div>")}$(".debugError").append("<div class='debugerror'>"+error+"</div>")},submitValidation:function(caller){var stopForm=false;$.validationEngine.ajaxValid=true;$(caller).find(".formError").remove();var toValidateSize=$(caller).find("[class*=validate]").size();$(caller).find("[class*=validate]").each(function(){linkTofield=$.validationEngine.linkTofield(this);if(!$("."+linkTofield).hasClass("ajaxed")){var validationPass=$.validationEngine.loadValidation(this);return(validationPass)?stopForm=true:""}});ajaxErrorLength=$.validationEngine.ajaxValidArray.length;for(x=0;x<ajaxErrorLength;x++){if($.validationEngine.ajaxValidArray[x][1]==false){$.validationEngine.ajaxValid=false}}if(stopForm||!$.validationEngine.ajaxValid){if($.validationEngine.settings.scroll){destination=$(".formError:not('.greenPopup'):first").offset().top;$(".formError:not('.greenPopup')").each(function(){testDestination=$(this).offset().top;if(destination>testDestination){destination=$(this).offset().top}});$("html:not(:animated),body:not(:animated)").animate({scrollTop:destination},1100)}return true}else{return false}}}})(jQuery);

//hoverIntent by Brian Cherne
(function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(q){var o=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(o&&o!=this){try{o=o.parentNode}catch(q){o=this}}if(o==this){return false}var g=jQuery.extend({},q);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(q.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);

//Superfish v1.4.8 - jQuery menu widget Copyright (c) 2008 Joel Birch licensed under the MIT and GPL licenses
(function(b){b.fn.superfish=function(k){var g=b.fn.superfish,j=g.c,f=b(['<span class="',j.arrowClass,'"> &#187;</span>'].join("")),i=function(){var c=b(this),l=d(c);clearTimeout(l.sfTimer);c.showSuperfishUl().siblings().hideSuperfishUl()},e=function(){var c=b(this),m=d(c),l=g.op;clearTimeout(m.sfTimer);m.sfTimer=setTimeout(function(){l.retainPath=(b.inArray(c[0],l.$path)>-1);c.hideSuperfishUl();if(l.$path.length&&c.parents(["li.",l.hoverClass].join("")).length<1){i.call(l.$path)}},l.delay)},d=function(c){var l=c.parents(["ul.",j.menuClass,":first"].join(""))[0];g.op=g.o[l.serial];return l},h=function(c){c.addClass(j.anchorClass).append(f.clone())};return this.each(function(){var c=this.serial=g.o.length;var m=b.extend({},g.defaults,k);m.$path=b("li."+m.pathClass,this).slice(0,m.pathLevels).each(function(){b(this).addClass([m.hoverClass,j.bcClass].join(" ")).filter("li:has(ul)").removeClass(m.pathClass)});g.o[c]=g.op=m;b("li:has(ul)",this)[(b.fn.hoverIntent&&!m.disableHI)?"hoverIntent":"hover"](i,e).each(function(){if(m.autoArrows){h(b(">a:first-child",this))}}).not("."+j.bcClass).hideSuperfishUl();var l=b("a",this);l.each(function(n){var o=l.eq(n).parents("li");l.eq(n).focus(function(){i.call(o)}).blur(function(){e.call(o)})});m.onInit.call(this)}).each(function(){var c=[j.menuClass];if(g.op.dropShadows&&!(b.browser.msie&&b.browser.version<7)){c.push(j.shadowClass)}b(this).addClass(c.join(" "))})};var a=b.fn.superfish;a.o=[];a.op={};a.IE7fix=function(){var c=a.op;if(b.browser.msie&&b.browser.version>6&&c.dropShadows&&c.animation.opacity!=undefined){this.toggleClass(a.c.shadowClass+"-off")}};a.c={bcClass:"sf-breadcrumb",menuClass:"sf-js-enabled",anchorClass:"sf-with-ul",arrowClass:"sf-sub-indicator",shadowClass:"sf-shadow"};a.defaults={hoverClass:"sfHover",pathClass:"overideThisToUse",pathLevels:1,delay:800,animation:{opacity:"show"},speed:"normal",autoArrows:true,dropShadows:true,disableHI:false,onInit:function(){},onBeforeShow:function(){},onShow:function(){},onHide:function(){}};b.fn.extend({hideSuperfishUl:function(){var e=a.op,d=(e.retainPath===true)?e.$path:"";e.retainPath=false;var c=b(["li.",e.hoverClass].join(""),this).add(this).not(d).removeClass(e.hoverClass).find(">ul").hide().css("visibility","hidden");e.onHide.call(c);return this},showSuperfishUl:function(){var e=a.op,d=a.c.shadowClass+"-off",c=this.addClass(e.hoverClass).find(">ul:hidden").css("visibility","visible");a.IE7fix.call(c);e.onBeforeShow.call(c);c.animate(e.animation,e.speed,function(){a.IE7fix.call(c);e.onShow.call(c)});return this}})})(jQuery);

// jquery.innerfade.js | Author: Torsten Baldes http://medienfreunde.com |based on the work of Matt Oakes and Ralf S. Engelschall
(function($){$.fn.innerfade=function(options){return this.each(function(){$.innerfade(this,options);});};$.innerfade=function(container,options){var settings={'animationtype':'fade','speed':'normal','type':'sequence','timeout':2000,'containerheight':'auto','runningclass':'innerfade','children':null};if(options)
$.extend(settings,options);if(settings.children===null)
var elements=$(container).children();else
var elements=$(container).children(settings.children);if(elements.length>1){$(container).css('position','absolute').css('height',settings.containerheight).addClass(settings.runningclass);for(var i=0;i<elements.length;i++){$(elements[i]).css('z-index',String(elements.length-i)).css('position','absolute').hide();};if(settings.type=="sequence"){setTimeout(function(){$.innerfade.next(elements,settings,1,0);},settings.timeout);$(elements[0]).show();}else if(settings.type=="random"){var last=Math.floor(Math.random()*(elements.length));setTimeout(function(){do{current=Math.floor(Math.random()*(elements.length));}while(last==current);$.innerfade.next(elements,settings,current,last);},settings.timeout);$(elements[last]).show();}else if(settings.type=='random_start'){settings.type='sequence';var current=Math.floor(Math.random()*(elements.length));setTimeout(function(){$.innerfade.next(elements,settings,(current+1)%elements.length,current);},settings.timeout);$(elements[current]).show();}else{alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');}}};$.innerfade.next=function(elements,settings,current,last){if(settings.animationtype=='slide'){$(elements[last]).slideUp(settings.speed);$(elements[current]).slideDown(settings.speed);}else if(settings.animationtype=='fade'){$(elements[last]).fadeOut(settings.speed);$(elements[current]).fadeIn(settings.speed,function(){removeFilter($(this)[0]);});}else
alert('Innerfade-animationtype must either be \'slide\' or \'fade\'');if(settings.type=="sequence"){if((current+1)<elements.length){current=current+1;last=current-1;}else{current=0;last=elements.length-1;}}else if(settings.type=="random"){last=current;while(current==last)
current=Math.floor(Math.random()*elements.length);}else
alert('Innerfade-Type must either be \'sequence\', \'random\' or \'random_start\'');setTimeout((function(){$.innerfade.next(elements,settings,current,last);}),settings.timeout);};})(jQuery);function removeFilter(element){if(element.style.removeAttribute){element.style.removeAttribute('filter');}}

//Equal Heights Plugin  Copyright (c) 2008 Rob Glazebrook (cssnewbie.com)  Usage: $(object).equalHeights([minHeight]);
(function($) {
	$.fn.equalHeights = function(minHeight) {
		tallest = (minHeight) ? minHeight : 0;
		this.each(function() {
			if($(this).height() > tallest) {
				tallest = $(this).height();
			}
		});
		return this.each(function() {
			$(this).height(tallest);
		});
	}
})(jQuery);

//imposta target _blank ai link esterni
linkext = function(){$("a.ext").each(function(){$(this).attr({target:"_blank",title:$(this).attr("title")+" (link esterno, si apre in una nuova finestra)"})})};

//classi voci menu
classes = function(){
	$('#menu>li:first-child, #language>li:first-child').addClass('first');
	$('#menu>li:last-child').addClass('last dx').prev().addClass('dx');
	$('.category:nth-child(4n-3)').addClass('first-item');
	$('.category:nth-child(4n)').addClass('last-item');
}
//tendina menu (richiede Superfish)
menu = function(){
  $('#menu, #technical').superfish({ 
	delay:       500,
	animation:   {height:'show'},
	speed:       'fast',
	autoArrows:  false,
	dropShadows: false
  });
}

//slideshow home page (richiede jquery.innerfade)
slideshow = function(){
  if ($('#slideshow').length){
	$('#slideshow ul').innerfade({
		speed: 2000,
		timeout: 4500,
		type: 'sequence',
		containerheight: '545px'
	});
  }
}
//imposta uguale altezza ai li di categories a gruppi di 4 (richiede equalHeights)
categories = function(){
  if ($('#categories').length){
	var $items = $('#categories>li');
	var itemsLen = $items.length;
	var itemsPerRow = 4;
	for (var i = 0;i < itemsLen;i+=itemsPerRow){
	$items.filter(':eq('+i+'),:lt('+(i+itemsPerRow)+'):gt('+i+')').equalHeights(130);
	} 
  }
}
//popup privacy (richiede jquery.tools)
overlay = function(){
	$("a.credits").overlay({
		top: 'center',
		expose: { 
			color: '#FFF', 
			loadSpeed: 200, 
			opacity: 0.4 
		}
	});
  if ($('a.popup').length){
    $('.overlay').appendTo( $('body') );
	$("a.popup").overlay({
		top: 'center',
		expose: { 
			color: '#FFF', 
			loadSpeed: 200, 
			opacity: 0.4 
		}
	});
  }
}

//gallery news (richiede jquery.tools)
galleryNews = function (txt_show,txt_hide){
  if ($('p.gallery').length){	
	$("p.gallery").each(function(){
		var ancora = $("a",this);
		var target = $(ancora).attr("href");
		$(ancora).click(function() {
			if($(target).css("display") == "none"){
				$(target).animate({
					opacity: 1,
					height: 'toggle'
				}, 300, function() {
					var destination = $(ancora).offset().top;
					$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 500);
					$(ancora).text(txt_hide);
				});
			}else{
				$(target).animate({
					opacity: 0,
					height: 'toggle'
				}, 10, function() {
					var destination = $(ancora).parents('.box-news').offset().top;
					$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 300);
					$(ancora).text(txt_show);
				});
			}
			$(this).blur();
			return false;
		});
	});
  }
  if ($('div.gallery_news').length){	
	$("div.gallery_news").each(function(){
		$(".scrollable",this).wrap('<div class="navigazione" />');
		$(".navigazione",this).prepend('<a class="nextPage">next</a>').append('<a class="prevPage">prev</a>');
		$(".scrollable",this).scrollable({ 
			vertical:true,
			size: 3
		}).mousewheel();
		if ($('.scrollable ul li',this).length == 3){ // has to be the same value as defined in scrollable config 
			$('.nextPage',this).addClass('disabled'); 
		} 
		$(".image_wrap",this).append('<div class="loading">loading...</div>').append('<p class="caption"></p>');
		$(".scrollable ul a",this).click(function() {
			$(this).parent("li").click();
			return false;
		});
		$(".scrollable ul li",this).click(function() {
			var url = $("a",this).attr("href");
			var caption = $("img",this).attr("alt");
			var img = $('<img />').attr('src', url);
			var gallery_container = $(this).parents(".gallery_news");
			$(".image_wrap .caption",gallery_container).fadeTo('slow', 0);
			$(".image_wrap .loading",gallery_container).fadeTo('slow', 1, function() {
				$(".image_wrap img",gallery_container).attr({src:url, alt:caption});
				$(".image_wrap .caption",gallery_container).text(caption);
			});
			$(img).one('load',function() {
				$(".image_wrap .loading",gallery_container).fadeTo('slow', 0, function() {
					$(".image_wrap .caption",gallery_container).fadeTo('slow', 0.7);
				});
			}).each(function() {
				 if(this.complete) $(this).trigger('load');
			});
		}).filter(":first").click();
	});
  }
}
//apri/chiudi sitemap (richiede Treeview)
sitemap = function(){
  if ($('#sitemap').length){
	$("#sitemap").before('<ul id="treecontrol"><li class="collapse"><a href="#"><span></span>'+txtCollapse+'</a></li><li><a href="#"><span></span>'+txtExpand+'</a></li></ul>')
	.treeview({
		collapsed: true,
		control:"#treecontrol",
		animated: "medium"
	});
  }
}
//calendario courses calendar (richiede Date picker) e reset campi form
calendar = function(){
  if ($('#CoursecalendarDate').length){
	var myDate = new Date();
	var today =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' + 
myDate.getFullYear();
	$('#CoursecalendarDate').hide().before('<div id="widget"><div id="widgetField"><span></span><a href="#" title="Select date range" class="ireplace">Select date range</a></div><div id="widgetCalendar"></div></div>');
	var now = new Date();
	$('#widgetCalendar').DatePicker({
		flat: true,
		format:'m/d/Y',
		date: [new Date(now)],
		calendars: 2,
		mode: 'range',
		onChange: function(formated) {
			$('#CoursecalendarDate').val(formated.join(' ÷ '));
			$('#widgetField span').text(formated.join(' ÷ '));
		}
	});
	var state = false;
	$('#widgetField').bind('click', function(){
		$('#widgetCalendar').stop().animate({height: state ? 0 : $('#widgetCalendar div.datepicker').get(0).offsetHeight}, 500);
		state = !state;
		return false;
	});
	$('#widgetCalendar div.datepicker').css('position', 'absolute');

  }
  $('#button_reset').click(function(event) {
    $('#CoursecalendarLocation').removeAttr('selected');
    $('#CoursecalendarTitle, #CoursecalendarDate').val('');
	$('#widgetField span').text('');
    $('#CoursecalendarIsnew').removeAttr('checked');
	event.preventDefault();
  });
}


//settaggio lingue validazione form, sitemap e mostra/nascondi gallery
language = function(){
  if ($('body').hasClass('ita')) {
   $.validationEngineLanguage.newLangIta();
   txt_show = 'Mostra la gallery';
   txt_hide = 'Nascondi la gallery';
   txtCollapse = "Riduci tutti";
   txtExpand = "Espandi tutti";
   txtVideoNotFound = "Video non trovato o incorporamento non consentito";
   txtWatchOnYoutube = "Guarda su YouTube";
  }
  else if ($('body').hasClass('fre')) {
   $.validationEngineLanguage.newLangFra();
   txt_show = 'View the gallery';
   txt_hide = 'Hide the gallery';
   txtCollapse = "Collapse all";
   txtExpand = "Expand all";
   txtVideoNotFound = "Video not found or embedding not allowed";
   txtWatchOnYoutube = "Watch on YouTube";
  }
  else if ($('body').hasClass('deu')) {
   $.validationEngineLanguage.newLangDeu();
   txt_show = 'View the gallery';
   txt_hide = 'Hide the gallery';
   txtCollapse = "Collapse all";
   txtExpand = "Expand all";
   txtVideoNotFound = "Video not found or embedding not allowed";
   txtWatchOnYoutube = "Watch on YouTube";
  }
  else if ($('body').hasClass('dut')) {
   $.validationEngineLanguage.newLangDut();
   txt_show = 'View the gallery';
   txt_hide = 'Hide the gallery';
   txtCollapse = "Collapse all";
   txtExpand = "Expand all";
   txtVideoNotFound = "Video not found or embedding not allowed";
   txtWatchOnYoutube = "Watch on YouTube";
  }
  else if ($('body').hasClass('pol')) {
   $.validationEngineLanguage.newLangPol();
   txt_show = 'View the gallery';
   txt_hide = 'Hide the gallery';
   txtCollapse = "Collapse all";
   txtExpand = "Expand all";
   txtVideoNotFound = "Video not found or embedding not allowed";
   txtWatchOnYoutube = "Watch on YouTube";
  }
  else {
   $.validationEngineLanguage.newLangEng();
   txt_show = 'View the gallery';
   txt_hide = 'Hide the gallery';
   txtCollapse = "Collapse all";
   txtExpand = "Expand all";
   txtVideoNotFound = "Video not found or embedding not allowed";
   txtWatchOnYoutube = "Watch on YouTube";
  }
}

//YOUTUBE

//faccio partire il video appena è pronto (http://code.google.com/intl/it-IT/apis/youtube/js_api_reference.html)
function onYouTubePlayerReady(playerId) {
    var ytplayer = document.getElementById(playerId);
    ytplayer.playVideo();
}

//estrae l'id del video da un link (http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url/4811367#4811367)
extractVideoId = function(url){
	id = url.match(/^.*((youtu.be\/)|(v\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/i)[6];
	return id;
}

//Convert number of seconds into time object
secondsToTime = function(secs){
	var hours = Math.floor(secs / (60 * 60));
	var divisor_for_minutes = secs % (60 * 60);
	var minutes = Math.floor(divisor_for_minutes / 60);
	var divisor_for_seconds = divisor_for_minutes % 60;
	var seconds = ( Math.ceil(divisor_for_seconds) < 10 ? "0" : "" ) + Math.ceil(divisor_for_seconds);
	var time = '';
	if(hours){
		time = hours+':';
		minutes = ( minutes < 10 ? "0" : "" ) + minutes;
	}
	time += minutes+':'+seconds;
	return time;
}
//carica i video di youtube
videoYouTube = function(){
	if ($('.video-list').length){
		//api key (http://code.google.com/intl/it-IT/apis/youtube/2.0/developers_guide_protocol.html#Developer_Key)
		var apiKey ='AI39si7rA2Jl9PEoTs-Hfcrw8RWzt6gs2ckd_j1_vU0M7l-vks1Tdfb4HnT_iRju4zsXSJ0Y8kPqN6Ix-l6wXyL-ZJDOP4bmiQ';
		$('.video-list')
		.each(function(i){
			//per ogni link ai video
			$('.video-item',this)
			.each(function(index){
				//alert(i);
				var videoItem = $(this);
				var videoID = extractVideoId($('a.video-link',this).attr('href'));
				$('a.video-link',this).remove();
				
				// Recupero i dati dalle API di YouTube
				var youtubeAPI = 'http://gdata.youtube.com/feeds/api/videos?v=2&key='+apiKey+'&alt=jsonc&callback=?';
				$.get(youtubeAPI,{'q':videoID},function(response){
					var data = response.data;
					// Se il video non è stato trovato, o non è consentito l'embedding
					if(!data.totalItems || data.items[0].accessControl.embed!="allowed"){
						videoItem.html('<p>'+txtVideoNotFound+'</p><p><a href="http://youtu.be/'+videoID+'" target="_blank">'+txtWatchOnYoutube+'</p>')
						return false;
					}
					// Recupero le informazioni del video
					data = data.items[0];
					//imposto la larghezza del video
					var videoWidth = 620
					var videoRatio = 3/4;
					if(data.aspectRatio == "widescreen"){
						videoRatio = 9/16;
					}
					//imposto l'altezza del video in base alla ratio
					var videoHeight = Math.round(videoWidth*videoRatio);
					//titolo durata e thumbnail
					var videoTitle = data.title;
					var videoDuration = secondsToTime(data.duration);
					var videoThumbnail = data.thumbnail.sqDefault;
					
					var videoIndex = '-'+i+'-'+index;
					
					//creo il div che contiene il video
					jQuery('<div/>', {
						id: 'video'+videoIndex,
						'class': 'video-overlay box',
						css: {
							width: videoWidth
						}
					})
					.appendTo($('body'))
					.flashembed({ 
						src: 'http://www.youtube.com/v/'+videoID+'&enablejsapi=1&playerapiid=player'+videoIndex,  
						version: [10, 0],
						expressInstall: "/swf/expressinstall.swf",
						wmode: 'transparent',
						width: videoWidth,
						height: videoHeight,
						id:'player'+videoIndex
					});
					
					$('#video'+videoIndex)
					.append('<div class="condividi">'
					+'<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D'+videoID+'&amp;send=false&amp;layout=standard&amp;width='+videoWidth+'&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=verdana&amp;height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:'+videoWidth+'px; height:35px;" allowTransparency="true"></iframe>'
					+'</div>');
									
					//creo il link che punta al video
					jQuery('<a/>', {
						href: '#video'+videoIndex,
						rel: '#video'+videoIndex,
						title: videoTitle,
						html: '<img src="'+videoThumbnail+'" alt="'+videoTitle+'" /> '+videoTitle+' <span class="duration">'+videoDuration+'</span>'
					})
					.appendTo($('h4',videoItem))
					.overlay({
						top: 'center',
						expose: { 
							color: '#000', 
							loadSpeed: 200, 
							opacity: 0.4 
						},
						//metto in pausa il video alla chiusura dell'overlay
						onBeforeClose: function(event) {
							$('#player'+videoIndex).get(0).pauseVideo();
						}
					});
				},'jsonp');
			})//fine video-item.each()
		})//fine video-list.each()
	}//fine if video-list
}

//init
jQuery("html").addClass('js');
jQuery(document).ready(function($){
  linkext();
  classes();
  menu();
  language();
  slideshow();
  overlay();
  galleryNews(txt_show,txt_hide);
  categories();
  sitemap();
  calendar();
  $("#contatti").validationEngine();
  $("tr:nth-child(even)").addClass("even");
  videoYouTube();
  
  $('#invia').click(function(e) {
	  if ($("#contatti").validationEngine({returnIsValid:true})) {
		  e.preventDefault();
		  var url = $('#contatti').attr('action');
		  var args = $('#contatti').serialize();
		  
		  $.get(url, {param: args}, function(data) { $('div[rel="put_ajax"]').html(data); });			
	  }
  });
});

//assegna al content un'altezza minima tale da arrivare a filo dei box di dx
//(è nel window.load perchè devo aspettare che vengano caricate le img)
jQuery(window).bind("load", function(){
  $('#content').css('min-height', function() {
    return $('#container').height() - $(this).offset().top - 94+'px'
  });
});

