var savedCategories;
var global_categories, global_regions, global_areas, global_search_string;
var global_current_browse_page = 1;
var global_browse_limit = 10;

is_ie = ( /msie/i.test(navigator.userAgent) && 
				!/opera/i.test(navigator.userAgent));			

function loadJQuery(){
	google.load("jquery", "1.2.6");	
}

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}

function changeSelectedCategories(element)
{
	savedCategories = null;
}

function changePackage(element, packageIdValue)
{
	if(element){
		packageIdValue = element.value;
	}
	
	var companyNameLabel = document.getElementById("companyNameLabel");
	var companyAddressLabel = document.getElementById("companyAddressLabel");
	var cityTownLabel = document.getElementById("cityTownLabel");
	var telephoneLocalLabel = document.getElementById("telephoneLocalLabel");
	var telephoneTollFreeLabel = document.getElementById("telephoneTollFreeLabel");
	var telephoneFaxLabel = document.getElementById("telephoneFaxLabel");
	var telephoneTollFreeLabel = document.getElementById("telephoneFaxLabel");
	var emailAddressLabel = document.getElementById("emailAddressLabel");
	var emailAddressRepeatLabel = document.getElementById("emailAddressRepeatLabel");
	var websiteAddressLabel = document.getElementById("websiteAddressLabel");
	var regionLabel = document.getElementById("regionLabel");
	var gpsCoordinatesLabel = document.getElementById("gpsCoordinatesLabel");
	var bodyOfWaterLabel = document.getElementById("bodyOfWaterLabel");
	var mainCategoryLabel = document.getElementById("mainCategoryLabel");
	var mainCategories = document.getElementsByName("mainCategories[]");	
	var mainCategoryCheckList = document.getElementById("mainCategoryCheckList");
	var logoLabel = document.getElementById("logoLabel");
	var pictureLabel = document.getElementById("pictureLabel");
	var pdfLabel = document.getElementById("pdfLabel");
	var dynamicMapLabel = document.getElementById("dynamicMapLabel");
	var dynamicMapSearchLabel = document.getElementById("dynamicMapSearchLabel");
	var dynamicMapCanvasLabel = document.getElementById("dynamicMapCanvasLabel");	
	var descriptionLabel = document.getElementById("descriptionLabel");
	var companyNameLabel = document.getElementById("companyNameLabel");
	
	//Save main category list...
	if(!savedCategories){
		savedCategories = Array();
		var savedCategoryIndex = 0;
		for(var i = 0; i < mainCategories.length; i++){					
			if(mainCategories[i].checked == true){											
				savedCategories[savedCategoryIndex] = mainCategories[i].value;
				savedCategoryIndex++;			
			}
		}			
	}
	
	//Do the grey out document thingy!
	
	$.getJSON
	(
		"/lib/service/package.php?jsoncallback=?", {id: packageIdValue}, 
  	function (data) 
  	{ 
  		$.each(data.packages, function(i, packageItem){				
				if(packageItem.CompanyName){				
					companyNameLabel.style.display = "";
				}else{					
					companyNameLabel.style.display = "none";
				}
				
				if(packageItem.CompanyAddress){				
					companyAddressLabel.style.display = "";
				}else{					
					companyAddressLabel.style.display = "none";
				}
				
				if(packageItem.TelephoneLocal){
					telephoneLocalLabel.style.display = "";
				}else{
					telephoneLocalLabel.style.display = "none";
				}
				
				if(packageItem.TelephoneTollFree){
					telephoneTollFreeLabel.style.display = "";
				}else{
					telephoneTollFreeLabel.style.display = "none";
				}
				
				if(packageItem.TelephoneFax){
					telephoneFaxLabel.style.display = "";
				}else{
					telephoneFaxLabel.style.display = "none";
				}
				
				//email repeat too
				if(packageItem.EmailAddress){
					emailAddressLabel.style.display = "";
					emailAddressRepeatLabel.style.display = "";
				}else{
					emailAddressLabel.style.display = "none";
					emailAddressRepeatLabel.style.display = "none";
				}
				
				if(packageItem.Region){
					regionLabel.style.display = "";
				}else{
					regionLabel.style.display = "none";
				}
				
				if(packageItem.CityTown){
					cityTownLabel.style.display = "";
				}else{
					cityTownLabel.style.display = "none";
				}
				
				if(packageItem.GpsCoordinates){
					gpsCoordinatesLabel.style.display = "";
				}else{
					gpsCoordinatesLabel.style.display = "none";
				}
				
				if(packageItem.DynamicMap){	
					dynamicMapLabel.style.display = "";
					dynamicMapSearchLabel.style.display = "";
					dynamicMapCanvasLabel.style.display = "";
				}else{
					dynamicMapLabel.style.display = "none";
					dynamicMapSearchLabel.style.display = "none";
					dynamicMapCanvasLabel.style.display = "none";
				}
				
				if(packageItem.BodyOfWater){
					bodyOfWaterLabel.style.display = "";
				}else{
					bodyOfWaterLabel.style.display = "none";
				}
				
				if(packageItem.Logo){
					logoLabel.style.display = "";
				}else{
					logoLabel.style.display = "none";
				}
				
				if(packageItem.Picture){
					pictureLabel.style.display = "";
				}else{
					pictureLabel.style.display = "none";
				}
				
				if(packageItem.Description){
					//DescriptionLength
					descriptionLabel.style.display = "";
				}else{
					descriptionLabel.style.display = "none";
				}
				
				if(packageItem.PdfDownload){					
					pdfLabel.style.display = "";
				}else{
					pdfLabel.style.display = "none";
				}
					
				if(packageItem.MainCategoryNumber >= 1){								
					if(packageItem.MainCategoryLimited && packageItem.Categories.length > 1){
						mainCategoryCheckList.innerHTML = "";
						
						for(var x = 0; x < packageItem.Categories.length; x++){
							var selectedOption = false;
							if(savedCategories && savedCategories.length > 0){
								for(var y = 0; y < savedCategories.length; y++){
									if(selectedOption == false && savedCategories[y] == packageItem.Categories[x].Id){
										selectedOption = true;
									}
								}
							}
							
							var selectedOut = "";
							if(selectedOption){
								selectedOut = "checked=\"checked\"";
							}							
							
							if(packageItem.Price == 0){
								mainCategoryCheckList.innerHTML += "<p><input type=\"checkbox\" name=\"mainCategories[]\" id=\"mainCateogry_" + packageItem.Categories[x].Id + "\" value=\"" +  packageItem.Categories[x].Id + "\" onclick=\"return limitCategoryInput(this, '" + packageItem.MainCategoryNumber + "')\" " + selectedOut + "/><label class=\"floatNone\" for=\"mainCateogry_" +  packageItem.Categories[x].Id + "\">" + packageItem.Categories[x].ParentName + " / " + packageItem.Categories[x].Name + "</label></p>";
							}else{																
								mainCategoryCheckList.innerHTML += "<p><input type=\"checkbox\" name=\"mainCategories[]\" id=\"mainCateogry_" + packageItem.Categories[x].Id + "\" value=\"" +  packageItem.Categories[x].Id + "\" onclick=\"recalculateTotal()\" /><label class=\"floatNone\" for=\"mainCateogry_" +  packageItem.Categories[x].Id + "\" " + selectedOut + ">" + packageItem.Categories[x].ParentName + " / " + packageItem.Categories[x].Name + "</label></p>";
							}							
						}
					}else{						
						$.getJSON
						(
							"/lib/service/category.php?jsoncallback=?", 
					  	function (data) 
					  	{					  		
					  		mainCategoryCheckList.innerHTML = "";
					  		
					  		$.each(data.categories, function(i, category){		
					  			selectedOption = false;					  			
					  			if(savedCategories && savedCategories.length > 0){						  																					
										for(var x = 0; x < savedCategories.length; x++){																																																
											if(selectedOption == false && savedCategories[x] == category.Id){												
												selectedOption = true;
											}
										}
									}
									
									var selectedOut = "";
									if(selectedOption){
										selectedOut = "checked=\"checked\"";
									}
											  			
					  			var categoryName = category.ParentName + " / " + category.Name;										
									
									if(packageItem.Price == 0){
										mainCategoryCheckList.innerHTML += "<p><input type=\"checkbox\" name=\"mainCategories[]\" id=\"mainCateogry_" + category.Id + "\" value=\"" +  category.Id + "\" onclick=\"return limitCategoryInput(this, '" + packageItem.MainCategoryNumber + "')\" " + selectedOut + "/><label class=\"floatNone\" for=\"mainCateogry_" +  category.Id + "\">" + categoryName + "</label></p>";
									}else{																
										mainCategoryCheckList.innerHTML += "<p><input type=\"checkbox\" name=\"mainCategories[]\" id=\"mainCateogry_" + category.Id + "\" value=\"" +  category.Id + "\" onclick=\"recalculateTotal()\" " + selectedOut +  "/><label class=\"floatNone\" for=\"mainCateogry_" +  category.Id + "\">" + categoryName + "</label></p>";
									}	
								});								
					  	}
					  );
					}					
					mainCategoryLabel.style.display = "";					
				}else{
					mainCategoryLabel.style.display = "none";
				}		
				
			});			
  	}
  );	
}

