function ToggleDiv(Id) {
    div = document.getElementById(Id);
    if(div.style) {
      if ( div.style.display == 'block' ) {
        HideDiv(Id);
      }else if ( div.style.display == 'none' ) {
        ShowDiv(Id);
      }
    } else {
      if ( div.display == 'block' ) {
        HideDiv(Id);
      }else if ( div.display == 'none' ) {
        ShowDiv(Id);
      }
    }
}

function ShowDiv(Id) {
    div = document.getElementById(Id);
    if(div.style) {
      div.style.display = 'block';
    } else {
      div.display = 'block';
    }
}
  
  
function HideDiv(Id) {
    div = document.getElementById(Id);
    if(div.style) {
      div.style.display = 'none';
    } else {
      div.display = 'none';
    }
}
  
function switchDivs(divOne, divTwo) {
	  ToggleDiv(divOne);
	  ToggleDiv(divTwo);
}


var GoldCardDetails = 
{
  
  init: function() {
    
    if (document.getElementById("paybyCard") && document.getElementById("paybyPaypal") && document.getElementById("renewGoldCardLink")) {
      Core.addEventListener(document.getElementById("paybyCard"), "click", GoldCardDetails.showPayByCard);
      Core.addEventListener(document.getElementById("paybyPaypal"), "click", GoldCardDetails.showPayByPaypal);
      Core.addEventListener(document.getElementById("renewGoldCardLink"), "click", GoldCardDetails.toggleRenewGoldCard);
    }
    
  },
  
  showPayByCard: function(event) {
    
    if (!Core.hasClass(this, "selectedTab")) {
      Core.addClass(this, "selectedTab");
      Core.removeClass(document.getElementById("paybyPaypal"), "selectedTab");
    }
    
    var ccElements = Core.getElementsByClass("ccElement");
    if (ccElements.length >0) {
      
      for (var i=0; i<ccElements.length; i++) {
        Core.removeClass(ccElements[i], "snHideBlock");
        Core.addClass(ccElements[i], "snShowBlock");
      }
    }
    
    var paypalElements = Core.getElementsByClass("paypalElement");
    if (paypalElements.length >0) {
      
      for (var i=0; i<paypalElements.length; i++) {
        Core.removeClass(paypalElements[i], "snShowBlock");
        Core.addClass(paypalElements[i], "snHideBlock");
      }
    }
    
    Core.preventDefault(event);
  },
  
  showPayByPaypal: function(event) {
    
    if (!Core.hasClass(this, "selectedTab")) {
      Core.addClass(this, "selectedTab");
      Core.removeClass(document.getElementById("paybyCard"), "selectedTab");
    }
    
     var paypalElements = Core.getElementsByClass("paypalElement");
    if (paypalElements.length >0) {
      
      for (var i=0; i<paypalElements.length; i++) {
        Core.removeClass(paypalElements[i], "snHideBlock");
        Core.addClass(paypalElements[i], "snShowBlock");
      }
    }
    
    var ccElements = Core.getElementsByClass("ccElement");
    if (ccElements.length >0) {
      
      for (var i=0; i<ccElements.length; i++) {
        Core.removeClass(ccElements[i], "snShowBlock");
        Core.addClass(ccElements[i], "snHideBlock");
      }
    }
    
    Core.preventDefault(event);
  },
  
  toggleRenewGoldCard: function(event) {
    
    if (document.getElementById("renewGoldCard")) {
      var elem = document.getElementById("renewGoldCard");
      
      if (Core.hasClass(elem, "snHideBlock")) {
        Core.removeClass(elem, "snHideBlock");
        Core.addClass(elem, "snShowBlock");
      } else if (Core.hasClass(elem, "snShowBlock")) {
        Core.removeClass(elem, "snShowBlock");
        Core.addClass(elem, "snHideBlock");
      }
    }
    
    Core.preventDefault(event);
  }
  
};

