var keyup_timer;
var Search =
{
	LoadMore: function (ctrl)
	{
		$("#start-index").val(parseInt($("#start-index").val()) + parseInt($("#results-per-page").val()));
		
		$.ajax(
		{
			type: "POST",
			url: "/" + lang.get_current_lang() + "/search-ajax.xqy",
			dataType: "html",
			data:
			{
				q: $("#q").val(), 
				r: $("#results-per-page").val(), 
				s: $("#start-index").val(),
				l: $("#current_lang").val()
			},
			success: function (response)
			{
				$("#article-results").append(response);
				if (parseInt($("#start-index").val()) + parseInt($("#results-per-page").val()) >= parseInt($("#total-hits").val()))
				$("#show-more").hide();
				$("#aside").height($("#content-wrapper").height());
			},
			error: function (x, y, z)
			{
				//$("#error").html(x.responseText).show();
			}
		});
	},
	
	Show: function ()
	{
		$("#search-dropdown").show();
	},
	
	Search: function(){
		$.ajax({
			type: "POST",
			url: "/" + lang.get_current_lang() + "/fayt-ajax.xqy",
			dataType: "html",
			data: {
				q: $("#temples-search").val()
			},
			success: function (response){
				if (response){
					$("#search-dropdown").html(response).show();
					
					if($.browser.msie && $.browser.version == 7.0){
						
							$("#inset").css("z-index",-1);
							$("#index-inset").css("z-index",-1);
							$("#inset").css("position","relative");
							$("#index-inset").css("position","relative");
							$("#inset-wrapper").css("z-index",-1);
							$("#content-wrapper").css("z-index",-1);
						
					}
					
				}else{
					$("#search-dropdown").html("").hide();
				}
			},
			error: function (x, y, z){
				//$("#error").html(x.responseText).show();
			}
		});
	}
};




