// 
//  global.js
//  ivcel.com
//  
//  Created by Tom Cunningham on 2011-05-16.
//  Copyright 2011 Paramore (the digital agency) (http://paramore.is/). All rights reserved.
// 

// ---------------------------------------------------------------------

// -------------------------------------
// 	Document Ready
// -------------------------------------

$(document).ready(function(){

	// -------------------------------------
	// Set placeholder text for older broswers
	// -------------------------------------

	$('input, textarea').placehold( 'placeholder' );
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Pre-order Form Validation
	// -------------------------------------

	$('#device-pre-order-form').validate({
		errorLabelContainer: $('#errors'),
		invalidHandler: function(e, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				var message = errors == 1
					? 'Please fix the error above.'
					: 'Please fix the ' + errors + ' errors above.';
				$('.error-message span').html(message);
				$('.error-message').show();
			} else {
				$('.error-message').hide();
			}
		},
		rules: {
			name: {
				required: true
			},
			zip_code: {
				number: true
			},
			phone_number: {
				required: true
			},
			email: {
				required: true,
				email: true
			},
			'preorder_phone[]': {
				required: true,
				minlength: 1
			},
			captcha: "required"
		},
		messages: {
			name: {
				required: "Please provide your <strong>name</strong>."
			},
			zip_code: {
				number: "Please provide a valid <strong>ZIP code</strong>."
			},
			phone_number: {
				required: "Please provide your <strong>phone number</strong>."
			},
			email: {
				required: "Please provide your <strong>email address</strong>.",
				email: "Please provide a valid <strong>email address</strong>."
			},
			'preorder_phone[]': {
				required: "Please select at least one <strong>device</strong>.",
				minlength: "Please select at least one <strong>device</strong>."
			},
			captcha: "Please complete the <strong>CAPTCHA</strong>."
		},
		errorElement: "p"
		/*errorPlacement: function(error, element) {
			var id_is = element.attr("id");
			error.appendTo( $('#fs-'+id_is+' label') );
	   	}*/
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Sales Assistance Form Validation
	// -------------------------------------

	$('#contact-sa-form').validate({
		errorLabelContainer: $('#errors'),
		invalidHandler: function(e, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				var message = errors == 1
					? 'Please fix the error above.'
					: 'Please fix the ' + errors + ' errors above.';
				$('.error-message span').html(message);
				$('.error-message').show();
			} else {
				$('.error-message').hide();
			}
		},
		rules: {
			name: {
				required: true
			},
			phone_number: {
				required: true,
				number: true
			},
			email: {
				email: true
			},
			question: "required",
			comments: "required",
			captcha: "required"
		},
		messages: {
			name: {
				required: "Please provide your <strong>name</strong>."
			},
			phone_number: {
				required: "Please provide your <strong>phone number</strong>.",
				number: "Please provide a valid <strong>phone number</strong>."
			},
			email: {
				email: "Please provide a valid <strong>email address</strong>."
			},
			question: "Please select a <strong>question</strong>.",
			comments: "Please tell us your <strong>comments</strong>.",
			captcha: "Please complete the <strong>CAPTCHA</strong>."
		},
		errorElement: "p"
		/*errorPlacement: function(error, element) {
			var id_is = element.attr("id");
			error.appendTo( $('#fs-'+id_is+' label') );
	   	}*/
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Customer Service Form Validation
	// -------------------------------------

	$('#contact-cs-form').validate({
		errorLabelContainer: $('#errors'),
		invalidHandler: function(e, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				var message = errors == 1
					? 'Please fix the error above.'
					: 'Please fix the ' + errors + ' errors above.';
				$('.error-message span').html(message);
				$('.error-message').show();
			} else {
				$('.error-message').hide();
			}
		},
		rules: {
			name: {
				required: true
			},
			phone_number: {
				required: true,
				number: true
			},
			email: {
				email: true
			},
			current_phone_model: "required",
			department: "required",
			problem: "required",
			comments: "required",
			captcha: "required"
		},
		messages: {
			name: {
				required: "Please provide your <strong>name</strong>."
			},
			phone_number: {
				required: "Please provide your <strong>phone number</strong>.",
				number: "Please provide a valid <strong>phone number</strong>."
			},
			email: {
				email: "Please provide a valid <strong>email address</strong>."
			},
			current_phone_model: "Please tell us your <strong>current phone model</strong>.",
			department: "Please select a <strong>department</strong>.",
			problem: "Please describe your <strong>problem</strong>.",
			comments: "Please tell us your <strong>comments</strong>.",
			captcha: "Please complete the <strong>CAPTCHA</strong>."
		},
		errorElement: "p"
		/*errorPlacement: function(error, element) {
			var id_is = element.attr("id");
			error.appendTo( $('#fs-'+id_is+' label') );
	   	}*/
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Business Solutions Form Validation
	// -------------------------------------

	$('#business-solutions-form').validate({
		errorLabelContainer: $('#errors'),
		invalidHandler: function(e, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				var message = errors == 1
					? 'Please fix the error above.'
					: 'Please fix the ' + errors + ' errors above.';
				$('.error-message span').html(message);
				$('.error-message').show();
			} else {
				$('.error-message').hide();
			}
		},
		rules: {
			name: {
				required: true
			},
			company: {
				required: true
			},
			phone_number: {
				required: true,
				number: true
			},
			email: {
				required: true,
				email: true
			},
			captcha: "required"
		},
		messages: {
			name: {
				required: "Please provide your <strong>name</strong>."
			},
			company: {
				required: "Please provide your <strong>company</strong>."
			},
			phone_number: {
				required: "Please provide your <strong>phone number</strong>.",
				number: "Please provide a valid <strong>phone number</strong>."
			},
			email: {
				required: "Please provide your <strong>email address</strong>.",
				email: "Please provide a valid <strong>email address</strong>."
			},
			captcha: "Please complete the <strong>CAPTCHA</strong>."
		},
		errorElement: "p"
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Search Form Validation
	// -------------------------------------

	$('#search').validate({
		rules: {
			keywords: {
				required: true,
				minlength: 3
			}
		},
		messages: {
			keywords: {
				required: "Enter Keyword",
				minlength: "Keyword must be at least 3 characters"
			}
		}
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// eNews Form Validation
	// -------------------------------------

	$('#enews-signup').validate({
		rules: {
			email_address: {
				required: true,
				email: true
			}
		},
		messages: {
			email_address: {
				required: "Invalid Email Address",
				email: "Invalid Email Address"
			}
		},
		errorElement: "em",
		errorPlacement: function(error, element) {
			error.appendTo( $('div.error') );
	   	}
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Swap Device Photos
	// -------------------------------------

	$('#thumbnails .img a').hover(function(){
		var photoHash = this.hash;
		$('#main-image img').hide();
		$('#main-image img'+photoHash).show();
		return false;
	});
	
/*	$('#thumbnails .img a').mouseout(function(){
	    $('#main-image img').hide();
	    $('#main-image img#photo-0').show();
	    return false;
	});*/
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Show / Hide Hot Apps
	// -------------------------------------

	$('#btn-free-apps').click(function(){
		$(this).addClass('selected');
		$('#btn-paid-apps').removeClass('selected');
		$('#paid-apps').hide();
		$('#free-apps').show();
		return false;
	});
	
	$('#btn-paid-apps').click(function(){
		$(this).addClass('selected');
		$('#btn-free-apps').removeClass('selected');
		$('#free-apps').hide();
		$('#paid-apps').show();
		return false;
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Related Phones Carousel
	// -------------------------------------

	$('.carousel').jCarouselLite({
		btnNext: '#btn-next',
		btnPrev: '#btn-prev',
		visible: 4
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Coverage Map Fancybox
	// -------------------------------------

	$('.img-coverage-map, .link-plan-map a').fancybox();
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Calling Plan Features Fancybox
	// -------------------------------------

	$('.additional-feature').fancybox({
		height: 435,
		scrolling: 'auto',
		titleShow: false,
		type: 'iframe',
		width: 735
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// YouTube Video Fancybox
	// -------------------------------------

	$('a.watch-video').click(function(){
		$.fancybox({
			'padding'		: 0,
			'autoScale'		: false,
			'transitionIn'	: 'none',
			'transitionOut'	: 'none',
			// 'title'			: this.title,
			'titleShow'		: false,
			'width'			: 560,
			// 'height'		: 495,
			'href'			: this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
			'type'			: 'swf',
			'swf'			: {
				'wmode'		: 'transparent',
				'allowfullscreen'	: 'true'
			}
		});
		return false;
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Accordion
	// -------------------------------------

	$('.accordion').accordion({
		header: 'h5.acc-title',
		autoHeight: false,
		collapsible: true,
		active: false
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// FAQs Accordion
	// -------------------------------------

	$('.accordion-faq').accordion({
		header: 'h4',
		autoHeight: false,
		collapsible: true,
		active: false
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Device Filter Drop Down Menus
	// -------------------------------------

	$('.filter-select').click(function(){
		$(this).toggleClass('selected');
		$(this).children('.filter-select-menu').toggle();
	}).mouseleave(function(){
		$(this).removeClass('selected');
		$(this).children('.filter-select-menu').hide();
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Animate the background on the slide indicators, help from Viget.
	// -------------------------------------

	$('#home .slide-selector a').click(function() {
		var offset = $(this).offset();
		var offsetBody = $('#home #slide-selector-wrap').offset(); //find the offset of the wrapping div    
		$('#home #selector-bg').animate(
			{ 
				width: $(this).width(),
				height: $(this).height(),
				left: (offset.left - offsetBody.left)
			},
			{ duration: 350, easing: 'easeInOutCirc' }
		);
		$('#home .slide-selector').removeClass('selected');
		$(this).parent('#home .slide-selector').addClass('selected');
		return false;
	});
	
	// ---------------------------------------------------------------------

	// -------------------------------------
	// Home Page Cycle
	// -------------------------------------

	$('#home #slide-wrap').cycle({
		fx: 'fade',
		speed: 500,
		timeout: 5000,
		next: '#btn-next',
		prev: '#btn-prev',
		startingSlide: 0,
		// slideExpr: 'div.slide',
		before: function(cur, next, opts){
			setTimeout(function() {
				var offset = $('#home .slide-selector a:eq('+opts.currSlide+')').offset();
				var offsetBody = $('#home #slide-selector-wrap').offset(); //find the offset of the wrapping div    
				$('#home #selector-bg').animate(
					{ 
						width: $(this).width(),
						height: $(this).height(),
						left: (offset.left - offsetBody.left)
					},
					{ duration: 500, easing: 'easeInOutCirc' }
				);
				// console.log(opts.currSlide);
			}, 0);
		},
		after: function(cur, next, opts){
			$('#home #slide-selector-wrap')
				.children('#home .slide-selector')
				.removeClass('selected')
			.end();
				$('#home .slide-selector:eq('+opts.currSlide+')')
				.addClass('selected');			
		}		
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Show the clicked slide
	// -------------------------------------

	$('#home #slide-selector-wrap .slide-selector a').click(function(){
		$('#home #slide-wrap').cycle($('#home #slide-selector-wrap .slide-selector a').index(this));
		return false;
	});
	
	// ---------------------------------------------------------------------
	
	// -------------------------------------
	// Pause the slideshow if the mouse is over the actual slide. Resume otherwise.
	// -------------------------------------

	$('#home #slide-wrap .slide').mouseover(function(){
		$('#home #slide-wrap').cycle('pause');
	}).mouseout(function(){
		$('#home #slide-wrap').cycle('resume');
	});
	
	// ---------------------------------------------------------------------

});