function changeSubscriptionLength(element, allowOncePerYear, allowTwicePerYear)
{
	var scheduleElement = document.getElementById("schedule");	
	scheduleElement.length = 0;	
	
	scheduleElement.options[0] = new Option("Please Select", "", false, false);
		
	if(element.id == "lengthTwoYear"){
		scheduleElement.options[1] = new Option("Once Every Two Years", "once_per_two_years", true, true);
	}else{
		var i = 1;
		if(allowOncePerYear){
			scheduleElement.options[i] = new Option("Once Per Year", "once_per_year", false, false);	
			i++;
		}
		
		if(allowTwicePerYear){
			scheduleElement.options[i] = new Option("Twice Per Year", "twice_per_year", false, false);	
			i++;
		}	
	}
}

function recalculateTotal()
{	
	var packagePrice = document.getElementById("packagePrice").value;
	var numberOfMainCategories = document.getElementById("mainCategoryNumber").value;
	var pricePerAdditionalCategory = document.getElementById("pricePerAdditionalCategory").value;	
	var discountAmount = document.getElementById("discountAmount").value;
	var gstPercent = document.getElementById("gstPercent").innerHTML;
	
	var subscriptionLengthOneYear = document.getElementById("lengthOneYear").checked;
	var subscriptionLengthTwoYear = document.getElementById("lengthTwoYear").checked;
	var subscriptionLength;
	
	if(subscriptionLengthOneYear){
		subscriptionLength = 1;
	}else if(subscriptionLengthTwoYear){
		subscriptionLength = 2;
	}else{
		subscriptionLengthOneYear.checked = true;
		subscriptionLength = 1;
	}
	
	var subscriptionSchedule = document.getElementById("subscriptionSchedule").value;
	
	if(!subscriptionSchedule || subscriptionLength == 1 && subscriptionSchedule == 'once_per_two_years'){		
		subscriptionSchedule = 'once_per_year';
		document.getElementById("subscriptionSchedule").selectedIndex = 1;
	}else if(subscriptionLength > 1 && subscriptionSchedule != 'once_per_two_years'){
		subscriptionSchedule = 'once_per_two_years';
		document.getElementById("subscriptionSchedule").selectedIndex = 3;
	}
		
	if(!discountAmount){
		discountAmount = 0;
	}else{
		discountAmount = 1 * discountAmount;
	}
	
	if(!pricePerAdditionalCategory){
		pricePerAdditionalCategory = 0;
	}else{
		pricePerAdditionalCategory = 1 * pricePerAdditionalCategory;
	}
		
	if(!numberOfMainCategories){
		numberOfMainCategories = 0;
	}else{
		numberOfMainCategories = 1 * numberOfMainCategories;
	}
	
	if(!packagePrice){
		packagePrice = 0;
	}else{
		packagePrice = 1 * packagePrice;
	}
	
	if(!gstPercent){
		gstPercent = 0;
	}else{
		gstPercent = gstPercent.replace("%", "");
		gstPercent = gstPercent / 100;
	}
	
	if(!subscriptionLength){
		subscriptionLength = 0;
	}else{
		subscriptionLength = 1 * subscriptionLength;
	}
	
	var checkedCategories = document.getElementsByName("mainCategories[]");
				
	var packageTotal = document.getElementById("packagePriceTotal");
	var additionalCategoryTotal = document.getElementById("additionalCategoriesPriceTotal");	
	var subtotalElement = document.getElementById("subtotal");
	var discountElement = document.getElementById("discountTotal");
	var gstElement = document.getElementById("gstTotal");
	var totalElement = document.getElementById("subscriptionTotal");	
	
	var additionalTotalLabel = document.getElementById("additionalTotalLabel");	
	var additionalTotalAmount = document.getElementById("additionalTotalAmount");	
		
	var categoryTotal = 0;
	var subtotal = 0;
	var gst = 0;
	var discount = 0;
	var totalToPay = 0;
	
	if(discountAmount >= 1){		
		discountAmount = discountAmount / 100;
	}
		
	var categoryCount = 0
	for(var i = 0; i < checkedCategories.length; i++){
		if(checkedCategories[i].checked){
			categoryCount ++;
		}
	}
		
	categoryTotal = categoryCount - numberOfMainCategories;
	if(categoryTotal < 0){
		categoryTotal = 0;
	}
	
	categoryTotal = categoryTotal * pricePerAdditionalCategory;	
	
	subtotal = categoryTotal + packagePrice;
	discount = subtotal * discountAmount;
	gst = (subtotal - discount) * gstPercent;
	total = (subtotal - discount) + gst;
	
	if(subscriptionLength > 1 || subscriptionSchedule != 'once_per_year'){
		var divideAmount = 1;
		
		if(subscriptionLength > 1){
			additionalTotalLabel.innerHTML = "Total To Pay Every Two Years";
		}else{
			switch(subscriptionSchedule){
				case "monthly":
					additionalTotalLabel.innerHTML = "Total To Pay Every Month";
					divideAmount = 12;
					break;
				case "twice_per_year":
					additionalTotalLabel.innerHTML = "Total To Pay Every Half Year";
					divideAmount = 2;
					break;				
			}
		}		
		totalToPay = (total * subscriptionLength) / divideAmount;		
		additionalTotalAmount.innerHTML = "$" + totalToPay.toFixed(2);		
	}else{
		additionalTotalLabel.innerHTML = "";
		additionalTotalAmount.innerHTML = "";	
	}
		
	packageTotal.innerHTML = "$" + packagePrice.toFixed(2);
	additionalCategoryTotal.innerHTML = "$" + categoryTotal.toFixed(2);	
	subtotalElement.innerHTML = "$" + subtotal.toFixed(2);
	discountElement.innerHTML = "($" + discount.toFixed(2) + ")";
	gstElement.innerHTML = "$" + gst.toFixed(2);
	totalElement.innerHTML = "$" + total.toFixed(2);
}