$(document).ready(function (){

  billboard.init();

  //SHOW LANGUAGES OPTIONS
  var $langMenu = $("#language-menu");
  $langMenu.css("width", $langMenu.width()).addClass("positioned");
	$("#language-icon, #language-close").click(function ()
	{
		$langMenu.animate({
			width: 'toggle'
		}, 400);
    $("li", $langMenu).fadeToggle(800);
		var lang_src = $("#language-icon").attr("src");
		if (lang_src == "/assets/images/lang.png") {
			$("#language-icon").attr("src", "/assets/images/lang-big.png");
		} else {
			$("#language-icon").attr("src", "/assets/images/lang.png");
		}
	});

	$("#topnav .drop-right a").each(function(){
		if($(this).text().length > 34){
			var shorter = $(this).text().substr(0,32) + "...";
			$(this).text(shorter);
		}
	});
	
	$("#footer-upper #about-temples-links li a").each(function(){
		if($(this).text().length > 34){
			var shorter = $(this).text().substr(0,32) + "...";
			$(this).text(shorter);
		}
	});
	
	$("#package li .caption").each(function(){
		if($(this).text().length > 160){
			var shorter = $(this).text().substr(0,160) + "...";
			$(this).text(shorter);
		}
	});
	
	$(".large-result .caption").each(function(){
		if($(this).text().length > 160){
			var shorter = $(this).text().substr(0,160) + "...";
			$(this).text(shorter);
		}
	});

	if($.browser.msie && $.browser.version == 7.0){
		var name_max = $("#temple-name-text").text().length;
		$("#temple-name-display").css("width",name_max +"em");


		$(".menu-drop").css("z-index",3);
		$(".menu-dropdown").css("z-index",2);
		$(".menu-dropdown").css("left","-259px");
		$("#search-dropdown").css("left","370px");

		//$("#header-wrapper .menu-dropdown img.pointer").css("left","320px");
		//$("#header-wrapper .menu-dropdown img#locations-arrow").css("left","436px");


		$(".menu-drop").hover(function(){
			$("#inset").css("z-index",-1);
			$("#inset").css("position","relative");

			$("#index-inset").css("z-index",-1);
			$("#index-inset").css("position","relative");
			
			$("#local-inset").css("z-index",-1);
			$("#local-inset").css("position","relative");

			$("#inset-wrapper").css("z-index",-1);
			$("#content-wrapper").css("z-index",-1);

			$("#billboard-fader").css("z-index",-1);
			$("#billboard-fader").css("z-index",-1);
		},
		function(){
			$("#inset").css("z-index",0);
			$("#inset").css("position","inherit");

			$("#index-inset").css("z-index",0);
			$("#index-inset").css("position","inherit");
			
			$("#local-inset").css("z-index",0);
			$("#local-inset").css("position","inherit");

			$("#inset-wrapper").css("z-index",0);
			$("#content-wrapper").css("z-index",0);

			$("#billboard-fader").css("z-index",0);
			$("#billboard-fader").css("z-index",0);
		});

	}

	var welcome_length = $("#welcome-inset h2").text().length;
	if (welcome_length > 9 )
	{
		if(welcome_length < 16){
			var multiplier = (welcome_length - 9) * 4;
		}else{
			var multiplier = (welcome_length - 9) * 3;
		}
		var new_h2 = 62 - multiplier ;
		if(new_h2 < 11){var new_h2 = 11;}
		$("#welcome-inset h2").css("font-size", new_h2+"px").css("line-height", new_h2+"px");
	}

	//SECTION CLICK
	$(".item-container").click(function (event)
	{
		var page_link = $(this).find(".more").attr("href");
		$(location).attr('href', page_link);
	});

	//FEEDBACK FORM SLIDER
	$("#feedback-trigger, #feedback-closer").click(function ()
	{
		HidePrompts();
		
		$("#feedback-slider").animate(
		{
			width: 'toggle'
		},
		1000);
	});

	//FEEDBACK FORM INPUT FOCUS
	$("#Name").focus(function ()
	{
		if ($(this).val() == lang._("Name") || $(this).val() == "")
		{
			$(this).val("");
		}
	});
	$("#Name").blur(function ()
	{
		if ($(this).val() == "")
		{
			$(this).val(lang._("Name"));
		}
	});
	$("#Comments").focus(function ()
	{
		if ($(this).val() == lang._("Comments") || $(this).val() == "")
		{
			$(this).val("");
		}
	});
	$("#Comments").blur(function ()
	{
		if ($(this).val() == "")
		{
			$(this).val(lang._("Comments"));
		}
	});
	$("#Email").focus(function ()
	{
		if ($(this).val() == lang._("Email") || $(this).val() == "")
		{
			$(this).val("");
		}
	});
	$("#Email").blur(function ()
	{
		if ($(this).val() == "")
		{
			$(this).val(lang._("Email"));
		}
	});

	//SUBMIT FEEDBACK FORM
	
	$("#feedback-form").validationEngine("attach");
	$("#feedback-submit-button").click(function(event)
	{
		event.preventDefault();
		var isValid = true;
		
		HidePrompts();
		
		var data = $("#feedback-form").serialize();
		
		if($("#Name").val() == "" || $("#Name").val() == lang._("Name"))
		{
			$("#Name").validationEngine('showPrompt', lang._("This is a required field"), 'fail', 'topLeft', true);
			isValid = false;
		}

		if($("#Comments").val() == "" || $("#Comments").val() == lang._("Comments"))
		{
			$("#Comments").validationEngine('showPrompt', lang._("This is a required field"), 'fail', 'topLeft', true);
			isValid = false;
		}

		if($("#Email").val() == "" || $("#Email").val() == lang._("Email"))
		{
			$("#Email").validationEngine('showPrompt', lang._("This is a required field"), 'fail', 'bottomLeft', true);
			isValid = false;
		}
		
        var pattern = new RegExp(/^([A-Za-z0-9_\-\.\'])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,6})$/);
        
		if($("#Email").val() != "" && $("#Email").val() != lang._("Email") && !pattern.test($("#Email").val()))
		{
			$("#Email").validationEngine('showPrompt', lang._('Email is invalid'), 'fail', 'bottomLeft', true);
			isValid = false;
		}
		
		if(isValid)
		{
			var templeid = $("#temple-id").val();
			if(templeid != "")
				templeid = "/" + templeid;
			
			
			$.ajax(
			{
				type: "GET",
				url: "/" + lang.get_current_lang() + templeid + "/feedback" + data,
				success: jsonsuccess,
				error: function(x,y,z)
				{
					var hold = 0;
				}
			});
		}

		return false;
	});
	
	//SEARCH FORM
	$("#temples-search").focus(function(){
		$(this).addClass("searching");
		if ($(this).val() != "") Search.Show();
	});

	$(document).click(function(event){
		$("#temples-search").removeClass("searching");
		$("#temples-search").animate({width: '151px'}, 500);
		$("#search-dropdown").hide();

		if($.browser.msie && $.browser.version == 7.0){
			if($(event.target).parents().index($('#locations')) == -1){
				$("#index-inset").css("z-index",0);
				$("#inset").css("z-index",0);
				$("#inset").css("position","inherit");
				$("#index-inset").css("position","inherit");
				$("#inset-wrapper").css("z-index",0);
				$("#content-wrapper").css("z-index",0);
			}
		}

	});

	$("#search-dropdown span a, #temples-search").click(function (event)
	{
		event.stopPropagation();
	});

	$("#search-dropdown span a").each(function ()
	{
		if ($(this).text().length > 30)
		{
			var term = $(this).text();
			var shorter = $(this).text().substr(0, 30) + "...";
			$(this).attr("title", term);
			$(this).text(shorter);
		}
	});

	if ($("#about-temples .drop-left p").text().length > 350){
		var shorter = $("#about-temples .drop-left p").text().substr(0, 350) + "...";
		$("#about-temples .drop-left p").text(shorter);
	}
	
	$(".move-up").parent().parent().css("margin-top","-60px");


	//FAYT SEARCH

	$("#temples-search").keyup(function (e)
	{	
		var st = $(this).val();
		if(st != "" && st != " "){
			if(e.which == 13){
				$("#topnav li input").attr("style","cursor: progress !important;");
				$("body").attr("style","cursor: progress !important;");
				window.location = "/" + lang.get_current_lang() + "/search?q="+ st;
			}else{
				clearTimeout(keyup_timer);
				keyup_timer = setTimeout(function()
				{
					///////////////////////////
					//AJAX FOR SEARCH GOES HERE
					///////////////////////////
					Search.Search();
				},
				500);
			}
		}else{
			$("#search-dropdown").hide();
		}
	});

	 $("#map-over img").live("click",function(){
		if($.browser.msie && $.browser.version == 7.0){
			$("#inset").css("z-index",-1);
			$("#index-inset").css("z-index",-1);
			$("#inset").css("position","relative");
			$("#index-inset").css("position","relative");
			$("#inset-wrapper").css("z-index",-1);
			$("#content-wrapper").css("z-index",-1);
		}
	 });


	//MENU DROPDOWN HOVER
	$(".menu-drop").hover(function ()
	{
		$(this).find(".menu-dropdown").show();
		var pos = $(this).position();
		if($(".searching").length){
			$("#temples-search").removeClass("searching");
			$("#temples-search").css("width",'151px');
			$("#search-dropdown").hide();
		}
	},
	function ()
	{
		$(this).find(".menu-dropdown").hide();
	});


	//LOCATION MENU
	$('.show-first').each(function ()
	{
		$(this).removeClass("show-first");
	});
  map.init();

  $("#show-more").click(function(e) {
		e.preventDefault();
		Search.LoadMore(this);
	});
	
	//FIX MENU-DROPDOWN LOCATION DEPENDING ON LANGUAGE
	var topnav_width = parseInt($("#topnav").css("width"));
	var menu_dropdown_width = parseInt($(".menu-dropdown").first().css("width"));
	var new_menu_dropdown_left = -1 * (menu_dropdown_width - topnav_width + 100);
	$(".menu-dropdown").css("left", new_menu_dropdown_left);
	
	//FIX MENU-DROPDOWN ARROW LOCATION DEPENDING ON LANGUAGE
	//$(".menu-dropdown").show();
	$("img.pointer").each(function()
	{
		/*var parent_li_lefts = [];
		$("#top-nav ul li").each(function(i)
		{
			parent_li_lefts[i] = $(this).width();
		});
		
		var pointer_width = $(this).width();
		var pointer_center = Math.round(pointer_width / 2);
		var parent_li_width = $(this).parents("li").width();
		var parent_li_left = parseInt($(this).parents("li").css("left"));
		var parent_li_center = Math.round(parent_li_width / 2);
		var top_nav_left = $("#header-wrapper").width() - topnav_width;
		var new_pointer_left = parent_li_left + parent_li_center - pointer_center + top_nav_left;
		$(this).css("left", new_pointer_left);		*/
		$(this).hide();
	});
	//$(".menu-dropdown").hide();
	
	//LOCAL BILLBOARD CENTER
	centerLocalBillboardTimer = setInterval("CenterLocalBillboard()", 200);
	$("#index-photo").hide();
});

centerLocalBillboardTimer = null;
centerLocalBillboardTimerCounter = 0;
function CenterLocalBillboard()
{
	if(centerLocalBillboardTimerCounter < 300)
	{
		centerLocalBillboardTimerCounter++;
		if($("#index-photo").width() > 0)
		{
			clearInterval(centerLocalBillboardTimer);
			if($("#index-photo").attr("src").indexOf("/billboards") > -1)
			{
				$("#index-photo").attr("width", 566);
			}
			else
			{
				$("#index-photo").css("right", ($("#photo-flap").width() - $("#index-photo").width())/2 + 25)
			}
			
			$("#index-photo").show();
			delete centerLocalBillboardTimerCounter;
			delete centerLocalBillboardTimer;
		}
	}
	else
	{
		clearInterval(centerLocalBillboardTimer);
		delete centerLocalBillboardTimerCounter;
		delete centerLocalBillboardTimer;
		$("#index-photo").show();
	}
}

function HidePrompt(ctrl)
{
	if(ctrl.length != 0)
	{
		var promptClass = "."+ $(ctrl).attr("id").replace(":","_").replace("[","_").replace("]","_") + "formError";
	    $(promptClass).remove();
	}
}

function HidePrompts()
{
	HidePrompt($("#Name"));
	HidePrompt($("#Comments"));
	HidePrompt($("#Email"));
}

function jsonsuccess()
{
	$("#feedback-form").empty().append("<div id='feedback-thanks'>Thank you for your feedback.</div>");
}


var map = {
  regions: {
    NoAm: {
      hilite_map_xy: "1px -156px",
      map_bg_xy: "0 0"
    },
    SoAm: {
      hilite_map_xy: "1px -308px",
      map_bg_xy: "0 -155px"
    },
    Eu: {
      hilite_map_xy: "1px -466px",
      map_bg_xy: "0 -310px"
    },
    Af: {
      hilite_map_xy: "1px -619px",
      map_bg_xy: "0 -465px"
    },
    As: {
      hilite_map_xy: "1px -774px",
      map_bg_xy: "0 -620px"
    },
    Au: {
      hilite_map_xy: "1px -929px",
      map_bg_xy: "0 -775px"
    }
  },
  init: function () {
    $("#locations map area:not(.region-disabled)")
      .hover(map.enter_region, map.exit_region)
      .click(map.select_region);
    var cookieRegionId = map.get_cookie();
    map.activate_region(map.regions[cookieRegionId] == undefined ? "NoAm" : cookieRegionId);
  },
  enter_region: function () {
    var regionId = $(this).attr("id");
    $(this).parent().parent().css("background-position", map.regions[regionId].hilite_map_xy);
  },
  exit_region: function () {
    $(this).parent().parent().css("background-position", "0 0");
  },
  select_region: function (e) {
    var regionId = $(this).attr("id");
    map.activate_region(regionId);
    e.preventDefault();
  },
  activate_region: function (regionId) {
    $(".drop-second").css("background-position", map.regions[regionId].map_bg_xy);
    $(".location-drop").hide().filter("." + regionId).show();
    map.set_cookie(regionId);
  },
  set_cookie: function (regionId) {
    document.cookie = "location-selected = " + regionId + ";";
  },
  get_cookie: function() {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
      x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x = x.replace(/^\s+|\s+$/g,"");
      if (x === "location-selected") {
        return y;
      }
    }
  }
};

var billboard = {
  rotation_timeout: null,
  init: function () {
    $("#billboard-fade a").ieSafeFadeOut(0).eq(0).ieSafeFadeIn(0);
    billboard.preload();
    billboard.auto_rotate();
    billboard.init_pager();
    $("#fader-left").click(billboard.prev);
    $("#fader-right").click(billboard.next);
  },
  init_pager: function () {
    $("#billboard-fader ul").empty();
    var $ul = $("#billboard-fader ul");
    $("#billboard-fade a").each(function (indx, value) {
      $ul.append("<li class='billboard-select'>" + (indx + 1) + "</li>");
		});
    var $pages = $ul.children("li");
    $pages.eq(0).addClass("ed");
    $pages.click(billboard.page);
  },
  prev: function () {
    billboard.rotate(-1);
  },
  next: function () {
    billboard.rotate(1);
  },
  rotate: function (direction) {
    billboard.show($("#billboard-fade a:visible").prevAll("a").size() + direction);
  },
  show: function (index) {
    window.clearTimeout(billboard.rotation_timeout);
    var $links = $("#billboard-fade a");
    var numBillboards = $links.size();
    if (index >= numBillboards) {
      index = 0;
    } else if (index < 0) {
      index = numBillboards - 1;
    }
    var $newLink = $links.eq(index)
    var $newImg = $newLink.children("img");
    if ($newImg.attr("data-originalSrc")) {
      $newImg.load(function () {
        billboard.show_finish($links, $newLink, index);
      });
      billboard.set_orig_src($newImg);
    } else {
      billboard.show_finish($links, $newLink, index);
    }
  },
  set_orig_src: function ($newImg) {
    $newImg.attr("src", $newImg.attr("data-originalSrc"));
    $newImg.removeAttr("data-originalSrc");
  },
  show_finish: function ($links, $newLink, index) {
    $links.filter(":visible").ieSafeFadeOut("slow");
    $newLink.ieSafeFadeIn("slow");
    billboard.set_pager(index);
    billboard.auto_rotate();
  },
  page: function () {
    billboard.show($(this).index());
  },
  set_pager: function (index) {
    $("#billboard-fader ul li").removeClass("ed").eq(index).addClass("ed");
  },
  auto_rotate: function () {
    billboard.rotation_timeout = window.setTimeout(billboard.next, 6000);
  },
  preload: function () {
    var $defaultImg = $("#billboard-fade a img[data-originalSrc]:first");
    $defaultImg.load(function () {
      billboard.preload();
    });
    billboard.set_orig_src($defaultImg);
  }
};

$.fn.ieSafeFadeIn = function(speed, callback) {
  if ($.browser.msie) {
    $(this).show().animate({ opacity: 1.0 }, speed, callback);
  } else {
    $(this).fadeIn(speed, callback);
  }
  return this;
};

$.fn.ieSafeFadeOut = function(speed, callback) {
  if ($.browser.msie) {
    $(this).animate({ opacity: 0.0 }, speed, function () {
      $(this).hide();
      if (callback != undefined) {
        callback();
      }
    });
  } else {
    $(this).fadeOut(speed, callback);
  }
  return this;
};

var lang = (function () {

  var current_dict = "eng";
  var dicts = {};

  var is_array = function (obj) {
    return Object.prototype.toString.call(obj) === '[object Array]';
  };
  var set_lang = function (lang_code) {
    current_dict = lang_code;
  };
  var dict = function (lang_code, dict) {
    dicts[lang_code] = dict;
    set_lang(lang_code);
  };
  var get_translation = function (key, number) {
    var isPlural = number != undefined && number != 1;
    var dict = dicts[current_dict];
    var entry = dict == undefined ? undefined : dict[key];
    var val = null;
    if (is_array(entry)) {
      val = isPlural && entry[1] != undefined ? entry[1] : entry[0];
    } else {
      val = entry;
    }
    return val == null ? key : val;
  };

  return {
    dict: dict,
    _: get_translation,
    get_current_lang: function () {
      return current_dict;
    }
  };

})();

