$j(document).ready(function() {

	//delay function
	jQuery.fn.delay = function(time,func){
		this.each(function(){
			setTimeout(func,time);
		});

		return this;
	};
	
	jQuery.extend({
		random: function(X) {
		    return Math.floor(X * (Math.random() % 1));
		},
		randomBetween: function(MinV, MaxV) {
		  return MinV + jQuery.random(MaxV - MinV + 1);
		}
	});
	
// Home Image functionality -------------------------------------------------		
	
	var homeimg = ($j.randomBetween(1, 3));
	
	if(homeimg==1){
		$j('#home-img-2').css({'display' : 'none'});
		$j('#home-img-3').css({'display' : 'none'});
	} else if(homeimg==2){
		$j('#home-img-1').css({'display' : 'none'});
		$j('#home-img-3').css({'display' : 'none'});
	} else if(homeimg==3){
		$j('#home-img-1').css({'display' : 'none'});
		$j('#home-img-2').css({'display' : 'none'});
	}
	var homeimgtimer = 5000;
	
	function homeimgscroll() {
		if(homeimg==1){
			homeimg++;
			$j(this).delay(homeimgtimer,function(){
				$j('#home-img-2').fadeIn(1000);
				$j(this).delay(1000,function(){
					$j('#home-img-1').css({'display' : 'none'});
					homeimgscroll();
				});
			});
		} else if(homeimg==2) {
			homeimg++;
			$j(this).delay(homeimgtimer,function(){
				$j('#home-img-3').fadeIn(1000);
				$j(this).delay(1000,function(){
					$j('#home-img-2').css({'display' : 'none'});
					homeimgscroll();
				});
			});
		} else if(homeimg==3) {
			homeimg=1;
			$j(this).delay(homeimgtimer,function(){
				$j('#home-img-1').css({'display' : 'block'});
				$j('#home-img-3').fadeOut(1000);
				$j(this).delay(1000,function(){
					homeimgscroll();
				});
			});
		} else {
			homeimg=1;
			homeimgscroll();
		}
	}
	
	homeimgscroll();
	
// Services page functionality ----------------------------------------------	
	$j('.close-btn').css({'display' : 'none'});
	$j('.services-info').css({'display' : 'none'});
	
	$j('#services-list li').addClass('closed');
	$j('#services-list li li').removeClass('closed');
	
	$j('#closeall').addClass('disabled');
	
	$j('.services-info-inner').css({ "display" : "block" });

	if(window.location.hash) {
		//slides down the content for the specified service
		if(window.location.hash != "#back-to-top") {
			var location = window.location.hash;
			var target = $j(window.location.hash);
		    if (target.length)
		    {
		        var top = target.offset().top;
		        $j('html,body').animate({scrollTop: top}, 800);
				$j('#openall').removeClass('disabled');
				$j('#closeall').removeClass('disabled');
		    }
			$j(this).delay(400,function(){
				$j(location + ' .services-info-inner').css({});
				$j(location + ' .services-info').css({'height' : '0px', 'visibility' : 'visible', 'display' : 'block'});
				//$j(location + ' .services-info-container').css({'visibility' : 'visible'});
				var firstheight = $j(location + ' .services-info-container').height();
				var thisheight = $j(location + ' .services-info-inner').height();
				$j(location + ' .services-info').css({'height' : 'auto', 'display' : 'none'});
				if(firstheight==thisheight) {
					$j(location + ' .services-info-container').css({'height' : thisheight});
				};
				$j(location + ' .services-info-inner').css({});
				$j(location + ' .services-heading a').toggle();
				$j(location + ' .services-info').slideDown("slow");
				$j(location).removeClass('closed');
				$j(location).addClass('open');
			});
		}
	};
	
	$j('.viewservices-btn').click(function(event) {
		event.preventDefault();
		var location = $j(this).attr("href");
		$j('#openall').removeClass('disabled');
		$j('#closeall').removeClass('disabled');
		$j(location + ' .services-info').stop();
		$j(location + ' .services-info-container').stop();
		$j(location + ' .services-info-inner').stop();
		$j('.close-btn').stop();
		$j(location + ' .services-info').css({'height' : '0px', 'visibility' : 'visible', 'display' : 'block'});
		//$j(location + ' .services-info-container').css({'visibility' : 'visible'});
		var firstheight = $j(location + ' .services-info-container').height();
		var thisheight = $j(location + ' .services-info-inner').height();
		$j(location + ' .services-info').css({'height' : 'auto', 'display' : 'none'});
		if(firstheight==thisheight) {
			$j(location + ' .services-info-container').css({'height' : thisheight});
		};
		$j(location + ' .services-heading a').toggle();
		$j(location + ' .services-info').slideDown("slow");
		$j(location).removeClass('closed');
		$j(location).addClass('open');
		
		$j('#closeall').removeClass('disabled');
		var status1 = $j('#digital-printing').attr('class');
		var status2 = $j('#binding-laminating-finishing').attr('class');
		var status3 = $j('#plan-printing').attr('class');
		var status4 = $j('#copying').attr('class');
		var status5 = $j('#large-format-poster-banners').attr('class');
		var status6 = $j('#scanning').attr('class');
		if(status1=="open" && status2=="open" && status3=="open" && status4=="open" && status5=="open" && status6=="open") {
			$j('#openall').addClass('disabled');
		}
		
		//$j(this).delay(500,function(){
		//	$j(location + ' .services-info-inner').animate({}, 300 );
		//});
	});
	
	$j('.close-btn').click(function(event) {
		event.preventDefault();
		var location = $j(this).attr("href");
		$j(location + ' .services-info').stop();
		$j(location + ' .services-info-container').stop();
		$j(location + ' .services-info-inner').stop();
		$j(location + ' .services-heading a').toggle();
		$j(location).removeClass('open');
		$j(location).addClass('closed');
		
		$j('#openall').removeClass('disabled');
		var status1 = $j('#digital-printing').attr('class');
		var status2 = $j('#binding-laminating-finishing').attr('class');
		var status3 = $j('#plan-printing').attr('class');
		var status4 = $j('#copying').attr('class');
		var status5 = $j('#large-format-poster-banners').attr('class');
		var status6 = $j('#scanning').attr('class');
		if(status1=="closed" && status2=="closed" && status3=="closed" && status4=="closed" && status5=="closed" && status6=="closed") {
			$j('#closeall').addClass('disabled');
		}
		
		$j(this).delay(300,function(){
			$j(location + ' .services-info').slideUp("slow");
		});
	});
	
	$j('#services-list-nav a').click(function(event) {
		event.preventDefault();
		var location = $j(this).attr("href");
		$j('#openall').removeClass('disabled');
		$j('#closeall').removeClass('disabled');
		var display = $j(location + ' .services-info').css("display");
		if(display == "none") {
			$j(location + ' .services-info').stop();
			$j(location + ' .services-info-container').stop();
			$j(location + ' .services-info-inner').stop();
			$j('.close-btn').stop();
			$j(location + ' .services-info').css({'height' : '0px', 'visibility' : 'visible', 'display' : 'block'});
			var firstheight = $j(location + ' .services-info-container').height();
			var thisheight = $j(location + ' .services-info-inner').height();
			$j(location + ' .services-info').css({'height' : 'auto', 'display' : 'none'});
			if(firstheight==thisheight) {
				$j(location + ' .services-info-container').css({'height' : thisheight});
			};
			$j(location + ' .services-heading a').toggle();
			$j(location + ' .services-info').slideDown("slow");
			$j(location).removeClass('closed');
			$j(location).addClass('open');
			
		};
		var target = $j(location);
	    if (target.length)
	    {
	        var top = target.offset().top;
	        $j('html,body').animate({scrollTop: top}, 500);
	    }
	});
	
	$j('#backtotop a').click(function(event) {
		$j('html,body').animate({scrollTop: 0}, 500);
	});
	
	$j('#openall').click(function(event) {
		event.preventDefault();
		$j('.closed .services-info').stop();
		$j('.closed .services-info-container').stop();
		$j('.closed .services-info-inner').stop();
		$j('.closed .services-heading a').toggle();
		$j('#closeall').removeClass('disabled');
		$j('#openall').addClass('disabled');
		$j('.closed .services-info').slideDown("slow");
		$j('.closed').addClass('open');
		$j('.open').removeClass('closed');

	});
	
	$j('#closeall').click(function(event) {
		event.preventDefault();
		$j('.open .services-info').stop();
		$j('.open .services-info-container').stop();
		$j('.open .services-info-inner').stop();
		$j('.open .services-heading a').toggle();
		$j('#openall').removeClass('disabled');
		$j('#closeall').addClass('disabled');
	
		$j('.open').addClass('closed');
		$j('.open').removeClass('open');

	});

// Form Validation for Services and Free Quote pages --------------------------
	
	//setting variables
	var message_shown = false;
	var message_shown2 = false;
	var message_shown3 = false;
	
	// colours for the javascript to use
	var error_border = "#FFB6AD";
	var error_background = "#FFECE5";
	
	var default_border = "#cecece";
	var default_background = "#ffffff"
	
// Contact form validation ----------------------------------------------------
	$j('#submit-btn').click(function(event) {
		//event.preventDefault();
		var to_fullname = $j('#fullname').val();
		var to_email = $j('#email').val();
		var to_message = $j('#emailmessage').val();

		
		$j("#cf_error3 p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_error3").slideUp('slow');
		});
		
		//checks the value of the required fields
		
		if(to_fullname) { //checks full name
			$j('#fullname').css({'background-color' : default_background, 'border-color' : default_border});
			var name_present = true;
		} else {
			$j('#fullname').css({'background-color' : error_background, 'border-color' : error_border});
			var name_present = false;
		}
		
		if(to_email) { //checks email
			if(to_email != 0) {
				if(isValidEmailAddress(to_email)) { //validates email format
					$j('#email').css({'background-color' : default_background, 'border-color' : default_border});
					var email_present = true;
				} else {
					$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
					var email_present = false;
				}
			}
		} else {
			$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
		}

		if(to_message) { //checks the message
			$j('#emailmessage').css({'background-color' : default_background, 'border-color' : default_border});
			var message_present = true;
		} else {
			$j('#emailmessage').css({'background-color' : error_background, 'border-color' : error_border});
			var message_present = false;
		}
		
		if(name_present && email_present && message_present) {
			//send email
			$j("#cf_error p").fadeOut('slow');
			$j(this).delay(400,function(){
				$j("#cf_error").slideUp('slow');
			});
			return this;
		} else {
			//return an error message
			if(message_shown==false) {
				message_shown = true;
				$j("#enquiry").after("<div id='cf_error'><p style='display:none;'>Please fill in all required fields marked with an asterix (*), and make sure your email address is valid.</p></div>");
				$j("#cf_error").slideDown('slow');
				$j(this).delay(400,function(){
					$j("#cf_error p").fadeIn('slow');
				});
			}
			return false;
		}
	});

