/*
	### The Cleaning Company Theme
	Javascript functions
*/

var baseurl = window.location.hostname;
if(baseurl  == 'hephaistos') {
	baseurl = 'http://hephaistos/cleaningcompany';
} else {
	//baseurl = 'http://www.thecleaningcompany.at';
	baseurl = 'http://thecleaningcompany.at';
}
var ajaxurl = baseurl+'/ajax';

var current_signup_page = -1;

window.addEvent('domready', function() {

	// # searchform
	if( $defined($('searchform')) ) {
		$('s').addEvent('focus', function() {
			this.set('value', '');
		});
	}
	
	// # commentform
	if( $defined($('commentform')) ) {
		$$('#commentform input').addEvent('focus', function() {
			this.set('value', '');
		});
		$('submit').addEvent('click', function() {
			$('commentform').submit();
		});
	}
	
	// # newsletter form
	if( $defined($('newsletter')) ) {
		$('submit').addEvent('click', function() {
			$('newsletter').submit();
		});
	}

	// # scroller
	var WindowScrollFx = new Fx.Scroll(window, {});
	var titles = $$('h4.title');
	
	// # contentslider
	slide_display = null;
	if( $defined($('slide')) ) {
		slide_display = $('slide').get('html');
		slide_display = slide_display.toInt();
		var target = titles[slide_display];
		WindowScrollFx.toElement(target);
	}

	var accordion_content = new Accordion('h4.title', 'div.paragraph', {
		show: false,
		display: slide_display,
		opacity: false,
		alwaysHide: true,
		onActive: function(toggler, element){
			toggler.setStyles({
				'color': '#69A301',
				'border-color': '#84CE00'
			});
			element.setStyles({
				'padding': '10px 10px 0px 0px',
				'border-bottom': '1px solid #DFDFE0'
			});
		},
		onBackground: function(toggler, element){
			toggler.setStyles({
				'color': '#606163',
				'border-color': '#DFDFE0'
			});
			element.setStyles({
				'padding': 0,
				'border': 'none'
			});
		}
	}, $('content'));	
	
	// # kwick
	if( $defined($('cc_kwick')) ) {
	
		$('cc_kwick').setStyle('width', '620px');
		var szNormal = 198, szSmall  = 173, szFull   = 248, borderNormal = '#D9D9D9', borderFull = '#84CE00';
	
		var kwicks = $$("#cc_kwick .cc_kwe");
		var kwicks_img = $$("#cc_kwick .cc_kwe .cc_kwe2");
		var fx1 = new Fx.Elements(kwicks, {wait: false, duration: 250, fps: 50, transition: Fx.Transitions.Cubic.easeInOut});
		var fx2 = new Fx.Elements(kwicks_img, {wait: false, duration: 250, fps: 50, transition: Fx.Transitions.linear});
		kwicks.each(function(kwick, i) {
			kwick.addEvent("mouseenter", function(event) {
				var o = {};
		        var t = {};
				o[i] = {'width': [kwick.getStyle('width').toInt(), szFull], 'border-color': [kwick.getStyle('border-color'), borderFull]}
		        t[i] = {'opacity': [kwicks_img[i].getStyle('opacity'), 0]};
				kwicks.each(function(other, j) {
					if(i != j) {
						var w = other.getStyle('width').toInt();
						if(w != szSmall) o[j] = {'width': [w, szSmall], 'border-color': [kwick.getStyle('border-color'), borderNormal]};
					}
	                if (kwicks_img[j].getStyle("opacity").toInt() != 1) {
	                    t[j] = {'opacity': [kwicks_img[j].getStyle("opacity"), 1]};
	                }
				});
				fx1.start(o);
				fx2.start(t);
			});
		});
		 
		$("cc_kwick").addEvent("mouseleave", function(event) {
			var o = {};
		        var t = {};
			kwicks.each(function(kwick, i) {
				o[i] = {'width': [kwick.getStyle('width').toInt(), szNormal], 'border-color': [kwick.getStyle('border-color'), borderNormal]}
			});
		    kwicks_img.each(function(kwick_img, j) {
		        t[j] = {'opacity': [kwick_img.getStyle("opacity"), 1]};
		    });
			fx1.start(o);
			fx2.start(t);
		});
	
	}
	
	// # edu chart
	if( $defined($('coursetype_chart')) ) {
	
		// onclick event
		$$('table#coursetype_chart tbody tr').addEvent('click', function() {
			var coursetype = this.get('id').substr(11);
			var coursename = this.get('name');
			var uri = baseurl+'/education/kurs/'+coursename;
			window.location.href = uri;
		});
	
	}
	
	// # scroller
	var windowScroll = new Fx.Scroll(window);
	
	// # ccbox
	windowsize = $(window).getScrollSize();
	cc_box = new Element('div', {'id': 'cc_box'});
	cc_box.maximize();
	//cc_box.addEvent('click', function() { cc_box.fade('out'); ajax.empty(); ajax.fade('hide'); });
	cc_box.fade('hide');
	cc_box.inject($('footer'), 'after');

	// # ajax
	ajax = new Element('div', {'id': 'ajax'});
	ajax.fade('hide');
	ajax.inject($('footer'), 'after');
	ajax.get('load', {onComplete: function() {

		if(Browser.Engine.trident) {
			var popup = $$('.popup');
			popup_size = popup[0].getSize();
			var ajaxnewwidth = popup_size.x;
			ajax.setStyle('width', ajaxnewwidth );
		}
		
		ajax.center('vertical');
		cc_box.maximize();
		$$('.cc_box_close, .cancel').addEvent('click', function() { cc_box.fade('out'); ajax.empty(); ajax.fade('hide'); });
		
		if( $defined($('course_signup')) ) {
						
			// get elements
			pages = $$('.page');
			navis = $$('.navigation');
			heads = $$('.head');
			
			// hide elements
			pages.hide();
			navis.hide();
			heads.hide();
			
			// show init head
			signupform_showhead(0);
			
			// show first page
			signupform_showpage(0);			
			
			// next + prev page
			var next = $$('.next');
			var prev = $$('.prev');
			
			next.addEvent('click', function signup_next_page() {										   
				
				var newpage = current_signup_page+1;
				
				// process form
				if(newpage == 5) {					
					var signupform = $('signup');
					var url = ajaxurl+'/?include=signup_processing';
					signupform.set('send', {url: url, method: 'post'});
					signupform.send();
				}

				// company or not?
				var company = $('company').checked;
				if(current_signup_page == 0 && company) {
					// company
					signupform_showhead(1);
					$('is_company_registration').set('value', 1);
				} else if(current_signup_page == 0) {
					// private
					signupform_showhead(2);
					newpage = newpage+1;
					$('is_company_registration').set('value', 0);
				}
				
				signupform_showpage(newpage);
			});
			
			prev.addEvent('click', function signup_prev_page() {
				var newpage = current_signup_page-1;
	
				if(newpage == 0) {
					signupform_showhead(0);
				}

				// company or not?
				var private = $('private').checked;
				if(newpage == 1 && private) {
					newpage = 0;
				}
				
				signupform_showpage(newpage);
			});

			// Click on Text (Company or Private)
			$('text_company').addEvent('click', function(event) {
				$('company').set('checked', 'checked');
			});
			$('text_private').addEvent('click', function(event) {
				$('private').set('checked', 'checked');
			});

			// AGB checked processing
			$('signup_agbs').addEvent('click', function(event) {
				var checked = $('signup_agbs').get('checked');
				if(checked) {
					$('thesignupbutton').addClass('superactive');
					$('thesignupbutton').removeClass('superinactive');
					$('thesignupbutton').cloneEvents(next[0]);
				} else {
					$('thesignupbutton').addClass('superinactive');
					$('thesignupbutton').removeClass('superactive');
					$('thesignupbutton').removeEvents('click');
				}
			});
			
		}
		
	}});

	$$('.showcoursecalendar').addEvent('click', function(event) {
		event.stop();
		// get data
		var course_ID = this.get('id').substr(7);
		var url = ajaxurl+'/?include=calendar&course_ID='+course_ID;
		ajax.load(url);
		// show box
		cc_box.fade(0.7);
		ajax.fade('show');
		windowScroll.toTop();
	});
	
	$$('.course_signup').addEvent('click', function(event) {
		event.stop();
		// get data
		var course_ID = this.get('id').substr(7);
		var url = ajaxurl+'/?include=signup&course_ID='+course_ID;
		ajax.load(url);
		// show box
		cc_box.fade(0.7);
		ajax.fade('show');
		windowScroll.toTop();
	});
	
	// # keyevents
	document.addEvent('keydown',function(event) {

		switch( event.key ) {
			case 'esc':
				cc_box.fade('out'); ajax.empty(); ajax.fade('hide');
				break;
		}
		
	});

});

