/*
* Copyright (c) 2009 Alexander Wiederhold (http://www.zibepla.com)
* Licensed under the zibepla license (http://www.zibepla.com/license.php).
*/

function zibepla(){var z=zibepla;var name=$('#z-name'),password=$('#z-password'),type='auto',mode='',n=null;$('td.f,td.a,td,d,td.c').each(function(i,e){n=e.id.replace(/[^\d]+/,'');if(n<=372&&!$('#z'+n).hasClass('nd'))
$('#z'+n).css('background-color','#bbb');else if(n>=745&&!$('#z'+n).hasClass('nd'))
$('#z'+n).css('background-color','#bbb');});z.setFree=function(id){$('#'+id).removeClass().addClass('f').html('&nbsp;');}
z.setOccupied=function(id){if(!$('#'+id).hasClass('nd'))
$('#'+id).removeClass().addClass('o').html('&nbsp;');}
z.setCombined=function(id){$('#'+id).removeClass().addClass('c').html(z.cCode);}
z.setArrival=function(id){$('#'+id).removeClass().addClass('a').html(z.aCode);}
z.setDeparture=function(id){$('#'+id).removeClass().addClass('d').html(z.dCode);}
z.getStart=function(n){for(i=n;i>=0;i--){if($('#z'+i).length<1&&i==0)
return false;if($('#z'+i).hasClass('a')||$('#z'+i).hasClass('d')||$('#z'+i).hasClass('c'))
return i;}
return false;}
z.getEnd=function(n){for(i=n;i<=1116;i++){if($('#z'+i).length<1&&i==1116)
return false;if($('#z'+i).hasClass('d')||$('#z'+i).hasClass('c'))
return i;}
return false;}
z.error=function(m,s){if(typeof m=='undefined'||m==false){$('#z-errors').hide();}
else{$('#z-errors').html(m).show();}
return false;}
z.fill=function(a,d){var de=$('#z'+d);if(de.hasClass('c')||de.hasClass('d'))
return z.error(z.erState);if(typeof a=='undefined')
return z.error(z.erState);if(de.hasClass('a'))
z.setCombined('z'+d);else
z.setDeparture('z'+d);a++;d--;for(i=a;i<=d;i++)
z.setOccupied('z'+i);}
z.unfill=function(a,d){if(typeof d=='undefined')
var d=a;else if(typeof a=='undefined')
var a=d;var ae=$('#z'+a),de=$('#z'+d);if(ae.hasClass('c'))
z.setDeparture('z'+a);else if(ae.hasClass('a'))
z.setFree('z'+a);if(de.hasClass('c'))
z.setArrival('z'+d);else if(de.hasClass('d'))
z.setFree('z'+d);for(i=a;i<=d;i++)
if($('#z'+i).hasClass('o'))
z.setFree('z'+i);}
$('td.a,td.f,td.o,td.d,td.c').click(function(){var id=this.id,n=parseInt(id.replace(/[^\d]+/,''));switch(mode){case'arrival':var a=$('#'+id);if(a.hasClass('c')||a.hasClass('a')||a.hasClass('o'))
return z.error(z.erState);if(a.hasClass('a'))
z.setFree(id);else if(a.hasClass('d'))
z.setCombined(id);else
z.setArrival(id);break;case'departure':if($('#'+id).hasClass('o')||$('#'+id).hasClass('d')||$('#'+id).hasClass('c'))
return z.error(z.erState);var a=z.getStart(n-1);if($('#z'+a).hasClass('d'))
z.setCombined('z'+i);z.fill(a,n);break;case'delete':if($('#'+id).hasClass('a')||$('#'+id).hasClass('c')){if($('#z'+(n+1)).hasClass('o')||$('#z'+(n+1)).hasClass('nd'))
var a=n,d=z.getEnd(n+1);else
var a=n,d=n+1;}
else if($('#'+id).hasClass('d')){var a=z.getStart(n-1),d=n;}
else if($('#'+id).hasClass('o')){var a=z.getStart(n),d=z.getEnd(n);}
else if($('#'+id).hasClass('f')){return false;}
else{return z.error(z.erClear);}
if(a==false||d==false)
return z.error(z.erClear);z.unfill(a,d);break;return false;}});$('td.a,td.d,td.f,td.c').click(function(){if(type=='auto'){if(mode=='arrival'){mode='departure';z.switchClass('z-departure-ctrl','z-active');z.switchClass(['z-arrival-ctrl','z-delete-ctrl'],'z-default');}
else if(mode=='departure'){mode='';z.switchClass('z-departure-ctrl','z-default');}}});$('td.a,td.d,td.o,td.f,td.c').mouseover(function(){$(this).css('cursor','default');if(mode=='arrival'||mode=='departure')
if(!($(this).hasClass('o')||$(this).hasClass('po')||$(this).hasClass('ao')))
$(this).css('cursor','pointer');if(mode=='delete')
if(!($(this).hasClass('f')||$(this).hasClass('pf')||$(this).hasClass('af')))
$(this).css('cursor','pointer');});$('#z-refmon').click(function(){if(z.isModified(z.getStates('a'),z.getStates('d'))){$('#z-cfrm-ctrl').show();z.dfs=z.apMon();}
else{z.load(this.href,z.apMon());}});z.apMon=function(){return'append_months='+$('#z-amon').val()+'&prepend_months='+$('#z-pmon').val();}
$('#z-confirm').click(function(){z.save($('#z-save').attr('href'),z.dfs);});$('#z-not-confirm').click(function(){$('#z-cfrm-ctrl').hide();z.load(this.href,z.dfs);});$('#z-save').click(function(){z.save(this.href);});z.getStates=function(s){var a=$('#zibepla .'+s+',#zibepla .c'),ar=new Array(),c=0;$.each(a,function(i,e){var n=parseInt(e.id.replace(/[^\d]+/,''));if(s=='a'){if(z.getEnd(n+1)!=false)
ar[c++]=n;}
else{if(z.getStart(n-1)!=false)
ar[c++]=n;}});return ar;}
z.save=function(u,dt){var a=z.getStates('a'),d=z.getStates('d');if(typeof dt=='undefined')
var dt='';else dt='&'+dt;if(a.length!=d.length)
return z.error(z.erDate);$('#z-save,#z-saved').hide();$('#z-wait').show();zibepla.onload();$.ajax({type:'POST',url:u,data:'pm='+z.pMonths+'&am='+z.aMonths+'&a='+a+'&d='+d+dt,dataType:'json',success:function(c){$('#z-wait').hide();$('#z-save,#z-saved').show();z.reinit(c);}});}
$('#z-zpa').click(function(){if(type=='auto'){z.switchClass(this.id,'z-default');type=null;}
else{mode='';type='auto';z.switchClass(this.id,'z-active');z.switchClass(['z-zpm','z-departure-ctrl','z-delete-ctrl','z-arrival-ctrl'],'z-default');}});$('#z-zpm').click(function(){if(type=='manual'){z.switchClass(this.id,'z-default');type=null;}
else{mode='';type='manual';z.switchClass(this.id,'z-active');z.switchClass(['z-zpa','z-departure-ctrl','z-delete-ctrl','z-arrival-ctrl'],'z-default');}});$('#z-zpa').mouseover(function(){$(this).css('cursor','pointer');if(type!='auto')
z.switchClass(this.id,'z-hover');});$('#z-zpm').mouseover(function(){$(this).css('cursor','pointer');if(type!='manual')
z.switchClass(this.id,'z-hover');});$('#z-zpa').mouseout(function(){if(type!='auto')
z.switchClass(this.id,'z-default');});$('#z-zpm').mouseout(function(){if(type!='manual')
z.switchClass(this.id,'z-default');});$('#z-arrival-ctrl').click(function(){if(mode=='arrival'){mode='';z.switchClass(this.id,'z-default');}
else{mode='arrival';z.switchClass(this.id,'z-active');z.switchClass(['z-departure-ctrl','z-delete-ctrl'],'z-default');}});$('#z-departure-ctrl').click(function(){if(mode=='departure'){mode='';z.switchClass(this.id,'z-default');}
else{mode='departure';z.switchClass(this.id,'z-active');z.switchClass(['z-arrival-ctrl','z-delete-ctrl'],'z-default');}});$('#z-delete-ctrl').click(function(){if(mode=='delete'){mode='';z.switchClass(this.id,'z-default');}
else{mode='delete';z.switchClass(this.id,'z-active');z.switchClass(['z-arrival-ctrl','z-departure-ctrl'],'z-default');}});$('#z-arrival-ctrl').mouseover(function(){$(this).css('cursor','pointer');if(mode!='arrival')
z.switchClass(this.id,'z-hover');});$('#z-departure-ctrl').mouseover(function(){$(this).css('cursor','pointer');if(mode!='departure')
z.switchClass(this.id,'z-hover');});$('#z-delete-ctrl').mouseover(function(){$(this).css('cursor','pointer');if(mode!='delete')
z.switchClass(this.id,'z-hover');});$('#z-arrival-ctrl').mouseout(function(){if(mode!='arrival')
z.switchClass(this.id,'z-default');});$('#z-departure-ctrl').mouseout(function(){if(mode!='departure')
z.switchClass(this.id,'z-default');});$('#z-delete-ctrl').mouseout(function(){if(mode!='delete')
z.switchClass(this.id,'z-default');});z.logIn=function(u){if(z.chkLen(name,'username',1,16)&&z.chkLen(password,'password',1,16)){z.onload();var p=typeof z.params!='undefined'?z.params.path:'';$.getScript(p+'js/jquery-crypt.js',function(){z.load(u,'name='+name.val()+'&password='+$().crypt({method:'md5',source:password.val()}));});}}
z.chkLen=function(o,n,min,max){if(o.val().length>max||o.val().length<min){o.addClass('z-error');z.error(z.erLogin);return false;}
return true;}
$('#z-login-go').click(function(){z.logIn($('#z-login-form').attr('action'));});$('#z-login').click(function(){z.showLogin();});z.showLogin=function(){$('#z-login-form').show();$('#z-login').hide();$('#z-name').focus();}
$('#z-cancel').click(function(){$('#z-login-form').hide();$('#z-errors').hide();$('#z-login').show();});z.switchClass=function(e,c){if($.isArray(e)){$.each(e,function(k,i){$('#'+i).removeClass().addClass(c);})}
else{$('#'+e).removeClass().addClass(c);}}
if(typeof z.erMsg!='undefined')
z.error(z.erMsg);else
z.error();$('#zibepla a').click(function(){if(typeof this.href!='undefined'&&!$(this).hasClass('z-nl')){z.load(this.href);}
return false;});z.init_a=z.getStates('a');z.init_d=z.getStates('d');z.isModified=function(a,d){for(var i=0;i<z.init_a.length;i++){if(a[i]!=z.init_a[i]||d[i]!=z.init_d[i])
return true;}
for(var i=0;i<a.length;i++){if(a[i]!=z.init_a[i]||d[i]!=z.init_d[i])
return true;}
return false;}}
zibepla.reinit=function(c){document.getElementById('zibepla').innerHTML=c.plan;zibepla.pMonths=c.pMonths;zibepla.aMonths=c.aMonths;zibepla.LoggedIn=c.LoggedIn;zibepla.aCode=c.aCode;zibepla.dCode=c.dCode;zibepla.cCode=c.cCode;zibepla.erLogin=c.erLogin;zibepla.erState=c.erState;zibepla.erClear=c.erClear;zibepla.erDate=c.erDate;zibepla.ptc='https';zibepla.name='zibepla';zibepla.version=c.version;zibepla.erMsg=(typeof c.error!='undefined')?c.error:false;zibepla();if(c.installSuccess)
zibepla.register();}
zibepla.onload=function(){if($('#z-plan').is('#z-plan')){var w=$('#z-plan').width(),h=$('#z-plan').height();}
else{var w=$('#zibepla').width(),h=$('#zibepla').height();}
if($('#z-errors').is(':visible'))
h+=$('#z-errors').height()*2;p=$('#zibepla').position();w=w/2+p.left;h=h/2+p.top;$('#zibepla').append('<div id="z-loading">'+zibepla.loading+'</div>');$('#z-loading').css('left',w-$('#z-loading').width()/2);$('#z-loading').css('top',h-$('#z-loading').height()/2);$('#z-loading').show();}
zibepla.load=function(u,d){zibepla.onload();$.ajax({type:'POST',url:u,data:d,dataType:'json',success:function(c){zibepla.reinit(c);}});}
zibepla.register=function(){$.getScript(zibepla.u()+'?u='+escape(document.location.href)+'&s='+escape(zibepla.params.script)+'&p='+escape(zibepla.params.path)+'&v='+zibepla.version);}
zibepla.u=function(){return zibepla.ptc+'://www.'+zibepla.name+'.com/js/secure.js';}
zibepla.init=function(p){if(typeof $('#zibepla #z-plan').attr('id')=='undefined'){zibepla.params=p;zibepla.params.load=true;}}
$(document).ready(function(){if(typeof zibepla.params!='undefined'&&zibepla.params.load){zibepla.loading=$('#zibepla').html();$('#zibepla').html('');zibepla.params.load=false;zibepla.load(zibepla.params.path+zibepla.params.script,zibepla.params);}
else{if(typeof zibepla._init!='undefined')zibepla._init();zibepla();}});
