(function($) {
/*
  jQuery.unit_sold = function() {
  	for (var x = 0; x < 5; x++) {
			$("a.sold_en a.sold_fr").html('<img class="" src="/img/main/sold_en.gif " border="0" />');
		}
		
		return this;
	};
*/

 /* ========================= */
/*  Navigation Menu Control  */
	function menu() {
		var defaults = {
			vertical:false,
			menuItemSelector: 'li',
			menuGroupSelector: 'ul',
			rootClass:'hmenu',
			menuItemClass:'hmenu-item',
			menuGroupClass:'hmenu-group',
			verticalClass:'hmenu-vertical',
			holizontalClass:'hmenu-holizontal',
			hasVerticalClass:'hmenu-has-vertical',
			hasHolizontalClass:'hmenu-has-holizontal',
			hoverClass:'hmenu-hover',
			groupOffsetHorizontal: 0,
			groupOffsetVertical: 0,
			showDuration: 500,
			hideDuration: 250
		}
		
		var option = (typeof(arguments[0])!='string') ? $.extend(defaults,arguments[0]) : $.extend(defaults,{});
		var $menu = $(this).addClass(option.rootClass+' '+option.menuGroupClass).addClass((option.vertical) ? option.verticalClass : option.holizontalClass);
		var $menuItems = $menu.find(option.menuItemSelector).addClass(option.menuItemClass);
		var $menuGroups = $menu.find(option.menuGroupSelector).addClass(option.menuGroupClass);
		
		$menuItems.hoverIntent({
      timeout: 500,
      over: function(e) { 
      	$(this).addClass(option.hoverClass); 
      }, 
      out: function(e) { 
      	$(this).removeClass(option.hoverClass); 
      }
    });
		
		$menuGroups.parent().each(function(index){
			var $parentMenuItem = $(this); // menu item that has menu group
			var displayDirection = ($parentMenuItem.parent().hasClass(option.holizontalClass)) ? 'bottom' : 'right';
			$parentMenuItem.addClass((displayDirection=='bottom') ? option.hasVerticalClass : option.hasHolizontalClass);
			var $menuGroup = $parentMenuItem.find(option.menuGroupSelector+':first').addClass(option.verticalClass);
			
			$parentMenuItem.hoverIntent({
	      timeout: 500,
	      over: function(e) { 
					var offset = (displayDirection=='bottom') ? {left:'0',top:''} : {left:$(this).width() + option.groupOffsetHorizontal + 'px',top:option.groupOffsetVertical + "px"};
					$menuGroup.css({left:offset.left,top:offset.top}).fadeIn(option.showDuration);
	      }, 
	      out: function(e) { 
					$menuGroup.fadeOut(option.hideDuration);
	      }
	    });
		});
		
		$menu.find('a[href^="#"]').click(function() {
			$menuGroups.fadeOut(option.hideDuration);
			return ($(this).attr('href') != '#');
		})
		
		return this;
	}
	
	$.fn.extend({
		ptMenu:menu
	});


 /* ========================= */
/*  Mouseover when intended  */
	$.fn.hoverIntent = function(f,g) {
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};

		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		var cX, cY, pX, pY;
		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				pX = cX; pY = cY;
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};

		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};

		var handleHover = function(e) {
			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
			if ( p == this ) { return false; }

			var ev = jQuery.extend({},e);
			var ob = this;

			if (ob.hoverIntent_t) { 
				ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			}

			if (e.type == "mouseover") {
				pX = ev.pageX; pY = ev.pageY;
				$(ob).bind("mousemove",track);
				
				if (ob.hoverIntent_s != 1) { 
					ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );
				}
			} else {
				$(ob).unbind("mousemove",track);

				if (ob.hoverIntent_s == 1) { 
					ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );
				}
			}
		};

		return this.mouseover(handleHover).mouseout(handleHover);
	};
})(jQuery);


$(document).ready(function(){ 
/* 	$.unit_sold(); */

	$('#hmenu').ptMenu();

	$("a.floorPlan").fancybox({
		'titlePosition'	: 'inside',
		'transitionIn'	: 'elastic',
		'transitionOut'	: 'elastic'
	});
	
	$(".emailform").fancybox({
		'width'					: 232,
		'height'				: 535,
		'autoScale'			: true,
		'scrolling'			: 'auto',
		'autoDimensions': true,
		'transitionIn'	: 'elastic',
		'transitionOut'	: 'elastic',
		'type'					: 'iframe'
	});
		
	$("#contactform").validate();
	
/*
	$("#contactform .btnsubmit").click(function(){
		$("#contactform").submit();
	});
*/
	
/*
	$("a[title=submit]").bind('click', function(){
		// it submits the form it is contained within
		$('#contactform').submit();
	});    
*/

/*
 	$('#contactform .btnsubmit').bind('click', function() {
		$('#contactform').submit();
	});
*/
});

