var host_server = 'http://static.gooletimes.net/';

//var host_path = 'http://www.gooletimes.net/';
var host_path = '/';
//var host_path = 'http://gooletimes:8888/';

var image_version = 'images-1_0_2';

var ajax_version = 'ajax';

var currentlyShowing = 0; // Default number of items per page 
var limit = 20; // Default start-from


function newShowing(showing) {
	this.number = showing;
}

showing = new newShowing(0);


$(document).ready(function() {

	// For all pages
	$("#search_field").focus(function(i) {
		var defaultValue = 'Search';

		if ($(this).val() == defaultValue) {
			$(this).val('');
		}
	});

	$("#search_field").blur(function(i) {
		var defaultValue = 'Search';
		
		if ($(this).val() == '') {
			$(this).val(defaultValue);
		}
	});

	$("#places_tab").mouseover(function(){
		$("#places_drop").show();
	});
	
	$("#places_tab").mouseout(function(){
		$("#places_drop").hide();
	});


	// Default behaviour for all article category tabs
	$("#all-tab a").click(function(event) {
		event.preventDefault();
		
		$("#all_pane").show();
		$("#news_pane").hide();
		$("#sport_pane").hide();
		$("#ents_pane").hide();
		$("#letters_pane").hide();
		
		$("#all-tab").addClass("selected");
		$("#news-tab").removeClass("selected");
		$("#sport-tab").removeClass("selected");
		$("#letters-tab").removeClass("selected");
		$("#ents-tab").removeClass("selected");
		
		var category = "all";
		
		return category
	});

	$("#news-tab a").click(function(event) {
		event.preventDefault();

		$("#all_pane").hide();
		$("#news_pane").show();
		$("#sport_pane").hide();
		$("#letters_pane").hide();
		$("#ents_pane").hide();

		$("#all-tab").removeClass("selected");
		$("#news-tab").addClass("selected");
		$("#sport-tab").removeClass("selected");
		$("#letters-tab").removeClass("selected");
		$("#ents-tab").removeClass("selected");
	});

	$("#sport-tab a").click(function(event) {
		event.preventDefault();

		$("#all_pane").hide();
		$("#news_pane").hide();
		$("#sport_pane").show();
		$("#letters_pane").hide();
		$("#ents_pane").hide();

		$("#all-tab").removeClass("selected");
		$("#news-tab").removeClass("selected");
		$("#sport-tab").addClass("selected");
		$("#letters-tab").removeClass("selected");
		$("#ents-tab").removeClass("selected");
	});

	$("#letters-tab a").click(function(event) {
		event.preventDefault();

		$("#all_pane").hide();
		$("#news_pane").hide();
		$("#sport_pane").hide();
		$("#letters_pane").show();
		$("#ents_pane").hide();

		$("#all-tab").removeClass("selected");
		$("#news-tab").removeClass("selected");
		$("#sport-tab").removeClass("selected");
		$("#letters-tab").addClass("selected");
		$("#ents-tab").removeClass("selected");
	});

	$("#ents-tab a").click(function(event) {
		event.preventDefault();

		$("#all_pane").hide();
		$("#news_pane").hide();
		$("#sport_pane").hide();
		$("#letters_pane").hide();
		$("#ents_pane").show();

		$("#all-tab").removeClass("selected");
		$("#news-tab").removeClass("selected");
		$("#sport-tab").removeClass("selected");
		$("#letters-tab").removeClass("selected");
		$("#ents-tab").addClass("selected");
	});


	// Page-specific functions

	function indexPage(category, issue, limit, from) {
		$("#category_loading").slideDown();
		$.getJSON("/json/category_index.php", { category: category, issue: issue, limit: limit, from: from }, function(data) {
			$.each(data.items, function(i,item) {
				var categoryDiv = "#" + category + "_index";
				
				
				$("<div class=\"items\"></div>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
				
			});
			$("#category_loading").slideUp();
		});
	}

	if (document.title == 'Goole Times' || document.title == 'Sport | Goole Times' || document.title == 'Entertainment | Goole Times' || document.title == 'Letters | Goole Times') {

		$(".index_switch").hide();

		

		$(window).scroll(function() {
			if ($(window).scrollTop() == $(document).height() - $(window).height()){

				var limit = 20;
				showing.number = showing.number + limit;
				
				var category = document.body.id;
				var issue = $(".frontpage").attr("alt");

				indexPage(category, issue, limit, showing.number);


				tracking_url("ajax?=/" + category + "/show/" + showing.number);

				return currentlyShowing
			}
		});
	}


	function tagPage(keywords, limit, from, showAll) {
		$("#meta_loading").slideDown();
		
		$.getJSON("/json/tags.php", { keywords: keywords, limit: limit, from: from }, function(data) {
			if (showAll == true) { // Fill the '#all' div
				$.each(data.allItems, function(i,item) {
					var categoryDiv = "#all_pane";

					$("<h2></h2>").attr("id", "item-" + item.id).appendTo(categoryDiv);
					$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);

					if (item.imageid > null) {
						$("<img />").attr("src", item.imagelink).appendTo(categoryDiv +  " #item-" + item.id + " a");
					}

					$("<p>" + item.description + "</p>").appendTo(categoryDiv);

				});
			}

			$.each(data.newsItems, function(i,item) {  // News results

				var categoryDiv = "#news_pane";

				$("<h2></h2>").attr("id", "item-" + item.id).appendTo(categoryDiv);

				$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);

				if (item.imageid > null) {
					$("<img />").attr("src", item.imagelink).appendTo(categoryDiv +  " #item-" + item.id + " a");
				}

				$("<p>" + item.description + "</p>").appendTo(categoryDiv);

			});

			$.each(data.sportItems, function(i,item) {
				var categoryDiv = "#sport_pane";

				$("<h2></h2>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);

				if (item.imageid > null) {
					$("<img />").attr("src", item.imagelink).appendTo(categoryDiv +  " #item-" + item.id + " a");
				}

				$("<p>" + item.description + "</p>").appendTo(categoryDiv);
			});

			$.each(data.entsItems, function(i,item) {
				var categoryDiv = "#ents_pane";

				$("<h2></h2>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);

				if (item.imageid > null) {
					$("<img />").attr("src", item.imagelink).appendTo(categoryDiv +  " #item-" + item.id + " a");
				}

				$("<p>" + item.description + "</p>").appendTo(categoryDiv);
			});

			$.each(data.lettersItems, function(i,item) {
				var categoryDiv = "#letters_pane";

				$("<h2></h2>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);

				if (item.imageid > null) {
					$("<img />").attr("src", item.imagelink).appendTo(categoryDiv +  " #item-" + item.id + " a");
				}

				$("<p>" + item.description + "</p>").appendTo(categoryDiv);
			});

			$("#meta_loading").slideUp();
		});
	}

	if (document.body.id == "metadata-tag") {
		var category = 'all';
		
		var keywords = $("#sub-category a").html();
		
		showing = new newShowing(0);

		showing.number = showing.number + 20;
		
		$(".index_switch").slideUp();

		$(window).scroll(function() {
			if ($(window).scrollTop() == $(document).height() - $(window).height()){
				var from = showing.number;
				var limit = 20;

				showing.now = showing.now + limit;

				tagPage(keywords, limit, from, true);
				
				showing.number = showing.number + limit;
				
//				tracking_url("/" + )
			}
		});
	}


	function archive_issue(issue, limit, from, redraw) {
		$("#issue_loading").slideDown();
		
		if (redraw == true) {
			$("#issue").slideUp();
		}

		$.getJSON("/json/archive_issue.php", { issue: issue, limit: limit, from: from }, function(data) {
			
			// TODO: Remove from tabs – add class to items, to hide() and show() using this.
			
			if (redraw == true) {
				$("#issue div").html('').hide();
				$("#all_pane").html('').show();
				
				$(".tabs li").removeClass("selected");
				$("#all-tab").addClass("selected");
				
				$(".tabs").show();
				
				
				$("#all-tab a").html('All (' + data.allNumber + ')');
				

				if (data.newsNumber > 0) {
					$("#news-tab a").html('News (' + data.newsNumber + ')');
				} else {
					$("#news-tab").hide();
				}
				
				if (data.sportNumber > 0) {
					$("#sport-tab a").html('Sport (' + data.sportNumber + ')');
				} else {
					$("#sport-tab").hide();
				}
				
				if (data.entsNumber > 0) {
					$("#ents-tab a").html('Entertainment (' + data.entsNumber + ')');
				} else {
					$("#ents-tab").hide();
				}

				if (data.lettersNumber > 0) {
					$("#letters-tab a").html('Letters (' + data.lettersNumber + ')');
				} else {
					$("#letters-tab").hide();
				}
			}

			$.each(data.allItems, function(i,item) {
				var categoryDiv = "#all_pane";
				
				$("<div></div>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
			});

			$.each(data.newsItems, function(i,item) {
				var categoryDiv = "#news_pane";
				
				$("<div></div>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
			});
			
			$.each(data.sportItems, function(i,item) {
				var categoryDiv = "#sport_pane";

				$("<div id=\"item-" + item.id + "\"></div>").appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
			});
			
			$.each(data.entsItems, function(i,item) {
				var categoryDiv = "#ents_pane";

				$("<div></div>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
			});
			
			$.each(data.lettersItems, function(i,item) {
				var categoryDiv = "#letters_pane";

				$("<div></div>").attr("id", "item-" + item.id).appendTo(categoryDiv);
				
				var itemId = "#item-" + item.id;

				if (item.imageid > null) {
					$("<a href=\"" + item.link + "\" class=\"image\"><img src=\"" + item.imagelink + "\" alt=\"" + item.imageid + "\"/></a>").appendTo(categoryDiv + " " + itemId);
				}
				
				$("<h2><a href=\"" + item.link + "\">" + item.title + "</a></h2>").appendTo(categoryDiv + " " + itemId);

				$("<p>" + item.description + "</p>").appendTo(categoryDiv + " " + itemId);
			});

			$("#issue_loading").slideUp();
			
			if (redraw == true) {
				$("#issue").slideDown();
			}
		});
	}

	if (document.title == 'Archive | Goole Times') {
		$(".issues").hide();
		$(".header").hide();
		$(".months").hide();
		$(".months li").show();
		
		
		$(".years a").click(function(event) {
			event.preventDefault();
			
			var year = this.id;
			
			var yearDrop = "#" + year + "-drop";
			
			$("#" + this.id).addClass("selected");
			
			$(".months").slideUp();
			$(".years a").removeClass("selected");

			$(".issues").slideUp();
			$("#" + this.id).addClass("selected");

			$(yearDrop).slideDown();
		});
		
		$(".months a").click(function(event) {
			event.preventDefault();
			
			var month = this.id;
			var monthDrop = "#" + month + "-drop";
			
			$(".months a").removeClass("selected");
						
			$("#" + this.id).addClass("selected");
			
			$(".issues").slideUp();
			$(monthDrop).slideDown();
		});
		
		$(".issues a").click(function(event) {
			event.preventDefault();
			
			var issueNumber = this.id;
			
			$(".issues a").removeClass("selected");
			
			$("#" + this.id).addClass("selected");
			
			issue = new newIssue(issueNumber, 0);

			archive_issue(issue.number, 20, issue.showing, true);
		});
		
		$(window).scroll(function(event) {
			if ($(window).scrollTop() == $(document).height() - $(window).height()) {
				issue.showing = issue.showing + 20;

				archive_issue(issue.number, 20, issue.showing, false);
				
//				tracking_url("/archive/" + issue + "?from=" + from);
			}
		});
	}


	function newIssue(issueName, nowShowing) {
		this.number = issueName;
		this.showing = nowShowing;
	}


	function search_articles(keywords, limit, from, redraw) {
		$("#search_loading").slideDown();
		$.getJSON("/json/search_articles.php", { keywords: keywords, limit: limit, from: from }, function(data) {
			if (redraw == true) {
/*				$.each(data.metaPages, function(i,item) {
					$("<a>"+ item.name +"</a>").attr("href", item.link).appendTo("#meta_pages");
					
					$("#meta_pages").show();
				});
*/				
			// Tables for results
				$(".results tbody").html('');
			}

			$.each(data.allItems, function(i,item) {
				var catDiv = "#all_pane";

				$("<tr></tr>").attr("id", item.id).appendTo(catDiv + " table tbody");
				$("<td></td>").appendTo(catDiv + " #" + item.id);
				$("<h2></h2>").appendTo(catDiv + " #" + item.id + " td");
				$("<a>" + item.title + "</a>").attr("href", item.link).appendTo(catDiv + " #" + item.id + " td h2");
				$("<p>" + item.description + "</p>").appendTo(catDiv + " #" + item.id + " td");

				$("<td><p>" + item.date + "</p></td>").appendTo(catDiv + " #" + item.id);
			});

			$.each(data.newsItems, function(i,item) {
				var catDiv = "#news_pane";

				$("<tr></tr>").attr("id", item.id).appendTo(catDiv + " table");
				$("<td></td>").appendTo(catDiv + " table #" + item.id);
				$("<h1></h1>").appendTo(catDiv + " table #" + item.id + " td");
				$("<a>" + item.title + "</a>").attr("href", item.link).appendTo(catDiv + " table #" + item.id + " td h1");
				$("<p>" + item.description + "</p>").appendTo(catDiv + " table #" + item.id + " td p");

				$("<td>" + item.date + "</td>").appendTo(catDiv + " table #" + item.id);
			});

			$.each(data.sportItems, function(i,item) {
				var catDiv = "#sport_pane";

				$("<tr></tr>").attr("id", item.id).appendTo(catDiv + " table");
				$("<td></td>").appendTo(catDiv + " table #" + item.id);
				$("<h1></h1>").appendTo(catDiv + " table #" + item.id + " td");
				$("<a>" + item.title + "</a>").attr("href", item.link).appendTo(catDiv + " table #" + item.id + " td h1");
				$("<p>" + item.description + "</p>").appendTo(catDiv + " table #" + item.id + " td p");

				$("<td>" + item.date + "</td>").appendTo(catDiv + " table #" + item.id);
			});

			$.each(data.lettersItems, function(i,item) {
				var catDiv = "#letters_pane";

				$("<tr></tr>").attr("id", item.id).appendTo(catDiv + " table");
				$("<td></td>").appendTo(catDiv + " table #" + item.id);
				$("<h1></h1>").appendTo(catDiv + " table #" + item.id + " td");
				$("<a>" + item.title + "</a>").attr("href", item.link).appendTo(catDiv + " table #" + item.id + " td h1");
				$("<p>" + item.description + "</p>").appendTo(catDiv + " table #" + item.id + " td p");

				$("<td>" + item.date + "</td>").appendTo(catDiv + " table #" + item.id);
			});

			$.each(data.entsItems, function(i,item) {
				var catDiv = "#ents_pane";

				$("<tr></tr>").attr("id", item.id).appendTo(catDiv + " table");
				$("<td></td>").appendTo(catDiv + " table #" + item.id);
				$("<h1></h1>").appendTo(catDiv + " table #" + item.id + " td");
				$("<a>" + item.title + "</a>").attr("href", item.link).appendTo(catDiv + " table #" + item.id + " td h1");
				$("<p>" + item.description + "</p>").appendTo(catDiv + " table #" + item.id + " td p");

				$("<td>" + item.date + "</td>").appendTo(catDiv + " table #" + item.id);
			});
			$("#search_loading").slideUp();
		});
		
		var currentlyShowing = limit + currentlyShowing;
	}

	if (document.body.id == "search") {
		
		$(".index_switch").slideUp();
		
		if (currentlyShowing = 0) {
			var currentlyShowing = 20;
		}
		
		$("#fullsearch_submit").click(function(event) {
			event.preventDefault();
			
			var keywords = $("#fullsearchbox").val();
			var currentlyShowing = 0;
			
			search_articles(keywords, limit, currentlyShowing, true);
			
			tracking_url("/search?terms="+ keywords +"&limit="+ limit +"&from="+ currentlyShowing);
		});
		
		$(window).scroll(function() {
			if ($(window).scrollTop() == $(document).height() - $(window).height()) {
				var keywords = $("#fullsearchbox").val();
				
				search_articles(keywords, limit, currentlyShowing, false);
				tracking_url("/search?terms="+ keywords +"&limit="+ limit +"&from="+ currentlyShowing);
			}
		});
	}


	// Mytown div population
	if (document.body.id == "News" || document.body.id == "Sport" || document.body.id == "Letters" || document.body.id == "Ents" || document.body.id == "Jobs" || document.body.id == "Archive" || document.body.id == "afs") {

		$("#mytown_loading").slideDown();

		function getCookie(c_name) {
			if (document.cookie.length>0) {
				c_start=document.cookie.indexOf(c_name + "=");
				if (c_start!=-1) {
					c_start=c_start + c_name.length+1;
					c_end=document.cookie.indexOf(";",c_start);
					if (c_end==-1) c_end=document.cookie.length;
					return unescape(document.cookie.substring(c_start,c_end));
				}
			}
			return "";
		}
		
		function get_mytown_cookie() {
			var cookieName = 'mytown';
			
			place = getCookie(cookieName);
			
			if (place!=null && place!="") {
				return place;
			} else {
				var default_place = 'goole'
				set_mytown_cookie(default_place);
				return default_place;
			}
		}

		function set_mytown_cookie(value) {
			c_name = "mytown";
			
			expiredays = "365";
			
			var exdate = new Date();

			exdate.setDate(exdate.getDate()+expiredays);

			document.cookie = c_name + "=" + escape(value) + "; expires=" + exdate.toGMTString() + "; path=" + host_path;
			
		}
		
		function mytown_def(str) {
			this.place = str;
		}

		mytown = new mytown_def(get_mytown_cookie());

		function mytown_load(init) {
			$("#mytown_loading").slideDown();
			$("#mytown").slideUp(function() {
				if (init == true) {
					$('<h4 class="cat_header"></h4>').appendTo("#mytown");
					$('<div id="mytown-items"></div>').appendTo("#mytown");
					$('<div id="place-listing"></div>').hide().appendTo("#mytown");

					$.getJSON("/json/place_tags.php", { sections: 3 }, function(data) {
						$('<ul class="listing" id="section0"></ul>').appendTo("#place-listing");
						$('<ul class="listing" id="section1"></ul>').appendTo("#place-listing");
						$('<ul class="listing" id="section2"></ul>').appendTo("#place-listing");
						
						$('<p id="cancel" class="controls"><a>Cancel</a></p>').appendTo("#place-listing");

						$.each(data.section0, function(i,item) {
							var sectionDiv = "#section0";
							
							$("<li>").attr("id", item.id).appendTo(sectionDiv);
							$("<a>" + item.title + "</a>").attr("id", item.quickTitle).attr("href", item.link).appendTo(sectionDiv + " #" + item.id);
							$("</li>").appendTo(sectionDiv);
						});
						
						$.each(data.section1, function(i,item) {
							var sectionDiv = "#section1";
							
							$("<li>").attr("id", item.id).appendTo(sectionDiv);
							$("<a>" + item.title + "</a>").attr("id", item.quickTitle).attr("href", item.link).appendTo(sectionDiv + " #" + item.id);
							$("</li>").appendTo(sectionDiv);
						});
						
						$.each(data.section2, function(i,item) {
							var sectionDiv = "#section2";
							
							$("<li>").attr("id", item.id).appendTo(sectionDiv);
							$("<a>" + item.title + "</a>").attr("id", item.quickTitle).attr("href", item.link).appendTo(sectionDiv + " #" + item.id);
							$("</li>").appendTo(sectionDiv);
						});
					});
				}
				
				// TODO: Reset cookie if place not found

				var keywords = mytown.place;

				$.getJSON("/json/tags.php", { keywords: keywords, limit: 3, from: 0 }, function(data) {
					
					if (data.metaFound == false) {
						$("#mytown-items").hide();
						$("#place-listing").show();
						$("#mytown").slideDown();
					}
					
					$("#mytown .cat_header").html('');
					
					$("<a>" + data.metaName + "</a>").attr("href", data.metaLink).appendTo("#mytown .cat_header");
					
					var categoryDiv = "#mytown-items";
					
					$(categoryDiv).html('');
					
					$.each(data.allItems, function(i,item) {
						$("<h3></h3>").attr("id", "item-" + item.id).appendTo(categoryDiv);
						$("<a>"+ item.title +"</a>").attr("href", item.link).appendTo(categoryDiv + " #item-" + item.id);
						$("<p>" + item.description + "</p>").appendTo(categoryDiv);
					});
					
					$('<p id="change-town" class="controls"><a href="#">Change Town</a></p>').appendTo(categoryDiv);
					
					$(categoryDiv).show();
					$("#place-listing").hide();
					
					$("#mytown_loading").slideUp();
					$("#mytown").slideDown();

					
					$("#change-town a").click(function(event) {
						event.preventDefault();

						$("#mytown-items").slideUp();
						$("#place-listing").slideDown();
					});

					$("#cancel a").click(function(event) {
						event.preventDefault();

						$("#mytown-items").slideDown();
						$("#place-listing").slideUp();
			        });

					$(".listing li a").click(function(event) {
						event.preventDefault();

						var place = this.id;

						set_mytown_cookie(place);
						mytown = new mytown_def(place);

						mytown_load(false);
					});

					
					
				});
			});
		}

		mytown_load(true);

	}

	function tracking_url(url) {
		pageTracker._trackPageview(url);
	}
});