function changeRegion(element)
{
	var areaElement = document.getElementById("area");
	var bodyOfWaterList = document.getElementById("bodyOfWaterId");
	if(element.value == "")
  {
		return false;	
	}
	
	if(areaElement)
  {
		areaElement.length = 0;	
		areaElement.options[0]= new Option("Not Set", "", true, false);
		document.getElementById("areaWorking").className = "workingOn";
		var regionIdValue = element.value;
		
		$.getJSON
		(
			"/lib/service/area.php?jsoncallback=?", {regionId: regionIdValue}, 
	  	function (data) 
	  	{
	  		$.each(data.areas, function(i, areaItem){
					areaElement.options[i + 1]=new Option(areaItem.Name, areaItem.Id, false, false);
				});
				document.getElementById("areaWorking").className = "workingOff";
	  	}
	  );
	}
	
	if(bodyOfWaterList){
		bodyOfWaterList.length = 1;
		bodyOfWaterList.options[0]= new Option("Not Set", "", true, false);
		bodyOfWaterList.options[1]= new Option("Enter New", "new", true, false);
		document.getElementById("bodyOfWaterWorking").className = "workingOn";
		
		var regionIdValue = element.value;
				
		$.getJSON
		(
			"/lib/service/bodyOfWater.php?jsoncallback=?", {regionId: regionIdValue}, 
	  	function (data) 
	  	{	  	
	  		$.each(data.bodyOfWaterList, function(i, bodyOfWaterItem){	  			
					if (i == 0) { i = i + 1; } //added the enter new item and didn't know how to make this function start at 1 so using this hackish approch
					bodyOfWaterList.options[i + 1]=new Option(bodyOfWaterItem.Name, bodyOfWaterItem.Id, false, false);
				});
				document.getElementById("bodyOfWaterWorking").className = "workingOff";
	  	}
	  );
	}
}

