window.addEvent('domready',function(){
/*--*/
/*--*/

	function error(report,where) {
		$(where).fade('out');
		$(where).set('text', report);
		$(where).addClass('error');
		$(where).fade('in');
		$(where).highlight();
	}


		
	if($('email_form')!==null) {		
		$('email_form').addEvent('submit',function(e) {
			e.stop();
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if(!filter.test($('email_input').get('value'))){error('Hey trickster, that isn\'t an email!','email_res');}
			else if($('legal').checked!=1 ) {error('Okay, you will not be contacted!','email_res');}
			else {
			
				this.set('send', {url: 'wp-content/themes/default/includes/controller.php',onComplete: function(response) {
					var inputs=$('email_form').get('html');
					$('email_form').set('html','');
					$('email_form').fade(0);
					$('email_form').set('html',inputs);
					
					if($('email_res').hasClass('error')) { $('email_res').removeClass('error'); }

					$('email_res').addClass('confirm');
					if($('email_res').getStyle('background-color')=='#ffcccc') { $('email_res').setStyle('background-color','#FFFFCC'); }
					$('email_res').set('text',response);
					(function(){ $('email_res').fade(0); }).delay(3000);
					(function(){ $('email_form').fade(1);$('email_res').removeClass('confirm');$('email_res').set('text','');$('email_res').fade(1);  }).delay(3500);
					
				}});
				this.send();
			
				
			}
		});
	}
		
	var SL_Slider = new Class({

	//implements
	Implements: [Options],	
	
	//variables setup
	numNav: new Array(),		    //will store number nav elements (if used)
	timer: null,					//periodical function variable holder
	isSliding: 0,					//flag for animation/click prevention
	direction: 1,					//flag for direction (forward/reverse)
	
	//options
	options: {
	slideTimer: 8000,  			    //Time between slides (1 second = 1000), a.k.a. the interval duration
	orientation: 'horizontal',      //vertical, horizontal, or none: None will create a fading in/out transition.
	fade: false,                    //if true will fade the outgoing slide - only used if orientation is != None
	isPaused: false,				//flag for paused state
	transitionTime: 1100, 		    //Transition time (1 second = 1000)
	transitionType: 'cubic:out',	//Transition type
	container: null,				//container element
	items:  null, 					//Array of elements for sliding
	itemNum: 0,						//Current item number
	numNavActive: false,			//Whether or not the number navigation will be used
	numNavHolder: null,			    //Element that holds the number navigation
	playBtn: null,					//Play (and pause) button element
	prevBtn: null,					//Previous button element
	nextBtn: null					//Next button element
	},

	//initialization
	initialize: function(options) {
		var self = this;
		
		//set options
		this.setOptions(options);
		
		//remove any scrollbar(s) on the container
		self.options.container.setStyle('overflow', "hidden");  
		
		//if there is a play/pause button, set up functionality for it
		if(self.options.playBtn != null) {
			//self.pauseIt();  
			self.options.playBtn.set('text', 'pause');
			
			self.options.playBtn.addEvents({
				'click': function() {
					self.pauseIt();
				},				
				'mouseenter' : function() {
					this.setStyle('cursor', 'pointer');
				},
				'mouseleave' : function() {
					
				}
			});
		}
		
		//if there is a prev & next button, set up functionality for them
		if(self.options.prevBtn && self.options.nextBtn){
			
			self.options.prevBtn.addEvents({ 
				'click' : function() {
					if(self.isSliding == 0){
						if(self.options.isPaused == false){
							$clear(self.timer);
							self.timer = self.slideIt.periodical(self.options.slideTimer, self, null);
						}
						self.direction = 0;
						self.slideIt();
					}
				},
				'mouseenter' : function() {
					this.setStyle('cursor', 'pointer');
				},
				'mouseleave' : function() {
				
				}
			});	
			
			this.options.nextBtn.addEvents({ 
				'click' : function() {
					if(self.isSliding == 0){
						if(self.options.isPaused == false){
							$clear(self.timer);
							self.timer = self.slideIt.periodical(self.options.slideTimer, self, null);
						}
						self.direction = 1;
						self.slideIt();
					}
				},
				'mouseenter' : function() {
					this.setStyle('cursor', 'pointer');
				},
				'mouseleave' : function() {
					
				}
			});	
		}
		
		//setup items (a.k.a. slides) from list
		self.options.items.each(function(el, i){
			  
			//f.y.i.  el = the element, i = the index
			el.setStyle('position', "absolute");
			var itemH = el.getSize().y;
			var itemW = el.getSize().x;
			if(self.options.orientation == 'vertical'){ 
                el.setStyle('top', (-1 * itemH));
                el.setStyle('left', 0);
            }else if(self.options.orientation == 'none') {
                el.setStyle('left', 0);
                el.setStyle('top', 0);
                el.set('opacity', 0);
			}else{
                el.setStyle('left', (-1 * itemW));
            }
			// -- Number nav setup
			if(self.options.numNavActive == true){
				//create numbered navigation boxes, and insert into the 'num_nav' ul)
				var numItem = new Element('li', {id: 'num'+i});
				var numLink = new Element('a', {
					'class': 'numbtn',
					'html': ('&bull;')
				});
				numItem.adopt(numLink);
				self.options.numNavHolder.adopt(numItem);
				self.numNav.push(numLink);
				numLink.set('morph', {duration: 100, transition: Fx.Transitions.linear, link: 'ignore'});
				
				numLink.addEvents({
					'click' : function(){
						self.numPress(i);
					},
					'mouseenter' : function() {
						this.setStyle('cursor', 'pointer');
					}
				});
				
				//set initial number to active state
				if(i == self.options.itemNum){
					var initNum = self.numNav[i];
					initNum.addClass('active');
				}
			}
			//end if num nav 'active'
		
		 });
	
	},

	//startup method
	start: function() {
		
		var self = this;
		
		self.slideIt(self.options.itemNum);  //initialize first slide
		
		if(self.options.isPaused == false){
			self.timer = self.slideIt.periodical(self.options.slideTimer, self, null);
			if(self.options.playBtn) self.options.playBtn.set('text', 'pause');
		}
		else{
			//self.pauseIt();
			if(self.options.playBtn) self.options.playBtn.set('text', 'play');
		}
		
	},
	
	
	slideIt: function(passedID) {
		
		var self = this;
		
		//get item to slide out
		var curItem = self.options.items[self.options.itemNum]; 
		if(self.options.numNavActive == true){
			var curNumItem =  self.numNav[self.options.itemNum];
		}
		
		//check for passedID presence
		if(passedID != null) {
			if(self.options.itemNum != passedID){
				if(self.options.itemNum > passedID) { 
					self.direction = 0; 
				} else { 
					self.direction = 1;
				}
				self.options.itemNum = passedID;
			}
		}
		else{
			self.changeIndex();	
		}
		
		
		//now get item to slide in using new index
		var newItem = self.options.items[self.options.itemNum];
		if(self.direction == 0){
			var curX = self.options.container.getSize().x;
			var newX = (-1 * newItem.getSize().x);
            var curY = self.options.container.getSize().y;
            var newY = (-1 * newItem.getSize().y);
		}
		else{
			var curX = (-1 * self.options.container.getSize().x);	
			var newX = newItem.getSize().x;
            var curY = (-1 * self.options.container.getSize().y);
            var newY = newItem.getSize().y;
		}
		
		
		//add/remove active number's highlight
		if(self.options.numNavActive == true){
			var newNumItem =  self.numNav[self.options.itemNum];
			newNumItem.addClass('active');
		}
		
		
		//set up our animation stylings
		var item_in = new Fx.Morph(newItem, {
		     duration: self.options.transitionTime, 
		     transition: self.options.transitionType,
		     link: 'ignore',
		     
		     onStart: function(){
				self.isSliding = 1;  //prevents extra clicks
			},
		     
		     onComplete: function(){
				self.isSliding = 0;  //prevents extra clicks
			}
		     
		});
		
		
		
        if(self.options.orientation == 'vertical'){
            if(self.options.fade == true){item_in.start({'opacity':[0,1],'top' : [newY, 0]});}
            else{item_in.start({'top' : [newY, 0]});}
        }else if(self.options.orientation == 'none') {
            item_in.start({'opacity':[0,1]});
        }else{
            if(self.options.fade == true){item_in.start({'opacity':[0,1],'left' : [newX, 0]});}
            else{item_in.start({'left' : [newX, 0]});}
        }
        
		
		if(curItem != newItem){
			var item_out = new Fx.Morph(curItem, {
				     duration: self.options.transitionTime, 
				     transition: self.options.transitionType,
				     link: 'ignore'
			});
			
			if(self.options.numNavActive == true){
				curNumItem.removeClass('active');
			}
			
            if(self.options.orientation == 'vertical'){
                if(self.options.fade == true){item_out.start({'opacity':[0],'top' : [(curY)]});}
                else{item_out.start({'top' : [(curY)]});}
            }else if(self.options.orientation == 'none') {
                item_out.start({'opacity':[1,0]});
            }else{
                if(self.options.fade == true){item_out.start({'opacity':[0],'left' : [(curX)]});}
                else{item_out.start({'left' : [(curX)]});}
            }
		}
	},
	
	
	//--------------------------------------------------------------------------------------------------------
	//supplementary functions  (mini-functions)
	//--------------------------------------------------------------------------------------------------------
	pauseIt: function () {
		
		var self = this;
		
		//only move if not currently moving
		if(self.isSliding == 0){
			if(self.options.isPaused == false){
				self.options.isPaused = true;
				$clear(self.timer);
				if(self.options.playBtn) self.options.playBtn.set('text', 'play');				
			}
			else{
				self.options.isPaused = false;
				self.slideIt();
				self.timer = self.slideIt.periodical(self.options.slideTimer, this, null); 
				if(self.options.playBtn) self.options.playBtn.set('text', 'pause');
			}
			
		} //end if not sliding
		
	},
	
	changeIndex: function() {
		var self = this; 
		
		var numItems = self.options.items.length;  //get number of slider items
		
		//change index based on value of 'direction' parameter
		if(self.direction == 1){
			if(self.options.itemNum < (numItems - 1)){
				self.options.itemNum++; 
			}
			else{
				self.options.itemNum = 0;
			}
		}
		else if(self.direction == 0){
			if(self.options.itemNum > 0){
				self.options.itemNum--; 
			}
			else{
				self.options.itemNum = (numItems - 1);
			}
		}	
		
	},
	
	numPress: function (theIndex) {
		var self = this;
		
		if((self.isSliding == 0) && (self.options.itemNum != theIndex)){
			if(self.options.isPaused == false){
				$clear(self.timer);
				self.timer = self.slideIt.periodical(self.options.slideTimer, this, null);
			}
			self.slideIt(theIndex);
		}
	}
	//------------------------  end supp. functions -----------------------------------------//

});
	
	if($('video_container')!==null || $('yt_container')!==null) {
		
		//controls for slider
		var theControls = $('controls1');
		var numNavHolder = $(theControls.getElement('ul'));
		var thePrevBtn = $(theControls.getElement('.prev_btn'));
		var theNextBtn = $(theControls.getElement('.next_btn'));
		var thePlayBtn = $(theControls.getElement('.play_btn'));
		
		
		if($('video_container')==null) {
			var itemsHolder = $('yt_container');
			var myItems = $$(itemsHolder.getElements('.item'));	
			
			var mySlider = new SL_Slider({
				slideTimer: 5000,
				orientation: 'vertical',      //vertical, horizontal, or none: None will create a fading in/out transition.
				fade: true,                    //if true will fade the outgoing slide - only used if orientation is != None
				isPaused: false,
				container: itemsHolder,
				items: myItems,
				numNavActive: false,
				numNavHolder: numNavHolder,
				prevBtn: thePrevBtn,
				nextBtn: theNextBtn,
				playBtn: thePlayBtn
			});
			mySlider.start();
		}
		else {
					
			var itemsHolder = $('video_container');
			var myItems = $$(itemsHolder.getElements('.item'));	
			var mySlider = new SL_Slider({
			slideTimer: 5000,
			orientation: 'horizontal',      //vertical, horizontal, or none: None will create a fading in/out transition.
			fade: true,                    //if true will fade the outgoing slide - only used if orientation is != None
			isPaused: false,
			container: itemsHolder,
			items: myItems,
			numNavActive: true,
			numNavHolder: numNavHolder,
			prevBtn: thePrevBtn,
			nextBtn: theNextBtn
		});
		mySlider.start();
		
	}
	
	itemsHolder.addEvent('mouseenter',function(){
			mySlider.pauseIt();
	});
	
	itemsHolder.addEvent('mouseleave',function(){
		mySlider.slideIt();
	
	});
	
	}
	
	
	if($$('.tooltip')!==null) {
		var customTips = $$('.tooltip');
	
		var toolTips = new Tips(customTips, {
	
			showDelay: 100,    //default is 100
			hideDelay: 100,   //default is 100
			
			offsets: {
				'x': 16,       //default is 16
				'y': 16        //default is 16
			},
		 	fixed: false,
		
			onShow: function(toolTipElement){
		    	toolTipElement.fade(1);
			},
			onHide: function(toolTipElement){
		    	toolTipElement.fade(0);
			}
		});
		
		$$('.tooltip').addEvent('click',function(e) {
			e.stop();
			
			if(this.getProperty('href').contains('watch?v=')) { var href = this.getProperty('href').replace("watch?v=", 'v/'); }
	    	else { var href = this.getProperty('href');}
	    		    	
			var html=
			'<object width="425" height="344">'
			+ '<param name="movie" value="'
			+ href
			+ '&hl=en&fs=1&"></param>'
			+ '<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>'
			+ '<embed src="'
			+ href
			+ '&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed>'
			+ '</object>';
			
			$('yt_mainvideo').set('html',html);
			
			var html2=
			'<h2>'
			+ this.getProperty('rel')
			+ '</h2>'
			+ this.getProperty('alt');
			
			$('yt_description').set('html',html2)
			
		});
	}
	
	
	
	if($$('.up')!=null) {	
		$$('.up').addEvent('mouseenter',function(){
			var id=this.getProperty('id');
			var elem=$(id);
			var myEffect = new Fx.Morph(elem, {fps:60,duration: 750, transition: Fx.Transitions.Elastic.easeOut,onComplete:function(t){
				t.tween('margin-top',0);
			}});
	
			myEffect.start({
			   'margin-top': [-10]
			});
			
		});
	
		$$('.up').addEvent('click',function(e){
			e.stop();
			var myURI=new URI(this.getProperty('rel'));
			myURI.go();
		});
	
	}
	
	if($('edit')!=null) {
		var sb = new Sortables('sortable-list', {
						/* set options */
						clone:true,
						revert: true,
						/* initialization stuff here */
						initialize: function() { 
							
						},
						onStart: function(el) { 
							el.setStyle('background','#add8e6');
						},
						onComplete: function(el) {
							el.setStyle('background','#ddd');
							var sort_order = '';
							$$('#sortable-list li').each(function(li) { sort_order = sort_order +  li.get('alt')  + '|'; });
							$('sort_order').value = sort_order;
							
								var req = new Request({
									url:'../blog/wp-content/themes/default/includes/controller.php',
									method:'post',
									autoCancel:true,
									data:'sort_order=' + sort_order + '&ajax=1&do_submit=1&byajax=1',
									onRequest: function() {
										$('message-box').set('text','Updating the sort order in the database.');
									},
									onSuccess: function() {
										$('message-box').set('text','Database has been updated.');
									}
								}).send();
						}
					});
				
				$$('.edit').addEvent('click',function(e){
					e.stop();
					$('edit_id').set('value',this.getProperty('alt'));
					$('edit_url').set('value',this.getProperty('rel'));
					$('edit_title').set('value',this.getProperty('title'));
				});
				
				$('edit').addEvent('submit',function(e){
					e.stop();
					var id=$('edit_id').get('value');
					$(id).set('html',$('edit_title').get('value'));
					
					var req = new Request({
						url:'../blog/wp-content/themes/default/includes/controller.php',
						method:'post',
						autoCancel:true,
						data:'action=update&id=' + id + '&title=' + $('edit_title').get('value') + '&url=' + $('edit_url').get('value')
					}).send();
					
				});
				
	
	}
	
	/*if($('slideshow')!=null) {
	
		var data = {
	      'short_thumb1.jpg': { caption: 'hey' }, 
	      'short_thumb2.jpg': { caption: 'yeah' }, 
	      'short_thumb3.jpg': { caption: 'okay' }, 
	      'short_thumb4.jpg': { caption: 'whoa' },
			'short_thumb5.jpg': { caption: 'cool' }
	    };
	    var myShow = new Slideshow('slideshow', data, {controller: false, height: 300, hu: 'http://api.onwebtape.com/blog/wp-content/themes/default/images/', thumbnails: false, width: 300});
		
		$('slideshow').addEvent('click',function(){
			var videopage=new URI('/blog/video-archive/');
			videopage.go();
		});
		
	/*	$('slideshow').fade(0.3);
		$$('.slideshow-controller').fade(1);
		//control[0].fade(1);
		
		$('slideshow').addEvent('mouseenter',function(){
			this.fade(1);
		});
		$('slideshow').addEvent('mouseleave',function(){
			this.fade(0.3);
		});*/
		
	/*}*/
	
	
	if($('email_input')!==null) {
	
		$('email_input').addEvent('click',function(e){
			this.set('value','');
		});
	}
	
	if($('dropdown-demo')!==null) {
	var UvumiDropdown=new Class({Implements:Options,options:{clickToOpen:false,openDelay:150,closeDelay:500,duration:250,link:'cancel',transition:Fx.Transitions.linear,mode:'horizontal'},initialize:function(a,b){this.menu=a;this.setOptions(b);if(this.options.mode!='horizontal'&&this.options.mode!='vertical'){this.options.mode='horizontal'}if(Browser.Engine.webkit){window.addEvent('domready',this.domReady.delay(200,this))}else{window.addEvent('domready',this.domReady.bind(this))}},domReady:function(){this.menu=$(this.menu);if(!$defined(this.menu)){return false}if(this.menu.get('tag')!='ul'){this.menu=this.menu.getElement('ul');if(!$defined(this.menu)){return false}}if(this.menu.getStyle('direction')=='rtl'||$(document.body).getStyle('direction')=='rtl'){this.rtl=true;if(Browser.Engine.trident&&$(document.body).getStyle('direction')=='rtl'){this.menu.getParent().setStyle('direction','ltr');this.menu.setStyle('direction','rtl')}}this.menu.setStyles({visibility:'hidden',display:'block',overflow:'hidden',height:0,marginLeft:(Browser.Engine.trident?1:-1)});this.createSubmenu(this.menu);if(this.options.mode=='horizontal'){this.menu.getChildren('li').setStyles({'float':(this.rtl?'right':'left'),display:'block',top:0});var a=new Element('li',{html:"&nbsp;",styles:{clear:(this.rtl?'right':'left'),display:(Browser.Engine.trident?'inline':'block'),position:'relative',top:0,height:0,width:0,fontSize:0,lineHeight:0,margin:0,padding:0}}).inject(this.menu)}else{this.menu.getChildren('li').setStyles({display:'block',top:0})}this.menu.setStyles({height:'29px',overflow:'visible',visibility:'visible'});this.menu.getElements('a').setStyle('display',(Browser.Engine.trident?'inline-block':'block'))},createSubmenu:function(c){var d=c.getChildren('li');var f=0;d.each(function(a){a.setStyles({position:'relative',display:'block',top:-f,zIndex:1});f+=a.getSize().y;var b=a.getFirst('ul');if($defined(b)){c.getElements('ul').setStyle('display','none');if(c==this.menu&&this.options.mode=='horizontal'){a.addClass('submenu-down');var x=0;var y=a.getSize().y;this.options.link='cancel';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options))}else{a.addClass('submenu-left');var x=a.getSize().x-(this.rtl&&!Browser.Engine.trident?2:1)*a.getStyle('border-left-width').toInt();var y=-a.getStyle('border-bottom-width').toInt();this.options.link='chain';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options));f=a.getSize().y+a.getPosition(this.menu).y}b.setStyles({position:'absolute',top:y,opacity:0});c.getElements('ul').setStyle('display','block');if(this.rtl){b.setStyles({right:x,marginRight:-x})}else{b.setStyles({left:x,marginLeft:-x})}this.createSubmenu(b);if(this.options.clickToOpen){a.addEvent('mouseenter',function(){$clear(a.retrieve('closeDelay'))}.bind(this));a.getFirst('a').addEvent('click',function(e){e.stop();$clear(a.retrieve('closeDelay'));this.showChildList(a)}.bind(this))}else{a.addEvent('mouseenter',function(){$clear(a.retrieve('closeDelay'));a.store('openDelay',this.showChildList.delay(this.options.openDelay,this,a))}.bind(this))}a.addEvent('mouseleave',function(){$clear(a.retrieve('openDelay'));a.store('closeDelay',this.hideChildList.delay(this.options.closeDelay,this,a))}.bind(this))}},this)},showChildList:function(b){var c=b.getFirst('ul');var d=$$(c.getChildren('li'));var e=b.retrieve('animation');if(b.getParent('ul')!=this.menu||this.options.mode=='vertical'){e.cancel();var f={0:{opacity:1},1:{opacity:1}};if(this.rtl){f[0]['marginRight']=0}else{f[0]['marginLeft']=0}e.start(f);var g={}}else{var g={0:{opacity:1}}}d.each(function(a,i){g[i+1]={top:0,opacity:1}});b.setStyle('z-index',99);e.start(g)},hideChildList:function(b){var c=b.retrieve('animation');var d=b.getFirst('ul');var e=$$(d.getChildren('li'));var f=0;var g={};e.each(function(a,i){g[i+1]={top:-f,opacity:0};f+=a.getSize().y});b.setStyle('z-index',1);if(b.getParent('ul')!=this.menu||this.options.mode=='vertical'){g[1]=null;c.cancel();c.start(g);var h={0:{opacity:0},1:{opacity:0}};if(this.rtl){h[0]['marginRight']=-d.getSize().x}else{h[0]['marginLeft']=-d.getSize().x}c.start(h)}else{g[0]={opacity:0};c.start(g)}}});
	var menu = new UvumiDropdown('dropdown-demo');
}
/*
if($('widgets_shouts')!=null) {
	var urlPrefix = 'http://www.profilactic.com';
	var mashups = Mashups();
	var content = '';

	var image='';
	for (var i = 0; i < mashups.length; i++) {
	
		if(mashups[i].favico=='/images/favicons/twitter.gif') {
			image = 'http://saltycrane.s3.amazonaws.com/image/twitter_icon.png';
		}
		else {
			image = urlPrefix + mashups[i].favico;
		}
	
		content += '<div class="badge_site">';
	   if (mashups[i].favico != '') { content +='<img align="absmiddle" src="' + image + '" />'; }
	   
	   
	   
	  content += '<a href="' + mashups[i].link + '">' 
	  	+ mashups[i].title 
	  	+ '</a>'
	  	+'</div>';
	}
	
	
	$('widgets_shouts').set('html','<div class="badge"><div class="badge_list">' + content + '</div></div>');
}
*/

/*--*/
/*--*/
});