//Functions for the Gethin Thomas Website
jQuery.noConflict();

(function(jQuery){

   jQuery.fn.wrapChildren = function(options) {

    var options = jQuery.extend({
                              childElem : undefined,
                              sets : 1,
                              wrapper : 'div'
                            }, options || {});
    if (options.childElem === undefined) return this;

 return this.each(function() {
  var elems = jQuery(this).children(options.childElem);
  var arr = [];

  elems.each(function(i,value) {
    arr.push(value);
    if (((i + 1) % options.sets === 0) || (i === elems.length -1))
   {
     var set = jQuery(arr);
     arr = [];
     set.wrapAll(jQuery("<" + options.wrapper + ">"));
   }
  });
    });

  }

})(jQuery);


 (function(jQuery) {
    var cache = [];
    // Arguments are image paths relative to the current page.
    jQuery.preLoadImages = function() {
        var args_len = arguments.length;
        for (var i = args_len; i--;) {
            var cacheImage = document.createElement('img');
            cacheImage.src = arguments[i];
            cache.push(cacheImage);
        }
    }
})(jQuery)

 jQuery.preLoadImages("assets/images/main-food-image.jpg", "assets/images/main-venue-image.jpg", "assets/images/main-bookings-image.jpg", "assets/images/main-notes-image.jpg", "assets/images/main-home-image.jpg");

jQuery.fn.fadeIn = function(speed, callback) { 
    return this.animate({opacity: 'show'}, speed, function() { 
        if (jQuery.browser.msie)  
            this.style.removeAttribute('filter');  
        if (jQuery.isFunction(callback)) 
            callback();  
    }); 
}; 

jQuery.fn.fadeOut = function(speed, callback) { 
    return this.animate({opacity: 'hide'}, speed, function() { 
        if (jQuery.browser.msie)  
            this.style.removeAttribute('filter');  
        if (jQuery.isFunction(callback)) 
            callback();  
    }); 
}; 

jQuery.fn.fadeTo = function(speed,to,callback) { 
    return this.animate({opacity: to}, speed, function() { 
        if (to == 1 && jQuery.browser.msie)  
            this.style.removeAttribute('filter');  
        if (jQuery.isFunction(callback)) 
            callback();  
    }); 
};