function showBodyOfWaterManual(element)
{
	var bodyOfWaterManualElement = document.getElementById("bodyOfWaterManualLabel");
	
	if(bodyOfWaterManualElement)
	{
		if(element.value == "new")
		{
			bodyOfWaterManualElement.className = "";
		}	
		else
		{
			bodyOfWaterManualElement.className = "displayNone";
		}
	}
}

function bodyOfWaterCheck(element)
{
	var bodyOfWaterLI = document.getElementById("bodyOfWaterList");
	var bodyOfWaterManualElement = document.getElementById("bodyOfWaterManualLabel");
	var bodyOfWaterDropDownElement = document.getElementById("bodyOfWaterId");

	if(element.checked == true){
		bodyOfWaterLI.className = "";

		if(bodyOfWaterDropDownElement.value == "new")
		{
			bodyOfWaterManualElement.className = "";
		}	
		else
		{
			bodyOfWaterManualElement.className = "displayNone";
		}
	}else{
		bodyOfWaterLI.className = "displayNone";
		bodyOfWaterManualElement.className = "displayNone";
	}
}

function limitCategoryInput(element, numberPayedFor)
{
	var count = 0;
	var categoriesLeft = 0;
	var freeCategoriesLeftElement = document.getElementById("freeCategoriesLeft");
	
	var mainCategoryCheckbox = document.getElementsByName("mainCategories[]");
	
	var allowCheck = true;
	
	for(var i = 0; i < mainCategoryCheckbox.length; i++){
		if(mainCategoryCheckbox[i].checked){
			count ++;
			if(count > numberPayedFor){
				//element.options[i].selected = false;
				allowCheck = false;
				count --;
			}
		}
	}
	
	categoriesLeft = count;
	if(categoriesLeft < 0){
		categoriesLeft = 0;
	}
	
	if(freeCategoriesLeftElement){
		freeCategoriesLeftElement.innerHTML = categoriesLeft;	
	}
	
	
	return allowCheck;
}

function checkCategoryInput(element, maxNumber, additionalCategoryPrice)
{
	var freeCategoriesLeft = maxNumber;
	var additionalCategoriesTotal = 0;
	
	var freeCategoriesLeftElement = document.getElementById("freeCategoriesLeft");
	var additionalCategoriesTotalElememt = document.getElementById("additionalCategoryTotal");
	
	var checkboxElements = document.getElementsByName("mainCategories[]");
	
	var count = 0
	for(var i = 0; i < checkboxElements.length; i++){
		if(checkboxElements[i].checked){
			count ++;
		}
	}
		
	freeCategoriesLeft = count;
	if(freeCategoriesLeft < 0){
		freeCategoriesLeft = 0;
	}
	
	freeCategoriesLeftElement.innerHTML = freeCategoriesLeft;
	
	additionalCategoriesTotal = count - maxNumber;
	if(additionalCategoriesTotal < 0){
		additionalCategoriesTotal = 0;
	}
	
	additionalCategoriesTotal = additionalCategoryPrice * additionalCategoriesTotal;
	
	additionalCategoriesTotalElememt.innerHTML = "$" + additionalCategoriesTotal.toFixed(2);
}

function CheckDescriptionLength(event, element, maxLength)
{
	var descriptionLength = element.value;
	if(descriptionLength > maxLength){
		element.value = element.value.substr(0, maxLength);
	}
	
	descriptionCharactersLeftElement = document.getElementById("descriptionCharactersLeft");
	descriptionCharactersLeftElement.innerHTML = maxLength - element.value.length;	
}