var Dashboard = 
{
  
  init: function() {
    
    if (document.getElementById("bookingTabOne") && document.getElementById("bookingTabTwo")) {
      
      //Set initial state of tabbed content
      Core.addClass(document.getElementById("bookingTabOneContent"), "snShowBlock");
      Core.addClass(document.getElementById("bookingTabTwoContent"), "snHideBlock");
      
      //Add custom properties to eack link element
      var tabOne = document.getElementById("bookingTabOne");
      var tabTwo = document.getElementById("bookingTabTwo");
      
      tabOne._otherTab = tabTwo;
      tabOne._contentOne = document.getElementById("bookingTabOneContent");
      tabOne._contentTwo = document.getElementById("bookingTabTwoContent");
      
      tabTwo._otherTab = tabOne;
      tabTwo._contentOne = document.getElementById("bookingTabOneContent");
      tabTwo._contentTwo = document.getElementById("bookingTabTwoContent");
      
      //Add Event listeners
      Core.addEventListener(tabOne, "click", Dashboard.showTabOne);
      Core.addEventListener(tabTwo, "click", Dashboard.showTabTwo);
    }
	
	if (document.getElementById("launchRoutePlanner")) {
		var launchRoutePlanner = document.getElementById("launchRoutePlanner");
		//Add Event listeners
      	Core.addEventListener(launchRoutePlanner, "click", Dashboard.launchRoutePlannerWindow);
		
	}
    
  },
  
  launchRoutePlannerWindow: function(event) {
   
    window.open(this.href,'','height=445,width=830,scrollbars=yes,resizable=no');
	
    Core.preventDefault(event);
  },
  
  showTabOne: function(event) {
    Dashboard.setActiveTab(this, this._otherTab);
    
    Core.removeClass(this._contentOne, "snHideBlock");
    Core.addClass(this._contentOne, "snShowBlock");
    
    Core.removeClass(this._contentTwo, "snShowBlock");
    Core.addClass(this._contentTwo, "snHideBlock");
    
    
    Core.preventDefault(event);
  },
  
  showTabTwo: function(event) {
    Dashboard.setActiveTab(this, this._otherTab);
    
    Core.removeClass(this._contentTwo, "snHideBlock");
    Core.addClass(this._contentTwo, "snShowBlock");
    
    Core.removeClass(this._contentOne, "snShowBlock");
    Core.addClass(this._contentOne, "snHideBlock");
    
    Core.preventDefault(event);
  },
  
  clickHandler: function(event) {
    
    Dashboard.toggleVisibility(this._contentOne);
    Dashboard.toggleVisibility(this._contentTwo);
    
    Core.preventDefault(event);
  },
  
  setActiveTab: function(tab, otherTab) {
    
    if (! Core.hasClass(tab, "activeTab")) {
      Core.addClass(tab, "activeTab");
      Core.removeClass(otherTab, "activeTab");
    }
    
    
  }
  
};

var SendMessage = 
{
  
  init: function() {
    
    if (document.getElementById("checkAllBuddies")) {
      Core.addEventListener(document.getElementById("checkAllBuddies"), "click", SendMessage.checkUncheckBuddyList);  
    }
    
    if (document.getElementById("toggleMyMsgBuddies") && document.getElementById("myMsgBuddies")) {
      
      
      //initially hide the buddy list
      var myMsgBuddies = document.getElementById("myMsgBuddies");
      Core.removeClass(myMsgBuddies, "clearFix");
      Core.addClass(myMsgBuddies, "snHideBlock");
      
      
      var toggleMyMsgBuddies = document.getElementById("toggleMyMsgBuddies");
      
      //Add as a custom property of toggleMyMsgBuddies link
      toggleMyMsgBuddies._myMsgBuddies = myMsgBuddies;
      
      //Add event listener Dashboard
      Core.addEventListener(toggleMyMsgBuddies, "click", SendMessage.toggleMyMessageBuddies);
    }
    
  },
  
  checkUncheckBuddyList: function(event) {
    var checkUncheck = document.getElementById("checkAllBuddies").checked;
    var myMsgBuddies = document.getElementById("myMsgBuddies");
    var inputs = myMsgBuddies.getElementsByTagName("input");

    if (inputs.length > 1) {
      for (var i=1; i<inputs.length; i++) {
        inputs[i].checked = checkUncheck;
      }
    }
    
  },
  
  toggleMyMessageBuddies: function(event) {
    //alert('toggleMyMessageBuddies');
    if (Core.hasClass(this, "toggleOff")) {  
      Core.removeClass(this, "toggleOff");
      Core.addClass(this, "toggleOn");
    } else {
      Core.removeClass(this, "toggleOn");
      Core.addClass(this, "toggleOff");
    }
    
    
    if (Core.hasClass(this._myMsgBuddies, "clearFix")) {  
      Core.removeClass(this._myMsgBuddies, "clearFix");
      Core.addClass(this._myMsgBuddies, "snHideBox");
    } else {
      Core.removeClass(this._myMsgBuddies, "snHideBox");
      Core.addClass(this._myMsgBuddies, "clearFix");
    }
    
    Core.preventDefault(event);
  }
  
};

var TravellerConnect = 
{
  
  init: function() {
    
    if (document.getElementById("myFriendsHomeTownText") && document.getElementById("myFriendsDestText")) {
      
      //Add event listener Dashboard
      Core.addEventListener(document.getElementById("myFriendsHomeTownText"), "focus", TravellerConnect.focusHomeTownText);
      Core.addEventListener(document.getElementById("myFriendsDestText"), "focus", TravellerConnect.focusDestText);
    }
    
  },
  
  focusHomeTownText: function(event) {
    if (this.value)
      this.value = '';
  },
  
  focusDestText: function(event) {
    if (this.value)
      this.value = '';
  }
  
};