jQuery(document).ready(function() {
	
	jQuery(".items").wrapChildren({ childElem : 'a' , sets: 3});
	
    var triggers;
	
	var homepagelinks = "<p><a href='mailto:events@gtcevents.com' class='subtleLink'>events@gtcevents.com</a><br/><strong>Gethin</strong> (812) 344-0169 Executive Chef and Menu Planner<br/><strong>Candie</strong> (812) 344-6614 Director and Event Coordinator <br/><a href='http://www.facebook.com/profile.php?id=100001063332977&ref=ts#!/pages/Columbus-IN/Gethin-Thomas-Catering/121594261186256?ref=ts' target='_blank' class='subtleLink'>facebook.com/gethinthomascatering</a><br/><br/></p>";
	 jQuery('.text-content').append(homepagelinks);

	jQuery(".scrollable").scrollable({speed: 900
	});

    jQuery('.text-area').jScrollPane({
        showArrows: true
    });

	
    jQuery("#enter-link").click(function() {

        jQuery("#main-img").animate({
            left: '-200px'
        },
        1500);

        jQuery("#splash-pg-text").fadeOut(750,
        function() {

            jQuery(".text-area").fadeIn(750,
            function() {});

            jQuery("#scrollerCover").fadeOut(750,
            function() {});

        });

        jQuery("#top-nav").animate({
            opacity: 1,
            top: '53px'
        },
        1500);

		 jQuery("#footer-links").fadeIn(1500,
         function() {});

    });

	

	var showReadMoreOverlay = function(id){
		var overlayhtml = id.replace("rm-", "rm-overlay-");	
		var idtag =	"#"+overlayhtml;
		var overlayinfo = jQuery("#"+overlayhtml).data("overlay");
		var imgcount = jQuery(idtag+' a.img-thumb-link').size();
		
		if(imgcount <=3 || imgcount == null){
			jQuery(idtag+' a.browse').addClass('disabled');
		}
		
		var dummyimg = new Image();
		var firstimg = jQuery(idtag+' .lg-image img').attr('src');
		dummyimg.src = 'http://gtcevents.com/' + firstimg;
		
		var imgheight = dummyimg.height;
		
	
		
		//jQuery(idtag+' .lg-image').css('height', 'auto');
		if (overlayinfo == null) {
			jQuery("#"+overlayhtml).overlay({
				mask: {
                    color: '#FFFFFF',
                    loadSpeed: 750,
                    closeSpeed: 750,
                    opacity: 0.8,
					fixed: false
                },

                closeOnClick: true,

                load: true,
				
				onLoad: function(event, tabIndex) {
					jQuery(idtag+' a.overlay-close-btn').bind('click', function(event){
						event.preventDefault();
					});
					
					jQuery('a.img-thumb-link').bind('click', function(event, tabIndex){
						event.preventDefault();
						var id = jQuery(this).attr('id');
						var imgsrc = jQuery(this).attr('rel');
						var caption = jQuery(this).children('img').attr('alt');
						jQuery(idtag+' .lg-image').css('height', imgheight);
						jQuery(idtag+' .lg-image').addClass('loading');
						jQuery(idtag+' .lg-image img').hide();
						jQuery(idtag+' .caption-text').html("&nbsp;");					
						var img = new Image();
					        jQuery(img).load(function () {								
								jQuery(this).hide();
					            jQuery(this).addClass('current');
								jQuery(this).addClass('hiddenimg');
								var newheight = this.height;
								var html = this;
								 jQuery(idtag+' .lg-image').animate({ height: newheight	},
								{
								duration: 750,
								complete: function() {
									jQuery(idtag+' .caption-text').html(caption);
									jQuery(idtag+' .lg-image img').remove();
									jQuery(idtag+' .lg-image').removeClass('loading').append(html);
								    jQuery(idtag+' .lg-image img.current').fadeIn(750, function(){
										jQuery(idtag+' .lg-image img.current').removeClass('hiddenimg');
									});
									
								}
								});													
					           	 
							
					        }).error(function () {
					            // notify the user that the image could not be loaded
					        }).attr('src', imgsrc);	
					return false;
													
					});
					
					jQuery(idtag+' .rm-overlay-wrapper').jScrollPane({
				        showArrows: true
				    });
				}
			});
		}
		else {

            overlayinfo.load();
        }
        
		
	};
	
	jQuery.fn.clearForm = function() {
        return this.each(function() {
            var type = this.type,
            tag = this.tagName.toLowerCase();
            if (tag == 'form'){
            return jQuery(':input', this).clearForm();
			}
            if (type == 'text' || type == 'password' || tag == 'textarea'){
            this.value = defaultValues[this.id];
			}	
			if(type == 'radio'){
				this.checked = false;
				if(this.value == 'Email'){
					this.checked = true;
				}
			}
						
        });

    };

    var showReservationForm = function() {
		removeErrorMessages();
		jQuery('#errorMsg').html('&nbsp;');
		jQuery('#errorMsg').hide();
        var overlayinfo = jQuery(".modal").data("overlay");
        if (overlayinfo == null) {
            triggers = jQuery(".modal").overlay({

                
                mask: {
                    color: '#FFFFFF',
                    loadSpeed: 750,
                    closeSpeed: 750,
                    opacity: 0.8
                },

                closeOnClick: true,

                load: true,

				fixed : false,

				onClose: function(event, tabIndex) {
					jQuery('#form-content').fadeIn();
					jQuery('#form-thank-you').fadeOut();
					jQuery("#reservation-form").clearForm();					
				}
            });
        }

        else {

            overlayinfo.load();
        }

    };

    var loadContent = function(text, selection) {

        jQuery("#scrollerCover").fadeIn(750,
        function() {});


        if (jQuery("#main-img").is(":visible")) {
            jQuery("#main-img").fadeOut(750,
            function() {});
        }
        else {
            //do nothing
            }

        jQuery("#main-inner-image img").fadeOut(750,
        function() {

            if (selection == 'home') {
                jQuery('#main-inner-image').addClass('home-image');
            }
            else {
                jQuery('#main-inner-image').removeClass('home-image');
            }
        });

        jQuery('#active-icon img').fadeOut(750,
        function() {
            jQuery("#active-icon-image").removeClass("home food venue bookings notes");
            jQuery("#active-icon-image").addClass(selection);
            jQuery('#active-icon img').fadeIn(750,
            function() {});
        });

        jQuery('.text-area').fadeOut(750,
        function() {
            jQuery('#main-inner-image img').attr('src', "assets/images/main-" + selection + "-image.jpg");
            jQuery('.inner-content-text').removeClass("home food venue bookings notes");
            jQuery('.inner-content-text').addClass(selection);
            jQuery('.text-content').empty().append(jQuery(text));
            jQuery('.text-area').fadeIn(750,
            function() {

                if (selection == 'venue' || selection == 'bookings') {
                    jQuery('.reservation-link').bind('click',
                    function(event) {
                        event.preventDefault();
                        showReservationForm();
                    });

                }
				else if (selection == 'notes'){
					jQuery("a.read-more").bind("click", function(event){
						event.preventDefault();
						var id = jQuery(this).attr("id");
						showReadMoreOverlay(id);		
					});
				}
                else {
                    //do nothing
                    }

            });
            jQuery('#main-inner-image img').fadeIn(750,
            function() {});
            jQuery("#scrollerCover").fadeOut(750,
            function() {});
            jQuery('.text-area').jScrollPane({
                showArrows: true
            });

        });

    };

	
    jQuery('.home-link').bind('click',
    function() {
	if( !jQuery('#splash-pg-text').is(':visible') ) {
		    var hometext = jQuery('.hiddentext.hometext').html();
	        var text = "<h3>Gethin Thomas Catering</h3>" + hometext + homepagelinks;
	        loadContent(text, "home");
		}
		else{
			//do nothing
		}
	
		
    });

    jQuery('.food-link').bind('click',
    function() {
	if( !jQuery('#splash-pg-text').is(':visible') ) {
		var foodtext = jQuery('.hiddentext.foodtext').html();
        var text = "<h3>Food</h3>" + foodtext + "test";
        loadContent(text, "food");
}
	else{
		
	}
    });

    jQuery('.venue-link').bind('click',
    function() {
	if( !jQuery('#splash-pg-text').is(':visible') ) {
		var venuetext = jQuery('.hiddentext.venuetext').html();
        var text = "<h3>Venues</h3>" + venuetext +"<p><a class='loft-link' href='http://factory12eventloft.com/' target='_blank'><strong>Visit the Factory 12 Event Loft website &raquo;</strong></a></p><p><strong><a href='#' class='reservation-link'>Make reservation &raquo;</a></strong></p>";
        loadContent(text, "venue");
}
else{
	
}
    });

    jQuery('.bookings-link').bind('click',
    function() {
	if( !jQuery('#splash-pg-text').is(':visible') ) {
		var bookingstext = jQuery('.hiddentext.bookingstext').html();
        var text = "<h3>Bookings</h3>" + bookingstext + "<p><strong><a href='#' class='reservation-link'>Make reservation &raquo;</a></strong><br/><strong>Let us help you:</strong> <a href='mailto:events@gtcevents.com' class='subtleLink'>events@gtcevents.com</a><br/> <em>or</em> <br/><strong>Gethin</strong> (812) 344-0169 Executive Chef and Menu Planner<br/><strong>Candie</strong> (812) 344-6614 Director and Event Coordinator <br/><strong>Get to know us:</strong> <a href='http://www.facebook.com/profile.php?id=100001063332977&ref=ts#!/pages/Columbus-IN/Gethin-Thomas-Catering/121594261186256?ref=ts' target='_blank' class='subtleLink'>facebook.com/gethinthomascatering</a><br/><br/></p>";
        loadContent(text, "bookings");
}
else{
	
}
    });

    jQuery('.chef-link').bind('click',
    function() {
	if( !jQuery('#splash-pg-text').is(':visible') ) {
		var notesTable = jQuery('#chefnoteslisthidden').html();
        var text = "<h3>Chef's Notes</h3>" + notesTable ;
        loadContent(text, "notes");
}
else{
	
}
    });

    //Datepicker and Reservation form functions

    var defaultValues = {
        'form-name': 'First Last',
        'form-email': 'email@email.com',
        'form-phone': '(555) 555-555',
        'form-date': 'MM/DD/YYYY',
        'details-textarea': 'Please enter your event details.'
    };

    var removeErrorMessages = function() {
        jQuery("#reservation-form-table input, #reservation-form-table textarea").removeClass();
        if (jQuery('#errorMsg').html() != '&nbsp;') {
            jQuery("#errorMsg").fadeOut("fast");
        }
    };

   
    // DATEPICKER
    jQuery(".datepicker").datepicker({
        showOn: 'focus',
        minDate: 0,
        onSelect: function(dateText, inst) {
            //jQuery("#ui-datepicker-div").css('display', 'none');
            }
    });

    // input goes blank on focus
    jQuery("#reservation-form-table input[type=text]").bind('focus',
    function() {
        jQuery(this).val("");
    });

    jQuery("#reservation-form-table textarea").bind('focus',
    function() {
        jQuery(this).val("");
    });

    jQuery("#submit-btn").bind('click',
    function(event) {
	event.preventDefault();
        removeErrorMessages();
        var stopLoop = false;
		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

        jQuery.each(defaultValues,
	    function(id, defvalue) {
            var currentValue = jQuery("#reservation-form-table #" + id + "").val();
            var currentField = jQuery("label." + id + "").html();
            if (currentValue == defvalue || currentValue == "") {
                jQuery('#errorMsg').html("The <em>" + currentField + "</em> field is required!");
                jQuery('#errorMsg').fadeIn("fast");
                jQuery("#reservation-form-table #" + id + "").addClass('inputError');
                jQuery("#reservation-form-table #" + id + "").focus();
                stopLoop = true;
				return false;
            }
        });
				
		var email = jQuery("#reservation-form-table #form-email").val();
		
		if (stopLoop === false) { 
						
	        if ((!pattern.test(email))) {				
	            jQuery('#errorMsg').html("The email you provided is not a valid address.");
	            jQuery('#errorMsg').fadeIn("fast");
	            jQuery("#reservation-form-table #form-email").addClass('inputError');
	            jQuery("#reservation-form-table #form-email").focus();
				stopLoop = true;
	        }
		}


        if (stopLoop === false) {
	 		var submittedDataArray = new Array();
			
			jQuery.each(defaultValues,
		    function(id, defvalue) {
	        var submittedVal = jQuery("#reservation-form-table #" + id + "").val();
			submittedDataArray.push(submittedVal);	
			});
			
			var contactpref = jQuery("#reservation-form-table input[name=contactpref]").val();			
			
			var dataString = 'name='+ submittedDataArray[0] + '&email=' + submittedDataArray[1] + '&phone=' + submittedDataArray[2] + '&message=' + submittedDataArray[4] + '&date=' + submittedDataArray[3] + '&contactpref=' + contactpref;
			
			jQuery.ajax({
				type: "POST",
				url: "assets/formValidate/process-new.php",
				data: dataString,
				success: function() {					
				}
			});
						
			
			jQuery('#form-content').fadeOut(750, function(){				
				jQuery("#reservation-form").clearForm();
						
				jQuery("#form-thank-you").fadeIn(750, function(){
				
				});	
			});
            
        }
       
    });


});
