/**
 * @author Mateusz Cyburt
 */     
 
var Main = new Class({
		initialize: function(){
	}, // initialize

    domReady: function() {
		this.activateInputs();
		this.insertFlash();
		this.insertGmaps();
		this.activateBackBtn();
		this.activatePreloader();
		this.activateContactForm();
		var fix4ie = new Fix4ie();
	}, // domReady
    
    insertFlash: function(){
		elements = $$('div.flash');
		if (elements.length > 0) {
	    	elements.each(function(obj){
            	var size = obj.getSize();
            	var id = obj.get('id');
            	var SwiffObj = new Swiff('public/flash/' + id + '.swf', { id: "flash" + $random(1,99),container: id, width: size.x, height: size.y, 
										 params: {wmode: 'transparent', bgcolor: '#' + obj.getStyle('background-color')} });
            	obj.setStyle('background-image', 'none');
	    	});
		}
    }, // insertFlash
        
	checkTitles: function(form) {
		form.getElements('input').each(function(obj){
			if (obj.value == obj.title) obj.value = '';
		});
		form.getElements('textarea').each(function(obj){
			if (!Browser.Engine.webkit) {
				if (obj.innerHTML == obj.title) obj.innerHTML = '';
			} else {
				if (obj.value == obj.title) obj.value = '';
			}
		});
	}, // checkTitles
	
	activateInputs: function() {
		$$('input').each(function(obj){
			obj.value = obj.title;
			obj.onclick = function() { if (obj.value == obj.title) { obj.value = '';} };
			obj.onblur = function()  { if (obj.value == '') { obj.value = obj.title;} };
		});

		$$('textarea').each(function(obj){
			if (!Browser.Engine.webkit) {
				obj.onclick = function() { if (obj.innerHTML == obj.title){obj.innerHTML = '';} };
				obj.onblur = function()  { if (obj.innerHTML == ''){obj.innerHTML = obj.title;} };
			} else {
				obj.onclick = function() { if (obj.value == obj.title){obj.innerHTML = '';} };
				obj.onblur = function()  { if (obj.value == ''){obj.value = obj.title;} };
			}
		});

		$$('form').each(function(obj){
			obj.onsubmit = function() { main.checkTitles(this); };
		});
	}, // activateInputs

   insertGmaps: function() {
	  if ($('gmap') && GBrowserIsCompatible() ) {
		  var map = new GMap2(document.getElementById("gmap"));

		  	map.setCenter(new GLatLng(51.814724,-8.391296), 13);
		  	map.addControl(new GSmallMapControl());
		    
		  	var point = new GLatLng(51.814724,-8.391296); 
		  	map.addOverlay(new GMarker(point));
		}
	},
	
	activateBackBtn: function() {
		$$('a.back_btn').each(function(obj){
			obj.onclick = function() { history.back(); return false; };
		});
	},

	showMail: function(user, dmain, contry, attr) {
		var start = "<a href=\"mailto:" + user + "@" + dmain + "." + contry + "\"" + attr + "title=\"" + user + "@" + dmain + "." + contry + "\">";
		var end = "</a>";
		document.write(start + user + "@" + dmain + "." + contry + end);
		return false;
	}, // showMail
/*
	activatePreloader: function() {
		$$('ul.img-list li div').each(function(obj){
			var regex = new RegExp('\\[(.+)\\]');
			var buf = regex.exec(obj.innerHTML)[1].split(';');
			var img_name = 'gfx-thumbs/' + buf[0] + '/' + buf[1];
			new Asset.images([img_name], { onComplete: function() {
				var img = new Element('img',{ src: img_name, 'style' : 'opacity: 0' });
				obj.adopt(img);
				var img_height = img.getSize().y + 'px';
				img.set('morph', { duration: 2000 });
				obj.set('morph', { duration: 2000 });
				obj.morph({ height: img_height,
					onComplete: function(){ img.morph({'opacity': [0,1]}); }
				});
			} });
		});
	}, // activatePreloader */
	
	activatePreloader: function() {
		var images = new Array();
		var img_divs = $$('ul.img-list li div');
		img_divs.each(function(obj, i){
			var regex = new RegExp('\\[(.+)\\]');
			var buf = regex.exec(obj.innerHTML)[1].split(';');
			images[images.length] = 'gfx-works/' + buf[0] + '/' + buf[1];
		});
		
		new Asset.images(images, { onComplete: function() {
			img_divs.each(function(obj,i){
				var img = new Element('img',{ src: images[i], 'style' : 'opacity: 0' });
				img.addEvent('load', function(){
					var img_height = img.getSize().y + 'px';
					img.set('morph', { duration: 2000 });
					obj.set('morph', { duration: 2000 });
					obj.morph({ height: img_height,
						onComplete: function(){ img.morph({'opacity': [0,1]}); }
					});
				});
				obj.adopt(img);
			});
		}});
	}, // activatePreloader 
	
	isEmailValid: function(email) {
		return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email);
	},
	
	sendContactMessage: function() {
		$('contact_name').removeClass('error');
		$('contact_email').removeClass('error');
		$('contact_message').removeClass('error');
		
		var req = new Request({
			url: 'ajax/contact', 
			method: 'post',
			data: {'contact_name' : $('contact_name').value,
				   'contact_email' : $('contact_email').value,
				   'contact_message' : $('contact_message').value},
			onRequest: function() { 
					   $('contact_submit').disabled = 'disabled';
					   $('ajax-loader-contact').setStyle('display', 'block'); },  
			onComplete: function(response) { 
					   $('ajax-loader-contact').setStyle('display', 'none');
					   $('contact_submit').disabled = '';
					   $('contact_status').innerHTML = response;
		    }  
		});
		req.send();
		
		if ($('contact_name').value == '') $('contact_name').addClass('error'); 
		if (!main.isEmailValid($('contact_email').value)) $('contact_email').addClass('error');
		if ($('contact_message').value == '') $('contact_message').addClass('error');
	}, // sendContactMessage
	
	activateContactForm: function() {
		if ($('form_contact')) {
			$('contact_submit').onclick = function(){ main.checkTitles(this.getParent()); main.sendContactMessage(); return false; };
		}
	} // activateContactForm

}); // Main

var Fix4ie = new Class({
	initialize: function(){
		if ( Browser.Engine.trident ) {
			this.fixInputFocus();
		}
	
		if ( Browser.Engine.trident4 ) {
			this.fixHovers();
		}
	}, // initialize

	fixInputFocus: function() {
    	var elems = $$('input');  
        elems.each(function(obj) {
            obj.onclick = function() { if (obj.value == obj.title) { obj.value = ''};this.addClass('focus'); };
            obj.onblur = function()  { if (obj.value == '') { obj.value = obj.title};this.removeClass('focus'); };
        });
    }, // fixInputFocus

    fixHovers: function() {
    	var elems = $$('input,button,li');  
        elems.each(function(obj) {
            obj.onmouseover = function() {
            	var new_class = this.get('class');
            	if (new_class != '') this.addClass('hover_' + new_class);
            	else this.addClass('hover');
            };
            obj.onmouseout = function()  {
            	var class_name = this.get('class');

            	if (this.hasClass('hover')) this.removeClass('hover');
            	else {
            		class_array = class_name.split(' ');
            		class_array.each(function(element){
            			if (element.match('hover_')) obj.removeClass(element);
            		});
            	}
            };
        });
    } // fixHovers
}); // fix4ie6

var main = new Main();

window.addEvent('domready', function(){ main.domReady(); });