Element.implement({

	// centers the element
	center: function(where) {
		
		var el = this.getCoordinates();
		var new_top = el.top;
		var new_left = el.left;
		
		if(where == 'vertical') {
			new_left = ((windowsize.x - el.width) / 2).floor();
		} else if(where == 'horizontal') {
			new_top = ((windowsize.y - el.heigth) / 2).floor();
		} else if(where == 'both') {
			new_left = ((windowsize.x - el.width) / 2).floor();
			new_top = ((windowsize.y - el.heigth) / 2).floor();
		}
		
		this.setStyles({
			'top': new_top,
			'left': new_left
		});
	},

	maximize: function() {
		windowsize = $(window).getScrollSize();
		this.setStyles({
			'width': windowsize.x,
			'height': windowsize.y
		});		
	},
	
	// hide element
	hide: function() {
		this.fade('hide');
		this.setStyles({
			'height': 0,
			'width': 0,
			'padding': 0,
			'margin': 0
		});		
	},

	// hide element
	show: function() {
		this.fade('show');
		this.setStyles({
			'height': '',
			'width': '',
			'padding': '',
			'margin': ''
		});		
	}

});

function signupform_showhead(headnum) {

	heads.hide();
	heads[headnum].show();
	head_elements = heads[headnum].getChildren('li');
	
}