function CheckDescriptionLengthtinyMCE(event, element, maxLength)
{

	var descriptionLength = getLengthMCE(element);

	if(descriptionLength > maxLength){

		//TODO: figure out how to block new content without messing up the embedded HTML of the WYSIWYG editor
		//i.e. text = text + HTML tags, maxLength is for just the text not the tags
		//var text = tinyMCE.get(element).getContent();
		//tinyMCE.get(element).setContent(text.substr(0, (text.length - 1)));
	}
	
	descriptionCharactersLeftElement = document.getElementById("descriptionCharactersLeft");
	descriptionCharactersLeftElement.innerHTML = maxLength - descriptionLength;	
}

function getLengthMCE(editorId) 
{
    // Get the editor instance that we want to interact with.
    var oEditor = tinyMCE.get(editorId) ;

    // Get the Editor Area DOM (Document object).
    var oDOM = oEditor.getDoc() ;

    var iLength ;
    // The are two diffent ways to get the text (without HTML markups).
    // It is browser specific.
    if (document.all) {
        // If Internet Explorer.
        iLength = oDOM.body.innerText.length;
    } else {
        // If Gecko.
        var r = oDOM.createRange() ;
        r.selectNodeContents(oDOM.body);
        iLength = r.toString().length;
    }

    return iLength;
}

function newWindow(element)
{
	element.target = "_blank";
	return true;
}

function viewTab(element)
{	
	var advertisementTab = document.getElementById("advertisementTab");
	var fullPageTab = document.getElementById("fullPageTab");
	
	var feature_getaway_tab = document.getElementById("feature_getaway_tab");
	var feature_seasonal_tab = document.getElementById("feature_seasonal_tab");
	var feature_weekend_tab = document.getElementById("feature_weekend_tab");
	var feature_romantic_tab = document.getElementById("feature_romantic_tab");
	var feature_family_tab = document.getElementById("feature_family_tab");
	
	element.className = "current";
	
	if(element.id != advertisementTab.id){
		advertisementTab.className = "";
	}
	
	if(fullPageTab && element.id != fullPageTab.id){
		fullPageTab.className = "";
	}
	
	if(feature_getaway_tab && element.id != feature_getaway_tab.id){
		feature_getaway_tab.className = "";
	}
	
	if(feature_seasonal_tab && element.id != feature_seasonal_tab.id){
		feature_seasonal_tab.className = "";
	}
	
	if(feature_weekend_tab && element.id != feature_weekend_tab.id){
		feature_weekend_tab.className = "";
	}

	if(feature_romantic_tab && element.id != feature_romantic_tab.id){
		feature_romantic_tab.className = "";
	}

	if(feature_family_tab && element.id != feature_family_tab.id){
		feature_family_tab.className = "";
	}
	
	var jqueryUrl = "";
	var jqueryId = element.parentNode.id;
	var advertisementIdValue = document.getElementById("advertisementId").value;
	var viewType = null;
	
	switch(element.id){		
		case "advertisementTab":			
			$.get("/lib/service/html/advertisement.php", { id: jqueryId }, populateTabContent, "html");		
			break;
		case "fullPageTab":
			$.get("/lib/service/html/advertisement.php", { id: jqueryId, view: viewType }, populateTabContent, "html");	
			break;
		case "feature_getaway_tab":			
		case "feature_seasonal_tab":			
		case "feature_weekend_tab":				
			$.get("/lib/service/html/feature.php", { advertisementId: advertisementIdValue, view: "private", type: jqueryId  }, populateTabContent, "html");				
			break;
	}
	
	element.blur();	
	
	return false;
}

function populateTabContent(data, textStatus)
{
	document.getElementById("tabContent").innerHTML = "";	
	if(textStatus == "success"){
		$("#tabContent").append(data);
	}	
}

function populateSearchContent(data, textStatus){
	document.getElementById("searchResults").innerHTML = "";	
	if(textStatus == "success"){
		$("#searchResults").append(data);
	}	
}

function toggleChildren(ev, element){	
	if(ev){
		element = is_ie ? window.event.srcElement : ev.target;		
		if(!element.id){			
			for(; !element.id; element = element.parentNode);			
		}		
	}
	
	var elementId = element.id.replace("master_", "");	
	var childDiv = document.getElementById("child_" + elementId);	
	var plusMinus = element.firstChild;
	
	if(plusMinus){
		if(plusMinus.className == "plusSign"){
			childDiv.style.display = "";
			plusMinus.className = "minusSign";
		}else if(plusMinus.className == "minusSign"){
			childDiv.style.display = "none";
			plusMinus.className = "plusSign";
		}	
	}
}