var EditMyProfile = 
{
  
  init: function() {
	
    if (document.getElementById("editMyPassword") && document.getElementById("editMyPasswordElements")) {
      //Add event listener
      Core.addEventListener(document.getElementById("editMyPassword"), "click", EditMyProfile.toggleEditMyPasswordElements);
    }
    
  },
  
  toggleEditMyPasswordElements: function(event) {
	
	var target = document.getElementById("editMyPasswordElements");
	
	if (Core.hasClass(target, "snHideBlock")) {
		Core.removeClass(target, "snHideBlock");
		Core.addClass(target, "snShowBlock");
	} else {
		Core.removeClass(target, "snShowBlock");
		Core.addClass(target, "snHideBlock");
	}
	
	Core.preventDefault(event);
  }
  
};


var DependentFields = 
{
	
	init: function() {
		
		//Add event listeners
		if (document.getElementById("publicAccess")) {
			Core.addEventListener(document.getElementById("publicAccess"), "click", DependentFields.clickListener);
		}
	
		if (document.getElementById("buddyAccess")) {
			Core.addEventListener(document.getElementById("buddyAccess"), "click", DependentFields.clickListener);
		}
		
		if (document.getElementById("privateAccess")) {
			Core.addEventListener(document.getElementById("privateAccess"), "click", DependentFields.clickListener);
		}
		
		
		//Add event listeners for snMeetMe fields
		if (document.getElementById("dontMeetPeople")) {
			Core.addEventListener(document.getElementById("dontMeetPeople"), "click", DependentFields.dontMeetPeopleClickListener);
		}
		
		if (document.getElementById("meetPeople")) {
		
			var meetPeople = document.getElementById("meetPeople");
			
			//Add the dependant fields
			var dependants = [];
			dependants[dependants.length] = document.getElementById("showHostel");
			dependants[dependants.length] = document.getElementById("showDate");
			
			meetPeople._dependants = dependants;
			
			Core.addEventListener(meetPeople, "click", DependentFields.meetPeopleClickListener);
			
		}
		
	},
	
	toggleMeetme: function(element) {
		
		if (element.id == "publicAccess") {
			//enable meet me
			if (document.getElementById("snMeetMe")) {
				var snMeetMe = document.getElementById("snMeetMe");
				Core.removeClass(snMeetMe, "snMeetMeDisabled");
				
				document.getElementById("dontMeetPeople").disabled = false;
				Core.removeClass(document.getElementById("dontMeetPeople").parentNode, "snDisabled");
				
				document.getElementById("meetPeople").disabled = false;
				Core.addClass(document.getElementById("meetPeople").parentNode, "snDisabled");
		    }
			
		} else {
			//disable meet me
			if (document.getElementById("snMeetMe")) {
				var snMeetMe = document.getElementById("snMeetMe");
				Core.addClass(snMeetMe, "snMeetMeDisabled");
				
				document.getElementById("dontMeetPeople").checked = true;
				document.getElementById("dontMeetPeople").disabled = true;
				Core.removeClass(document.getElementById("dontMeetPeople").parentNode, "snDisabled");
				
				document.getElementById("meetPeople").disabled = true;
				Core.addClass(document.getElementById("meetPeople").parentNode, "snDisabled");
				
				//showHostel
				document.getElementById("showHostel").disabled = true;
				Core.addClass(document.getElementById("showHostel").parentNode, "snDisabled");
				
				//showDate
				document.getElementById("showDate").disabled = true;
				Core.addClass(document.getElementById("showDate").parentNode, "snDisabled");
				
		    }
		}
	},
	
	meetPeople: function(element) {
		
		if (element.checked) {
			Core.removeClass(element.parentNode, "snDisabled");
			
			if (element._dependants) {
				var fields = element._dependants;
				for (var i=0; i<fields.length; i++) {
					fields[i].disabled = false;
					Core.removeClass(fields[i].parentNode, "snDisabled");
				}
			}
			
			if (document.getElementById("dontMeetPeople")) {
				Core.addClass(document.getElementById("dontMeetPeople").parentNode, "snDisabled");	
			}
		}
		
	},
	
	dontMeetPeople: function(element) {
		
		if (element.checked ) {
			Core.removeClass(element.parentNode, "snDisabled");
			
			//Now disable meet me fields
			if (document.getElementById("meetPeople")) {
				var meetPeople = document.getElementById("meetPeople");
				Core.addClass(meetPeople.parentNode, "snDisabled");
				
				if (meetPeople._dependants) {
					var fields = meetPeople._dependants;
					for (var i=0; i<fields.length; i++) {
						fields[i].disabled = true;
						Core.addClass(fields[i].parentNode, "snDisabled");
					}
				}
			}
		
		}
		
	},
	
	clickListener: function(event) {
		DependentFields.toggleMeetme(this);
	},
	
	dontMeetPeopleClickListener: function(event) {
		DependentFields.dontMeetPeople(this);
	},
	
	meetPeopleClickListener: function(event) {
		DependentFields.meetPeople(this);
	}
	
};

