YAHOO.namespace('IEDesign');

var $E, $D, $C, $;

YAHOO.IEDesign.Search = function() {

	var moreOptions;
	
	var handleBookmark = function(e)
	{
		$E.stopEvent(e);
		
		var target = $E.getTarget(e);
		
		var sessionID = target.id;
		
		// get sessionID
		var data = 'sessionID=' + sessionID;
		
		var callback =
        {
          success: function(o)
          {
				// console.log('Success!');
				
				// get parent
				var parent = $D.getAncestorByTagName(target, 'a');
				
				$D.replaceClass(parent, 'bookmark-button', 'remove-bookmark-button');
				$E.removeListener(parent, 'click', handleBookmark);
				$E.on(parent, 'click', handleRemoveBookmark);
				
				// console.log(parent);
          },
          failure: function(o)
          {
        	  // console.log('Failure.');
          },
          argument: ['foo','bar']
        };

        // send request
        var request = $C.asyncRequest('POST', '/bookmarks', callback, data);
	}
	
	var handleRemoveBookmark = function(e)
	{
		$E.stopEvent(e);
		
		var target = $E.getTarget(e);
		
		var sessionID = target.id;
		
		// get sessionID
		var data = 'sessionID=' + sessionID;
		
		var callback =
        {
          success: function(o)
          {
				// console.log('Success!');
				
				// get parent
				var parent = $D.getAncestorByTagName(target, 'a');
				
				$D.replaceClass(parent, 'remove-bookmark-button', 'bookmark-button');
				$E.removeListener(parent, 'click', handleRemoveBookmark);
				$E.on(parent, 'click', handleBookmark);
	
				// console.log(parent);
          },
          failure: function(o)
          {
        	  // console.log('Failure.');
          },
          argument: ['foo','bar']
        };

        // send request
        var request = $C.asyncRequest('POST', '/bookmarks/delete', callback, data);
	}
	
	var expand = function(e)
	{
		$E.stopEvent(e);
    	
		$E.removeListener(moreOptions, 'click');
		$E.on(moreOptions, 'click', YAHOO.IEDesign.Search.contract);
	
    	var searchForm = $D.getElementsByClassName('main-search-wrapper')[0];
    	        	
    	// $(el).scrollHeight;
    	var attributes = 
    	{
    	   height: { to: 330 }
    	};
    	
    	var anim = new YAHOO.util.Anim(searchForm, attributes, 1, YAHOO.util.Easing.easeOut);

    	anim.animate();
    	
    	moreOptions.innerHTML = 'show less search options';
	}
	
	var handleClick = function(e)
	{
		var elClass = 'session-row';

        var target = $E.getTarget(e);
        
        if (!$D.hasClass(target, elClass)) {
            target = $D.getAncestorByClassName(target, elClass);
        }

        if (!target) {
            return;
        }

        var children = $D.getElementsByClassName('toggle-display', null, target);

        //collapse
        if ($D.hasClass(target, 'row-expanded')) {

            $D.setStyle(children, 'display', 'none');

            $D.removeClass(target, 'row-expanded');

        }else{ //expand

            $D.setStyle(children, 'display', '');

            $D.addClass(target, 'row-expanded')
        }		
	}
	
	var contract = function(e)
	{
		$E.stopEvent(e);
    	
		$E.removeListener(moreOptions, 'click');
		$E.on(moreOptions, 'click', YAHOO.IEDesign.Search.expand);
		
    	var searchForm = $D.getElementsByClassName('main-search-wrapper')[0];
    	        	
    	var attributes = 
    	{
    	   height: { to: 110 }
    	};
    	
    	var anim = new YAHOO.util.Anim(searchForm, attributes, 1, YAHOO.util.Easing.easeOut);

    	anim.animate();
    	
    	moreOptions.innerHTML = 'show more search options';
	}
	
    var init = function(){
        
    	var searchForm = $D.getElementsByClassName('main-search-wrapper')[0];
 
    	if (!$D.getElementsByClassName('search-expanded-ie')[0])
    	{
    		$D.setStyle(searchForm, 'height', '110px');
    		
    		moreOptions = $('show-more-options');
    		
    		moreOptions.innerHTML = 'show more search options';
    		
    		$E.on(moreOptions, 'click', this.expand);
    	}
    	else
    	{    		
    		moreOptions = $('show-more-options');
    		
    		moreOptions.innerHTML = 'show less search options';
    		
    		$E.on(moreOptions, 'click', this.contract);
    	}
    	
    	var els = $D.getElementsByClassName('toggle-display');
    	
    	$D.setStyle(els, 'display', 'none');
    	
    	var tbl = $D.getElementsByClassName('search-results', 'table')[0];

    	$E.on(tbl, 'click', handleClick);
    	
    	var bookmarks = $D.getElementsByClassName('bookmark-button');
    	$E.on(bookmarks, 'click', handleBookmark);
    	
    	var removeBookmarks = $D.getElementsByClassName('remove-bookmark-button');
    	$E.on(removeBookmarks, 'click', handleRemoveBookmark);
    }

    return  {
    	init: init,
    	expand: expand,
    	contract: contract    	
    };

}();

YAHOO.IEDesign.Form = function() {

	var handleClick = function(e)
	{
		var target = $E.getTarget(e);
		target.value = '';
		$E.removeListener(e.target);
	}
	
	var init = function()
	{
		var forename = $('forename');
		var lastname = $('lastname');
		var email = $('email');
		
		if ('First name' == forename.value)
		{
			$E.on(forename, 'click', handleClick);
		}
		
		if ('Last name' == lastname.value)
		{
			$E.on(lastname, 'click', handleClick);
		}
		
		if ('Email Address' == email.value)
		{
			$E.on(email, 'click', handleClick);
		}

	}
	
	return {
		init: init
	};
	
}();

function init()
{
	$E = YAHOO.util.Event;
    $D = YAHOO.util.Dom;
    $C = YAHOO.util.Connect;
    $ = $D.get;
	
	if($D.getElementsByClassName('main-search-wrapper').length > 0)
	{
		YAHOO.IEDesign.Search.init();
	}
	
	if($D.getElementsByClassName('signup_form').length > 0)
	{
		YAHOO.IEDesign.Form.init();
	}

}

var loader = new YAHOO.util.YUILoader(
{
	require: ["utilities", "animation"],

    onSuccess: function(o)
    {
        init();
    }
});

loader.insert();