 /* 

  core behavioral library for Benny's Chop House
  
                           bryan@ 
  author: Bryan Lademann | bryanlademann.com

*/


	
// fade effect for navigation submenu and background image
var NavFade = {};
NavFade.setup = function() {
  
  var links = jQuery('#global a'),
      origImg = links.css('background-image'),
      parentLink = jQuery('#global .children').parent(), 
      subMenu = jQuery('#global .children'),
      speedSlow = 300,
      speedFast = 150;
  
  
    // hide the submenu 
    subMenu.hide();
    
    /*
    //fade hover effect on top level global nav
    links.hover( 
      function(){
        hoverImg = jQuery('background-image','_img/bg-global-hover.png');
      
        jQuery(this).not(':animated').fadeIn({
          backgroundImage: hoverImg
        }, 800);   
      },
      function(){
      }
    )
    */
 
   // show submenu upon hover of parent link
    parentLink.hover( 
      function(){
        subMenu.not(':animated').fadeIn(speedSlow);
      },
      function(){
        subMenu.not(':animated').hide();    
      } 
    );
}


var SocialBump = {};
SocialBump.setup = function() {

  var socialLinks = jQuery('#nav-social a'),
      xpLink = jQuery('#nav-social li.xp a')
      socialLinksTop = '-1px',
      socialLinksup = '-3px';
      speed = 100;
          
       
    socialLinks.hover( 
      function () {
        jQuery(this).stop().animate({
          top: socialLinksup
        }, speed); 
      },
      function () {
        jQuery(this).stop().animate({
          top: socialLinksTop
        }, speed);
    });
    
    xpLink.hover( 
      function() {
        jQuery(this).stop().animate({
              top: '2px'
        }, speed); 
      },
      function () {
        jQuery(this).stop().animate({
          top: '2px'
        }, speed);
    });

}



// pulls lastest tweet and convert urls to links     
var Tweet = {};
Tweet.setup = function() {
	$.fn.getTwitter = function(options) {

		$.fn.getTwitter.defaults = {
			userName: null,
			numTweets: 5,
			loaderText: "Loading tweets...",
			slideIn: true,
			slideDuration: 750,
			showHeading: true,
			headingText: "Latest Tweets",
			showProfileLink: true,
			showTimestamp: true
		};

		var o = $.extend({}, $.fn.getTwitter.defaults, options);

		return this.each(function() {
			var c = $(this);

			// hide container element, remove alternative content, and add class
			c.hide().empty().addClass("twitted");

			// add heading to container element
			if (o.showHeading) {
				c.append("<h2>"+o.headingText+"</h2>");
			}

			// add twitter list to container element
			var twitterListHTML = "<div id=\"twitter_update_list\"><p></p></div>";
			c.append(twitterListHTML);

			var tl = $("#twitter_update_list");

			// hide twitter list
			tl.hide();

			// add preLoader to container element
			var preLoaderHTML = $("<p class=\"preLoader\">"+o.loaderText+"</p>");
			c.append(preLoaderHTML);

			// add Twitter profile link to container element
			if (o.showProfileLink) {
				var profileLinkHTML = "<p class=\"profileLink\"><a href=\"http://twitter.com/"+o.userName+"\">http://twitter.com/"+o.userName+"</a></p>";
				c.append(profileLinkHTML);
			}

			// show container element
			c.show();

			//$.getScript("http://twitter.com/javascripts/blogger.js");
			$.getScript("http://twitter.com/statuses/user_timeline/"+o.userName+".json?callback=twitterCallback2&count="+o.numTweets, function() {
				// remove preLoader from container element
				$(preLoaderHTML).remove();

				// remove timestamp and move to title of list item
				if (!o.showTimestamp) {
					tl.find("li").each(function() {
						var timestampHTML = $(this).children("a");
						var timestamp = timestampHTML.html();
						timestampHTML.remove();
						$(this).attr("title", timestamp);
					});
				}

				// show twitter list
				if (o.slideIn) {
					// a fix for the jQuery slide effect
					// Hat-tip: http://blog.pengoworks.com/index.cfm/2009/4/21/Fixing-jQuerys-slideDown-effect-ie-Jumpy-Animation
					var tlHeight = tl.data("originalHeight");

					// get the original height
					if (!tlHeight) {
						tlHeight = tl.show().height();
						tl.data("originalHeight", tlHeight);
						tl.hide().css({height: 0});
					}

					tl.show().animate({height: tlHeight}, o.slideDuration);
				}
				else {
					tl.show();
				}

				// add unique class to first list item
				tl.find("p:first").addClass("firstTweet");

				// add unique class to last list item
				tl.find("p:last").addClass("lastTweet");
			});
		});
	};
}



// Image carousel
var Carousel = {};
Carousel.setup = function() {

  /*
    var current = $('#carousel .show'); 
    var next = current.next().length ? current.next() : current.parent().children(':first');
    
    current.fadeOut(300).removeClass('show');
    next.fadeIn(800).addClass('show'); 
    
    setTimeout(Carousel.setup, 5000);
    */
    
	var container = jQuery('#carousel'); // assigns variable to the containing element
	var frame = jQuery(container).children(); // gathers all the images
	
	container.css("overflow", "hidden"); // removes scroll option for users with javascript enabled
	
	container.cycle({
		fx: 'fade', 
		speed: 2000,
		timeout: 6000,
		delay: -3000
	});   
}



// adds > after hover content on nav-reference links
var AddArrow = {};
AddArrow.setup = function() {

  var refLinks        = jQuery('#nav-reference a'),
      refLinksContent = ' >';
      
  refLinks.live('mouseover mouseout', function(e) {
    if (e.type == 'mouseover') {
      jQuery(this).append(refLinksContent);
    } else {
      refLinksContent.remove();
    }
  });

}



