//displays the information about a place in the places tab
function showPlaceContent(entry){
   showLoadingMessage('placesContent');
   var url = '/tw-app/ajax.php';
   var pars = 'action=showPlace&placeID=' + entry;
   var myAjax = new Ajax.Updater('placesContent', url, {method: 'get', parameters: pars});
   switchTab('Places');
}


//populates the map with dots
function showMapDots(){
   showMapLoadingMessage('mapMessage');
   var url = '/tw-app/ajax.php';
   var pars = 'action=showMapDots';
   var myAjax = new Ajax.Updater('mapContent', url, {method: 'get', parameters: pars, onComplete: hideMapLoadingMessage('mapMessage')});
   //alert('called ok...');
}


//populates the tagcloud
function showTagCloud(){
   showLoadingMessage('tagCloud');
   var url = '/tw-app/ajax.php';
   var pars = 'action=showTagCloud';
   var myAjax = new Ajax.Updater('tagCloud', url, {method: 'get', parameters: pars});
}


//populates the map with dots relating only to a given tag
function showTaggedPoints(tagID, tag){
   showMapLoadingMessage('mapMessage');
   var url = '/tw-app/ajax.php';
   var pars = 'action=showMapDotsByTag&tagID=' + tagID;
   var myAjax = new Ajax.Updater('mapContent', url, {method: 'get', parameters: pars, onComplete: hideMapLoadingMessage('mapMessage')});
   //var myAjax = new Ajax.Updater('debug', url, {method: 'get', parameters: pars, onComplete: hideMapLoadingMessage('mapMessage')});
   g('tagCloudMessage').innerHTML = '<br /><strong>Only places tagged with \"' + tag + '\" are being shown on the map.<br /><a href=\"#\" onclick=\"clearTaggedPoints(); return false;\">Clear tag and show all points</a></strong><br />';
   switchTab('Tags');
}

function clearTaggedPoints(){
   showMapDots();
   g('tagCloudMessage').innerHTML = '';
}


//submits the add form to the database
function submitNewPlace(){
   // Retrieve form values
   var strError = '';
   var mylong = trimSpaces(g('addplace_long').value);
   var mylat = trimSpaces(g('addplace_lat').value);
   var mytitle = trimSpaces(g('addplace_title').value);
   var mydesc = trimSpaces(g('addplace_desc').value);
   var myphoto = trimSpaces(g('addplace_photo').value);
   var mytags = trimSpaces(g('addplace_tags').value);
   // Validate
   if (mylong == '') { strError = strError + 'Longitude, '; }
   if (mylat == '') { strError = strError + 'Latitude, '; }
   if (mytitle == '') { strError = strError + 'Name of your place, '; }
   if (mydesc == '') { strError = strError + 'Description, '; }
   // Display error or submit
   if (strError == '') {
      g('addFormError').innerHTML = '';
      //make the Ajax call that submits the data
      var url = '/tw-app/ajax.php';
      var pars = 'action=submitPlace&long=' + mylong + '&lat=' + mylat + '&title=' + mytitle + '&desc=' + mydesc + '&photo=' + myphoto + '&tags=' + mytags;
      var myAjax = new Ajax.Updater('addFormError', url, {method: 'get', parameters: pars, onComplete: placeHasBeenSubmitted() });
   } else {
      strError = strError.substring(0,strError.length-2);
      g('addFormError').innerHTML = '<strong>Oops! Recheck the following fields:</strong><br />' + strError + '.<br /><br />';
   }
}


//what to do once a place has been successfully added to the DB
function placeHasBeenSubmitted(){
   //clear the add form input fields
   g('addplace_long').value = '';
   g('addplace_lat').value = '';
   g('addplace_title').value = '';
   g('addplace_desc').value = '';
   g('addplace_photo').value = '';
   g('addplace_tags').value = '';
   //hide the add form
   hideMapLoadingMessage('addFormContent');
   //reload the map so that the new place shows
   //showMapDots();
   //showTagCloud;
}


//removes spaces from either end of a string
function trimSpaces(sString) {
   while (sString.substring(0,1) == ' ') {
      sString = sString.substring(1, sString.length);
   }
   while (sString.substring(sString.length-1, sString.length) == ' ') {
      sString = sString.substring(0,sString.length-1);
   }
   return sString;
}

function switchTab(tabID) {
   //a rough and ready method, needs to be cleaned up to be dynamic
   //tab content
   g('tabTags').style.display = 'none';
   g('tabPlaces').style.display = 'none';
   g('tabAdd').style.display = 'none';
   var activetab = g('tab' + tabID);
   activetab.style.display = 'block';
   //tab link style
   g('tabTagsLink').className = '';
   g('tabPlacesLink').className = '';
   g('tabAddLink').className = '';
   var activetablink = g('tab' + tabID + 'Link');
   activetablink.className = 'active';
}


// toggle object visibility
function toggle(targetId){
  if (document.getElementById){
        target = document.getElementById( targetId );
           if (target.style.display == "none"){
              target.style.display = "";
           } else {
              target.style.display = "none";
           }
     }
} 

function showLoadingMessage(divID) {
   g(divID).innerHTML = '<div style="text-align: center; margin: 20px;"><strong>Loading content...</strong><br /><br /><img src="/tw-app/images/loading.gif" alt="loading" /></div>';
}

function showMapLoadingMessage(divID) {
   g(divID).style.display = '';
}
function hideMapLoadingMessage(divID) {
   g(divID).style.display = 'none';
}

function finishedPageLoad() {
   g('loadingMessage').style.display = 'none';
   g('holder').style.display = 'block';
}

function showAddHelpWindow(topic) {
   g('addHelpRoot').style.display = '';
   g('addHelpContent').innerHTML = g('addHelpContent-' + topic).innerHTML;
}

function g(o) { return document.getElementById(o); }