$.noConflict();
jQuery(document).ready(function($) {

    // arrange the footer
    var footerNav = $('<ul id="footer-nav"></ul>');
    var footerContents = $("#footer-content-wrap .footer-content");

    footerContents.find("> h1").each(function(i){
	var $this = $(this);
	footerNav.append('<li>'+$this.attr('title')+'</li>');
	if(i==0){footerNav.append('<span class="pipe">|</span>');}
    });
    $("#footer-wrap").prepend(footerNav);

    //  =================================== Scroller =============================================
	
    var viewWrapper = $('<div id="terapeut-view-wrap"><div id="terapeut-view"><div id="terapeut-mask" class="clearfix"></div></div></div>');
    var alla = $(".terapeut",footerContents);
    var tallest = 100;
    alla.each(function(){
	var h = $(this).height();
	if (h > tallest) { tallest = h; }
    });
    alla.css('height',tallest+'px');
    alla.wrapAll(viewWrapper);

    var view = $('#terapeut-view');
    view.before('<div id="terapeut-nav-forward" class="terapeut-nav">&raquo;</div><div id="terapeut-nav-backward" class="terapeut-nav">&laquo;</div>');

    var unit = alla.outerWidth(true);
    var doubleUnit = 2*unit;
    
    var mask = $('#terapeut-mask');
    var antal = alla.size();
    if (antal % 2 == 0){ var multiplier = (antal/2); } else { var multiplier = (antal+1)/2; }
    //if (multiplier % 2 > 0){ multiplier = multiplier + 1; }
    //console.log( antal + ' - multiplier '+multiplier);
    var maskWidth = multiplier * unit;
    mask.css('width', maskWidth+'px');

    var back = $("#terapeut-nav-backward");
    var forward = $("#terapeut-nav-forward");
    var duration = 1000;
    var easing = 'linear';
    
    back.hide();
    if( doubleUnit == maskWidth ){ forward.hide(); }

//     console.log('mask width :'+maskWidth);
//     console.log('double unit :'+doubleUnit);
//     console.log('mask position :'+mask.position().left);

    forward.click(function(){
	//console.log('mask position before :'+mask.position().left);
	if( (doubleUnit - mask.position().left) < maskWidth){
	    mask.animate({left:'-='+doubleUnit+'px'},duration,easing,function(){ back.show(); });
	} else {
	    mask.animate({left:'0px'},duration,easing,function(){ back.hide(); });
	}
    });

    back.click(function(){
	mask.animate({left:'+='+doubleUnit+'px'},duration,easing,function(){
 	    if( mask.position().left == 0){ back.hide(); }
	});
    });


    //  =================================== Footer =============================================
    $("#footer").addClass('fixed');
    footerContents.hide();

    var footerTriggers = footerNav.find("li");
    footerTriggers.each(function(i){
	var $this = $(this);
	var myContent = footerContents.eq(i);
	$this.click(function(){
	    $this.toggleClass('selected');	
	    myContent.slideToggle('slow');
	});
    });
    footerTriggers.first().addClass('first');


    //  =================================== Email =============================================
    $('form#contact-us label').each(function(){

	// style the label with JS for progressive enhancement
	$(this).addClass('sliding');
	$(this).next().next().click(function(){
	    $(this).html('').removeClass('sliding');
	    $(this).prev().focus();
	});
	var inputval = $(this).next().val();

	// grab the label width, then add 5 pixels to it
	var labelwidth = $(this).width();
	var labelmove = labelwidth + 5 +'px';

	// onload, check if a field is filled out, if so, move the label out of the way
	if(inputval !== ''){
		$(this).stop().animate({ 'left':'-'+labelmove }, 1);
	}    	

	// if the input is empty on focus move the label to the left
	// if it's empty on blur, move it back
	$('input').focus(function(){
	    var label = $(this).prev('label');
	    var width = $(label).width();
	    var adjust = width + 5 + 'px';
	    var value = $(this).val();
	    
	    if(value == ''){
		label.stop().animate({ 'left':'-'+adjust }, 'fast');
	    } else {
		label.css({ 'left':'-'+adjust });
	    }
	    $(this).removeClass('alert');
	    $(this).next().html('').removeClass('sliding');
	}).blur(function(){
	    var label = $(this).prev('label');
	    var value = $(this).val();
	    
	    if(value == ''){
		label.stop().animate({ 'left':'5px' }, 'fast');
	    }	
	});

	$('textarea').focus(function(){
	    var label = $(this).prev('label');
	    var adjust = label.height() + 2 + 'px';
	    var value = $(this).val();
	    
	    if(value == ''){ label.stop().animate({ 'top':'-'+adjust }, 'fast'); }
	    else { label.css({ 'top':'-'+adjust }); }
	    $(this).removeClass('alert');
	    $(this).next().html('').removeClass('sliding');
	}).blur(function(){
		var label = $(this).prev('label');
		var value = $(this).val();
		if(value == ''){ label.stop().animate({ 'top':'6px' }, 'fast'); }	
	});

    }); // End "each" statement

    // ==============================================
    var answer = $('<div id="answer"></div>'); 
    $('#footer #comment').append(answer);

    // ==============================================
    var $name = $('input#name');
    var $email = $('input#email');
    var $tel = $('input#tel');
    var $company = $('input#company');
    var $message = $('textarea#comments');
    var $send = $('input#send');
    var $form = $('form#contact-us');

    function sendFadeTo(fade){
	$name.fadeTo('slow',fade);
	$email.fadeTo('slow',fade);
	$tel.fadeTo('slow',fade);
	$company.fadeTo('slow',fade);
	$message.fadeTo('slow',fade);
	$send.fadeTo('slow',fade);
    }

    function sendReset(){
 	$name.val('').trigger('blur'); $email.val('').trigger('blur'); $tel.val('').trigger('blur'); $company.val('').trigger('blur'); $message.val('').trigger('blur');
	answer.html('');
	sendFadeTo(1);
    }

//     $name.trigger('focus').val('John');
//     $email.trigger('focus').val('daz@it.uu.se');
//     $tel.trigger('focus').val('+33 345 52');
//     $company.trigger('focus').val('world');
//     $message.trigger('focus').val('hello');

    function sendEmailOnClick(){

	function flash( obj ){ obj.addClass('alert'); setTimeout(function(){ obj.removeClass('alert'); },100); }
	function shakeError( obj ){ flash( obj ); setTimeout( function(){flash( obj ); },200); }
	function checkEmail(){ var validEmail = $email.val().match("^[A-z0-9][\\w.-]*@[A-z0-9][\\w.-]+\\.[A-z0-9]{2,6}$");if(!validEmail){shakeError($email);}return validEmail;}
	function checkTel(){ var validTel = $tel.val().match("^(\\d|\\+)(\\d| )*$"); if(!validTel) { shakeError( $tel ); } return validTel; }
	function checkField( obj ){ var hasText = ($.trim(obj.val()).length > 0); if(!hasText){ shakeError( obj ); } return hasText; }

	// Check for errors
	var oktopost = checkField( $name );
	oktopost     = checkEmail()           && oktopost;
	oktopost     = checkField( $message ) && oktopost;
	//oktopost   = checkField( $company ) && oktopost;
	//oktopost   = checkTel()             && oktopost;

	oktopost=true;

	if(oktopost){
	    // Remove the send handlers, not to click twice
	    //$send.bind('click', function(){return false;});

	    // Display sending
	    answer.html('Skickar...<br /><img src="themes/aa/images/loading.gif" alt="" />');
	    sendFadeTo(0.33);
	    
	    // Send email
	    $.post("themes/aa/post.php",
		   { 
		       name:$name.val(),
		       email:$email.val(),
		       comments:$message.val(),
		       tel:$tel.val(),
		       company:$company.val(),
		       org:$('input#org').val(),
		       ajax:true // I pass this extra one to return a small display, not the thanks.html
		   },
		   // Upon success for the request
		   function(data){
		       //console.log("Error? "+data.error + "Reason: "+data.reason);
		       if(data.error){
			   
			   $.each(data.reason, function(err, err_text) { 
			       //console.log("Error "+err+ ": "+err_text);
			       $('#error-'+err).addClass('sliding').html('<span>'+err_text+'</span>');
			   });
			   sendFadeTo(1);
			   answer.html('');
			   //$send.bind('click', sendEmailOnClick);
			   return false;
		       } else {

			   setTimeout(function(){  answer.html(data.reason); }, 2000); 
			   setTimeout(function(){ 
			       if(data.sent){ sendReset(); }
			       else { sendFadeTo(1); }
			       //$send.bind('click', sendEmailOnClick);
			   }, 4000 );
			   return false;
		       }
		   },
		   "json" // Format of the answer. Programmed in post.html
		  );
	} // !oktopost
	return false; // I don't want to submit really...
    }

    // Assign the button action
    $send.click(sendEmailOnClick);


    // hack
    //footerTriggers.last().trigger('click');

});