//  client-side form validation
var Validate = {};
Validate.setup = function() {

  var input        = jQuery('input.required')
      contactForm  = jQuery('form#contact'),
      submitButton = jQuery('button#submit'), 
      isValid      = false;
  
  
  input.next().hide();
    
  var checkEmpty = function() {
    if ( jQuery(this).val() == '' ) {
      jQuery(this).css('border-color', 'red');
      jQuery(this).prev().css('color', 'red');
      isValid = false;
      return isValid;
    } else {
      jQuery(this).css('border-color', '#70634e');
      jQuery(this).prev().css('color', '#111');
      isValid = true;
      return isValid;    
    }
  }
  
  
    submitButton.click(function(e) {
    
      if(isValid == true){
      
      } else {
        jQuery(this).prev().append('<p style="position:absolute; font-size: 11px; color: darkred; margin: 15px 0 0 110px; line-height: 1.2">Please enter your name<br /> and email address</p>');
        e.preventDefault();
      }
    })

  
  input.blur(checkEmpty) 

}


// adds map and features
var BennysMap = {};
BennysMap.setup = function() {

  var bennyslatlng = new google.maps.LatLng(41.890761,-87.626696);
  var maplatlng = new google.maps.LatLng(41.900761,-87.626696);

    
  var myOptions = {
    zoom: 14,
    center: maplatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  
  // creates map instance
  var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions); 	


  // marker info
  var image = 'http://bennyschophouse.com/wpbch/wp-content/themes/bennys-chop-house/_css/_img/icon-map.png';
  var marker = new google.maps.Marker({
    position: bennyslatlng,
    map: map,
    icon: image,
    title: 'Benny\'s Chop House'
  });
   
   
  // add marker
  marker.setMap(map);   
    
  // window info
  var content = 'content';
  var infowindow = new google.maps.InfoWindow({
    content: content
  });
  
  // creates info window
  infowindow.open(map,marker);
          
};

/*

    
          <iframe width="100%" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="
          http://maps.google.com/maps?f=q&amp;
          source=s_q&amp;
          hl=en&amp;geocode=&amp;
          q=Benny's+Chop+House,+Chicago,+IL&amp;
          sll=41.890761,-87.626696&amp;
          sspn=0.00992,0.012939&amp;
          g=444+N.+Wabash+Avenue+Chicago,+Illinois+60611&amp;
          ie=UTF8&amp;hq=Benny's+Chop+House,&amp;hnear=Chicago,+Cook,+Illinois&amp;
          ll=41.900873,-87.626685&amp;
          spn=0.039676,0.051756&amp;
          z=14&amp;
          iwloc=A&amp;
          cid=845472909311662214&amp;
          output=embed"></iframe>
    
*/





// sound manager to entertainment page

var soundPlayer = {};
soundPlayer.setup = function(){

  soundManager.url = '/_audio-files/_swf/'; // directory where SM2 .SWFs live
  // Note that SoundManager will determine and append the appropriate .SWF file to the URL,
  // eg. /path/to/sm2-flash-movies/soundmanager2.swf automatically.
  
  // Beta-ish HTML5 audio support (force-enabled for iPad), flash-free sound for Safari + Chrome. Enable if you want to try it!
  soundManager.useHTML5Audio = true;
  
  // do this to skip flash block handling for now. See the flashblock demo when you want to start getting fancy.
  soundManager.useFlashBlock = false;
  
  // disable debug mode after development/testing..
  soundManager.debugMode = true;
  
  soundManager.flashVersion = 9; // optional: shiny features (default = 8)
  
  
  soundManager.onready(function() {
  
   inlinePlayer = new InlinePlayer();
  
    // SM2 has loaded - now you can create and play sounds!
    var mySound = soundManager.createSound({
      id: 'aSound',
      url: '/_audio-files/rain.mp3'
      // onload: [ event handler function object ],
      // other options here..
    });
    mySound.play();
  
  });  
}



var ModalWindow = {};
ModalWindow.init = function(){

  var
    body = jQuery('body'),
    modal = jQuery('.modal'),
    close = jQuery('a.close', modal),
    more = jQuery('a.more', modal);

    body.append('<div class="mask"><div>')


    function fadeModalIn(){  
    jQuery('.mask').fadeIn(350);
      modal
        .delay(450)
        .fadeIn(750);      
    }

    function fadeModalOut(){
      modal.fadeOut(350);      
      jQuery('.mask')
        .delay(450)
        .fadeOut(450);
    }

  fadeModalIn(750);

    //setTimeout(fadeModalIn, 750);
    //setTimeout(fadeModalOut, 4000);


    // if image is clicked
    close.bind('click', function() {
      modal.fadeOut(350);      
      jQuery('.mask')
        .delay(450)
        .fadeOut(450);
    }); 


/*
    // if mask is clicked 
    jQuery('.mask').bind('click', function() {
      modal.fadeOut(350);      
      jQuery(this)
        .delay(450)
        .fadeOut(450);
    });     


    // if image is clicked
    modal.bind('click', function() {
      jQuery(this).fadeOut(350);      
      jQuery('.mask')
        .delay(450)
        .fadeOut(450);
    }); 
*/

}



// Loads main functions
jQuery(document).ready(function() {
								  
  //NavFade.setup();	
  SocialBump.setup();					  
  Carousel.setup(); 
  Tweet.setup();   
  //soundPlayer.setup();
	
	jQuery("#twitter").getTwitter({
				userName: "bennyschophouse",
				numTweets: 5,
				loaderText: "Loading tweets...",
				slideIn: true,
				showHeading: false,
				headingText: "Latest Tweets",
				showProfileLink: false
			});


  

	
});
