YUI.add('dragontape-ui',function(Y) {
    Y.namespace('dragontape.ui');
    
    var callout=Y.dragontape.ui.callout;
    var tooltip;
    
	
    if(dragontape.campaign!='gg' && dragontape.campaign!='fbcanvas'){
	    var logindialog=new Y.dragontape.ui.LoginDialogWidget({id:'logindialog'});
	    //var passwordChange=new Y.dragontape.ui.PasswordDialog({});
	    logindialog.hide();
	    logindialog.render();
	    
	    
	    
	    Y.on('logindialog:login',function(data){
	    	logindialog.set('loginProgress',true);
	    	Y.dragontape.models.user.login(data);
	    });
	    
	    Y.on('logindialog:register',function(data){
	    	logindialog.set('registerProgress',true);
	    	Y.dragontape.models.user.register(data);
	    });
	    
	    Y.on('login:success',function() {
	    	
	    	logindialog.set('loginProgress',false);
	    	logindialog.set('registerProgress',false);
	    	if(Y.one('#dragontape-player')) Y.one('#dragontape-player').setStyle('visibility','visible');
	    	
	    	logindialog.hide();
	    	
	    });
	    
	    Y.on('register:failure',function(err){
	    	logindialog.set('registerProgress',false);
	    	logindialog.set('registerError',err);
	    });
	    
	    Y.on('login:failure',function(err){
	    	logindialog.set('loginProgress',false);
	    	logindialog.set('loginError',err);
	    	Y.fire('login:lostregistration');
	    });
    }
    if(dragontape.campaign=='fbcanvas' && !dragontape.user){
    	initFB(function(){
    		
    		FB.getLoginStatus(function(response){Y.dragontape.ui.fbLoginSession(response)});
    		
    	});
    }
    
    Y.on('player:loaded',function(){
    	
    	if(Y.dragontape.models.timeline.getMeta().id){ // if it has a valid id
	    	if(Y.dragontape.models.timeline.getMeta().thumbnail!='')Y.one('#dummy').set('innerHTML','<img src="'+Y.dragontape.models.timeline.getMeta().thumbnail+'" width="300" height="200">');
	    	if(Y.dragontape.models.timeline.getMeta().thumbnail.indexOf('waveform')!=-1)Y.one('#dummy img').addClass('soundcloud');
	    	Y.one('#createnewillu').remove();
    	}
    });
    
    if(dragontape.campaign!='gg'){
	Y.on('click',function() {
		//if(dragontape.campaign=='dragontape'){
			if(!Y.dragontape.ui.logindialog.get('visible')) {
	    		Y.dragontape.ui.logindialog.set('selectedTab',0); 
	    		
	    		if(Y.one('#dragontape-player')) Y.one('#dragontape-player').setStyle('visibility','hidden');
	    		Y.dragontape.ui.logindialog.show(); 
			}
		/*} else if(dragontape.campaign=='gg'){
			Y.log('fblogin');
		}*/
	},'#signin');
	
	Y.on('click',function() { 
		if(!Y.dragontape.ui.logindialog.get('visible')) {
    		Y.dragontape.ui.logindialog.set('selectedTab',1); 
    		Y.dragontape.ui.logindialog.show();
		}
	},'#register');
	
	Y.on('click',function() { 
		//try{FB.logout()}catch(e){Y.log(e)}
		Y.dragontape.models.user.logout();
	},'#signout');
    }
    
	Y.on('login:success',function(){
		
		if(dragontape.campaign!='gg'){
			Y.one('#signinemail').setContent(Y.dragontape.models.user.getUser().name);
			
			
			//Y.all('#yourtapesbutton').addClass('show');
			Y.all('#help a.tapes').set('href','/#!/yourtapes');
		}
		Y.all('#loginarea .loggedin').addClass('show');
		Y.all('#loginarea .loggedout').removeClass('show');
	});
	
	Y.on('logout:success',function(){
		Y.all('#loginarea .loggedin').removeClass('show');
		Y.all('#loginarea .loggedout').addClass('show');
		//Y.all('#yourtapesbutton').removeClass('show');
		Y.all('#help a.tapes').set('href','/#!/mostrecent');
		
		Y.dragontape.ui.fbLoginSession();
		
		//Y.all('.tab#t2').removeClass('show');
		
		
		//window.location.href="http://www.dragontape.com/";
	});
	
	/*Y.on('click',function(e) {
		Y.log("related click");
		current=e.currentTarget.get('parentNode');
		Y.dragontape.ui.search.searchRelated(current);
	},'.related');*/
	
	Y.on('mouseleave',function(e) {
		height=parseInt(Y.one('#callout').getStyle('height'));
		width=parseInt(Y.one('#callout').getStyle('width'));
		y=parseInt(Y.one('#callout').getStyle('top'));
		x=parseInt(Y.one('#callout').getStyle('left'));
		if(e.clientY>(y+height) || e.clientY<y || e.clientX>(x+width) || e.clientX<x) {
			callout.hide();
			}
		//Y.log(e.clientY+'  '+y+' '+height);
	},'#callout');
	Y.on('mouseenter',function() {
		callout.hide();
	},['.search_select','#help','#loginarea']);
	

	// define clickoutside handler
	Y.Event.define("clickoutside", {
        on: function ( node, subscription, notifier ) {
 
            function outside( clickTarget ) {
                return clickTarget !== node && !clickTarget.ancestor(
                    function ( parent ) {
                        return parent === node;
                    });
            }
 
            var handle = Y.one('doc').on('click', function ( e ) {
                if ( outside( e.target ) ) {
                    notifier.fire();
                }
            });
            subscription.clickHandle = handle;
        },
        detach: function ( node, subscription, notifier ) {
            subscription.clickHandle.detach();
        }
	});
	
	//header search
	if (Y.one('form[name=ytsearch]')) {
		Y.one('form[name=ytsearch]').on('submit',function(e) {
			Y.dragontape.ui.onSearchSubmit();
		});
	
		Y.on('click',function(e) {
			e.preventDefault();
			Y.dragontape.ui.onSearchSubmit();
			Y.one('form[name=ytsearch]').submit();
		},'form[name=ytsearch] .button');
	}
	
	if(Y.one('#searchselector')){
		Y.on('click',function() {
			Y.dragontape.models.timeline.stopCheckHash();
			var p = Y.one('#searchselectorpanel');
			if(p.hasClass('show')){
				p.removeClass('show');
			} else {
				p.addClass('show');
			}
		},'#searchselector');
					
		Y.on('clickoutside',function(e) {
			var p = Y.one('#searchselectorpanel');
			if(p.hasClass('show')) {
				p.removeClass('show');
			}
		},'#searchselector');
	}
	
	var css = 	'.clipinfo{font-size:17px;height:40px;line-height:22px;top:60px;white-space:normal}'+
				'.clipinfo img { vertical-align:middle;float:left }'+
				'.clipinfo span { float:left;display:inline }'+
				'#players { width:450px; height:250px; }'+
				'#head { height:250px;}'+
				'#head .search_select {left:485px; top:20px; }'+
				'.spinner_container {top:250px}'+
				'#editorpane {top:200px;}'+
				'#dummy img{width:450px;height:250px}'+
				'#hashinfo{position:absolute; top:100px; left:20px;color:white;font-size:20px;}'+
				'#hashinfo span{ margin-top:1px;font-size:40px;color:#08E2C6}'+
				'#searchlist { left:465px; border:none}'+
				'#searchresults { top:-10px}'+
				'#searchback { display:none}'+
				'#searchlist { display:block}'+
				'#searchforward { display:none}'+
				'.clipinfo .profileimage{display:block}'+
				'#help {display:none}'+
				'#loginarea {display:none}'+
				'#videodetails{left:480px;}';
	
	sheet = new Y.StyleSheet(css);
	sheet.disable();
	
	Y.on('click',function(e) {
		document.getElementById('searchterm').value='';
		e.preventDefault();
		var id = e.currentTarget.get('className');
		Y.one('#searchselector').set('className','search_selector').addClass(id);
		if(id=='tw') {
			sheet.enable();
			
			Y.one('#searchbutton').set('innerHTML','grab');Y.one('#tips').set('innerHTML','Type any hashtag, e.g. \'#TweetToMyDragontapeParty\'. We will grab previously tweeted YouTube videos <br/>from this channel and check back every 15 seconds for new ones');
			
		}else {
			Y.one('#searchbutton').set('innerHTML','search');
			sheet.disable();
			}
		if(Y.one('#help_bubble')) Y.one('#help_bubble').remove();
	}, '#searchselectorpanel a');
	
	Y.dragontape.ui.onSearchSubmit = function() {
		var f = Y.one('form[name=ytsearch]');
		var s = Y.one('#searchselector');
		var q = f.one('input[name=q]').get('value');
		var qa = q.split(":");
		if (s.hasClass('sc') && q.indexOf('sc:') != 0 && qa.length == 1) f.one('input[name=q]').set('value',"sc:"+q);
	}
	
	Y.dragontape.ui.toggleSearch = function(id) {
		Y.one('#searchselector').set('className','search_selector').addClass(id);
	}
	
	// callout hide
	Y.on('click',function(e){
    	if(e.target._node.parentNode.id.indexOf('callout')==-1){Y.dragontape.ui.callout.hide();}
    },'body');
	
	
	
	
	
	Y.dragontape.ui.logindialog=logindialog;
	
	Y.dragontape.ui.init=function() {};
	
	if(itunesplaylist){
		pl=itunesplaylist.split('\t');
			if(pl[0]!=''){
				Y.dragontape.ui.search.doSearch(pl[0],0,1);
			}
	}
	Y.on('search:display',function(){
		if(itunesplaylist && pl[0]){
			Y.one('#searchresults div.video').simulate('dblclick');
			Y.dragontape.ui.search.clear();
			Y.dragontape.models.unifiedsearch.clear();
			pl.shift();
			Y.dragontape.ui.search.doSearch(pl[0],0,1);
		}
	});
	
},'0.1.1',{ requires: ['event-synthetic','stylesheet',
                       'dragontape-ui-logindialog',
                       //'dragontape-ui-passwordchange',
                       'dragontape-models-user',
                       'dragontape-mouseparking',
                       'dragontape-ui-search',
                       'dragontape-ui-callout'] });

