YAHOO.util.Event.on(window, 'load', function() {
    var jelly = {
    	setupYepVideo : function(yepId, vThumbUrl) {
        	if (swfobject.hasFlashPlayerVersion("8.0.0")) {
                var fn = function() {
                    var att = { data:"http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.40", width:"512", height:"322" };
                    var par = { 
                                flashvars: "id=" + yepId + "&vid=&lang=en-us&intl=us&thumbUrl=" + vThumbUrl + "&embed=1",
                                allowFullScreen: "true",
    				            allowScriptAccess: "true",
    				            wmode: "transparent"
                              };

                    var id = "yep_container";
                    var myObject = swfobject.createSWF(att, par, id);
                };
                swfobject.addDomLoadEvent(fn);
        	}
        },
        setupFOPVideo : function(vid, autostart) {
        	/**
        	 * Used to swap video players.  Sets up the YEP player.  Standard emed below for reference.
        	 * @param {Object} id
        	 * @param {Object} vid
        	 * @param {Object} vThumbUrl
        	 */

        	if (typeof autostart === 'undefined') {
        	    autostart = 0;
        	} 

        	if (swfobject.hasFlashPlayerVersion("8.0.0")) {
            	var fn = function() {
    				var att = { data:"http://d.yimg.com/cosmos.bcst.yahoo.com/up/fop/embedflv/swf/fop.swf", width:"512", height:"322" };
    				var par = { 
    				            flashvars:"shareEnable=1&enableFullScreen=1&autoStart=" + autostart + "&id=" + vid,
    				            allowFullScreen: "true",
    				            allowScriptAccess: "always"
    				          };
    				var id = "yep_container";
    				swfobject.createSWF(att, par, id);
    			};
    			swfobject.addDomLoadEvent(fn);

        		//This player is larger than the live player so we need to remove some additional styling
        		YAHOO.util.Dom.removeClass('yep_container', 'live-player');
        	}
        },
    	setupLiveVideo : function() {
    		if (swfobject.hasFlashPlayerVersion("8.0.0")) {
                var fn = function() {
                    var att = { 
                                data:"http://us.i1.yimg.com/us.yimg.com/i/pt/i/buzzmktg/jelly/akamaiflashplayer.swf?src=rtmp://cp59337.live.edgefcs.net/live/yahoo-buzz@6351&mode=sidebyside&scaleMode=stretch&themeColor=0395d3&frameColor=333333&fontColor=cccccc&autostart=true", 
                                width:"428", 
                                height:"280"
                              };
                    var par = { 
                                allowFullScreen: true,
                                allowScriptAccess: "true",
                                wmode: "transparent"
                              };
                    var id = "yep_container";
                    var myObject = swfobject.createSWF(att, par, id);
                };
                swfobject.addDomLoadEvent(fn);
        	}
    	},
    	fetchRelatedTweets: function() {
            var a = "",
                c = YAHOO.util.Dom.getFirstChild("tweet-container") || "undefined";

            if (c !== "undefined") {
                a = c.id.split("-")[1];
            }
            var b = YAHOO.util.Connect.asyncRequest("GET", "twitter_proxy.php?since_id=" + a, this.twitterCallback);
        },
        twitterCallback : {
            success: function(a) {
                var d = [];
                try {
                    d = YAHOO.lang.JSON.parse(a.responseText);
                } catch(g) {}
                var l = "", j, h, f, b, m = YAHOO.util.Dom.getElementsByClassName("tweet-body"), k = m.length;
                if (YAHOO.lang.isObject(d.results) && !YAHOO.lang.isUndefined(d.results)) {
                    j = d.results.length;
                    for (var e = 0; e < j && e < 5; e++) {
                         var c = YAHOO.util.Dom.getLastChild("tweet-container") || 'undefined';

                         if (c !== 'undefined') {
                             YAHOO.bugsy.effects.fadeElement(c, 'out', 1, null, null, true);
                         }

                        f = new Date(d.results[e].created_at);
                        b = f.toLocaleString();
                        h = d.results[e].text;
                        h = h.replace(/((\w+):\/\/[\S]+\b)/gim, '<a class="tweet_link" target="_blank" href="$1" target="_blank">$1</a>');
                        h = h.replace(/@(\w+)/gim, '<a class="tweet_link" target="_blank" href="http://twitter.com/$1" target="_blank">@$1</a>');
                        l += '<div id="tweet-' + d.results[e].id + '" class="tweet">' +
                                '<img class="avatar" src="images/pic.png" style="background-image:url(' + d.results[e].profile_image_url +');">' +
                                '<p><img class="bump" src="images/bump.png">' + h + '</p>' +
                             '</div>';
                        twitterDiv.innerHTML = l;
                    }
                }
            }
        }
    };
    
    //Handle video player setup
	if (livePlayerEnabled === '1') {
		jelly.setupLiveVideo();
	} else {
		// See if we have a valid archive
		if (defaultVid !== '') {
			jelly.setupFOPVideo(defaultVid, 0);
		} else {
			// No archives so just load the live player as a placeholder
			jelly.setupLiveVideo();
		}
	}

	// Setup archive video click handlers
	var archives = YAHOO.util.Dom.getElementsByClassName('archive-video') || 'undefined';
	YAHOO.util.Event.on(archives, 'click', function(e) {
		YAHOO.util.Event.preventDefault(e);
		
		var eltarget = YAHOO.util.Event.getTarget(e),
		    targetParts = eltarget.id.split("_"),
		    vId = targetParts[1],
		    vThumb = eltarget.src;
		
		jelly.setupFOPVideo(vId, 1);

		// Scroll video into view
		var stepIncrement = 35,
		    stepDelay = 10,
		    loopCount = 0,
		    currentYPosition = window.pageYOffset || document.documentElement.scrollTop;
        
        while(currentYPosition>400 && loopCount<50) {
            loopCount = loopCount + 1;
            currentYPosition = currentYPosition - stepIncrement;
            window.scrollTo(0, currentYPosition);
        }
	});
	
    //Archive carousel setup
    (function () {
        var carousel;

        YAHOO.util.Event.onDOMReady(function (ev) {
            var carousel    = new YAHOO.widget.Carousel("car-container", 
                                    { 
                                        animation: { speed: 0.5 }, 
                                        isCircular: true, 
                                        numVisible: 5
                                    });

            carousel.render(); // get ready for rendering the widget
            carousel.show();   // display the widget
        });
    })();
    
    //Twitter widget setup
    var maxId,
    twitterDiv = YAHOO.util.Dom.get("tweet-container") || 'undefined';
    
    jelly.fetchRelatedTweets();
    var tSched = setInterval(function() {
        jelly.fetchRelatedTweets();
    }, 60000);
    
    //Suggestion dialog setup
    (function() {
    	// Define various event handlers for Dialog
    	var handleSubmit = function() {
    		var your_name = YAHOO.lang.trim(YAHOO.util.Dom.get("your_name").value),
    		    your_email = YAHOO.lang.trim(YAHOO.util.Dom.get("your_email").value),
        		your_location = YAHOO.lang.trim(YAHOO.util.Dom.get("your_location").value),
        		speaker_name = YAHOO.lang.trim(YAHOO.util.Dom.get("speaker_name").value),
        		speaker_email = YAHOO.lang.trim(YAHOO.util.Dom.get("speaker_email").value),
        		why = YAHOO.lang.trim(YAHOO.util.Dom.get("why").value);


            if (your_name === '') {
                alert('Please provide your name!');
                return false;
            } else if (your_email === '') {
                alert('Please provide a your email address!');
                return false;
            } else if (speaker_name === '') {
                alert('Please provide the speaker\'s name!');
                return false;
            } else if (speaker_email === '') {
                alert('Please provide the speaker\'s email address!');
                return false;
            } else if (why === '') {
                alert('Please tell us why you feel this person interesting!');
                return false;
            }

    		var postData = "your_name=" + your_name + "&your_email=" + your_email + "&your_location=" + your_location +
    		                "&speaker_name=" + speaker_name + "&speaker_email=" + speaker_email + "&why=" + why;
    		var request = YAHOO.util.Connect.asyncRequest('POST', 'suggest-ajax.php', submitSuggestionCallbacks, postData);
    	};
    	
    	var handleCancel = function() {
    	    var f = YAHOO.util.Dom.get("suggestion_form");
    	    f.reset();
    		this.cancel();
    	};
    	
    	var submitSuggestionCallbacks = {
            success : function (o) {
                // Use the JSON Utility to parse the data returned from the server
                try {
                    var sResponse = YAHOO.lang.JSON.parse(o.responseText);
                    if (sResponse === 'success') {
                        jelly.suggestionDialog.hide(); //Hide the form

            			var f = YAHOO.util.Dom.get("suggestion_form");
                	    f.reset();

            			alert('Thank you for the suggestion!'); 
                    } else {
                        alert("Failed to submit suggestion: " + o.status);
                    }
                }
                catch (x) {
                    alert("JSON Parse failed!");
                    return;
                }
    		},
    		failure : function (o) {
    			if(o.responseText !== undefined){
    				alert("Failed to submit suggestion: " + o.status);
    			}
    		}
        };

    	// Instantiate the Dialog
    	jelly.suggestionDialog = new YAHOO.widget.Dialog("suggestion_dialog", 
    							{ width : "35em",
    							  fixedcenter : true,
    							  visible : false,
    							  constraintoviewport : true,
          						  draggable : false,
                                  close : false,
          						  modal : true,
    							  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
    								      { text:"Cancel", handler:handleCancel } ]
    							});

    	// Render the Dialog
    	jelly.suggestionDialog.render();

    	YAHOO.util.Event.addListener("dosuggest", "click", function(e) {
    	    YAHOO.util.Event.preventDefault(e);
    	    jelly.suggestionDialog.show();
    	}, jelly.suggestionDialog, true);
    })();

});
