var globalElement = '#home'; //element to scroll to

var globalStartElement = '#home';

var elemWidthB = 1650;

var	elemHeightB = 1000;

var elemWidthS = 800;

var	elemHeightS = 600;

var centerColumn = 8;

function getGlobalElementFromUrl(){
	var url_str = '' + window.location;
	var index_gl = url_str.indexOf('#');
	var glElem = '';
	if (index_gl != -1) {
		glElem = url_str.substring(index_gl+1);
	}
	return glElem;
}

$(document).ready(function() {

var autoGlobalElement = getGlobalElementFromUrl();
//alert(autoGlobalElement);
//Pre load images

var img24 = new Image();
img24.src = "./img/down-red.png";  

var img25 = new Image();
img25.src = "./img/right-red.png";  

var img26 = new Image();
img26.src = "./img/left-red.png";  

var img27 = new Image();
img27.src = "./img/top-red.png";  

var img1 = new Image();
img1.src = "./img/request_marketing.jpg";

var img2 = new Image();
img2.src = "./img/left-image-part_rollover.jpg"; 

var img3 = new Image();
img3.src = "./img/gentex_marketing.jpg"; 

var img4 = new Image();
img4.src = "./img/right-image-part_rollover.jpg"; 

var img5 = new Image();
img5.src = "./img/right-image-part.jpg"; 

var img6 = new Image();
img6.src = "./img/left-image-part.jpg"; 

var img7 = new Image();
img7.src = "./img/7_15_gx_directmail.jpg"; 

var img8 = new Image();
img8.src = "./img/7_11_lw_brochure_web.jpg"; 

var img9 = new Image();
img9.src = "./img/7_5_gc_advertisements.jpg"; 

var img10 = new Image();
img10.src = "./img/7_7_fah_web_directmail.jpg"; 

var img11 = new Image();
img11.src = "./img/MMsiteLG.jpg"; 

var img12 = new Image();
img12.src = "./img/7_13_fogg_dvd_website.jpg"; 

var img13 = new Image();
img13.src = "./img/7_14_plascore_photography.jpg"; 

var img14 = new Image();
img14.src = "./img/18_9_thetenthpin_logo.jpg"; 

//End of pre load images

	$("div.nav_bar").css({display: "none"});
	$("div.nav_bar").css({opacity: "hide"});

	$('.a-scroll').css({opacity: 0});

	checkWindowSize(); //repeats

	$.scrollTo.defaults.axis = 'xy'; 

	$.scrollTo($(globalElement), 0); //everything begins from the home page

	function ajaxLoad() { 

		$.ajax({

			url: "table.html",

			type: "GET",

		    async: true,

			//cache: false,

			dataType: 'html',

		    complete: function(text){

				//alert("content loaded");

				var tableBody = $("table.main")[0].tBodies[0];	

				$(tableBody).append(text.responseText);

				//alert('appended');

				var parentSize = getInnerWH();

				centerElement(parentSize); //center all new elements

				$.scrollTo($(globalElement), 0); //everything begins from the home page

				$("div.nav_bar").animate({opacity: "show"}, 2000); //show menu, now we can scroll

				$('.a-scroll').animate({opacity: 1}, 2000);

				$('.a-scroll').click(function(e){

					var newElement = $(this).attr('rel');			

					globalElement = '#'+newElement;
					
					globalStartElement = globalElement; //remember where we start next animation 

					$.scrollTo($(globalElement), 2*startEndSpeed, {easing:'easeInOutExpo'}, { queue:true }); //scroll

					return false;

				});

				logoHover();

				longScroll();
				
				$('.nav_menu_items a[rel='+autoGlobalElement+']').click();

			}

			

		});

	};

	window.setTimeout(ajaxLoad, 500);

	function findCenterElementId(el) {

		var parent = $(el);

		while (!$(parent).hasClass('element'))

	    {

		    parent = $(parent).parent();

	    }

		//find center element

		var currTD = $(parent).parent(); //TD of the current element

		var rowNumb = $(currTD).attr('cellIndex'); //the number of this TD (column)

		if (rowNumb != centerColumn) {

			var currTR = $(currTD).parent(); //TR of the current TD (current row)

			var elements = $(currTR).attr('cells'); //elements of the TR

			var element = $(elements).get(centerColumn); //get the TD - the target is there

			var divElem = $(element).find('div.element'); //get div

			var divID = $(divElem).attr('id');

			var str = '#'+divID;

			return str;

		}

		return '';

	}

	function defineSpeed(elFrom, elTo) {

		var parentFrom = $(elFrom);

		while (!$(parentFrom).hasClass('element'))

	    {

		    parentFrom = $(parentFrom).parent();

	    }

		

		var parentTo = $(elTo);

		while (!$(parentTo).hasClass('element'))

	    {

		    parentTo = $(parentTo).parent();

	    }

		

		var currTDFrom = $(parentFrom).parent(); //TD of the current element

		var rowNumbFrom = $(currTDFrom).attr('cellIndex'); //the number of this TD (column)

		var currTDTo = $(parentTo).parent(); //TD of the current element

		var rowNumbTo = $(currTDTo).attr('cellIndex'); //the number of this TD (column)

		if ((rowNumbTo - rowNumbFrom) == 0) {

			var currTRFrom = $(currTDFrom).parent(); //TR of the current TD (current row)

			var currTRTo = $(currTDTo).parent(); //TR of the current TD (current row)

			var rowIndexFrom = $(currTRFrom).attr('rowIndex'); 

			var rowIndexTo = $(currTRTo).attr('rowIndex'); 

			return (rowIndexFrom - rowIndexTo);

		} else {

			return (rowNumbFrom - rowNumbTo);

		}

		

	}

	function getTopH(speed) {

		var windowHeight = getInnerWH();

		var topH1,topH2, topH3;

		if (speed < 0) {

			topH1 = '+='+windowHeight[0]+'px';

			topH2 = '+='+(Math.abs(speed)-2)*windowHeight[0]+'px';

			topH3 = '+='+(Math.abs(speed)-1)*windowHeight[0]+'px';

		} else {

			topH1 = '-='+windowHeight[0]+'px';

			topH2 = '-='+(Math.abs(speed)-2)*windowHeight[0]+'px';

			topH3 = '-='+(Math.abs(speed)-1)*windowHeight[0]+'px';

		}

		return [topH1, topH2, topH3];

	}

	function getLeftW(speed) {

		var windowWidth = getInnerWH();

		var leftH1, leftH2;

		if (speed < 0) {

			leftH1 = '+='+windowWidth[1]+'px';

			leftH2 = '+='+(Math.abs(speed)-1)*windowWidth[1]+'px';

			leftH3 = '+='+(Math.abs(speed)-2)*windowWidth[1]+'px';

		} else {

			leftH1 = '-='+windowWidth[1]+'px';

			leftH2 = '-='+(Math.abs(speed)-1)*windowWidth[1]+'px';

			leftH3 = '-='+(Math.abs(speed)-2)*windowWidth[1]+'px';

		}

		return [leftH1, leftH2, leftH3];

	}

	// all links

	function longScroll(){

		$('.a-scroll-long').click(function(e){
		
			$('.nav_bar_hidden').css("display","block");
			
			var totalScrollSpeed = 0;

			var middleSpeedVertical = middleCoef*getInnerWH()[0];

			var middleSpeedHorizontal = middleCoef*getInnerWH()[1];

			

			var startSpeedVertical = startEndSpeed;

			var startSpeedHorizontal = startEndSpeed;

			var endSpeedVertical = startEndSpeed;

			var endSpeedHorizontal = startEndSpeed;

		
			
			globalStartElement = globalElement; //remember where we start next animation 

			globalElement = '#' + $(this).attr('rel');

			var targetLink = $(globalElement);

			var id1 = findCenterElementId($(globalStartElement));

			var id2 = findCenterElementId(targetLink);

			

			if (id1 != '') {

				//we are not in the center

				if (id1 == globalElement) {

					//we are going to stop at the center element

					var speed1 = defineSpeed($(globalStartElement), $(id1));

					var leftH = getLeftW(speed1);
					
					totalScrollSpeed += startSpeedHorizontal;
					
					totalScrollSpeed += (Math.abs(speed1)-2)*middleSpeedHorizontal;
					
					totalScrollSpeed += endSpeedHorizontal;

					$.scrollTo( {left: leftH[0]}, startSpeedHorizontal, {

						axis:'x', 

						easing:'easeInExpo', 

						onAfter:function(){
						
							

							$.scrollTo( {left: leftH[2]}, (Math.abs(speed1)-2)*middleSpeedHorizontal , {

								axis:'x', 

								easing:'linear',

								onAfter:function() {
								
									

									$.scrollTo( $(globalElement), endSpeedHorizontal , {

										axis:'x', 

										easing:'easeOutExpo'

									});

								}

							});

						}

					});

				} else {

					if (id1 == id2) {

						//scroll left or right over center element 

						var speed1 = defineSpeed($(globalStartElement), $(id1));
						
						var speed2 = defineSpeed($(id2), $(globalElement));

						var leftH = getLeftW(speed1);
						
						totalScrollSpeed += startSpeedHorizontal;
						
						totalScrollSpeed += (Math.abs(speed1)-1)*middleSpeedHorizontal;
						
						totalScrollSpeed += (Math.abs(speed2)-1)*middleSpeedHorizontal;
						
						totalScrollSpeed += endSpeedHorizontal;

						$.scrollTo( {left: leftH[0]}, startSpeedHorizontal, {

							axis:'x', 

							easing:'easeInExpo', 

							onAfter:function(){
							
								

								$.scrollTo( $(id1), (Math.abs(speed1)-1)*middleSpeedHorizontal , {

									axis:'x', 

									easing:'linear',

									onAfter:function() {

										// then continue to scroll horizontally

										//var speed2 = defineSpeed($(id2), $(globalElement));

										var leftH = getLeftW(speed2);
										
										

										$.scrollTo( {left: leftH[1]}, (Math.abs(speed2)-1)*middleSpeedHorizontal , {

											axis:'x', 

											easing:'linear',

											onAfter:function() {
											
												

												$.scrollTo( $(globalElement), endSpeedHorizontal , {

													axis:'x', 

													easing:'easeOutExpo'

												});

											}

										});

									}

								});

							}

						});

					} else {

						if (id2 != '') {

							//scroll top or down over white elements...

							var speed1 = defineSpeed($(id1), $(id2));

							var topH = getTopH(speed1);

							var speed2 = defineSpeed($(globalStartElement), $(id1));

							var speed3 = defineSpeed($(id2), $(globalElement));

							

							var leftH = getLeftW(speed2+speed3);
							
							totalScrollSpeed += startSpeedVertical;
							
							totalScrollSpeed += (Math.abs(speed1)-1)*middleSpeedVertical;
							
							totalScrollSpeed += (Math.abs(speed2+speed3)-1)*middleSpeedHorizontal;
							
							totalScrollSpeed += endSpeedHorizontal;

							$.scrollTo( {top: topH[0]}, startSpeedVertical, {

								axis:'y', 

								easing:'easeInExpo', 

								onAfter:function(){

									if ((speed2+speed3) != 0) {

										//then left or right
										
										

										$.scrollTo( $(id2), (Math.abs(speed1)-1)*middleSpeedVertical , {

											axis:'y', 

											easing:'linear',

											onAfter:function(){
											
												

												$.scrollTo( {left: leftH[1]}, (Math.abs(speed2+speed3)-1)*middleSpeedHorizontal , {

													axis:'x', 

													easing:'linear',

													onAfter:function() {
													
														

														$.scrollTo( $(globalElement), endSpeedHorizontal , {

															axis:'x', 

															easing:'easeOutExpo'

														});

													}

												});

											}

										});

									} else {

										//just up or just down
										
										totalScrollSpeed += (Math.abs(speed1)-2)*middleSpeedVertical;

										$.scrollTo( topH[1], (Math.abs(speed1)-2)*middleSpeedVertical , {

											axis:'y', 

											easing:'linear',

											onAfter:function(){
											
												totalScrollSpeed += endSpeedHorizontal;

												$.scrollTo( $(globalElement), endSpeedHorizontal , {

													axis:'y', 

													easing:'easeOutExpo'

												});

											}

										});

									}

								}

							});

						} else {

							// scroll to center element then to global element

							var speed1 = defineSpeed($(globalStartElement), $(id1));

							var leftH = getLeftW(speed1);
							
							var speed2 = defineSpeed($(id1), $(globalElement));
							
							totalScrollSpeed += startSpeedHorizontal;
							
							totalScrollSpeed += (Math.abs(speed1)-1)*middleSpeedHorizontal;
							
							totalScrollSpeed += (Math.abs(speed2)-1)*middleSpeedVertical;
							
							totalScrollSpeed += endSpeedVertical;

							$.scrollTo( {left: leftH[0]}, startSpeedHorizontal, {

								axis:'x', 

								easing:'easeInExpo', 

								onAfter:function() {
								
									

									$.scrollTo( $(id1), (Math.abs(speed1)-1)*middleSpeedHorizontal , {

										axis:'x', 

										easing:'linear',

										onAfter:function(){

											//scroll top/down from center to global element

											//var speed2 = defineSpeed($(id1), $(globalElement));

											if (speed2 != 0) {

												var topH = getTopH(speed2);

												//var windowHeight = getInnerWH();
												
												

												$.scrollTo( {top: topH[2]}, (Math.abs(speed2)-1)*middleSpeedVertical , {

													axis:'y', 

													easing:'linear',

													onAfter:function(){
													
														

														$.scrollTo( $(globalElement), endSpeedVertical , {

															axis:'y', 

															easing:'easeOutExpo'

														});

													}

												});

											}

										}

									});

								}

							});

						}

					}

				}

			} else {

				//already in the center

				if (id2 != '') {

					//scroll from center to non-center element

					var speed1 = defineSpeed($(globalStartElement), $(id2));

					var topH = getTopH(speed1);

					//var windowHeight = getInnerWH();

					if (speed1 != 0) {
					
						totalScrollSpeed += startSpeedVertical;
						
						totalScrollSpeed += (Math.abs(speed1)-1)*middleSpeedVertical;
						
						totalScrollSpeed += endSpeedHorizontal;

						$.scrollTo( {top: topH[0]}, startSpeedVertical, {

							axis:'y', 

							easing:'easeInExpo', 

							onAfter:function(){
							
								

								$.scrollTo( $(id2), (Math.abs(speed1)-1)*middleSpeedVertical , {

									axis:'y', 

									easing:'linear',

									onAfter:function(){

										//then to the left or to the right

										var speed2 = defineSpeed($(id2), $(globalElement));

										var leftH = getLeftW(speed2);
										
										totalScrollSpeed += (Math.abs(speed2)-1)*middleSpeedHorizontal;

										$.scrollTo( {left: leftH[1]}, (Math.abs(speed2)-1)*middleSpeedHorizontal , {

											axis:'x', 

											easing:'linear',

											onAfter:function() {
											
												

												$.scrollTo( $(globalElement), endSpeedHorizontal , {

													axis:'x', 

													easing:'easeOutExpo'

													});

											}

										});

									}

								});

								

							} 

						} );

					}

				} else {

					//scroll from center element to center element

					var speed1 = defineSpeed($(globalStartElement), $(globalElement));

					var topH = getTopH(speed1);

					//var windowHeight = getInnerWH();

					if (speed1 != 0) {
					
						totalScrollSpeed += startSpeedVertical;
						
						totalScrollSpeed += (Math.abs(speed1)-2)*middleSpeedVertical;
						
						totalScrollSpeed += endSpeedVertical;
						
						//alert(totalScrollSpeed);

						$.scrollTo( {top: topH[0]}, startSpeedVertical, {

							axis:'y', 

							easing:'easeInExpo', 

							onAfter:function(){
								
								
								
								//alert(totalScrollSpeed);

								$.scrollTo( {top: topH[1]}, (Math.abs(speed1)-2)*middleSpeedVertical , {

									axis:'y', 

									easing:'linear',

									onAfter:function(){
									
										
										
										//alert(totalScrollSpeed);

										$.scrollTo( $(globalElement), endSpeedVertical , {

											axis:'y', 

											easing:'easeOutExpo'

										});

									}

								});

							} 

						} );

					}

				}

			}
			
			//alert(totalScrollSpeed);
			
			setTimeout("$('.nav_bar_hidden').css('display','none');", totalScrollSpeed);
			
			return false;

		});

	};

	function logoHover() {
		
		$("div.nav_bar").hover(

			function () {
			
				$(this).css({width: "340px"});
				
				$(this).find("ul.nav_menu_items").css({display: "block"});
				
				$(this).animate({left: "-=215px"}, {duration: 500, queue: true });

			}, 

		    function () {
			
				$(this).animate({left: "+=215px"}, {duration: 500, queue: true }, "linear", function(){
				
					$(this).find("ul.nav_menu_items").css({display: "none"});
					
					$(this).css({width: "125px"});
					
				});
			
			}

	    );

	};

});

