$.fn.infiniteCarousel = function () {
    function repeat(str, num) {
        return new Array( num + 1 ).join( str );
    }
    return this.each(function () {
        var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first'),
            singleWidth = $single.outerWidth(), 
            visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
            currentPage = 1,
            pages = Math.ceil($items.length / visible);            
        // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
        if (($items.length % visible) != 0) {
            $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
            $items = $slider.find('> li');
        }
        // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
        $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
        $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
        $items = $slider.find('> li'); // reselect
        // 3. Set the left position to the first 'real' item
        $wrapper.scrollLeft(singleWidth * visible);
        // 4. paging function
        function gotoPage(page) {
            var dir = page < currentPage ? -1 : 1,
                n = Math.abs(currentPage - page),
                left = singleWidth * dir * visible * n;
            $wrapper.filter(':not(:animated)').animate({
                scrollLeft : '+=' + left
            }, 500, function () {
                if (page == 0) {
                    $wrapper.scrollLeft(singleWidth * visible * pages);
                    page = pages;
                } else if (page > pages) {
                    $wrapper.scrollLeft(singleWidth * visible);
                    // reset back to start position
                    page = 1;
                } 
                currentPage = page;
            });                
            return false;
        }
        $wrapper.after('<a class="arrow-left"></a><a class="arrow-right"></a>');
        // 5. Bind to the forward and back buttons
        $('a.arrow-left', this).click(function () {
            return gotoPage(currentPage - 1);                
        });
        $('a.arrow-right', this).click(function () {
            return gotoPage(currentPage + 1);
        });
        $('a.text-button', this).click(function () {
            return gotoPage(currentPage + 1);
        });
		 // create a public interface to move to a specific page
        $(this).bind('goto', function (event, page) {
            gotoPage(page);
        });
    });  
};
$(document).ready(function() {
	$('.carousel').infiniteCarousel();
//	$('#app_demo').hide();
	$('#user-mail').focus(function(){
		$('#user-mail').parents('.field-outline-error:eq(0)').attr("class","field-outline");
//		$('#app_demo').fadeOut('fast',function(){
//			$('#login_demo').fadeIn('fast');
//		});
	});
	$('#password').focus(function(){
  		$('#password').parents('.field-outline-error:eq(0)').attr("class","field-outline");
//		$('#app_demo').fadeOut('fast',function(){
//			$('#login_demo').fadeIn('fast');
//		});
	});
	$('#user-name').focus(function(){
//		$('#login_demo').fadeOut('fast', function(){
//			$('#app_demo').fadeIn('fast');
//		});
	}); 
	$('#group-name').focus(function(){
//		$('#login_demo').fadeOut('fast', function(){
//			$('#app_demo').fadeIn('fast');
//		});
	}); 
	$('#group-name').keyup(function (){
		$('#your-group').attr('innerHTML',$(this).val().replace(/[^a-zA-Z0-9\s]/g,''));
//		$(this).val($('#your_group').attr('innerHTML'));
	});
	$('#user-name').keyup(function (){
		$('#your-name').attr('innerHTML',$(this).val().replace(/[^a-zA-Z0-9\s]/g,''));
//		$(this).val($('#your_name').attr('innerHTML'));
	});
/*	$('#user_mail').keyup(function (){
		$('#your_mail').attr('innerHTML',$(this).val());
	});*/
/*	$('#password').keyup(function (){
		masked=$(this).val().replace(/./g,'*');
		$('#your_pass').attr('innerHTML',masked);
	});*/
	$('#user-mail').blur(function(){
		if (document.getElementById("user-mail").value!=''){
			g=false;
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!filter.test($(this).val())) {			  
				$('#user-mail').parents('.field-outline:eq(0)').attr("class","field-outline-error");
			} else { 
				$('#user-mail').parents('.field-outline-error:eq(0)').attr("class","field-outline");
				$.post("/signup/MailCheck.php",'&mail='+encodeURIComponent($(this).val()),function(data){CheckUserMail(data)});
			}
		}
	});
});
var g=false;
function CheckUserMail(data){
	if (data){
		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!filter.test($('#user-mail').val())) {			  
			$('#user-mail').parents('.field-outline:eq(0)').attr("class","field-outline-error");
		} else { 
			$('#user-mail').parents('.field-outline-error:eq(0)').attr("class","field-outline");
			g=true;
		}
	} else {
		$('#user-mail').parents('.field-outline:eq(0)').attr("class","field-outline-error");
	}
}
function submit_signup(){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (document.getElementById("group-name")){
		if (document.getElementById("group-name").value!=''){
			a=1;
		} else {
			a=0;
		}
	} else {
		a=1;
	}
	if((filter.test($('#user-mail').val()))&&(document.getElementById("password").value!='')&&(document.getElementById("user-name").value!='')&&(a)&&(g)) {
		document.getElementById('sigup-form').submit();
	}
}
