function switchid(id,id2){	
	hidediv(id2);
	showdiv(id);
}

function hidediv(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showdiv(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}




// Function to show one div and hide a bunch of others (array)

var cities=new Array('topbar_search_vesnues','topbar_search_events','topbar_search_articles');


function switchpickstabs(id){	

	var pickstabsarray=new Array('picks_nightlife','picks_dining','picks_artstage');
	
	hidealldivs(pickstabsarray);
	showthisdiv(id);
}


function switchpromotabs(id){	

	var promotabsarray=new Array('promo_hotels','promo_spa','promo_shopping');
	
	hidealldivs(promotabsarray);
	showthisdiv(id);
}


function switchdrchtabs(id){	

	var drcharray=new Array('ch_listings','ch_jobs');
	
	hidealldivs(drcharray);
	showthisdiv(id);
}


function switchhousingtabs(id){	

	var housingtabsarray=new Array('order_type','order_area','order_compound','order_agency');
	
	hidealldivs(housingtabsarray);
	showthisdiv(id);
}


function switchjobtabs(id){	

	var housingtabsarray=new Array('jobs_fulltime','jobs_freelance','jobs_internship');
	
	hidealldivs(housingtabsarray);
	showthisdiv(id);
}


function switchf1faqtabs(id){	

	var f1faqtabsarray=new Array('faq-f1race','faq-track','faq-tickets','faq-race','faq-transpo','faq-parties');
	
	hidealldivs(f1faqtabsarray);
	showthisdiv(id);
}





function switchrevlitabs(id){	

	var revlitabsarray=new Array('listings_tag','listings_popular','listings_recadded','listings_opensoon');
	
	hidealldivs(revlitabsarray);
	showthisdiv(id);
}


function switchbuzztabs(id){	

	var buzztabsarray=new Array('buzzquarter','buzzyear','buzzalltime');
	
	hidealldivs(buzztabsarray);
	showthisdiv(id);
}



// general stuff

function hidealldivs(thisarray){


	//loop through the array and hide each element by id
	for (var i=0;i<thisarray.length;i++){
		hidethisdiv(thisarray[i]);
	}		  
}

function hidethisdiv(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showthisdiv(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}



// -----------------------------------



//citiestab
var cities=new Array('topbar_search_venues','topbar_search_events','topbar_search_articles');

function switchsearchtabs(id){	
	hideallcities();
	showcity(id);
}

function hideallcities(){
	//loop through the array and hide each element by id
	for (var i=0;i<cities.length;i++){
		hidecity(cities[i]);
	}		  
}

function hidecity(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showcity(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}




function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function textCounter(field,cntfield,maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else
		cntfield.value = maxlimit - field.value.length;
}


function textPlusCounter(field,cntfield,maxlimit) {
	if (field.value.length > maxlimit)  {// if too long...trim it!
		document.getElementById('rem2Len').style.color='#1aac6d'; 
	}
	if (field.value.length < maxlimit)  {// if too long...trim it!
		document.getElementById('rem2Len').style.color='#990f1b'; 
	}
	cntfield.value = field.value.length;
}



function toggleLayer(whichLayer)
{
if (document.getElementById)
{
// this is the way the standards work
var style2 = document.getElementById(whichLayer).style;
style2.display = style2.display? "":"block";
}
else if (document.all)
{
// this is the way old msie versions work
var style2 = document.all[whichLayer].style;
style2.display = style2.display? "":"block";
}
else if (document.layers)
{
// this is the way nn4 works
var style2 = document.layers[whichLayer].style;
style2.display = style2.display? "":"block";
}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function layerSetup(id,visibility){
if(document.getElementById){
this.obj = document.getElementById(id).style;
this.obj.visibility = visibility;
return this.obj;}
else if(document.all){
this.obj = document.all[id].style;
this.obj.visibility = visibility;
return this.obj;}
else if(document.layers){
this.obj = document.layers[id];
this.obj.visibility = visibility;
return this.obj;}
}
function visVisible(param){
new layerSetup(param,'visible');
}

function visHidden(param){
new layerSetup(param,'hidden');
}



//** Ajax Tabs Content script v2.0- ?Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
//** Updated Oct 21st, 07 to version 2.0. Contains numerous improvements

var ddajaxtabssettings={}
ddajaxtabssettings.bustcachevar=1  //bust potential caching of external pages after initial request? (1=yes, 0=no)
ddajaxtabssettings.loadstatustext="<div id='ajax_loadcontent'><img src='img/loading.gif' /></div>" 


////NO NEED TO EDIT BELOW////////////////////////

function ddajaxtabs(tabinterfaceid, contentdivid){
	this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
	this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("a") //Get all tab links within container
	this.enabletabpersistence=true
	this.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
	this.contentdivid=contentdivid
	this.defaultHTML=""
	this.defaultIframe='<iframe src="about:blank" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" class="tabcontentiframe" style="width:100%; height:auto; min-height: 100px"></iframe>'
	this.defaultIframe=this.defaultIframe.replace(/<iframe/i, '<iframe name="'+"_ddajaxtabsiframe-"+contentdivid+'" ')
this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
	this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
}

ddajaxtabs.connect=function(pageurl, tabinstance){
	var page_request = false
	var bustcacheparameter=""
	if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE6 or below
		try {
		page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
			page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}
	else
		return false
	var ajaxfriendlyurl=pageurl.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/") 
	page_request.onreadystatechange=function(){ddajaxtabs.loadpage(page_request, pageurl, tabinstance)}
	if (ddajaxtabssettings.bustcachevar) //if bust caching of external page
		bustcacheparameter=(ajaxfriendlyurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
	page_request.open('GET', ajaxfriendlyurl+bustcacheparameter, true)
	page_request.send(null)
}

ddajaxtabs.loadpage=function(page_request, pageurl, tabinstance){
	var divId=tabinstance.contentdivid
	document.getElementById(divId).innerHTML=ddajaxtabssettings.loadstatustext //Display "fetching page message"
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
		document.getElementById(divId).innerHTML=page_request.responseText
		ddajaxtabs.ajaxpageloadaction(pageurl, tabinstance)
	}
}

ddajaxtabs.ajaxpageloadaction=function(pageurl, tabinstance){
	tabinstance.onajaxpageload(pageurl) //call user customized onajaxpageload() function when an ajax page is fetched/ loaded
}

ddajaxtabs.getCookie=function(Name){ 
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
		return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
}

ddajaxtabs.setCookie=function(name, value){
	document.cookie = name+"="+value+";path=/" //cookie value is domain wide (path=/)
}

ddajaxtabs.prototype={

	expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
		this.cancelautorun() //stop auto cycling of tabs (if running)
		var tabref=""
		try{
			if (typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
				tabref=document.getElementById(tabid_or_position)
			else if (parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
				tabref=this.tabs[tabid_or_position]
		}
		catch(err){alert("Invalid Tab ID or position entered!")}
		if (tabref!="") //if a valid tab is found based on function parameter
			this.expandtab(tabref) //expand this tab
	},

	setpersist:function(bool){ //PUBLIC function to toggle persistence feature
			this.enabletabpersistence=bool
	},

	loadajaxpage:function(pageurl){ //PUBLIC function to fetch a page via Ajax and display it within the Tab Content instance's container
		ddajaxtabs.connect(pageurl, this)
	},

	loadiframepage:function(pageurl){ //PUBLIC function to fetch a page and load it into the IFRAME of the Tab Content instance's container
		this.iframedisplay(pageurl, this.contentdivid)
	},

	setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
		this.selectedClassTarget=objstr || "link"
	},

	getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
		return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode : tabref
	},

	onajaxpageload:function(pageurl){ //PUBLIC Event handler that can invoke custom code whenever an Ajax page has been fetched and displayed
		//do nothing by default
	},

	expandtab:function(tabref){
		var relattrvalue=tabref.getAttribute("rel")
		//Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easy searching through
		var associatedrevids=(tabref.getAttribute("rev"))? ","+tabref.getAttribute("rev").replace(/\s+/, "")+"," : ""
		if (relattrvalue=="#default")
			document.getElementById(this.contentdivid).innerHTML=this.defaultHTML
		else if (relattrvalue=="#iframe")
			this.iframedisplay(tabref.getAttribute("href"), this.contentdivid)
		else
			ddajaxtabs.connect(tabref.getAttribute("href"), this)
		this.expandrevcontent(associatedrevids)
		for (var i=0; i<this.tabs.length; i++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
			this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("href")==tabref.getAttribute("href"))? "selected" : ""
		}
		if (this.enabletabpersistence) //if persistence enabled, save selected tab position(int) relative to its peers
			ddajaxtabs.setCookie(this.tabinterfaceid, tabref.tabposition)
	},

	iframedisplay:function(pageurl, contentdivid){
		if (typeof window.frames["_ddajaxtabsiframe-"+contentdivid]!="undefined"){
			try{delete window.frames["_ddajaxtabsiframe-"+contentdivid]} //delete iframe within Tab content container if it exists (due to bug in Firefox)
			catch(err){}
		}
		document.getElementById(contentdivid).innerHTML=this.defaultIframe
		window.frames["_ddajaxtabsiframe-"+contentdivid].location.replace(pageurl) //load desired page into iframe
	},


	expandrevcontent:function(associatedrevids){
		var allrevids=this.revcontentids
		for (var i=0; i<allrevids.length; i++){ //Loop through rev attributes for all tabs in this tab interface
			//if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
			document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" : "none"
		}
	},

	autorun:function(){ //function to auto cycle through and select tabs based on a set interval
		var currentTabIndex=this.automode_currentTabIndex //index within this.hottabspositions to begin
		var hottabspositions=this.hottabspositions //Array containing position numbers of "hot" tabs (those with a "rel" attr)
		this.expandtab(this.tabs[hottabspositions[currentTabIndex]])
		this.automode_currentTabIndex=(currentTabIndex<hottabspositions.length-1)? currentTabIndex+1 : 0 //increment currentTabIndex
	},

	cancelautorun:function(){
		if (typeof this.autoruntimer!="undefined")
			clearInterval(this.autoruntimer)
	},

	init:function(automodeperiod){
		var persistedtab=ddajaxtabs.getCookie(this.tabinterfaceid) //get position of persisted tab (applicable if persistence is enabled)
		var persisterror=true //Bool variable to check whether persisted tab position is valid (can become invalid if user has modified tab structure)
		this.automodeperiod=automodeperiod || 0
		this.defaultHTML=document.getElementById(this.contentdivid).innerHTML
		for (var i=0; i<this.tabs.length; i++){
			this.tabs[i].tabposition=i //remember position of tab relative to its peers
			if (this.tabs[i].getAttribute("rel")){
				var tabinstance=this
				this.hottabspositions[this.hottabspositions.length]=i //store position of "hot" tab ("rel" attr defined) relative to its peers
				this.tabs[i].onclick=function(){
					tabinstance.expandtab(this)
					tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
					return false
				}
				if (this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
					this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/))
				}
				if (this.enabletabpersistence && parseInt(persistedtab)==i || !this.enabletabpersistence && this.getselectedClassTarget(this.tabs[i]).className=="selected"){
					this.expandtab(this.tabs[i]) //expand current tab if it's the persisted tab, or if persist=off, carries the "selected" CSS class
					persisterror=false //Persisted tab (if applicable) was found, so set "persisterror" to false
					//If currently selected tab's index(i) is greater than 0, this means its not the 1st tab, so set the tab to begin in automode to 1st tab:
					this.automode_currentTabIndex=(i>0)? 0 : 1
				}
			}
		} //END for loop
		if (persisterror) //if an error has occured while trying to retrieve persisted tab (based on its position within its peers)
			this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
		if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
			this.automode_currentTabIndex=this.automode_currentTabIndex || 0
			this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
		}
	} //END int() function

} //END Prototype assignment





