
var allPlaylistsOnPage = new Object();

function pausePL(){
	for(id in allPlaylistsOnPage){
		allPlaylistsOnPage[id].pause();
	}
}
function resumePL(){
	for(id in allPlaylistsOnPage){
		allPlaylistsOnPage[id].resume();
	}
}


function PlaylistItem(id){
	this.id = id;
	this.ondeck;
	this.activate;
	this.deactivate;
}

function Playlist(id,lifecycle){
	this.id = id;
	var old = allPlaylistsOnPage[this.id];
	this.paused=false;
	if(!isEmpty(old)){
		if(old.paused){
			this.paused=true;
		}
		old.destroy();
	}
	allPlaylistsOnPage[this.id] = this;
	this.playing=false;	
	this.preload=false;
	this.interval=10000;
	this.timer = null;
	this.items = new Array();
	this.currentItem = null;
	this.pointer = 0;
	this.inits = new Array();
	this.inited=false;
	this.destroys = new Array();
	this.destroyed=false;
}

Playlist.prototype.addInit = function(initFunc){ 

	this.inits.push(initFunc);
}

Playlist.prototype.addDestroy = function(destroyFunc){
	this.destroys.push(destroyFunc);
	
}

Playlist.prototype.destroy = function(){
	
	if(!this.destroyed){
		this.destroyed=true;
		this.pause();
		var len = this.destroys.length;
		for(var i=0;i<len;i++){
			this.destroys[i]();
		}
		var len = this.items.length;
		var item;
		for(var i=0;i<len;i++){
			item = this.items[i];
			if(typeof item.destroy == 'function'){
				item.destroy();
				this.items[i]=null;
			}
		}
	}
}

Playlist.prototype.next = function(){
	
	if(this.timer!=null){
		window.clearTimeout(this.timer);
		this.timer=null;
	}
	this.autoForward(arguments);
	return false;
}

Playlist.prototype.back = function(){
	
	if(this.timer!=null){
		window.clearTimeout(this.timer);
		this.timer=null;
	}
	if(this.pointer<2){
		this.pointer=this.items.length-(2-this.pointer);
		if(this.pointer < 0){
			this.pointer=0;
		}
	}
	else{
		this.pointer -= 2;
	}
	this.autoForward(arguments);
	return false;
}


Playlist.prototype.gotoItem = function(id){
	var len = this.items.length;
	
	for(var i=0;i<len;i++){
		
		if(this.items[i].id==id){
			if(this.currentItem==null || this.currentItem.id!=id){
				
				this.pointer = i;
				if(this.timer!=null){
					window.clearTimeout(this.timer);
					this.timer=null;
				}
				var args = new Array();
				for(var x=1;x<arguments.length;x++){
					args.push(arguments[x]);
				}
				this.autoForward(args);
			}
			return true;
		}
	}
	return false;
}

Playlist.prototype.play = function(){
	
	if(!this.playing){
		
		if(this.items.length > 0){
			if(!this.paused){
					this.playing=true;
			}
			///
			this.autoForward(arguments);
		}
	}
}	

Playlist.prototype.resume = function(){
	if(!this.playing && this.paused){
		this.playing=true;
		this.paused=false;
		var pl = this;
		this.timer = window.setTimeout(function(){pl.autoForward();pl=null;},this.interval);
	}
}

Playlist.prototype.pause = function(){
	if(this.playing){
		this.playing=false;
		this.paused=true;
		if(this.timer!=null){
			window.clearTimeout(this.timer);
			this.timer=null;
		}
	}
}

Playlist.prototype.setPreload = function(bool){
	
	this.preload=bool;
}

Playlist.prototype.setInterval = function(millis){
	this.interval=millis;
}

Playlist.prototype.autoForward = function(args){
	if(!this.inited){
		this.inited=true;
		var len = this.inits.length;
		for(var i=0;i<len;i++){
			this.inits[i]();
		}
	}
	if(this.items.length > 0)
	{
		if(this.currentItem != null && this.currentItem.deactivate){
			this.currentItem.deactivate();
		}
		this.currentItem = this.items[this.pointer];
		this.currentItem.activate(args);
		if(this.playing){
			var pl = this;
			this.timer = window.setTimeout(function(){pl.autoForward();pl=null},this.interval);
		}
		else{
			this.timer = null;
		}
	
		if(this.pointer==(this.items.length-1)){
			this.pointer=0;
		}
		else{
			this.pointer++;
		}
		//now prefetch the next item in the playlist
		if(this.playing){
			var nextItem = this.items[this.pointer];
			if(nextItem.ondeck){
				nextItem.ondeck();
			}
		}
	}
}

Playlist.prototype.addItem = function(item){
	
	this.items[this.items.length] = item;
	if(this.preload && item.ondeck ){
		var ref = item;
		addOnload(function(){ref.ondeck(); ref = null;});
	}
}