function paginationBrowse(ev, element)
{
	categories = global_categories;
	regions = global_regions;
	areas = global_areas;
		
	var categoryValues = "";
	var regionValues = "";
	var areaValues = "";
	var pageNumberValue = 1;
		
	if(categories){
		for(var i = 0; i < categories.length; i++){			
			categoryValues += categories[i] + ", ";				
		}
		categoryValues = categoryValues.substr(0, categoryValues.length - 2);
	}
	
	if(regions){
		for(var i = 0; i < regions.length; i++){			
			regionValues += regions[i] + ", ";				
		}
		regionValues = regionValues.substr(0, regionValues.length - 2);
	}
	
	if(areas){
		for(var i = 0; i < areas.length; i++){			
			areaValues += areas[i] + ", ";			
		}		
		areaValues = areaValues.substr(0, areaValues.length - 2);		
	}
		
	pageNumberValue = element.parentNode.id;
	
	pageNumberValue = pageNumberValue.replace("pagination_first_page_", "");
	pageNumberValue = pageNumberValue.replace("pagination_previous_page_", "");
	pageNumberValue = pageNumberValue.replace("pagination_page_", "");
	pageNumberValue = pageNumberValue.replace("pagination_next_page_", "");
	pageNumberValue = pageNumberValue.replace("pagination_last_page_", "");
	
	global_current_browse_page = pageNumberValue;	
	
	$.get("/lib/service/html/browse.php", { categoryList: categoryValues, regionList: regionValues, areaList: areaValues, limit: global_browse_limit, pageNumber: pageNumberValue}, populateSearchContent, "html");
	
	updateRightSide(categoryValues, regionValues, areaValues);
	populateMaster();
	
	return false;	
}

function updateRightSide(categoryValues, regionValues, areaValues)
{
	//TODO
	if(document.getElementById("thisWeekItems")){
		$.get("/lib/service/html/thisWeekInOntario.php", { categoryValues: categoryValues, regionValues: regionValues, areaValues: areaValues }, populateThisWeekContent, "html");
	}
	
	if(document.getElementById("featureGetaway")){
		$.get("/lib/service/html/featureTopBrowse.php", { type: 'getaway' }, populateGetawayContent, "html");	
	}
	
	if(document.getElementById("featureWeekend")){
		$.get("/lib/service/html/featureTopBrowse.php", { type: 'weekend' }, populateWeekendContent, "html");	
	}
	
	if(document.getElementById("featureSeasonal")){
		$.get("/lib/service/html/featureTopBrowse.php", { type: 'seasonal' }, populateSeasonalContent, "html");
	}
	
}

function populateThisWeekContent(data, textStatus)
{
	document.getElementById("thisWeekItems").innerHTML = "";	
	if(textStatus == "success"){
		$("#thisWeekItems").append(data);
	}	
}

function populateGetawayContent(data, textStatus)
{
	document.getElementById("featureGetaway").innerHTML = "";	
	if(textStatus == "success"){
		$("#featureGetaway").append(data);
	}	
}

function populateWeekendContent(data, textStatus)
{
	document.getElementById("featureWeekend").innerHTML = "";	
	if(textStatus == "success"){
		$("#featureWeekend").append(data);
	}	
}

function populateSeasonalContent(data, textStatus)
{
	document.getElementById("featureSeasonal").innerHTML = "";	
	if(textStatus == "success"){
		$("#featureSeasonal").append(data);
	}	
}

function browse()
{
	categories = global_categories;
	regions = global_regions;
	areas = global_areas;
	
	global_search_string = '';
	
	var categoryValues = "";
	var regionValues = "";
	var areaValues = "";
	
	if(categories){
		for(var i = 0; i < categories.length; i++){			
			categoryValues += categories[i] + ", ";				
		}
		categoryValues = categoryValues.substr(0, categoryValues.length - 2);
	}
	
	if(regions){
		for(var i = 0; i < regions.length; i++){			
			regionValues += regions[i] + ", ";				
		}
		regionValues = regionValues.substr(0, regionValues.length - 2);
	}
	
	if(areas){
		for(var i = 0; i < areas.length; i++){			
			areaValues += areas[i] + ", ";			
		}		
		areaValues = areaValues.substr(0, areaValues.length - 2);		
	}
		
	$.get("/lib/service/html/browse.php", { categoryList: categoryValues, regionList: regionValues, areaList: areaValues, limit: global_browse_limit}, populateSearchContent, "html");	
	
	//Do top update
	populateMaster();
	updateRightSide(categoryValues, regionValues, areaValues);
}