var ScrollMeetMe = 
{
	init: function() {
		
		ScrollMeetMe.meetMeUserList = document.getElementById("meetMeUserList");
		ScrollMeetMe.originY = parseInt(Core.getComputedStyle(ScrollMeetMe.meetMeUserList, "top"), 10);
		
		ScrollMeetMe.minY = -960;
		ScrollMeetMe.maxY = 0;
		ScrollMeetMe.increment = 120;
		
		ScrollMeetMe.y = ScrollMeetMe.originY;
		
		
		//Add Event Listeners
		var scrollElements = document.getElementById("meetMeScrollBtns").getElementsByTagName("a");
		if (scrollElements) {
			for (var i=0; i<scrollElements.length; i++) {
				
				if (Core.hasClass(scrollElements[i], "meetMeScrollUpBtn")) {
					Core.addEventListener(scrollElements[i], "click", ScrollMeetMe.scrollUp);
				} else {
					Core.addEventListener(scrollElements[i], "click", ScrollMeetMe.scrollDown);
				}
			}
		}
	},
	
	scrollUp: function(event) {
		if (ScrollMeetMe.y <= ScrollMeetMe.minY) {
			ScrollMeetMe.y = ScrollMeetMe.minY;
		} else {
			ScrollMeetMe.y = ScrollMeetMe.y - ScrollMeetMe.increment;
		}
		
		ScrollMeetMe.meetMeUserList.style.top = Math.round(ScrollMeetMe.y) + "px";
		
		
		Core.preventDefault(event);
	},
	
	scrollDown: function(event) {
		
		if (ScrollMeetMe.y >= ScrollMeetMe.maxY) {
			ScrollMeetMe.y = ScrollMeetMe.maxY;
		} else {
			ScrollMeetMe.y = ScrollMeetMe.y + ScrollMeetMe.increment;
		}
		
		ScrollMeetMe.meetMeUserList.style.top = Math.round(ScrollMeetMe.y) + "px";
		
		Core.preventDefault(event);
	}
};

var MeetMeTooltip = 
{
	
	init: function() {
		
		var bookingTabOneContent = document.getElementById("bookingTabOneContent");
		
		if (bookingTabOneContent) {
			var links = bookingTabOneContent.getElementsByTagName("a");
			
			//check for "meetMeTooltip"
			var meetMeLinks = [];
			
			for (var i=0; i<links.length; i++) {
				if (Core.hasClass(links[i], "meetMeTooltip")) {
					meetMeLinks[meetMeLinks.length] = links[i];
				}
			}
			
			if (meetMeLinks.length > 0) {
				//Add event listeners
				for (var i=0; i<meetMeLinks.length; i++) {
					var title = meetMeLinks[i].getAttribute("title");
					
					if (title && title.length > 0) {
						//add tooltip markup
						var tip = document.createElement("span");
						tip.className = "hideMeetmePopup";
						var tipText = document.createTextNode(meetMeLinks[i].title);
						tip.appendChild(tipText);
						
						meetMeLinks[i].appendChild(tip);
						meetMeLinks[i]._tooltip = tip;
						meetMeLinks[i].title = "";
						
						//add event listeners
						Core.addEventListener(meetMeLinks[i], "mouseover",  MeetMeTooltip.showTipListener);
						Core.addEventListener(meetMeLinks[i], "mouseout",  MeetMeTooltip.hideTipListener);
					}
				}	
			}
			
		}
		
	},
	
	showTip: function(link) {
		if (link && link._tooltip) {
			if (Core.hasClass(link._tooltip, "hideMeetmePopup")) {	
				Core.removeClass(link._tooltip, "hideMeetmePopup");
				Core.addClass(link._tooltip, "meetmePopup");
			}
			
		}
		
	},
	
	hideTip: function(link) {
		if (link && link._tooltip) {
			if (Core.hasClass(link._tooltip, "meetmePopup")) {
				Core.removeClass(link._tooltip, "meetmePopup");
				Core.addClass(link._tooltip, "hideMeetmePopup");
			}
		}
		
	},
	
	showTipListener: function(event) {
		MeetMeTooltip.showTip(this);
		Core.preventDefault(event);
	},
	
	hideTipListener: function(event) {
		MeetMeTooltip.hideTip(this);
	}
	
};