$(document).ready(function() {

    $('#dHeader').AddWidthWrapper();
    $('#dBody').AddWidthWrapper({ autoHeight: true });
    $('#dFooter').AddWidthWrapper();
    $('#dMapBg').show();

    SetupSearchControl('#pnlPalop', true);
    SetupPLcontainers();
    SetupMenu();

    $('.btnSend').StyleButton();
    $('.btnSearch').StyleButton();

    $('.listItem').SetupClickLink();
    $('.slideshowItem').SetupClickLink({ alternateCssClass: 'slideshowItem_alt' });

    GroupSearchControlItems();

    Menu_CurrentTab();

});

function Menu_CurrentTab() {
    
    var pathname = window.location.pathname;
    var pagename = pathname.substr(pathname.lastIndexOf('/') + 1);

    if (pagename == '') {
        pagename = 'index.aspx';
    }

    var paginaImoveis = false; if (pagename == 'imovel.aspx') { paginaImoveis = true; }
    var paginaNoticias = false; if (pagename == 'noticia.aspx') { paginaNoticias = true; }

    /* Top Menu */
    $('#Menu > li > a').each(function() {
        var page = $(this).attr('href').substr(0,$(this).attr('href').lastIndexOf('aspx')+4 );
        if (page == pagename)
            $(this).addClass('current');
        if ((page == 'lista_imoveis.aspx') && (paginaImoveis == true))
            $(this).addClass('current');
        if ((page == 'lista_noticias.aspx') && (paginaNoticias == true))
            $(this).addClass('current');
    });

    /* Bottom Menu */
    $('#SubMenu > li > a').each(function() {
        var page = $(this).attr('href').substr(0, $(this).attr('href').lastIndexOf('aspx') + 4);
        if (page == pagename) {
            $(this).addClass('current');
        }
    });
}

function GroupSearchControlItems() {

    /* Search Parameters Grouping Angola */
    $('#pnlAngola .SSearchGroup, #pnlAngola .SSearchTypology').GroupSearchParameters({
        wrapperID: 'propertyTypeGroup_AO',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Tipo de Imóvel'
    });
    $('#pnlAngola .SSearchCountry, #pnlAngola .SSearchDistrict, #pnlAngola .SSearchCounty, #pnlAngola .SSearchParish, #pnlAngola .SSearchZone').GroupSearchParameters({
    wrapperID: 'propertyLocationGroup_AO',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Localização'
    });
    $('#pnlAngola .SSearchPurpose, #pnlAngola .SSearchPrice').GroupSearchParameters({
    wrapperID: 'propertyBusinessGroup_AO',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Negócio'
    });

    /* Search Parameters Grouping Brasil */
    $('#pnlBrasil .SSearchGroup, #pnlBrasil .SSearchTypology').GroupSearchParameters({
    wrapperID: 'propertyTypeGroup_BR',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Tipo de Imóvel'
    });
    $('#pnlBrasil .SSearchCountry, #pnlBrasil .SSearchDistrict, #pnlBrasil .SSearchCounty, #pnlBrasil .SSearchParish, #pnlBrasil .SSearchZone').GroupSearchParameters({
    wrapperID: 'propertyLocationGroup_BR',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Localização'
    });
    $('#pnlBrasil .SSearchPurpose, #pnlBrasil .SSearchPrice').GroupSearchParameters({
    wrapperID: 'propertyBusinessGroup_BR',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Negócio'
    });

    /* Search Parameters Grouping Portugal */
    $('#pnlPortugal .SSearchGroup, #pnlPortugal .SSearchTypology').GroupSearchParameters({
        wrapperID: 'propertyTypeGroup_PT',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Tipo de Imóvel'
    });
    $('#pnlPortugal .SSearchCountry, #pnlPortugal .SSearchDistrict, #pnlPortugal .SSearchCounty, #pnlPortugal .SSearchParish, #pnlPortugal .SSearchZone').GroupSearchParameters({
    wrapperID: 'propertyLocationGroup_PT',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Localização'
    });
    $('#pnlPortugal .SSearchPurpose, #pnlPortugal .SSearchPrice').GroupSearchParameters({
    wrapperID: 'propertyBusinessGroup_PT',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Negócio'
    });

    /* Search Parameters Grouping General Search */
    $('#pnlSearch .SSearchGroup, #pnlSearch .SSearchTypology').GroupSearchParameters({
        wrapperID: 'propertyTypeGroup_GS',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Tipo de Imóvel'
    });
    $('#pnlSearch .SSearchCountry, #pnlSearch .SSearchDistrict, #pnlSearch .SSearchCounty, #pnlSearch .SSearchParish, #pnlSearch .SSearchZone').GroupSearchParameters({
    wrapperID: 'propertyLocationGroup_GS',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Localização'
    });
    $('#pnlSearch .SSearchPurpose, #pnlSearch .SSearchPrice').GroupSearchParameters({
    wrapperID: 'propertyBusinessGroup_GS',
        wrapperClass: 'searchParameterGroup',
        groupTitle: 'Negócio'
    });

}

/* @ SetupClickLink
	 - ...
   ==================================================================== */