Playlist.prototype.addItems = function(array){
	this.items = this.items.concat(array);
	if(this.preload){
		var ar = array;
		addOnload(function(){
			var len = ar.length;
			var item;
			for(var i=0;i<len;i++){
				item = ar[i];
				if(item.ondeck){
					item.ondeck();
				}
			}
			ar = null;
		});
	}
}


function UrlPlaylistManager(playlist){
	this.activeClass;
	this.inactiveClass;
	this.pane;
	this.playlist=playlist;
	this.transition = null;
	this.lookupProducer = function(){return null;};
	this.currentElement = null;
	if(!isEmpty(this.playlist)){
		var manager = this;
		this.playlist.addDestroy(function(){
			if(!isEmpty(manager.inactiveClass) && (manager.currentElement!=null)){
				manager.currentElement.className = manager.inactiveClass;
			}
			manager.currentElement=null;
			manager=null;
		});
	}
}

UrlPlaylistManager.prototype.addItem = function(id,url){
	//saurav
	
	this.playlist.addItem(new UrlPMItem(id,url,this));
}

UrlPlaylistManager.prototype.addItems = function(array){
	var items = new Array(array.length/2);
	var len = array.length;
	for(var i=0;i<len;i+=2){
		items[i/2] = new UrlPMItem(array[i],array[i+1],this);
	}
	this.playlist.addItems(items);
}

function UrlPMItem(id,url,manager){
	this.id=id;
	this.url=url;
	this.manager=manager;
	this.element = null;
	
}

UrlPMItem.prototype.getElement = function(){
	if(this.element == null){
		this.element =  getElementById(this.manager.lookupProducer(),this.id);
	}
	return this.element;
}
var count=0;
UrlPMItem.prototype.activate=function(args){
	
	
	var el = this.getElement();
	if(!isEmpty(el)){
		el.className = this.manager.activeClass;
		this.manager.currentElement = el;
		
		//saurav code
		var imgid='img'+this.id;
		document.getElementById(imgid).src='images/arrow6-roll.gif';
	}
	var transition = ((!isEmpty(args) && args.length > 0 ) ? args[0] : this.manager.transition);
	if(!isEmpty(this.manager.pane) && !isEmpty(this.url)){
		//saurav code
		if(this.manager.pane.count==10)
		{	
			if(isBrowserSupported()==0)
			{
					this.manager.pane.loadURL(this.url,null,transition);
					if(this.manager.pane.count!=10)
					{
						document.getElementById(this.manager.pane.hideid).style.display='none';
					}
			}
			if(isBrowserSupported()==1)
			{
					this.manager.pane.loadURL(this.url,null,transition);
					document.getElementById(this.manager.pane.hideid).style.display='none';
			}
			
			this.manager.pane.count=1;
			
			
		}
		else if(this.manager.pane.count==5)
		{
				
				if(isBrowserSupported()==0)
			{
					this.manager.pane.loadURL(this.url,null,transition);
					if(this.manager.pane.count!=5)
					{
						document.getElementById(this.manager.pane.hideid).style.display='none';
					}
			}
			if(isBrowserSupported()==1)
			{
					this.manager.pane.loadURL(this.url,null,transition);
					document.getElementById(this.manager.pane.hideid).style.display='none';d
			}
			
			this.manager.pane.count=1;
		}
		else
		{
			if(this.manager.pane.hideid=='firstnews')
			{
				this.manager.pane.loadURL(this.url,null,transition);
				this.manager.pane.count=1;
			}
			else
			{
				if(isBrowserSupported()==0)
				{
						this.manager.pane.loadURL(this.url,null,transition);
						if(this.manager.pane.count!=0)
						{
							document.getElementById(this.manager.pane.hideid).style.display='none';
						}
				}
				if(isBrowserSupported()==1)
				{
						this.manager.pane.loadURL(this.url,null,transition);
						document.getElementById(this.manager.pane.hideid).style.display='none';
				}
				
				this.manager.pane.count=1;
			}
			
		}
		
		
		
	}
};

UrlPMItem.prototype.deactivate = function(){
	
	var el= this.getElement();
	if(el){
		el.className = this.manager.inactiveClass;
		//saurav code
		var imgid='img'+this.id;
		document.getElementById(imgid).src='images/arrow6.gif';
		this.manager.currentElement = null;
	}
};

UrlPMItem.prototype.ondeck = function(){
	
	if(!isEmpty(this.manager.pane) && !isEmpty(this.url)){
		getMarkup(this.url,this.manager.pane.maxAge-this.manager.playlist.interval,function(markup){markup.parse()})
	}
};	

UrlPMItem.prototype.destroy = function(){
	
	this.element = null;
};
