/**
 * RokMiniNews - Advanced News Module with counter and Sortable Drag&Drop.
 * 
 * @version		1.1
 * 
 * @author		Djamil Legato <djamil@rockettheme.com>
 * @copyright	Andy Miller @ Rockettheme, LLC
 */

var RokMN = {};
RokMN.id = '#rokmininews';
RokMN.settings = {};


window.addEvent('load', function() {
	var rokmininews = new RokMiniNews(RokMN.id, {
		start: RokMN.settings,
		radius: 4,
		stories: {
			'5': {'leadings': 1, 'descriptions': 1, 'thumbs': 1, 'simples': 4},
			'10': {'leadings': 2, 'descriptions': 2, 'thumbs': 2, 'simples': 8},
			'15': {'leadings': 2, 'descriptions': 2, 'thumbs': 2, 'simples': 13},
			'20': {'leadings': 3, 'descriptions': 3, 'thumbs': 3, 'simples': 17},
			'50': {'leadings': 50, 'descriptions': 50, 'thumbs': 50, 'simples': 0}
		}
	});
});

// Do not edit below!

var SortablesII=Sortables;
SortablesII.implement({
'move':function(event){
var now=event.page.y;
this.previous=this.previous||now;
var up=((this.previous-now)>0);
var prev=this.active.getPrevious();
var next=this.active.getNext();
if(prev&&prev.hasClass('mininews-drop'))prev=prev.getPrevious()||prev;
if(next&&next.hasClass('mininews-drop'))next=next.getNext()||next;
if(prev&&up&&now<prev.getCoordinates().bottom)this.active.injectBefore(prev);
if(next&&!up&&now>next.getCoordinates().top)this.active.injectAfter(next);
this.tmp.injectAfter(this.active);
this.previous=now}});
var RokMiniNews=new Class({
version:'1.1',options:{
start:5,radius:4,stories:{
'5':{
'leadings':1,'descriptions':1,'thumbs':1,'simples':4},

'10':{
'leadings':2,'descriptions':1,'thumbs':1,'simples':8},

'50':{
'leadings':50,'descriptions':50,'thumbs':50,'simples':0},

'15':{
'leadings':2,'descriptions':2,'thumbs':2,'simples':13}}},

initialize:function(element,options){
this.container=$$(element)[0];
if(!this.container)return false;
this.setOptions(options);
this.cookie=new Hash.Cookie('RokMiniNews',{
duration:30});
this.selection=(window.ie)?'selectstart':'mousedown';
var stopEvent=function(e){
new Event(e).stop()};
var dummy=new Element('div',{
'class':'mininews-drop','styles':{
'position':'absolute','display':'none'}}).inject(document.body),self=this;
this.blocks=$$('.mininews');
this.mini={
};
this.sortables=this.doSortable(dummy);
if(this.cookie.length)this.restore();
this.blocks.each(function(block){
this.mini[block.id]={
};
var mini=this.mini[block.id],start=this.options.start[block.id];
mini.links=block.getElements('.counter a');
mini.inner=block.getElement('.mininews-inner').setStyle('overflow','hidden');
mini.leadings=block.getElements('.lead-articles div');
mini.simples=block.getElements('.simple-articles div').slice(0,-1);
mini.topics=block.getElements('.sub-categories div');
mini.active=0;
mini.fx=new Fx.Style(mini.inner,'height',{
wait:false});
this.show(this.options.start[block.id],block.id);
mini.links.each(function(lnk,i){
var amount=lnk.getProperty('class').split('-')[2].toInt();
if(this.options.start[block.id]==amount){
lnk.addClass('active');
mini.cur=lnk;
mini.active=amount};
if(!i)mini.zero=lnk;
lnk.addEvent('click',function(e){
new Event(e).stop();
mini.links.removeClass('active');
mini.active=amount;
mini.cur=lnk;
lnk.addClass('active');
this.show(amount,block).store()}.bind(this))},

this);
block.addEvent(this.selection,stopEvent);
block.addEvent('dblclick',function(e){
e=new Event(e);
if($(e.target).getProperty('class').contains("mininews-stories-"))return false;
if(block.open)this.show(0,block);
else this.show(mini.active,block);
mini.zero.toggleClass('active');
mini.cur.toggleClass('active');
this.store()}.bind(this))},

this);
if(!this.cookie.length)this.store()},

show:function(amount,block){
block=$(block);
switch(amount){
case 0:block.open=false;
this.mini[block.id].fx.start(0);
break;
default:block.open=true;
var height=this.set(amount,block,block.id);
this.mini[block.id].fx.start(height)}return this},

set:function(amount,block,id){
var story=this.mini[id],option=this.options.stories[amount.toString()],height=0;
if(story.leadings.length>option.leadings){
var count=story.leadings.length-option.leadings;
var dummys=story.leadings.splice(-count);
var article=block.getElement('.simple-articles');
if(window.opera&&document.getElementsByClassName)dummys=story.leadings;
dummys.each(function(dummy){
dummy.inject(article,'top');
story.simples.unshift(dummy)})};
if(story.leadings.length<option.leadings){
var count=option.leadings-story.leadings.length;
var dummys=story.simples.splice(0,count);
var article=block.getElement('.lead-articles');
dummys.each(function(dummy){
dummy.inject(article);
story.leadings.push(dummy)})};
if(story.leadings.length>1){
story.leadings.each(function(leading,i){
var thumbs=leading.getParent().getElements('img');
var descriptions=leading.getParent().getElements('p');
if(i>=option.leadings)leading.setStyle('display','none');
else leading.setStyle('display','');
if(thumbs.length){
thumbs.each(function(thumb,j){
if(j>=option.thumbs)thumb.setStyle('display','none');
else thumb.setStyle('display','')})};
if(descriptions.length){
descriptions.each(function(description,z){
if(z>=option.descriptions)description.setStyle('display','none');
else description.setStyle('display','')})}})};
if(story.simples.length>1){
story.simples.each(function(simple,i){
if(i>=option.simples&&!simple.hasClass('clr')){
simple.setStyle('display','none');
if(story.topics[i])story.topics[i].setStyle('display','none')}else{
simple.setStyle('display','');
if(story.topics[i])story.topics[i].setStyle('display','')}})};
return this.mini[id].inner.getFirst().getCoordinates().height},

store:function(){
var save={
};
var serialize=this.sortables.serialize(function(el){
return el.getElement('div').id});
serialize.each(function(block,i){
var mini=this.mini[block],active;
if(!$(block).open&&mini.active)active=0;
else active=mini.active;
save[i]={
'active':active,'element':block}},

this);
this.cookie.extend(save);
return this},

restore:function(){
/*var hash=new Hash(this.cookie.obj),position=false;
for(i=0,l=hash.length;
i<l;
i++){
var el=$(hash.get(i).element);
if(el){
if(!i){
position=$(hash.get(i).element).getParent();
if(position)position.inject(this.container,'top')}else{
var parent=$(hash.get(i).element).getParent();
if(parent){
parent.inject(position?position:$(hash.get(i).element).getParent(),'after');
position=$(hash.get(i).element).getParent()}}this.options.start[hash.get(i).element]=hash.get(i).active}};
return this*/},

doSortable:function(dummy){
var movers=this.container.getElements('.mover').setStyle('cursor','move'),self=this;
return new SortablesII(this.container,{
handles:movers,onComplete:this.store.bind(this),onDragStart:function(element,ghost){
var sizes=element.getCoordinates();
var border=dummy.getStyle('border-width').toInt()||0;
ghost.inject(self.container);
ghost.setStyles({
'opacity':0.7,'width':sizes.width,'height':sizes.height});
this.tmp=new Element('div',{
'class':'mininews-drop','styles':{
'width':sizes.width-(border*2),'height':sizes.height-(border*2),'-moz-border-radius':self.options.radius+'px','-webkit-border-radius':self.options.radius+'px'}}).inject(element,'before');
element.setStyle('display','none')},

onDragComplete:function(element,ghost){
element.setStyles({
'display':'','opacity':1});
ghost.remove();
this.tmp.remove();
this.trash.remove()}})}});
RokMiniNews.implement(new Options);

