function soundclips() {
	
	this.soundClipsListing = function() {
		if ($('medialoaderselect')) {
			$('medialoaderselect').observe('change', function(e) {
				var medialoaderID = $('medialoaderselect').getValue();
				webkit.playsong(medialoaderID);
			});
		}

		$$('#soundclipslisting ul li a').each(function(o) {
			o.stopObserving('click');
			o.parentNode.observe('mouseover', function(e) {
				cursorLink();
			});
			o.parentNode.observe('mouseout', function(e) {
				cursorClear();
			});
			o.parentNode.observe('click', function(e) {
				e.stop();
				soundclips.invokeSoundClip(o);
			});
		});
		
		$$('#pagecontent a.soundcliplink').each(function(o) {
			o.stopObserving('click');
			o.observe('click', function(e) {
				e.stop();
				soundclips.invokeSoundClip(o);
			});	
		});
	}
	
	this.soundClipsListingMobile = function() {
		if (soundclips.clipDelegationInit) { 
			// delegations already created, abort
			return; 
		}
		
		webkit.Y.delegate('click', function(e) {
			e.preventDefault();
			var thisID = this.one('a').get('id').replace(/^clip_/,'');			
			soundclips.invokeSoundClipMobile(thisID);
		}, '#soundclipslisting', 'ul li');
		
		webkit.Y.delegate('mouseover', function(e) {
			webkit.cursorLink();
		}, '#soundclipslisting', 'ul li');
		
		webkit.Y.delegate('mouseout', function(e) {
			webkit.cursorClear();
		}, '#soundclipslisting', 'ul li');
		
		webkit.Y.delegate('click', function(e) {
			e.preventDefault();
			var thisID = this.one('a').get('id').replace(/^clip_/,'');			
			soundclips.invokeSoundClipMobile(thisID);
		}, '#pagecontent', 'a.soundcliplink');
		
		soundclips.clipDelegationInit = true;	
	}
	
	this.invokeSoundClip = function(clip) {
		var thisID = clip.id.replace(/^clip_/,'');
		new Effect.ScrollTo('mediaplayer', { duration:0.5});
		webkit.playsong(thisID);
		if ($('medialoaderselect')) {
			for (var i=0; i< $('medialoaderselect').options.length; i++){
				if ($('medialoaderselect').options[i].value == thisID) {
					$('medialoaderselect').options[i].selected = true;
				}
				else {
					$('medialoaderselect').options[i].selected = false;
				}
			}
		}
	}
	
	this.invokeSoundClipMobile = function(thisID) {		
		webkit.YUIscrollTo('mediaplayer');
		soundclips.trackID = thisID;
		webkit.jPlayerPlay({
			trackID:thisID,
			autostart:true
		});
	}
	
	this.mediaLoaderObservers = function(ID) {
		$$('#' + ID + ' ul li a').each(function(o) {
			o.stopObserving('click');
			o.observe('click', function(e) {
				e.stop();			
				var thissong = o.pathname.replace(/^\/?song_/,'');
				new Effect.Pulsate(o, { duration:.3, pulses: 2, afterFinish:function() {					
					webkit.playsong(thissong);
					$$('#' + ID + ' div.wrapper').each(function(o) {
						o.id = "activemenu";
					});
					new Effect.BlindUp('activemenu', { duration: 0.3, afterFinish:function() {
						$('activemenu').id = "";
					}});
					var songname = o.innerHTML;
					$$('#' + ID + ' a.topLink').each(function(o) {
 						o.update(songname);					
					});
				}});
			});
		});
	}
		
	this.mediaLoaderMobileObservers = function(jPlayerConfig) {	
		if (soundclips.medialoaderDelegationInit) {
			// delegations already established, abort
			return;
		}
		
		YUI().use('gallery-nmmenus', 'node', 'event-delegate', function(Y) {			
			var nmmenu = new Y.NMMenus(webkit.menuconfig);							
			Y.delegate('click', function(e) {
				e.preventDefault();						
				soundclips.trackID = this.get('pathname').replace(/^\/?song_/,'');
				soundclips.playAndStop = false;				
				jPlayerConfig.trackID = soundclips.trackID;
				jPlayerConfig.autostart = true;	
				nmmenu.menuItemPulsate(this.get('id'), webkit.jPlayerPlay, jPlayerConfig);
				
				soundclips.medialoaderDelegationInit = true;
			}, '#menublock #' + webkit.jsondata.medialoaderID, 'ul li a');			
		});	
	}
	
	this.pausesong = function() {
		soundclips.getFlashMovie('mediaplayer_global').pauseJSTrigger();
	}
	
	this.updateMediaLoader = function(song) {
		YUI().log("play song: " + song);
		if (webkit.jsondata.medialoaderID) {
			$$('#' + webkit.jsondata.medialoaderID + ' a.topLink').each(function(o) {
				o.update(song);	
				if (typeof updateMediaLoaderCallback !== "undefined") {
					updateMediaLoaderCallback(song);
				}
			})
		}
	}
	
	this.getFlashMovie = function(movieName) {
		if (Prototype.Browser.IE) {
			return window[movieName];
		}
		else {
			return document[movieName];
		}
	}
	
	return true;
}

var soundclips = new soundclips();

function soundClipsListing() {
	soundclips.soundClipsListing();
}

