var Main = Class.$extend({
  __init__ : function() {
  },

  isDomReady : function(){
  	if (jQuery.browser.safari){
		if (document.readyState != "complete") {
			setTimeout( function(){ main.isDomReady(); }, 500 );
			return;
		} else {
			main.domready();
		}
	} else {
		main.domready();
	}
  },
  
  domready : function() {
	if($.browser.msie) this.ieFix();
	this.initCufonFonts();
	this.initNivoslider();
	this.initForms();
	this.initBtns();
	this.initHs();
	this.isCufonReady();
	this.insertFlash();
	this.insertGoogleMap();
	this.initActiveMenu('#topMenu');
	this.initActiveMenu('#box_category_listing .top .content ul');
	this.initActiveMenu('#menu_bottom');
	this.initBaners();
  },
  
  
  isCufonReady : function(){
	  if (!$('html').hasClass('cufon-ready')) {
		  setTimeout( function(){ main.isCufonReady(); }, 500 );
	      return;
	  } else {
		  main.onCufonReady();
	  }
  },
  
  onCufonReady : function() {
	  this.fixElementsPos();
      if($.browser.msie && $.browser.version <= 7){
    	  this.ieMenuFix();
	  }
	  this.showMenu();
  },
  
  showMail: function(user, domain, contry, attr) {
	var start = "<a href=\"mailto:" + user + "@" + domain + "." + contry + "\"" + attr + ">";
	var end = "</a>";
	document.write(start + user + "@" + domain + "." + contry + end);
	return false;
  }, // showMail

  
  insertFlash: function() {
	  if($('#flash_top')){
		  if(jQuery.browser.flash) {
			  $('#flash_top').flash({src:'public/flash/top.swf', width:'507', height:'299', wmode:'transparent',
				  					flashvars:{ xmlURL: 'public/flash/top.xml' }});
		  } else {
			  $('#flash_top').html('<a href="http://get.adobe.com/pl/flashplayer/" target="_blank"><span></span></a>');
		  }
	  }

	  if($('#agents-map')){
		  if(jQuery.browser.flash) {
			  $('#agents-map').flash({src:'public/flash/map.swf?c1=dff5ff&c2=c1ebff&c3=00a8ec&c4=f86e3d&c5=ffffff', width:'300', height:'300', wmode:'transparent',
				  					flashvars:{  }});
		  }
	  }

//	  this.insertBanersFlash();
  },

  insertBanersFlash: function() {
	  $('#banner_bottom_wrapper div div.flashi').each(function(){
		  var reg = new RegExp('\\[(.+)\\]');
		  var buf = reg.exec($(this).html());
		  var swfFile = buf[1];

		  $(this).flash({src:swfFile, width:$(this).width(), height:$(this).height(), wmode:'transparent' });
	  });
  },
  
  showMenu:function() {
	$('#topMenu').removeClass('hide').hide().fadeIn(500);
  },
  
  initHs:function(){
	hs.lang.cssDirection = lang.cssDirection;
	hs.lang.loadingText = lang.loadingText;
	hs.lang.loadingTitle = lang.loadingTitle;
	hs.lang.focusTitle = lang.focusTitle;
	hs.lang.fullExpandTitle = lang.fullExpandTitle;
	hs.lang.previousText = lang.previousText;
	hs.lang.nextText = lang.nextText; 
	hs.lang.moveText = lang.moveText;
	hs.lang.closeText = lang.closeText; 
	hs.lang.closeTitle = lang.closeTitle; 
	hs.lang.resizeTitle = lang.resizeTitle;
	hs.lang.playText = lang.playText;
	hs.lang.playTitle = lang.playTitle;
	hs.lang.pauseText = lang.pauseText;
	hs.lang.pauseTitle = lang.pauseTitle;
	hs.lang.previousTitle = lang.previousTitle;
	hs.lang.nextTitle = lang.nextTitle;
	hs.lang.moveTitle = lang.moveTitle;
	hs.lang.fullExpandText = lang.fullExpandText;
	hs.lang.number = lang.number;
	hs.lang.restoreTitle = lang.restoreTitle;			
	hs.graphicsDir = 'public/gfx/highslide/';
	hs.align = 'center';
	hs.transitions = ['expand', 'crossfade'];
	hs.outlineType = 'rounded-white';
	hs.fadeInOut = true;
	hs.dimmingOpacity = 0.25;

	hs.addSlideshow({
		interval: 5000,
		repeat: false,
		useControls: true,
		fixedControls: 'fit',
		overlayOptions: {
			opacity: .75,
			position: 'bottom center',
			hideOnMouseOut: true
		}
	});
  }, // initHs
    
  initCufonFonts: function(){
	  Cufon.replace('.dinproMedium', { fontFamily: 'dinproMedium', hover: false });
  },
  
  initNivoslider: function(){
	  if($('#sliderBox')) {
		  $('#sliderBox').nivoSlider({
			  directionNav:false, //Next & Prev
			  controlNav:true,
			  pauseOnHover:true,
			  animSpeed:1000,
		      pauseTime:6000
		  });
	  }
  },
  
  processNewsletterForm: function(){
	var formId = $('#form_newsletter');
	jQuery.ajax({  
		type: "POST",  
		url: $(formId).attr('action'),  
		data:  $(formId).serialize(),
		error: function() {
			console.log("Failed to submit - ");
  		},
  		success: function(r) {
  			var result = $.parseJSON(r);
    		$('#form_newsletter_result').html(result.msg);
  			if(result.status=='ok') $(formId)[0].reset();
  		}
    });
	
  },

  initForms: function(){
	  	  
	  $('.watermark').each(function() {
		  $(this).watermark($(this).attr('title'), 'watermark');
		});
  	  
	  $('#form_newsletter').bind('submit', function(event){ 
		  event.preventDefault(); 
		  main.processNewsletterForm(); 
		  return false;
      });
	  
	  $('#form_newsletter input').bind('keydown', function(event){ 
		  var keycode = (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode));
	      if (keycode == 13) { // keycode for enter key
			  main.processNewsletterForm();
	          return false;
	      } else { 
	    	  return true;
	      }
      });
	  
	  $('#form_newsletter button[type=submit]').bind('click', function(event){ 
		  event.preventDefault(); 
		  main.processNewsletterForm(); 
		  return false; 
	  });
  },
  
  initBtns: function(){
  	$('.scrollUp').each(function(){
		$(this).bind('click', function(){ 
			$('html, body').animate({scrollTop:0}, 'slow');
		});
	});
  	
  	$('.btnPowrot').each(function(){
		$(this).bind('click', function(){ history.back();return false; });
	});
  },
  
  ulContentWidth: function(ulContainer){
	  var contentWidth = 0;
	  $(ulContainer).children('li').each(function(){
		  contentWidth+=$(this).width();
		  contentWidth+=parseInt($(this).css('padding-left'));
		  contentWidth+=parseInt($(this).css('padding-right'));
	  });
	  return contentWidth;
  },
  
  fixElementsPos: function(){
	  var topMenuMargin = ($('#topMenu').parent().width() - this.ulContentWidth($('#topMenu'))) / 2;
	  $('#topMenu').css('margin-left', topMenuMargin);
	  
	  var scrollLink = $('#footer .cnt a.scrollUp');
	  var bottomMenuMargin = ($('#footer .cnt').width()
			  				  -( scrollLink.width() 
  			  				   + parseInt(scrollLink.css('margin-right')) 
			  				   + parseInt(scrollLink.css('padding-left')) 
			  				   + this.ulContentWidth($('#menu_bottom'))
							   - 130 ) // rz-firma
			  				   )/2;
	  $('#menu_bottom').css('margin-left', bottomMenuMargin);
  },
  
	map: null,
	
	insertGoogleMap: function() {
	  if($('#gmap')[0]){
		var mapCenter_x = 52.066667;
		var mapCenter_y = 19.483333;

		var myLatlng = new google.maps.LatLng(mapCenter_x, mapCenter_y);
		var myOptions = {
			zoom: 6,
			center: myLatlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
	 		navigationControlOptions: {
				//style: google.maps.NavigationControlStyle.ZOOM_PAN
				style: google.maps.NavigationControlStyle.SMALL
				}
		};

	    this.map = new google.maps.Map($('#gmap')[0], myOptions);		
		this.insertGoogleMapPoints();
	  }
	}, // loadMap
	
	insertGoogleMapPoints: function(){
		if (typeof(map_points) !== 'undefined') {
			var markerBounds = new google.maps.LatLngBounds();
	
			$.each(map_points, function(i, item){
			  	var point = new google.maps.LatLng(item.pos_x,item.pos_y);
			  	markerBounds.extend(point);
			  	var marker = new google.maps.Marker({
			        position: point, 
			        map: main.map,
			        title:item.name
			    });
			  	
			  	var infowindow = new google.maps.InfoWindow(
			  	      { content: '<div class="gmapInfoWindow">'+
			  	    	  		 '<h1>'+item.name+'</h1><br/>'+
		  	    	  		     item.street+' '+item.building_no+'<br/>'+
			  	    	  		 item.zip+' '+item.city+'<br/>'+
			  	    	  		 'województwo: '+item.state+
			  	    	  		 ((item.www != '')?'<br/>www: <a href="'+item.www+'">'+item.www+'</a>':'')+
			  	    	  		 ((item.email != '')?'<br/>email: <a href="mailto:'+item.email+'">'+item.email+'</a>':'')+
			  	    	  		 ((item.phone != '')?'<br/>tel.: '+item.phone:'')+
			  	    	  		 ((item.fax != '')?'<br/>fax: '+item.fax:'')+
			  	    	  		 '</div>',
			  	        size: new google.maps.Size(50,50)
			  	      });
			  	
			  	google.maps.event.addListener(marker, 'click', function() {
			  	    infowindow.open(main.map, marker);
			    });
			});
			main.map.fitBounds(markerBounds);
		}
	}, // insertStoresGmapPoints
  
	initActiveMenu: function(pattern) {
		
		var path = document.location.pathname.substr(1);
		if(path.charAt(path.length-1) == '/') path = path.substr(0, path.length-1);
		else if(path == '') path = '/'; // main page
		path = path.replace(/\/\d+\/?$/, '').replace(/\/[0-9a-z-]+\.html\/?$/, '');

		var links = $(pattern+' a[href='+path+']');

		while(links.length == 0 && path != '') {
			path = path.split('/');
			path.pop();
			path = path.join('/');
			links = $(pattern+' a[href='+path+']');
		}

		if(links.length == 1) {
			links.parent('li').addClass('active');
		}

		
	}, //initActiveMenu
	
	ieFixZIndex:function(){
		$(function() {
		       var zIndexNumber = 1000;
		       $("div").each(function() {
		               $(this).css('zIndex', zIndexNumber);
		               zIndexNumber -= 10;
		       });
		});
//		$("#sliderBox div.nivo-controlNav").css('zIndex','6900');
	},
	
	ieFixHovers:function(){
		$('#topMenu li,#topMenu li ul li').hover(function(){ $(this).addClass('hover');},
												 function(){ $(this).removeClass('hover');}
					        				     );
	},
	
	ieMenuFix:function(){
		if($.browser.version < 7) {
			$('#topMenu li ul li a span.dinproMedium cufon').each(function(){
				$(this).parent().width($(this).width());
				if($.browser.version < 7) $(this).parent().parent().parent().parent().parent().width($(this).width()+20);
			});
		}
		if($.browser.version == 7) {
			$('#topMenu li ul li').each(function(){
				$(this).width($(this).parent().width()-20);
			});
		}
	},
	
	ieFix:function(){
		this.ieFixZIndex();
		if($.browser.version < 7){
			//$('#topMenu li ul li a span.dinproMedium').removeClass('dinproMedium');
			this.ieFixHovers();
		}
	},
	
	banersScrolling:false,
	
	banersScroll:function(direction){
		if(main.banersScrolling == false){
			var marginLeft = parseInt($('#banner_bottom_wrapper').css('margin-left'));
	
			if(marginLeft==0 && direction==1) $('#bannerScrollLeft').removeClass('disabled');
			if(marginLeft==main.banerMaxMargin && direction==0) $('#bannerScrollRight').removeClass('disabled');
	
			if(direction==0){
				marginLeft+=main.banerWidth;
			}else{
				marginLeft-=main.banerWidth;
			}
			
			if(marginLeft==0) $('#bannerScrollLeft').addClass('disabled');
			if(marginLeft==main.banerMaxMargin) $('#bannerScrollRight').addClass('disabled');
			
			main.banersScrolling=true;
			$('#banner_bottom_wrapper').animate({
				'margin-left': marginLeft
			}, 250,'jswing', function(){
				main.banersScrolling=false;
			});
		}
	},

	initBaners:function(){
		if($('#banner_bottom')[0]){
			this.insertBanersFlash();
			
			banerElement = $('#banner_bottom_wrapper div:first-child + div');
			main.banerWidth = $(banerElement).width() + parseInt($(banerElement).css('margin-left'));
			main.banerMaxMargin = -($('#banner_bottom_wrapper a, #banner_bottom_wrapper div.flashi').length-4)*main.banerWidth;
			
			$('#bannerScrollLeft').bind('click',  function(){ if(!$(this).hasClass('disabled')) { main.banersScroll(0);} return false; });
			$('#bannerScrollRight').bind('click', function(){ if(!$(this).hasClass('disabled')) { main.banersScroll(1);} return false; });
		}
	}
});

main = new Main();

$(document).ready(function(){
	main.isDomReady();
});


function clickHandler(region) {
	$('#agents .info').css('display','none');
	$('#agents .region').each(function(){ $(this).css('display','none'); }); 
	$('#region-'+region).css('display','block');	
}