// File Upload form validation ----------------------------------------------------
	$j('#btn-uploadfiles').click(function(event) {
		//event.preventDefault();
		var to_fullname = $j('#fullname').val();
		var to_company = $j('#company').val();
		var to_number = $j('#number').val();
		var to_jobnames = $j('#jobnames').val();
		var to_email = $j('#email').val();

		
		$j("#cf_error3 p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_error3").slideUp('slow');
		});
		
		//checks the value of the required fields
		
		if(to_fullname) { //checks full name
			$j('#fullname').css({'background-color' : default_background, 'border-color' : default_border});
			var name_present = true;
		} else {
			$j('#fullname').css({'background-color' : error_background, 'border-color' : error_border});
			var name_present = false;
		}
		
		if(to_company) { //checks full name
			$j('#company').css({'background-color' : default_background, 'border-color' : default_border});
			var company_present = true;
		} else {
			$j('#company').css({'background-color' : error_background, 'border-color' : error_border});
			var company_present = false;
		}
		
		if(to_number) { //checks full name
			$j('#number').css({'background-color' : default_background, 'border-color' : default_border});
			var number_present = true;
		} else {
			$j('#number').css({'background-color' : error_background, 'border-color' : error_border});
			var number_present = false;
		}
		
		if(to_jobnames) { //checks full name
			$j('#jobnames').css({'background-color' : default_background, 'border-color' : default_border});
			var jobnames_present = true;
		} else {
			$j('#jobnames').css({'background-color' : error_background, 'border-color' : error_border});
			var jobnames_present = false;
		}
		
		if(to_email) { //checks email
			if(to_email != 0) {
				if(isValidEmailAddress(to_email)) { //validates email format
					$j('#email').css({'background-color' : default_background, 'border-color' : default_border});
					var email_present = true;
				} else {
					$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
					var email_present = false;
				}
			}
		} else {
			$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
		}
		
		if(name_present && email_present && company_present && number_present && number_present) {
			//send email
			$j("#cf_error p").fadeOut('slow');
			$j(this).delay(400,function(){
				$j("#cf_error").slideUp('slow');
			});
			return this;
		} else {
			//return an error message
			if(message_shown==false) {
				message_shown = true;
				$j("#enquiry").after("<div id='cf_error'><p style='display:none;'>Please fill in all required fields marked with an asterix (*), and make sure your email address is valid.</p></div>");
				$j("#cf_error").slideDown('slow');
				$j(this).delay(400,function(){
					$j("#cf_error p").fadeIn('slow');
				});
			}
			return false;
		}
	});

