var sleepPlayer = {};
window.addEvent('domready', function() {
	/***  SMART SEARCH  ***/
	var mySField 	= $('mySmartField');
	var mySWrap 	= $('smartResults');
	var pUL			= $('pagesList');
	var mUL			= $('mentionsList');
	var myScroll	= $('smartScroll');
	var scrollFx 	= new Fx.Scroll('mentionsWrap',{link: 'cancel'});	
	var str			= "";
	var _currN		= null;
/*****************************	
	//smart search parser
	function buildResults(obj) {
		document.body.addEvent('click', function(e) {
			e.stop();			
			mySWrap.setStyle('visibility', 'hidden');
			this.removeEvent('click');		
		});
		mySWrap.addEvent('click', function(e) { e.stopPropagation(); });
				
		pUL.empty();
		mUL.empty();						
		mySWrap.setStyle('visibility','');				
		for (var i=0; i<=2; i++) {		    
			var l = new Element('li');
			var a = new Element('a', {'href':obj.pages[i].url, 'html': obj.pages[i].txt}).inject(l);
			l.inject(pUL);
		}
		for (var j=0; j <= obj.mentions.length - 1; j++) {
			var z = new Element('li');
			var d = new Element('a', {'href':obj.mentions[j].url, 'html': obj.mentions[j].txt}).inject(z);
			z.inject(mUL);
		}		
	}
	
	//request
	var mySmartSearch = new Request.JSON({
		//url: window.root+'searchResults.json',		
		url: window.root+'AutoCompleteSearchResults/searchResults.aspx',
		method: 'get',
		autoCancel: true,
		onComplete: function(jsonObj) {		
			buildResults(jsonObj);			
		}
	});
	
	******************************/
		//smart search parser
	function buildResults(obj) {

		document.addEvent('click', function(e) {
			e.stop();			
			mySWrap.setStyles({'visibility':'hidden', 'display':'none'});
			this.removeEvents('click');		
		});
		mySWrap.addEvent('click', function(e) { e.stopPropagation(); });
		myScroll.setStyle('visibility','hidden')
		pUL.empty();
		mUL.empty();						
		mySWrap.setStyles({'visibility':'','display':''});
		_currN = 0;
		
		for (var i=0; i<=2 && obj.pages[i]; i++) {
		    //if (obj.pages[i]) {
			    var l = new Element('li');
			    var a = new Element('a', {'href':obj.pages[i].url, 'html': obj.pages[i].txt}).inject(l);
			    l.inject(pUL);
			//}
		}
		for (var j=0; j <= obj.mentions.length - 1; j++) {
			var z = new Element('li');
			var d = new Element('a', {'href':obj.mentions[j].url, 'html': obj.mentions[j].txt}).inject(z);
			z.inject(mUL);
		}
		if (obj.mentions.length > 6) {
			scrollFx.set(0,0)
			myScroll.setStyle('visibility','');
			$('scrollUp').addEvent('click', scrollUp)
			$('scrollDown').addEvent('click', scrollDown)			
		}
	}
	function scrollUp() {
		_currN = (_currN - 30 >= 0 ) ? _currN - 30 : 0;			
		scrollFx.start(0, _currN);	
	}
	function scrollDown() {
		_currN = (_currN + 30 <= mUL.getSize().y - $('mentionsWrap').getSize().y) ? _currN + 30 : _currN = (mUL.getSize().y - $('mentionsWrap').getSize().y) + 5;
		scrollFx.start(0, _currN);		
	}
	
	//request
	var mySmartSearch = new Request.JSON({
		url: window.root+'AutoCompleteSearchResults/searchResults.aspx',
		method: 'get',
		autoCancel: true,
		onComplete: function(jsonObj) {
			buildResults(jsonObj);
		}
	});	
	
	//listen to search field
	mySField.addEvent('keyup', function() {
		var _srchTxt = this.get('value');
		var _res = _srchTxt.replace(/\s/g,"");
		if (_res.length >= 2) {
			str = _srchTxt;
			mySmartSearch.send('term=' + str) 
		}
	})

	/* initialize the video widget if on the sleep expert page */
	if ($('sleepWrap')) sleepPlayer.startShow()
	
	/***  TOOLTIPS  ***/
	//store titles and text
		$$('a.myTip').each(function(element,index) {
		    element.set('href', window.root + 'sleep-glossary.aspx?term=' + element.get('html'))
			var content = element.get('title')//.split('::');
			element.store('tip:title', '<p>' + content + '</p>');
			element.store('tip:text', '<a class="glossarymorelink" href="' + window.root + 'sleep-glossary.aspx?term=' + element.get('html') + '">See More</a>' );
		});
		
		//create the tooltips
		var tipz = new Tips('.myTip',{
			className: 'tipWrap',
			fixed: false,
			hideDelay: 1500,
			showDelay: 100,
			offsets: {'x': 16, 'y': 16}
		});	


});