function SetupMenu() {
	
	//hidding sub ULs as default
	$('ul#Menu ul').hide();
	
	/*
	
	// toggle sub menus on hover
	$('ul#Menu > li')
	 .hover(function(e) {
	   console.log($(this).children('ul').html());
	   $(this).children('ul').hoverFlow(e.type, {
	     'height': 'show',
	     'marginTop': 'show',
	     'marginBottom': 'show',
	     'paddingTop': 'show',
	     'paddingBottom': 'show' 
	   });
	 }, function(e) {
	   $(this).children('ul').hoverFlow(e.type, {
	     'height': 'hide',
	     'marginTop': 'hide',
	     'marginBottom': 'hide',
	     'paddingTop': 'hide',
	     'paddingBottom': 'hide' 
	   });
	 });
	 
	 */
	
	//mouseOver
	$('ul#Menu li').mouseenter(function() {
		$('ul', $(this)).slideDown('fast');
		$('> a', $(this)).addClass('currentTemp');
	});
	
	//mouseOut
	$('ul#Menu li').mouseleave(function() {
		$('ul', $(this)).slideUp();
		$('> a', $(this)).removeClass('currentTemp');
	});
	
};


/* @ SetupClickLink
	 - ...
   ==================================================================== */
(function($){  
	$.fn.SetupClickLink = function(options) {  
	
  		//Options Class
  		var defaults = {
  			alternateCssClass : ''
  		};		
  		//... extending options object with defaults values
  		var options = $.extend(defaults, options);
  		  
    	return this.each(function() {  
 			
 			 var url = $('a', $(this)).attr('href');
 			 
 			 if(url != '') {
 			 
 			 	$(this).click(function() {
 			 		window.location = url;
 			 	});
 			 	
 			 	$(this).mouseover(function(){
 			 		$(this).css('cursor', 'pointer');
 			 		if (options.alternateCssClass != '') {
 			 			$(this).addClass(options.alternateCssClass);
 			 		}
 			 	});
 			 	
 			 	$(this).mouseout(function(){
 			 		if (options.alternateCssClass != '') {
 			 			$(this).removeClass(options.alternateCssClass);
 			 		}
 			 	});
 			 
 			 }
 			 
    	});
    	
 	};  
})(jQuery); 


/* @ GroupSearchParameters
	 - Adds an extra DIV wrapping matched elements, with a class
	 - Add inside an extra span for the title
   ==================================================================== */
(function($){  
	$.fn.GroupSearchParameters = function(options) {  
	
	
  		//Options Class
  		var defaults = {
  			wrapperID : 'theWrapperID',
  			wrapperClass: 'theWrapperClass',
  			groupTitle: 'theTitle'
  		};		
  		//... extending options object with defaults values
  		var options = $.extend(defaults, options);
  		
		this.wrapAll('<div id="' + options.wrapperID + '" class="' + options.wrapperClass + '"></div>');
		$('#' + options.wrapperID).prepend('<span class="groupTitle">' + options.groupTitle + '</span>');
  
    	return this.each(function() {  
 			 
    	});
    	
 	};  
})(jQuery); 


/* @ SetupButtons
	 - adding extra SPAN for styling buttons with sprites
	 - auto width buttons
   ==================================================================== */
(function($){  
	$.fn.StyleButton = function(options) {  
  
    	return this.each(function() {  
 			 	
 			var originalText = $(this).text();
 			$(this).text('');
			$(this).append('<span>' + originalText  + '</span>');
			$(this).addClass('PLbutton');
 			//$('>div', $(this)).wrapAll(wrapperDiv);
    	});
    	
 	};  
})(jQuery); 


/* @ SetupPLcontainers
	 - adding extra DIVs for rounding corners
   ==================================================================== */
   
function SetupPLcontainers() {

	BuildContainer('.PLcontainer1');
	BuildContainer('.PLcontainer2');
	
	function BuildContainer(containerID) {
		
		$(containerID).each(function(){
			var group = $(this).attr('name');
			$(this).children().wrapAll('<div class="plcBodyWrapper"><div class="plcBody"></div></div>');
			$(this).prepend('<div class="plcHeadWrapper"><div class="plcHead"><cite class="' + group + '"></cite></div></div>');
		});
		
	};
	
};




/* @ SetupSearchControl
	 - ...
   ==================================================================== */
   
function SetupSearchControl(_panelID, firtOne) {

	var $ctrl = $('#dSearchControl');

	ShowPanel(_panelID);
	
	if (firtOne) {
		$('.panelNavigation a').click(function(){
			var panelID = $(this).attr('href');
			ShowPanel(panelID);
			return false;
		});
	}


	function ShowPanel(panelID) {
		
		//hidding all panel DIVs
		$('>div', $ctrl).hide();
		
		//showing panel
		$(panelID, $ctrl).show();
		
		//removing current tab style
		$('li.current', $ctrl).removeClass('current');
		
		//adding current tab style
		$('a[href=' + panelID + ']').parent('li').addClass('current');
		
	};

};

function SetSearchControlTab(cssClass){
	SetupSearchControl('#' + cssClass, false);
};



/* @ AddWidthWrapper
	 - Adiciona um DIV extra 
	 - para garantir a largura máxima 
	 - para o centrar na janela
   ==================================================================== */
(function($){  
	$.fn.AddWidthWrapper = function(options) {  

  		//Options Class
  		var defaults = {
  			width : 960,
  			height: 1,
  			autoHeight: false
  		};		
  		//... extending options object with defaults values
  		var options = $.extend(defaults, options);
  
    	return this.each(function() {  
 			
 			options.height = $(this).height();
 			
 			var wrapperDiv = '';
 			wrapperDiv = wrapperDiv + '<div style="';
 			wrapperDiv = wrapperDiv + 'width:' + options.width + 'px; ';
 			if(!options.autoHeight) {
 				wrapperDiv = wrapperDiv + 'height:' + options.height + 'px; ';
 			}
 			wrapperDiv = wrapperDiv + 'margin:0 auto; position:relative;';
 			wrapperDiv = wrapperDiv + '">';
 			
 			$('>div', $(this)).wrapAll(wrapperDiv);
    	});
    	
 	};  
})(jQuery); 