// Free Quote form validation ----------------------------------------------------
	$j('#submitrequest').click(function(event) {
		//event.preventDefault();
		var to_fullname = $j('#fullname').val();
		var to_email = $j('#email').val();
		var to_message = $j('#emailmessage').val();


		$j("#cf_error3 p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_error3").slideUp('slow');
		});

		//checks the value of the required fields

		if(to_fullname) { //checks full name
			$j('#fullname').css({'background-color' : default_background, 'border-color' : default_border});
			var name_present = true;
		} else {
			$j('#fullname').css({'background-color' : error_background, 'border-color' : error_border});
			var name_present = false;
		}

		if(to_email) { //checks email
			if(to_email != 0) {
				if(isValidEmailAddress(to_email)) { //validates email format
					$j('#email').css({'background-color' : default_background, 'border-color' : default_border});
					var email_present = true;
				} else {
					$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
					var email_present = false;
				}
			}
		} else {
			$j('#email').css({'background-color' : error_background, 'border-color' : error_border});
		}

		if(to_message) { //checks the message
			$j('#emailmessage').css({'background-color' : default_background, 'border-color' : default_border});
			var message_present = true;
		} else {
			$j('#emailmessage').css({'background-color' : error_background, 'border-color' : error_border});
			var message_present = false;
		}

		if(name_present && email_present && message_present) {
			//send email
			$j("#cf_error p").fadeOut('slow');
			$j(this).delay(400,function(){
				$j("#cf_error").slideUp('slow');
			});
			return this;
		} else {
			//return an error message
			if(message_shown==false) {
				message_shown = true;
				$j("#enquiry").after("<div id='cf_error'><p style='display:none;'>Please fill in all required fields marked with an asterix (*), and make sure your email address is valid.</p></div>");
				$j("#cf_error").slideDown('slow');
				$j(this).delay(400,function(){
					$j("#cf_error p").fadeIn('slow');
				});
			}
			return false;
		}
	});
	
	//validates email address
	function isValidEmailAddress(emailAddress) {
		var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
		return pattern.test(emailAddress);
	}
 
	$j('#cf_sent .close').click(function(event) {
		event.preventDefault();
		$j("#cf_sent p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_sent").slideUp('slow');
		});
	});

	$j('#cf_error2 .close').click(function(event) {
		event.preventDefault();
		$j("#cf_error2 p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_error2").slideUp('slow');
		});
	});

	$j('#cf_error3 .close').click(function(event) {
		event.preventDefault();
		$j("#cf_error3 p").fadeOut('slow');
		$j(this).delay(400,function(){
			$j("#cf_error3").slideUp('slow');
		});
	});
	
});
