﻿var Settings = {
	'site_url': 'http://ilop.pl/',
	'main_rotator_interval': 3000,
	'newsletter_caption': 'newsletter'
}

var Site = {

	StartFunctions: [],

	// ======================================================================
	isAdmin: function() {
		return $('body').hasClass('admin-site');
	},
	isFrontend: function() {
		return $('body').hasClass('frontend-site');
	},
		
	// ======================================================================
	start: function() {
		$.fn.tagName = function(){ return this.get(0).tagName.toLowerCase(); }

		if (this.isAdmin()) {
			this.RunStartFunctions();
			this.RunPage(document.body.id ? document.body.id : 'default');
		}

		if (this.isFrontend()) {
			this.tweakLayout();
			this.evenSections();
			this.tweakCheckboxes();
			this.tweakButtons();
			this.addFunctionalities();
			this.ieTweaks();
			this.contactForms();
			this.newsletter();

			this.RunStartFunctions();
		}
	},
		
	// ======================================================================
	addStartFunction: function(f) {
		this.StartFunctions.push({
			f: f,
			started: false
		});
	},
		
	// ======================================================================
	RunStartFunctions: function() {
		for(var I in this.StartFunctions) {
			if (!this.StartFunctions[I].started) {
				this.StartFunctions[I].started = true;
				this.StartFunctions[I].f();
			}
		}
	},
			
	// ======================================================================
	RunPage: function(siteId) {
	
		$('.confirm-link').click(function(){
			return confirm('Czy napewno ?');
		});
	
		switch(siteId) {
		
			case 'default':
			
			break;
		}
		
	},

	// ======================================================================
	ExamplePlugin: function() {
		(function(a){a.fn.example=function(e,c){var d=a.isFunction(e);var b=a.extend({},c,{example:e});return this.each(function(){var f=a(this);if(a.metadata){var g=a.extend({},a.fn.example.defaults,f.metadata(),b)}else{var g=a.extend({},a.fn.example.defaults,b)}if(!a.fn.example.boundClassNames[g.className]){a(window).unload(function(){a("."+g.className).val("")});a("form").submit(function(){a(this).find("."+g.className).val("")});a.fn.example.boundClassNames[g.className]=true}if(a.browser.msie&&!f.attr("defaultValue")&&(d||f.val()==g.example)){f.val("")}if(f.val()==""&&this!=document.activeElement){f.addClass(g.className);f.val(d?g.example.call(this):g.example)}f.focus(function(){if(a(this).is("."+g.className)){a(this).val("");a(this).removeClass(g.className)}});f.change(function(){if(a(this).is("."+g.className)){a(this).removeClass(g.className)}});f.blur(function(){if(a(this).val()==""){a(this).addClass(g.className);a(this).val(d?g.example.call(this):g.example)}})})};a.fn.example.defaults={className:"example"};a.fn.example.boundClassNames=[]})(jQuery);
	},

	// ======================================================================
	tweakLayout: function() {
		$('html').addClass('js');
		
		//set constant width for menu in main-rotator
		setTimeout(function() {
		       $('#main-rotator .menu ul').each(function() {
			       var $ul = $(this);
			       $ul.find('li').each(function() {
				       var $li = $(this);
				       $li.find('a span').width($li.width()).css({'padding-left': '0', 'padding-right': '0'});
			       });
		       });
		}, 200);
	
	},

	// ======================================================================
	evenSections: function() {
		function even($s1, $s2) {
			var h1 = $s1.height();
			var h2 = $s2.height();
			if (h1 > h2) {
				$s2.height(h1);
			}
			else {
				$s1.height(h2);
			}
		}
		
		if (document.getElementById('works') && document.getElementById('check-offer')) {
			even($('#works'), $('#check-offer'));
		}
	},

	// ======================================================================
	tweakButtons: function() {
		$('input.login-button').each(function() {
			var $submit = $(this);
			var classes = this.className;
			var val = $submit.attr('value');
			$submit.after('<a class="' + classes + '" href="#">' + val + '</a>');
			$submit.next().click(function() {
				$submit.click();
				return false;
			});
			$submit.hide();
		});
		$('input.button').each(function() {
			var $submit = $(this);
			var classes = this.className;
			var val = $submit.attr('value');
			$submit.after('<a class="' + classes + '" href="#">' + val + '</a>');
			$submit.next().click(function() {
				$submit.click();
				return false;
			});
			$submit.hide();
		});
	},

	// ======================================================================
	addFunctionalities: function() {
		//adding blank target
		$('a.blank').attr('target', '_blank');
		
		//main-rotator
		$('#main-rotator').each(function() {
			var $rotator = $(this);
			var in_transition = false;
			var current = 0;
			var elements = $rotator.find('.menu ul li').length;
			
			var myInterval;
			var absolute_stop = false;
			function startInterval() {
				myInterval  = setInterval(function() {
					if (current == elements - 1) {
						elementClicked(0);
					}
					else {
						elementClicked(current + 1);
					}
				}, Settings.main_rotator_interval);
			}
			
			function elementClicked(x) {
				if (!in_transition) {
					in_transition = true;
					var x_natural = parseInt(x, 10) + 1;
					$rotator[0].className = 'page' + x_natural;
					$rotator.find('.images .image:eq(' + x + ')').each(function() {
						var $this = $(this);
						$rotator.find('.menu ul li.selected').removeClass('selected');
						$rotator.find('.menu ul li:eq(' + x + ')').addClass('selected');
						$this.addClass('transitioning').fadeIn(500, function() {
							$rotator.find('.images .selected').removeClass('selected').hide();
							$this.addClass('selected').removeClass('transitioning');
							current = x;
							in_transition = false;
						});
					});
				}
			}
			
			$rotator.find('.menu ul li').each(function() {
				var $li = $(this);
				$li.find('a').click(function(){
					var index = $li.prevAll().length;
					if (current != index) {
						elementClicked(index);
						clearInterval(myInterval);
						absolute_stop = true;
						return false;
					}
					else {
						return true;
					}
				});
			});
			
			$rotator.mouseover(function() {
				clearInterval(myInterval);
			}).mouseout(function() {
				if (!absolute_stop) {
					startInterval();
				}
			});
			
			startInterval();
			
		});
		
		//services-rotator
		$('#services-rotator').each(function() {
			var $this = $(this);
			var current = 0;
			var services_quantity = $this.find('.service').length;
			
			$('#our-services .btn a:last').attr('href', $this.find('.selected .imgs a').attr('href'));
			
			function selectService(x) {
				$this.find('.selected').removeClass('selected');
				$this.find('.service:eq(' + x + ')').addClass('selected');
				$('#our-services .btn a:last').attr('href', $this.find('.selected .imgs a').attr('href'));
			}
			
			$('#os-prev').click(function() {
				if (current == 0) {
					selectService(services_quantity - 1);
					current = services_quantity - 1;
				}
				else {
					selectService(--current);
				}
				return false;
			});
			$('#os-next').click(function() {
				if (current == services_quantity - 1) {
					selectService(0);
					current = 0;
				}
				else {
					selectService(++current);
				}
				return false;
			});
		});
		
		//expandable listing
		$('.listing.expandable').each(function() {
			var $list = $(this);
			var in_motion = false;
			$list.find('> li').each(function() {
				var $li = $(this);
				if ($li.find('.contents').length > 0) {
					$li.find('> a:first').click(function() {
						if (!in_motion && !$li.hasClass('selected')) {
							in_motion = true;
							var $selected = $list.find('.selected');
							$selected.removeClass('selected').find('.contents').slideUp(function() {
								//$selected.removeClass('selected');
							});
							$li.addClass('selected').find('.contents').slideDown(function() {
								in_motion = false;
							});
						}
						return false;
					});
				}
			});
		});
		
		//details-box
		$('#details-box').each(function() {
			var $box = $(this);
			
			$box.find('.detail').each(function() {
				var $detail = $(this);
				
				$detail.find('.image').mouseover(function() {
					$(this).find('.zoom').show();
					$detail.find('.hud').show();
				}).mouseout(function() {
					$(this).find('.zoom').hide();
					$detail.find('.hud').hide();
				});
				$detail.find('.active .zoom').add('.hud').mouseover(function() {
					$detail.find('.active .zoom').show();
					$detail.find('.hud').show();
				})

				
				var current_active = 0;
				var images_quantity = $detail.find('.images .image').length;
				function selectDetail(x, from_hud) {
					$detail.find('.active').removeClass('active');
					$detail.find('.images .image:eq(' + x + ')').addClass('active');
					if (from_hud) {
						$detail.find('.images .active .zoom').show();
					}
					else {
						$detail.find('.images .active .zoom').hide();
					}
				}
				
				$detail.find('.hud').click(function() {
					if ($(this).hasClass('serv-next')) {
						if (current_active == images_quantity - 1) {
							selectDetail(0, true);
							current_active = 0;
						}
						else {
							selectDetail(++current_active, true);
						}
					}
					else if ($(this).hasClass('serv-prev')) {
						if (current_active == 0) {
							selectDetail(images_quantity - 1, true);
							current_active = images_quantity - 1;
						}
						else {
							selectDetail(--current_active, true);
						}
					}
					return false;
				});
				$detail.find('.thumbs .thumb').click(function() {
					var index = $(this).prevAll().length;
					current_active = index;
					selectDetail(index, false);
					return false;
				});
			});
			
			function selectService(x) {
				$box.find('.detail.selected').removeClass('selected');
				$box.find('.detail:eq(' + x + ')').addClass('selected');
				$('#details-infos .info.selected').removeClass('selected');
				$('#details-infos .info:eq(' + x + ')').addClass('selected');
			}
			
			$('#services-list .service-thumb').each(function() {
				var $this = $(this);
				$this.click(function() {
					if (!$this.hasClass('selected')) {
						selectService($this.prevAll().length);
						$('#services-list .selected').removeClass('selected');
						$this.addClass('selected');
					}
					return false;
				});
			});
			
			$('#services-pager').each(function() {
				var $pager = $(this);
				$pager.find('ul li').each(function() {
					var $li = $(this);
					$li.find('a').click(function() {
						if (!$li.hasClass('selected')) {
							$('#services-list .service-thumb.active').removeClass('active');
							$('#services-list .service-thumb.page' + ($li.prevAll().length + 1)).addClass('active');
							$pager.find('.selected').removeClass('selected');
							$li.addClass('selected');
						}
						return false;
					});
				});
			});
		});
	},

	// ======================================================================
	ieTweaks: function() {
		if ($.browser.msie && /MSIE 6.0/.test(navigator.userAgent)) {
			function giveHover($el) {
				$el.hover(function() {
					$el.addClass('fHover');
				}, function() {
					$el.removeClass('fHover');
				});
			}
			
			$('#nav ul li').each(function() {
				giveHover($(this));
			});
		}
	},

	// ======================================================================
	contactForms: function() {
		$('.contact-form').each(function(){
			$('input[type=submit]',this).click(function(){
				var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

				var $form = $(this);
				while(!$form.hasClass('contact-form')) $form = $form.parent();

				$name = $('input[name=name]',$form);
				$phone = $('input[name=phone]',$form);
				$mail = $('input[name=mail]',$form);
				$body = $('textarea[name=body]',$form);
				$company = $('input[name=company]',$form);

				if (!filter.test($mail.val())) {
					alert('Musisz wypelnic adres e-mail !');
					return false;
				}

				if ($name.val().length == 0) {
					alert('Musisz wypelnic imie i nazwisko');
					return false;
				}

				if ($body.val().length < 30) {
					alert('Za krótka treść wiadomości !');
					return false;
				}

				return true;
			});
		});
	},

	// ======================================================================
	newsletter: function() {
		$('#newsletter').each(function() {
			var caption = Settings.newsletter_caption;
			var $form = $(this);
			$form.find('#subscribe-address').each(function() {
				var $this = $(this);
				if ($this.val() == '' || $this.val() == caption) {
					$this.val(caption).addClass('pre').focus(function() {
						$this.removeClass('pre').val('').unbind('focus');
					});
				}
			});
			$form.submit(function() {
				return false;
			});
			
			function sendRequest(option) {
				var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				var $this = $('#newsletter .columns');
				if ($form.find('input[type="text"]').val() != '' && $form.find('input[type="text"]').val() != caption && filter.test($form.find('input[type="text"]').val())) {
					$.ajax({
						type: 'GET',
						url: 'newsletter-zapisz',
						data: 'subscribe=' + option + '&a=1&mail=' + $form.find('input[type="text"]').val(),
						success: function(data) {
							if (data) {
								$this.find('.msg').remove();
								Modal.open(data);
							}
						}
					});
				}
				else {
				}
			}
			
			$('#subscribe').click(function() {
				sendRequest(1);
				return false;
			});
			$('#unsubscribe').click(function() {
				sendRequest(0);
				return false;
			});
		});
	},

	// ======================================================================
	tweakCheckboxes: function() {
		$('<img />')
	    .attr('src', Settings.site_url + 'css/i/common/chckbx-on.png')
	    .load(function(){
	    });
		$('label.check').each(function() {
			var $label = $(this);
			$label.find(':checkbox:first').each(function() {
				var check = this;
				var $check = $(this);
				$label.addClass('chckbx');
				if (check.checked) {
					$label.addClass('on');
				}
				$check.hide();
				
				$label.click(function() {
					check.checked = !check.checked;
					if (check.checked) {
						$label.addClass('on');
					}
					else {
						$label.removeClass('on');
					}
					return false;
				});
			
			});
		});
	}

}

var Modal = {
	open: function(msg) {
		Modal.screenHeight = $('#wrapper').height();
		var html = '<div id="modal-bg" style="height:' + Modal.screenHeight + 'px"></div>';
		html += '<div id="modal" class="pre"><div class="inner">' + msg + '</div><a class="close" href="#">zamknij</a></div>';
		// '<p class="imp">Szczegóły:</p>' +
		// '<div class="columns">' +
			// '<img class="ico" src="http://www.kkuliczkowski.dev.sportmediagroup.pl/view/static/icons/xl/superman.png" alt="Superman"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>' +
		// '</div>' +
		// '<p><span class="imp">Kategoria:</span> Ikonka</p>' +
		// '<p><span class="imp">Cena:</span> 150</p>' +
		
		$('body').append(html);
		Modal.box = $('#modal');
		Modal.height = Modal.box.height();
		Modal.box.height(Modal.height);
		Modal.box.css('margin-top', -Modal.height/2 + 'px');
		Modal.box.removeClass('pre');
		Modal.box.find('.close').click(function() {
			Modal.close();
			return false;
		});
	},
	
	close: function() {
		Modal.box.remove();
		$('#modal-bg').remove();
	}
}

$(function() {
	Site.start();
})