function updateFilter(ev, regionOrCategory)
{
	if(ev){
		element = is_ie ? window.event.srcElement : ev.target;		
		if(!element.id){			
			for(; !element.id; element = element.parentNode);			
		}		
		
		if(element.id.search("category") > -1){
			regionOrCategory = "category";
		}else{
			regionOrCategory = "region";
		}		
	}
	
	var categoryValues = "";
	var regionValues = "";
	var areaValues = "";
	
	var categoryDropDown = document.getElementById("categoryDropDown");
	var regionDropDown = document.getElementById("regionDropDown");
	
	if(regionOrCategory == "region"){
		var regionElement = document.getElementsByName("regions[]");
		var areaElement = document.getElementsByName("areas[]");
		
		global_regions = Array();
		global_areas = Array();
		
		if(regionElement){
			var globalRegionCount = 0;
			for(var i = 0; i < regionElement.length; i++){
				if(regionElement[i].checked == true){
					regionValues += regionElement[i].value + ", ";	
					global_regions[globalRegionCount] = regionElement[i].value;
					globalRegionCount++;
					
				}			
			}
			regionValues = regionValues.substr(0, regionValues.length - 2);			
		}
		
		if(areaElement){
			var globalAreaCount = 0;
			for(var i = 0; i < areaElement.length; i++){
				if(areaElement[i].checked == true){
					areaValues += areaElement[i].value + ", ";
					global_areas[globalAreaCount] = areaElement[i].value;
					globalAreaCount++;
				}				
			}		
			areaValues = areaValues.substr(0, areaValues.length - 2);			
		}
		
		global_current_browse_page = 1;
		
		$.getJSON
		(
			"/lib/service/category.php?jsoncallback=?", {regionList: regionValues, areaList: areaValues}, 
	  	function (data) 
	  	{	  
	  		var categoryBody = categoryDropDown.lastChild;		
	  		categoryBody.innerHTML = "";
	  		
	  		var masterCategoryId = "";
	  		var masterCategoryName = "";
	  		
	  		var masterCategoryDiv;
	  		var childCategoryDiv;
	  			
	  		$.each(data.categories, function(i, category){  	  			
					if(!masterCategoryId || masterCategoryId != category.ParentId){
						
						if(masterCategoryId){
							categoryBody.appendChild(masterCategoryDiv);
							categoryBody.appendChild(childCategoryDiv);							
						}
						masterCategoryId = category.ParentId;
						masterCategoryName = category.ParentName;
						
						masterCategoryDiv = document.createElement("div");
						masterCategoryDiv.id = "master_category_" + masterCategoryId;
						masterCategoryDiv.className = "masterCategory";														
						masterCategoryDiv.onclick = toggleChildren;
												
						var masterCategoryPlusSign = document.createElement("span");
						masterCategoryPlusSign.className = "plusSign";
						masterCategoryPlusSign.innerHTML = "&nbsp;";
						
						var masterCategoryLabel = document.createElement("label");
						masterCategoryLabel.innerHTML = masterCategoryName;
						
						masterCategoryDiv.appendChild(masterCategoryPlusSign);
						masterCategoryDiv.appendChild(masterCategoryLabel);
						
						childCategoryDiv = document.createElement("div");
						childCategoryDiv.id = "child_category_" + masterCategoryId;
						childCategoryDiv.className = "childCategory";
						childCategoryDiv.style.display = "none";					
					}
					
					var childCategoryP = document.createElement("p");					
					var childCategoryCheckbox = document.createElement("input");
					
					childCategoryCheckbox.type = "checkbox";
					
					childCategoryCheckbox.name = "categories[]";
					childCategoryCheckbox.id = "category_" + category.Id;
					childCategoryCheckbox.value = category.Id;					
					childCategoryCheckbox.onchange = updateFilter;
					
					if(global_categories){												
						for(y = 0; y < global_categories.length; y++){									
							if(global_categories[y] == category.Id){								
								childCategoryCheckbox.checked = true;
							}
						}
					}
					
					var childCategoryLabel = document.createElement("label");
					childCategoryLabel.htmlFor = "category_" + category.Id;
					childCategoryLabel.innerHTML = category.Name;
					
					childCategoryP.appendChild(childCategoryCheckbox);
					childCategoryP.appendChild(childCategoryLabel);
					
					childCategoryDiv.appendChild(childCategoryP);
					
				});
				
				categoryBody.appendChild(masterCategoryDiv);
				categoryBody.appendChild(childCategoryDiv);	
				
	  	}
	  );	
	}else if(regionOrCategory == "category"){
		var categoryElement = document.getElementsByName("categories[]");
		global_categories = Array();
		if(categoryElement){
			var globalCategoryCount = 0;
			for(var i = 0; i < categoryElement.length; i++){
				if(categoryElement[i].checked == true){
					categoryValues += categoryElement[i].value + ", ";	
					global_categories[globalCategoryCount] = categoryElement[i].value;
					globalCategoryCount++;
				}			
			}
			categoryValues = categoryValues.substr(0, categoryValues.length - 2);			
		}
		
		$.getJSON
		(
			"/lib/service/area.php?jsoncallback=?", {categoryList: categoryValues},
	  	function (data) 
	  	{		
	  		var regionBody = regionDropDown.lastChild;		
	  		regionBody.innerHTML = "";
	  		
	  		var masterRegionId = "";
	  		var masterRegionName = "";
	  		
	  		var masterRegionDiv;
	  		var childRegionDiv;
	  		
	  		$.each(data.regions, function(i, region){
	  			masterRegionDiv = document.createElement("div");
					masterRegionDiv.className = "masterCategory";
					masterRegionDiv.id = "master_region_"  + region.Id;   											
					masterRegionDiv.onclick = toggleChildren;
										
					var plusSignDiv = document.createElement("span");
					if(region.Areas.length > 0){
						plusSignDiv.className = "plusSign";	
					}else{
						plusSignDiv.className = "hiddenSign";	
					}
					
					plusSignDiv.innerHTML = "&nbsp;";
					
					var masterCheckbox = document.createElement("input");
					masterCheckbox.type = "checkbox";					
					masterCheckbox.onchange = updateFilter;
					masterCheckbox.name = "regions[]";
					masterCheckbox.id = "region_" + region.Id;
					masterCheckbox.value = region.Id;
					
					if(global_regions){												
						for(y = 0; y < global_regions.length; y++){									
							if(global_regions[y] == region.Id){								
								masterCheckbox.checked = true;
							}
						}
					}
					
					var masterSpan = document.createElement("span");
					masterSpan.className = "masterCategorySpan";
					masterSpan.innerHTML = region.Name;
					
					masterRegionDiv.appendChild(plusSignDiv);
					masterRegionDiv.appendChild(masterCheckbox);
					masterRegionDiv.appendChild(masterSpan);
					
					childRegionDiv = document.createElement("div");
					childRegionDiv.id = "child_region_" + region.Id;
					childRegionDiv.className = "childCategory";
					childRegionDiv.style.display = "none";
					$.each(region.Areas, function(y, areaItem){ 
						var childRegionP = document.createElement("p");
						
						var childRegionCheckbox = document.createElement("input");
						childRegionCheckbox.onchange = updateFilter;
						childRegionCheckbox.type = "checkbox";						
						childRegionCheckbox.name = "areas[]";
						childRegionCheckbox.id = "area_" + areaItem.Id;
						childRegionCheckbox.value = areaItem.Id;
						
						if(global_areas){												
							for(y = 0; y < global_areas.length; y++){									
								if(global_areas[y] == areaItem.Id){								
									childRegionCheckbox.checked = true;
								}
							}
						}
												
						var childRegionLabel = document.createElement("label");
						childRegionLabel.htmlFor = "area_" + areaItem.Id;
						childRegionLabel.innerHTML = areaItem.Name;
						
						childRegionP.appendChild(childRegionCheckbox);
						childRegionP.appendChild(childRegionLabel);
						
						childRegionDiv.appendChild(childRegionP);
					});
					
					regionBody.appendChild(masterRegionDiv);
					regionBody.appendChild(childRegionDiv);
					
	  		});	  	  			
	  	}
	  );	
	}
}