window.addEvent('load', function() {
	//dont attach events to experts player buttons until page loaded
	sleepPlayer.loadButtons();
})


/***  EXPERTS VIDEO PLAYER  ***/
var play1, play2;

var sleepPlayer = {
	curr: {},
	
	startShow: function() {
		play1 = (window.root) ? window.root + 'images/btn_watchVideo1.jpg' : 'images/btn_watchVideo1.jpg';
		play2 = (window.root) ? window.root + 'images/btn_watchVideo2.jpg' : 'images/btn_watchVideo2.jpg';

		sleepPlayer.scroll = new Fx.Scroll($('controlBody'), {link: 'cancel'});
		sleepPlayer.curr.item = 0;
		
		sleepPlayer.vidItems = $$('.videoItem')
		sleepPlayer.vidItems.each(function(el) {
			el.store('img', el.getElement('a.watchVideo').getElement('img'))
			el.store('desc', el.getElement('p.desc').get('html'))
		})
		
		$('upVideo').addEvent('click', sleepPlayer.goUp)
		$('downVideo').addEvent('click', sleepPlayer.goDown)
					
		
	},
	loadButtons: function() {
		var watch = $$('.watchVideo').each(function(el, i) {
			el.addEvent('click', function() {
				sleepPlayer.playVideo(i);
			})
		})				
	},
	playVideo: function(i) {
		if (i != sleepPlayer.curr.vid) {
			loadVideoById(i+1)
		}
		else return		
	
		var img = sleepPlayer.vidItems[i].retrieve('img');
		var p = sleepPlayer.vidItems[i].retrieve('desc');
		
		//remove styles from current if exists
		if ($chk(sleepPlayer.curr.vid)) {
			sleepPlayer.vidItems[sleepPlayer.curr.vid].toggleClass('on');
			sleepPlayer.vidItems[sleepPlayer.curr.vid].retrieve('img').set('src', play1);

		}
					
		sleepPlayer.vidItems[i].toggleClass('on');			
		sleepPlayer.vidItems[i].retrieve('img').set('src',play2);

		if ($('nowPlaying')) $('nowPlaying').empty().set('html', p);
		
		sleepPlayer.curr.vid = i;
	},
	goUp: function() {
		if (sleepPlayer.curr.item == 0) {
			sleepPlayer.scroll.toElement(sleepPlayer.vidItems[sleepPlayer.vidItems.length - 2]);
			sleepPlayer.curr.item = sleepPlayer.vidItems.length - 2;
		}
		else {
			sleepPlayer.scroll.toElement(sleepPlayer.vidItems[sleepPlayer.curr.item - 1]);
			sleepPlayer.curr.item -= 1;
		}				
	},
	goDown: function() {
		if (sleepPlayer.curr.item == sleepPlayer.vidItems.length - 2) {
			sleepPlayer.scroll.toElement(sleepPlayer.vidItems[0]);
			sleepPlayer.curr.item = 0;
		}
		else {
			sleepPlayer.scroll.toElement(sleepPlayer.vidItems[sleepPlayer.curr.item + 1]);
			sleepPlayer.curr.item += 1;
		}			
	}
}


function submitSearchForm()
{
var searchTerm = "mySmartField";
if (validateSearchForm(searchTerm)) {
    window.location=window.root+'search-result.aspx?q='+document.getElementById(searchTerm).value;
    }
    return false;
}
function validateSearchForm(searchTerm)
{
    var valid = true;
    if (document.getElementById(searchTerm).value == "Search" || 
    document.getElementById(searchTerm).value.length == 0 ) {
 	    window.alert ("Please enter a search text.");
  		valid = false;
 	}
 	else
 	{
 	    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
 		for (var i = 0; i < document.getElementById(searchTerm).value.length; i++) {
  		    if (iChars.indexOf(document.getElementById(searchTerm).value.charAt(i)) != -1) {
  			    window.alert ("Your search text has special characters. \nThese are not allowed.\nPlease remove them and try again.");
  			    valid = false;
  			    break;
  	        }
        }
     }
     return valid;
}

// movie functions
function thisMovie(movieName) {
	 if (navigator.appName.indexOf("Microsoft") != -1) {
		 return window[movieName];
	 } else {
		 return document[movieName];
	 }
}
function playVideo()
{
    thisMovie("videoSection").playVideo();
}
function pauseVideo()
{
    thisMovie("videoSection").pauseVideo();
}
function stopVideo()
{
    thisMovie("videoSection").stopVideo();
}
function seekVideo(offset)
{
    thisMovie("videoSection").seekVideo(offset);
}
function setVideoVolume(level)
{
    thisMovie("videoSection").setVideoVolume(level);
}
function fullScreenVideo(state)
{
    thisMovie("videoSection").fullScreenVideo(state);
}
function loadVideoById(id)
{
    thisMovie("videoSection").loadVideoById(id);
}
function resumeVideo()
{
    thisMovie("videoSection").resumeVideo();
}