function getInnerWH() {  

	if ($.browser.opera) {

		h = this.innerHeight;

		w = this.innerWidth;

	} 

	else {

		h = document.documentElement.clientHeight;

		w = document.documentElement.clientWidth;

	}

	return [h,w];

}; 

function makeCenter(content, margin) {

		var contentW = $(content).width();

		var contentH = $(content).height();

		var marginL = ($("div.element").width() - contentW)*0.5;

		var marginT = ($("div.element").height() - contentH)*0.5;

		if (marginL < margin) {

			marginL = margin;

		} 

		if (marginT < margin) {

			marginT = margin;

		}

		$(content).css("left", marginL);

		$(content).css("top", marginT);

}

function nav_to_right(parentSize) {
	
	$("div.nav_bar").css("left", parentSize[1] - 125);
	
}

function centerElement(parentSize){

		$("div.element").width(parentSize[1]); //element size will be like browser size

		$("div.element").height(parentSize[0]);

		if (parentSize[1] < elemWidthB) {

			$("div.image").css("width", parentSize[1]); //cut image if it is bigger then browser window

		} else {

			$("div.image").css("width", elemWidthB); //undo cut image

		} 

		if (parentSize[0] < elemHeightB) {

			$("div.image").css("height", parentSize[0]); //cut image if it is bigger then browser window

		} else {

			$("div.image").css("height", elemHeightB); //undo cut image

		}

		if (parentSize[0] < elemHeightS) {

			$("p.big").css("line-height", parentSize[0]+'px');

		} else {

			$("p.big").css("line-height", 600+'px');

		}

		nav_to_right(parentSize);

		makeCenter("div.text", 50);

		makeCenter("div.image", 0);

		makeCenter("div.big-text", 0);
		
		$.scrollTo($(globalElement), 0);

};	

function checkWindowSize() {

	var parentSize = getInnerWH();

	if ((parentSize[0] != $("div.element").height()) || (parentSize[1] != $("div.element").width())) {

		centerElement(parentSize);

	}

	setTimeout('checkWindowSize();', 300);

};	