//User profile
var usertabs=new Array('user_reviews','user_contact');

function switchusertabs(id){	
	hideallusertabs();
	showusertabs(id);
}

function hideallusertabs(){
	//loop through the array and hide each element by id
	for (var i=0;i<usertabs.length;i++){
		hideusertabs(usertabs[i]);
	}		  
}

function hideusertabs(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showusertabs(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}







//citiestab
var eventbrowse=new Array('b_events_active','b_tag_active','b_venue_active','b_search_active');
var eventbrowse_show=new Array('b_events','b_tag','b_venue','b_search');


function hideeventbrowse(thisone, hidethis){
	
	//loop through the array and hide each element by id
	for (var i=0;i<eventbrowse.length;i++){
		hidecity(eventbrowse[i]);
	}
	
	for (var i=0;i<eventbrowse_show.length;i++){
		showcity(eventbrowse_show[i]);
	}	
	
	showcity(thisone);
	hidecity(hidethis);
	
}




//Mp3 Monday Player
function loadSWFObject(id, pathToFile, src, w, h, v, bgcolor,titlename,artistname) {
	var strName = "podcast" + id;

	var so = new SWFObject(src, strName, w, h, v);
             so.addParam("name", strName);
             so.addParam("allowScriptAccess", "sameDomain");
             so.addVariable("podcastFile", pathToFile);
			 so.addVariable("titlename", titlename);
			 so.addVariable("artistname", artistname);
             so.addVariable("id", id);
             so.addVariable("numAudioPlayers", numAudioPlayers);
             so.write(strName);
}






// --------------------------------




	 function showdropdowns(id) {
		//safe function to show an element with a specified id
		
		//first hide all the dropdowns
		hidediv('dropdown_clubs');
		hidediv('dropdown_restaurants');
		hidediv('dropdown_events');
		hidediv('dropdown_alllistings');
		hidediv('dropdown_maps');
		hidediv('dropdown_columns');

		
			  
		if (document.getElementById) { // DOM3 = IE5, NS6
			document.getElementById(id).style.display = 'block';
		}
		else {
			if (document.layers) { // Netscape 4
				document.id.display = 'block';
			}
			else { // IE 4
				document.all.id.style.display = 'block';
			}
		}
	}
	



// ------------------------ all the stuff needed for Jquery



 
 
	$(document).ready(function(){
							   
		$("#tabs").tabs();				   
							   
		// search autocomplete				   
		var options, a;
		jQuery(function(){
		  options = { serviceUrl:'http://www.smartshanghai.com/js/ajaxauto.php', minChars:1 };
		  a = $('#query').autocomplete(options);
		});
		
		
		$("a.showmap").click(function() {
			$("#map").toggle(400); 
		});
		
		$("a.dp_showdetails").click(function() {
			$("#dpbar_alloptions").toggle(400); 
		});
	
	
	
		//homepage, blogcontent slider
		
		 $("#home_blogslide").click(function() {
			 $("#blog2 p").load("home_followblogs.php");
		});
		  
		  
		 $("#alllistings_droplink").click(function() {
			 $("#dropdown_alllistings p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=a");
		  });

		 
		 

		 $("#res_droplink").click(function() {
			 $("#dropdown_restaurants p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=r");
		  });

		 
		
		  $("#clubs_droplink").click(function() {
			 $("#dropdown_clubs p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=c");
		   });
	
		 
		
		  $("#events_droplink").click(function() {
			 $("#dropdown_events p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=e");
		   });
	
		 
		
		  $("#columns_droplink").click(function() {
			 $("#dropdown_columns p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=cl");
		   });
		
		 
		  $("#maps_droplink").click(function() {
			 $("#dropdown_maps p").load("http://www.smartshanghai.com/loaddropdowns.php?sd=map");
		   });
	
 
 
 
 		$("div.dr_row2").mouseover(function(){
    		$(this).removeClass().addClass("dr_row2-hover");
				
			var id = this.id.replace('drrow-', "");
			var thisdrfooter = 'p.drrow_footer-'+id;
	
			$(thisdrfooter).show("");
    	}).mouseout(function(){
    		$(this).removeClass().addClass("dr_row2");	
			
			var id = this.id.replace('drrow-', "");
			var thisdrfooter = 'p.drrow_footer-'+id;
			
			$(thisdrfooter).hide("");
    	});
		
		
		

		$("a.drmaplink").click(function() {
			$("#dr_map").toggle(400); 
			});


		$("#housingagencyterms").click(function() {
				$("#agency_terms").show(400); 
				$("#housingagencyterms").hide(); 
		});
		
		
		
		
	  
	  
	  
	  
		
	}); // end of onLoadComplete
		
 	
	