function attachEvent(el, evname, func)
{
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
}

function getQueryVariable(variable) 
{
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0; i < vars.length; i++){
		var pair = vars[i].split("=");
		if(pair[0] == variable){
			return pair[1];
		}
	}
	return false;
}

function newPopup(popUrl)
{
	window.open( popUrl.href, "myWindow", "status = 1, height = 300, width = 380, resizable = 0" )
	return false;	
}


function newPopupWH(popUrl, w, h)
{
	window.open( popUrl.href, "myWindow", "status = 1, height = " + h + ", width = " + w + ", resizable = 0" )
	return false;	
}


function SubmitPage(always)
{
	if (always)
	{
		document.pageform.submit();
	}
	else
	{

		//find out what borwser

		if (BrowserDetect.browser == 'Explorer')
		{
			document.pageform.submit();
		}
	}
}

function addElement(inputControl, outputList)
{
	// Get the value into the input text field
	var element=document.getElementById(inputControl).value;

	if(element=="")
	{
		// Show an error message if the field is blank;
		//document.getElementById('msg').style.display="block";
		//document.getElementById('msg').innerHTML = "Error! Insert a description for the element";
	}
	else
	{
		// This is the <ul> element that will contains the new elements
		var container = document.getElementById(outputList);

		// Create a new <li> element for to insert inside <ul>
		var new_element = document.createElement('li');
		new_element.innerHTML = element;
		container.insertBefore(new_element, container.firstChild);

		// Show a message if the element has been added;
		//document.getElementById('msg').style.display="block";
		//document.getElementById('msg').innerHTML = "Element added!";

		// Clean input field
		document.getElementById(inputControl).value="";
	}
}

function addUserCategory(inputControl, selectControl, outputList, inputName, formName)
{
	// Get the value into the input text field
	var element=document.getElementById(inputControl).value;

	if(element=="")
	{
		//TODO
	}
	else
	{
		// This is the <ul> element that will contains the new elements
		var container = document.getElementById(outputList);
		var masterCategory = document.getElementById(selectControl).value;

		// Create a new <li> element for to insert inside <ul>
		var new_element = document.createElement('li');
		new_element.innerHTML = masterCategory + " / " + element;
		new_element.style.paddingBottom = "0px";
		container.insertBefore(new_element, container.firstChild);
		
		var inputElem = document.createElement("input");
		inputElem.setAttribute("type", "hidden");
		inputElem.setAttribute("value", masterCategory + " / " + element);
		inputElem.setAttribute("name", inputName);

		document.forms[formName].appendChild(inputElem);


		// Clean input field
		document.getElementById(inputControl).value="";
	}
}

function moveFeatureUp(inputControl)
{
	// Get the value into the input text field
	var currentPosition=document.getElementById(inputControl).value;

	if(currentPosition == "")
	{
		//TODO
	}
	else
	{
		currentPosition = currentPosition - 1;
		if (currentPosition <= 0)
		{
			currentPosition = 1;
		}

		document.getElementById(inputControl).value = currentPosition;
	}
}

function moveFeatureDown(inputControl, maxFeatureCat)
{
	// Get the value into the input text field
	var currentPosition=document.getElementById(inputControl).value;

	if(currentPosition == "")
	{
		//TODO
	}
	else
	{
		currentPosition = parseInt(currentPosition) + 1;

		if (currentPosition > maxFeatureCat)
		{
			currentPosition = maxFeatureCat;
		}

		document.getElementById(inputControl).value = currentPosition;
	}
}
