// code to execute when document loads
jQuery(document).ready(function(){
	// BEGIN initialize nav
	jQuery('ul#home')
		.supersubs({ 
			minWidth:    10,   // minimum width of sub-menus in em units 
			maxWidth:    25,   // maximum width of sub-menus in em units 
			extraWidth:  1     // extra width can ensure lines don't sometimes turn over
		})
		.superfish({
			animation	: {opacity:'show'},
			speed		: 1,
			dropShadows : true,
			delay		: 500
		});  
	// END initialize nav
	
	// BEGIN search 
	var searchbox = jQuery('input#searchtext').blur().attr('autocomplete', 'off');
	var searchbk = jQuery('#header .nav .search .searchbox');
	var resultsbox = jQuery('#searchresults');
	var resultslist = jQuery('#searchresultslist');
	var allsearchresults = jQuery('#allsearchresults');
	var selectedresult = -1;
	
	var focusflag = false;
	jQuery(searchbox).focus(function() {
		focusflag = true; 
		jQuery(searchbk).addClass('searchboxactive');
		ldm_performsearch();
	});
	jQuery(searchbox).blur(function() {
		focusflag = false; 
		jQuery(searchbk).removeClass('searchboxactive');
		selectedresult = -1;
		setTimeout(function() {jQuery(resultsbox).hide();}, 200); // delay before closing search results, this is needed to allow the links to be followed		
	});		
 
	jQuery(document).bind('keyup', 'alt+s', function() { jQuery(searchbox).focus();}); // setup shortcut alt+s for search
	
	jQuery(searchbox).keyup(function(e) {
		// keyup b/c we want the last typed character included
		var code = (e.keyCode ? e.keyCode : e.which);
		if (code != 38 && code != 40 && code != 27 && code != 13) {
			// keyup is not up arrow, down arrow, esc, nor enter
			ldm_performsearch();
		}				
	}); //jQuery(searchbox).keyup
 
	jQuery(searchbox).keypress(function(e) {
		// keypress does not capture arrow keys (outside of firefox)
		var code = (e.keyCode ? e.keyCode : e.which);		
		if (code == 13 && selectedresult!=-1) {
			// enter pressed while a selection is selected go to the page
            var lilist = jQuery('#searchresultslist li');       // create list of search results AND
            lilist.push(jQuery('#allsearchresults').parent());  // 'All Search Results' parent 20090831 SRF
			window.location = jQuery(lilist[selectedresult]).find('a').attr('href');
			e.preventDefault();			
		}
	}); // jQuery(searchbox).keypress
	jQuery(searchbox).keydown(function(e) {
		// keydown does NOT capture ENTER (keycode 13)
		var code = (e.keyCode ? e.keyCode : e.which);		
		if (code == 40) {
			// arrow down
			if (selectedresult < jQuery('#searchresultslist li').length) {  // allow selected result to get to length (rather than 1 less)
                                                                            // this allows selection of "All Search Results" 20090831 SRF
				ldm_exploresearchresults(1);
			}
			e.preventDefault();
		}
		else if (code == 38) {
			// arrow up
			if (selectedresult>0) {
				ldm_exploresearchresults(-1);		
			}
			//alert("arrow up");			
			e.preventDefault();
		}
		else if (code == 27) {
			// esc
			jQuery(this).blur();
			focusflag = false; 
			jQuery(searchbk).removeClass('searchboxactive');						
			selectedresult = -1;
		} 
	});// jQuery(searchbox).down(function 
	
	jQuery('#searchxbutton').click(function(e) {
		// close search area (clicking this link fires the blur event bound to the searchbox)
		e.preventDefault();
	});
		
	function ldm_exploresearchresults(offset) {
		var lilist = jQuery('#searchresultslist li');
        lilist.push(jQuery('#allsearchresults').parent());  // add 'All Search Results' link parent to the list 20090831 SRF
		jQuery(lilist[selectedresult]).find('a').removeClass('searchhover');
		selectedresult += offset;
		jQuery(lilist[selectedresult]).find('a').addClass('searchhover');		
	} //	function ldm_exploresearchresults(offset)
 
	function ldm_performsearch() {
		if (focusflag) {
			var query = jQuery(searchbox).val();
			if (query.length ==0) {
				jQuery(resultsbox).hide();
			}
			else {
				jQuery(resultsbox).show();
				jQuery(allsearchresults).attr('href', "http://www.developerforce.com/search/search.php?q="+query);
				sf_performsearch(query, function(data){
					jQuery(resultslist).html(''); // empty result list
					// determine if there any results (top hit or results array)
					if ( (typeof(data.results) == 'undefined' || data.results.length == 0) && (typeof(data.top) == 'undefined') ) { 
						jQuery(resultslist).html('<li class="msg">There are no quick links matching your search.<br /><br />Please search all results.</li>');
						selectedresult = -1;
					} else {
						// there is at lest one search result
						
						// check for and deal with top hit					
						if (typeof(data.top) != 'undefined') {
							var item = data.top;
							var li = jQuery('<li></li>');
							var a = jQuery('<a href=' + item.URL + '></a>').addClass('searchhover');
							if (typeof item.icon == 'undefined' || item.icon == '') {
								// no icon							
							}
							else {
								// icon
								jQuery(li).addClass('wicon');
								jQuery(a).append("<span class='preview' style='background-image:url(" + item.icon + ");'><!-- icon --></span>");
								
							}
							jQuery(a).append(jQuery("<span class='title'>" + item.Title+ "</span>"));
							jQuery(a).append(jQuery("<span class='desc'>" + item.Description+ "</span>"));
							jQuery(li).append(jQuery(a));
							jQuery(resultslist).append(jQuery(li));
							selectedresult = 0;
						}
						else {
							selectedresult = -1;					
						}
						// end top hit			
	
						// check for and deal with other results
						if (typeof(data.results) != 'undefined' && data.results.length > 0) {
							jQuery.each(data.results, function(i, item){
								if(item !="" && i<4){
									var li = jQuery('<li></li>');							
									var a = jQuery('<a href=' + item.URL + '></a>');
									if (typeof item.icon == 'undefined' || item.icon == '') {
										// no icon							
									}
									else {
										// icon
										jQuery(li).addClass('wicon');
										jQuery(a).append("<span class='preview' style='background-image:url(" + item.icon + ");'><!-- icon --></span>");
										
									}							
									jQuery(a).append(jQuery("<span class='title'>" + item.Title+ "</span>"));
									jQuery(a).append(jQuery("<span class='desc'>" + item.Description+ "</span>"));
									jQuery(li).append(jQuery(a));
									jQuery(resultslist).append(jQuery(li));
								}
							}); // jQuery.each						
						} // end results array
					} // else / if (are they any results - top hit or results array)
					// highlight all occurrences of query string
					jQuery(resultslist).highlight(query);
				});
 
			} // else / if (query.length == 0)
		} // if (focusflag)			
	} // function ldm_performsearch()
 
		function sf_performsearch(query, fn) {
			var query = query.replace(/\s/g,'_').replace(/\./g,'_');
			window.shortcut_queries = window.shortcut_queries || {};
			if (typeof(window.shortcut_queries['q_'+query])=='object'){
				fn(window.shortcut_queries['q_'+query]);
			}else{
				// if current domain is different than search location
			    if (document.domain !== 'developer.force.com') {
					// different domain code
					window.shortcut_queries['q_' + query] = function(data){
						window.shortcut_queries['q_' + query] = data;
						fn(data)
					}
					jQuery('body').append('<script src="http://developer.force.com/Search_Shortcuts_JSON?query=' + query + '&callback=' + encodeURIComponent('shortcut_queries.q_' + query) + '"></script>');
				} else {
					// same domain code		
				    jQuery.ajax({
						url: 'http://developer.force.com/Search_Shortcuts_JSON?query=' + query + '&callback=', // version for live site
						//url: 'Search_Shortcuts_JSON.php', // testing version
						dataType: 'text',
						success: function(data){
							var lastpos = data.length-1;
							data = eval("("+(data.charAt(lastpos)==';' ? data.substring(0, lastpos) : data)+")");
							fn(data);
						}
					}); //jQuery.getJSON({
				} // if (different domain)
			} // if (typeof(window.shortcut_queries['q_'+query])=='object')
		} // function sf_performsearch
	
		// Search Results page 
		
			jQuery('#searchtextnotheader').focus(function() {
				jQuery(this).parent().addClass('searchboxactive');
			});
			jQuery('#searchtextnotheader').blur(function() {
				jQuery(this).parent().removeClass('searchboxactive');
			});		
 
		// END Search Results page 
	
	// END search
	
	// BEGIN ie6 rollover for submit button (all other browsers are css driven) using sprite
	if(jQuery.browser.msie && jQuery.browser.version.substr(0,2)=="6.") {		
		// if ie6
		jQuery('#commentsubmitbutton').hover(
			function() {
				jQuery(this).css('background-position','0 -25px');		
			},
			function() {
				jQuery(this).css('background-position','0 0');				
			}
		);
 
		jQuery('#inputbuttonrollover').hover(
			function() {
				jQuery(this).addClass('ie6hover');		
			},
			function() {
				jQuery(this).removeClass('ie6hover');		
			}
		);
		jQuery('#inputbuttonrollover2').hover(
			function() {
				jQuery(this).addClass('ie6hover');		
			},
			function() {
				jQuery(this).removeClass('ie6hover');		
			}
		);
 
	}	
	// END ie6 rollover for submit button
	
	// BEGIN Hide/Reveal Menu on Consulting Pages
	jQuery('.trigger', '#hiderevealmenu').toggle(
		function(e) {
			e.preventDefault();
			if (jQuery.browser.msie) {
				// straight show/hide for ie
				jQuery(this).blur().parent().find('ul').show();
			} else {
				// slide effect for other browsers
				jQuery(this).blur().parent().find('ul').slideDown();
			}
		},
		function(e) {
			e.preventDefault();
			if (jQuery.browser.msie) {
				// straight show/hide for ie
				jQuery(this).blur().parent().find('ul').hide();
			} else {
				// slide effect for other browsers
			jQuery(this).blur().parent().find('ul').slideUp();			
			}
		}
	);//
	jQuery('.trigger', '#hiderevealmenu2').toggle(
		function(e) {
			e.preventDefault();
			if (jQuery.browser.msie) {
				// straight show/hide for ie
				jQuery(this).blur().parent().find('ul').show();
			} else {
				// slide effect for other browsers
				jQuery(this).blur().parent().find('ul').slideDown();
			}
		},
		function(e) {
			e.preventDefault();
			if (jQuery.browser.msie) {
				// straight show/hide for ie
				jQuery(this).blur().parent().find('ul').hide();
			} else {
				// slide effect for other browsers
			jQuery(this).blur().parent().find('ul').slideUp();			
			}
		}
	);//	
	// END Hide/Reveal Menu on Consulting Pages
	
	// Reg Form (member shortcut)
	var ldm_regform_height = jQuery('#regformtab1').height();
	jQuery('#regformmembershortcut, #regformmembershortcutlink').click(function(e) {
		e.preventDefault();
		/* 
			ie6 - b/c of png fixed background, input tags require position:relative
			this cause a problem with the hidden tag.
			Extra code added to hide these input tags
			to undo this "extra-hide" code we will add the class "ie6visible"			
		*/
		if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
			jQuery("#regformmember").addClass('ie6visible');
		}
		
		
		
		/*if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
			jQuery('#regformtab1').parent().parent().addClass('ie6toggle');
			
		} else {*/
			
			//***jQuery("html,body").animate({scrollTop: 100}, 'fast', 'linear', function(){
				jQuery("#regformtab1mask").animate({height: ldm_regform_height+'px'}, 'slow');
				jQuery("#regformtab1").animate({height: '0px'}, 'slow');
				jQuery(".doublewide > .middle, .shortcutcol, .formcol, #regformtab1mask").animate({height: '155px'}, 'slow');
				jQuery("#regformtab2").css("display","block");
				if (!jQuery.browser.msie) {
					jQuery(".sidecolmsg").animate({
						margin: '40px 0 0 10px'
					}, 'slow');//109px 0 0 10px
				}
				jQuery("#regformtab2mask").animate({height: '0px'}, 'slow');
				
			//***});
			
			/*jQuery('#regformtab1mask').slideDown('slow',function(){
				jQuery('#regformtab1').slideUp('slow', function(){
					jQuery('#regformtab2').slideDown('slow',function(){
						jQuery('#regformtab2mask').slideUp('slow');
					});		
					
				});
			});*/
			
		//}
		jQuery('#sidecolmsg1').hide();
		jQuery('#sidecolmsg2').show();
	});
	if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
		jQuery(".doublewide > .middle, .shortcutcol, .formcol, #regformtab1mask").animate({height: ldm_regform_height+'px'}, 'slow');
			jQuery("#regformtab1").animate({height: ldm_regform_height+'px'}, 'slow');
			jQuery("#regformtab1mask").animate({height: '0px'}, 'slow');
		}
	jQuery('#notmembershortcut').click(function(e){
		e.preventDefault();
 
		/* 
			ie6 - b/c of png fixed background, input tags require position:relative
			this cause a problem with the hidden tag.
			Extra code added to hide these input tags
			to undo this "extra-hide" code we will add the class "ie6visible"			
		*/
		if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
			jQuery("#regformmember").removeClass('ie6visible');
		}
 
		/*if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
			jQuery('#regformtab1').parent().parent().removeClass('ie6toggle');
		} else {*/
			
			
			
			jQuery("#regformtab2mask").animate({height: '0px'}, 'fast');
			jQuery(".doublewide > .middle, .shortcutcol, .formcol").animate({height: ldm_regform_height+'px'}, 'fast');
			jQuery("#regformtab1").animate({height: ldm_regform_height+'px'}, 'slow');
			jQuery("#regformtab1mask").animate({height: '0px'}, 'fast');
			
			if (!jQuery.browser.msie) {
				jQuery(".sidecolmsg").animate({
					margin: '109px 0 0 10px'
				}, 'slow');//109px 0 0 10px
			}
			/*jQuery('#regformtab2').slideUp('slow',function(){
				jQuery('#regformtab1').slideDown('slow', function(){
					jQuery('#regformtab1mask').slideUp('slow');		
					
				});
			});*/			
		//}
		jQuery('#sidecolmsg2').hide();
		jQuery('#sidecolmsg1').show();		
	});
	
	// reg form username popup
	jQuery('#usernametooltiptrigger').focus(function() {jQuery(this).nextAll('.tooltipcontainer').eq(0).find('.tooltip').addClass('tooltipvisible');});
	jQuery('#usernametooltiptrigger').blur(function() {jQuery(this).nextAll('.tooltipcontainer').eq(0).find('.tooltip').removeClass('tooltipvisible');});
 
    /* BEGIN Accordion Hide/Reveal */
	/*
    jQuery('#accordion>ul')
        .addClass('accordionjs')
        .find('.acctrigger').toggle(
            function(e) {
                e.preventDefault();
                jQuery(this)
                    .addClass('activeacctrigger')
                    .blur();
                if(jQuery.browser.msie && (jQuery.browser.version.substr(0,2)=="6." || jQuery.browser.version.substr(0,2)=="7.")) {
                    // ie6 and ie7
                    jQuery(this).parent().find('>.acchidereveal').show();
                } else {
                    // all other browsers
                    jQuery(this).parent().find('>.acchidereveal').slideDown();
                } // if
            },
            function(e) {
                e.preventDefault();
                jQuery(this)
                    .removeClass('activeacctrigger')
                    .blur();
                if(jQuery.browser.msie && (jQuery.browser.version.substr(0,2)=="6." || jQuery.browser.version.substr(0,2)=="7.")) {
                    // ie6 and ie7
                    jQuery(this).parent().find('>.acchidereveal').hide();
                } else {
                    // all other browsers
                    jQuery(this).parent().find('>.acchidereveal').slideUp();
                } // if
            }
        ).end() // end find ('acctrigger')
        .find('.acctrigger:first').trigger('click'); // jQuery('#accordion>ul)
    */
	/* END Accordion Hide/Reveal */

    /* BEGIN Initiliaze Lightbox */
    jQuery('#lbimg1, #lbimg2, #lbimg3').fancybox({
        'overlayShow'	:true, 
        'overlayOpacity':0.8, 
        'zoomSpeedIn'	:500, 
        'zoomSpeedOut'	:500,
        'padding'		:0,
        'hideOnContentClick': false,
        'centerOnScroll' : false
    }); // .fancybox
    jQuery('#videotrigger1').fancybox({
        'overlayShow'	:true, 
		'frameWidth'	:565,
		'frameHeight'	:345,
        'overlayOpacity':0.8, 
        'zoomSpeedIn'	:500, 
        'zoomSpeedOut'	:500,
        'padding'		:0,
        'hideOnContentClick': false,
        'centerOnScroll' : false,
        'frameWidth'         :858,
        'frameHeight'        :505
    }); // .fancybox
    jQuery('#videotrigger2').fancybox({
        'overlayShow'	:true, 
		'frameWidth'	:565,
		'frameHeight'	:345,
        'overlayOpacity':0.8, 
        'zoomSpeedIn'	:500, 
        'zoomSpeedOut'	:500,
        'padding'		:0,
        'hideOnContentClick': false,
        'centerOnScroll' : false,
        'frameWidth'         :732,
        'frameHeight'        :548
    }); // .fancybox
    /* END Initiliaze Lightbox */
    
    /* BEGIN Mini Slideshow */
    /*
    if (jQuery('#minislideshow').length>0) {
        jQuery('#minislideshow a').fancybox({
            'overlayShow'	:true, 
            'overlayOpacity':0.8, 
            'zoomSpeedIn'	:500, 
            'zoomSpeedOut'	:500,
            'padding'		:0,
            'hideOnContentClick': false,
            'centerOnScroll' : false
        }); // .fancybox

        // #minislideshow exists
        var slideshow_links = jQuery('#minislideshow li');
        var slideshow_pos = slideshow_links.length-1;
        setInterval(function() {
            jQuery(slideshow_links[slideshow_pos]).fadeOut(); // fadeout current
            var fadein_pos = (slideshow_pos == 0 ? slideshow_links.length-1 : slideshow_pos-1);
            jQuery(slideshow_links[fadein_pos]).fadeIn();
            slideshow_pos = fadein_pos;
        }, 5000);
    } // if (#minislideshow exists)
    */
    /* END Mini Slideshow */

    /* BEGIN Twitter Widget */
       
        if (jQuery('#twitterwidget').length>0) {
            // #twitterwidget exists
      
            function ldm_addtweet(ultarget, tweet) {
                var newli = jQuery("<li></li>").css({
                    height:'1px',
                    opacity:'0'
                });
                jQuery(ultarget).prepend(newli);
                jQuery(newli).html(
                    jQuery("<img alt='' src='"+
                        tweet['image']+
                        "' alt='' width='39' height='39' /><div class='desc'><h4>"+
                        tweet['name']+
                        "</h4><p>"+
                        tweet['msg']+
                        "</p></div>")
                    )
                    .animate({
                        height:'85px'
                    }, 'normal', function() {
                        //callback
                        jQuery(this).animate({opacity:'1'});
                    });
            }; //function ldm_addtweet
            

            
            // example tweet object
            //var tweet = {
            //    image: 'images/twitter/img1.jpg',
            //    name: 'joedreamforce',
            //    msg: 'dreamforce lorem ipsum dolor site amet, consecteur adipiscing elit. Donec accumsan portitor pulvinar.'
            //}; 

            // BEGIN CREATE fake tweets array
                var new_tweets = [
                    {
                        image: '/favicon.ico',
                        name: 'launchdm',
                        msg: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec accumsan porttitor.  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec accumsan porttitor.' 
                    }
                ];
            // END CREATE fake tweets array
        
            setInterval(function() {
                // after delay 
                // add to twitterwidget list
                for (i=0; i<new_tweets.length; i++) {
                    ldm_addtweet('#twitterwidgetul', new_tweets[i]);
                }
                
                // remove extra tweets that have scrolled offscreen
                jQuery('#twitterwidgetul li:gt(3)').remove();

            }, 7000); // setInterval - add new tweets after 7 secs
        } // if (#twitterwidget exists)

    /* END Twitter Widget */

    /* BEGIN Force Zone Session Tooltip */
    if (jQuery('body>div.forcezonepagesession').length>0) {
       jQuery('a.tooltiptrigger').ldmtooltip({
            delay:100,
            offsetleft:105,
            offsettop:8,
            showcallback : function(tooltip) {
                // showcallback uneeded in this situation
            },
            hidecallback : function(tooltip) {
                // hidecallback unneeded in this situation
            }
}); // jQuery .ldmtooltip({

    } // if (forcezonepagesession)
    

    /* END Force Zone Session Tooltip */

    /* BEGIN Force Zone Session Nav */
    var fz_body = jQuery('#pagewrap');
    if (jQuery(fz_body).hasClass('forcezonepage')) {
        if (jQuery(fz_body).hasClass('forcezonepagesession')) {
            // force zone session page
            jQuery('#sessionnav').superfish({
                autoArrows:false, 
                dropShadows:false,
                pathClass: 'current'
            });
        } else {
            // force zone home page
            jQuery('#sessionnav > li .choosetrack').toggle(
                function(e) {
                    jQuery('#secondarynav').show();
                    jQuery(this).blur();
                    var that = this;
                    jQuery('body').click(function() {
                        jQuery(that).trigger('click');
                    });
                    e.preventDefault();
                },
                function(e) {
                    jQuery('#secondarynav').hide();
                    jQuery(this).blur();
                    jQuery('body').unbind('click');
                    e.preventDefault();
                }
            );
            jQuery('#sessionnav #secondarynav').superfish({
                autoArrows:false, 
                dropShadows:false,
                pathClass: 'current',
                onShow: function() {
                },
                onHide: function() {
                }
            });
 
        } // if (session forcezone page) / else forcezone home
    } // if (one of the forcezone pages) 

    /* END Force Zone Session Nav */
 
});  // jQuery(document).ready(function(){

