var Group=new Class({initialize:function(id,required){this.id=id;this.required=required;this.packages=new Array();},addPackage:function(pack){this.packages.include(pack);}});var Package=new Class({initialize:function(id,rights,name,textName,group,price,info){this.id=id;this.rights=rights;this.name=name;this.textName=textName;this.group=group;group.addPackage(this);this.selected=false;this.price=price;this.info=info;Calculator.instance.packnames[textName]=this;},addRestricted:function(restricted,message){this.restricted=restricted;
this.restrictedMessage=message;},addAllowed:function(allowed){this.allowed=allowed;},setSelected:function(selection){this.selected=selection;var current=this;if(selection){this.group.packages.each(function(el){if(el.textName!=current.textName){el.selected=false;}});}},setDisabled:function(disabled,message){this.disabled=disabled;if(disabled){this.message=message;}else{this.message=null;}},setGenres:function(genres){this.channels=genres["all"];if(genres.getLength()==2){genres.each(function(el,idx){if(idx!="all"){this.genre=idx;
}}.bind(this));}},getPrice:function(){if(typeof this.price=="function"){return this.price();}return this.price;}});var Calculator=new Class({initialize:function(channels,onChange){this.onChange=onChange;this.packages=new Hash();this.packnames=new Hash();this.groups=new Array();this.prices=new Array();this.initialRights=0;Calculator.instance=this;setupCalculator.bind(this)();channels.each(function(el,idx){if(this.packnames[idx]){this.packnames[idx].setGenres(el);}}.bind(this));},setPackages:function(packs,fixx){if(packs){if(packs.length==0){this.changePackage(this.defaultPkg,true);
return;}packs.each(function(el){this.changePackage(el,true);}.bind(this));var baseSelected=false;this.groups.base.packages.each(function(p){if(p.selected){baseSelected=true;}});if(!baseSelected){this.changePackage("nobase",true);}this.initialRights=this.getCurrentRights();this.onChange(this);}},changePackage:function(pack,state){var p=this.packages[pack];if(!p){p=this.packnames[pack];}if(!p){return;}if(!p.disabled){this.packages.each(function(el){el.setDisabled(false);});p.setSelected(state);var allwd=[];
this.packages.each(function(el){if(el.selected&&el.allowed){allwd.combine(el.allowed);}});this.packages.each(function(el){if(el.selected&&el.restricted){el.restricted.each(function(p){if(!allwd.contains(p)){p.setSelected(false);p.setDisabled(true,el.restrictedMessage);}});}});}if(state){this.genre=p.genre;}else{this.genre=null;}this.onChange(this);},getChannelCount:function(){var channels=0;this.packages.each(function(el){if(el.selected){channels+=el.channels;}});return channels;},getPrice:function(){var collection=0;
var price=0;this.packages.each(function(el){if(el.selected){if(el.getPrice()){price=price+el.getPrice();}else{collection=collection|el.id;}}});if(this.prices[collection]){return price+this.prices[collection];}return price;},getCurrentRights:function(){var currentRights=0;this.packages.each(function(el){if(el.selected){currentRights|=el.rights;}});return currentRights;}});