function signupform_showpage(pagenum) {

	if(	current_signup_page >= 0 ) {
		// if this page has form fields - validate
		var input_fields = pages[current_signup_page].getElements('input.validate');
		if(input_fields.length > 0 && pagenum > current_signup_page) {
			// validate
			if( validate_form_fields(input_fields) == false) {
				return false;
			}
		}

		// hide old
		pages[current_signup_page].hide();
		navis[current_signup_page].hide();
		if( $defined( head_elements[current_signup_page-1] ) ) head_elements[current_signup_page-1].removeClass('active');
	}
	
	current_signup_page = pagenum;

	// show page
	pages[pagenum].show();
	navis[pagenum].show();

	// mark head
	if(head_elements.length >= pagenum && pagenum > 0) {
		head_elements[pagenum-1].addClass('active');
	}

	return true;
}

function validate_form_fields(fields) {

	var valid = true;
	fields.each(function(item, index){
		
		var error = false;
		var value = item.get('value');
		var id = item.get('id');
		
		if( item.hasClass('validate_email') ) {
			
			// mail adress
			if( check_email(value) == false ) error = true;
			
		} else if( item.hasClass('longtext') || item.hasClass('mediumtext') || item.hasClass('city') ) {
			
			// text field
			if( String(value).length == 0 ) error = true;
			
		} else if( item.hasClass('zip') ) {
			
			// zip
			var num = Number(value);
			if( num == 0 || num.length < 4 ) error = true;
			
		}
	
		if(error && item.hasClass('error') ) {
			
			// still faulty
			valid = false;
		} else if(error) {
			
			// mark field as error and return false
			item.addClass('error');
			var errorarrow = new Element('div', {'id': 'error_'+id, 'class': 'errortext'});
			
			if( item.hasClass('city') ) {
				var zip_element = pages[current_signup_page].getElement('.zip');
				var item_parent = item.getParent();
				var item_parent_errorarrow = item_parent.getElement('.errortext');
				if( !item_parent_errorarrow ) errorarrow.inject(zip_element, 'before');				
			} else {
				errorarrow.inject(item, 'before');
			}
			
			valid = false;
			
		} else if( item.hasClass('error') ) {
			
			// seems to be fine, but has error - remove
			if( $defined($('error_'+id)) ) $('error_'+id).destroy();
			item.removeClass('error');
			
		}
	
	});
	
	return valid;
	
}



function check_email(str) {
	
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
		
	if (str.indexOf(at)==-1){
		return false;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		return false;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false;
	}
	if (str.indexOf(at,(lat+1))!=-1){
		return false;
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false;
	}
	if (str.indexOf(dot,(lat+2))==-1){
		return false;
	}
	if (str.indexOf(" ")!=-1){
		return false;
	}

	return true;			
}


