var podList = new Array();
var podListHash = new Array();
var podToOpen = 0;
var applicationToOpen = 0;
var newFeedSearch = 0;
var changePosition = 0;


function moveToAndOpenPod(lat, lng, idPod, idApplication){
  if(idPod!=0) {
    applicationToOpen = 0;
    if(Object.isUndefined(map.getMarker(idPod))) {
      changePosition = new GLatLng(lat, lng);
      map.setCenter(changePosition, map.getZoomLevel());
      podToOpen=idPod;
      applicationToOpen = idApplication || 0;
      OnDragEnd();
    } else {
      podToOpen = 0;
      openPod(idPod, idApplication);
    }
  }
}

function getPod(idPod){
  return podListHash[idPod];
}

function refreshPodList(mapOptions){
  var count = 0;
  if(!Object.isUndefined(mapOptions.podList)){
    var activePodListHash = new Array();
    for(var i=0; i<mapOptions.podList.length; i++){
      activePodListHash[mapOptions.podList[i].idPod]=1;
      podListHash[mapOptions.podList[i].idPod]=mapOptions.podList[i];
      map.addMarker(new CPodOnMap(podListHash[mapOptions.podList[i].idPod]));
      count += mapOptions.podList[i].nbResults;
    }

    for(var i=0; i<podList.length; i++){
      if(Object.isUndefined(activePodListHash[podList[i].idPod])){
        podListHash[podList[i].idPod]=null;
        map.deleteMarker(podList[i].idPod);
      }
    }

    podList = mapOptions.podList;
  }


  if(podToOpen!=0){
    setTimeout("moveToAndOpenPod(changePosition.lat(), changePosition.lng(), podToOpen, applicationToOpen);", 500);
  } else {
    if(infoWindowManager) infoWindowManager.start();
    if(count==0 && newFeedSearch==1){
      openErrorForm('No results', 'The search "'+lookingForObject.element.value+'" does not have results on this view.<br /><br />Please try again with an other search.');
    }
    newFeedSearch = 0;
  }
}


function getPODImage(pod){
  if(Object.isUndefined(pod.admin)){
    return 'Img/pushpin/pushpin.gif';
  } else {
    return 'Img/pushpin/pushpin'+(pod.admin==1?'_admin':(pod.subscription==1?'_favorite':''))+'.gif';
  }
}

var CPodOnMap = Class.create(CMarkerManager, {
  initialize: function($super, pod) {
    var imageURL;
    var imageTransparent;
    var iconSize;
    var iconAnchor;
    var infoWindowAnchor;
    var imageMap;

    if(pod.nbResults){
      imageURL = 'Img/pushpin/pushpin_selected/pushpin_selected_'+Math.min(10, pod.nbResults)+'.gif';
      imageTransparent = 'Img/pushpin/pushpin_selected/pushpin_selected_transparent.png';
      iconSize = new GSize(32,47);
      iconAnchor = new GPoint(5,44);
      infoWindowAnchor = new GPoint(15,3);
      imageMap = [14, 2, 24, 2, 31, 9, 31, 16, 24, 23, 31, 31, 31, 41, 27, 46, 16, 46, 10, 40, 7, 45, 2, 44, 4, 38, 1, 34, 1, 21, 7, 16, 10, 5, 14, 2];
    } else {
      imageURL = getPODImage(pod);
      imageTransparent = 'Img/pushpin/pushpin_transparent.png';
      iconSize = new GSize(32, 32);
      iconAnchor = new GPoint(5,29);
      infoWindowAnchor = new GPoint(15,3);
      imageMap = [11, 1, 20, 6, 20, 12, 15, 15, 16, 20, 14, 24, 9, 24, 5, 30, 4, 26, 5, 24, 2, 20, 2, 14, 7, 10, 7, 4, 11, 1];
    }

    $super(pod.idPod,
           new GLatLng(pod.lat, pod.lng),
           pod.name,
           (pod.subscription==1||pod.admin==1?MARKER_TYPE_POD_FAVORITE:MARKER_TYPE_POD),
           {
              'imageUrl' : imageURL,
              'transparent' : imageTransparent,
              'shadowUrl' : 'Img/pushpin/pushpin_shadow.png',
              'imageMap' : imageMap,
              'iconSize' : iconSize,
              'iconAnchor' : iconAnchor,
              'infoWindowAnchor' : infoWindowAnchor,
              'shadowSize' : new GSize(32, 32),
              'markerClickEvent' : function(){
                openPod(pod.idPod);
              },
              'markerMouseOverEvent' : function(){
                startPodHint(pod.idPod);
              },
              'markerMouseOutEvent' : function(){
                stopHint();
              }
            }
    );
  }
});






function startPodHint(idPod){
  var pod = getPod(idPod);
  startHintOnMarker(pod, getPODResume(pod));
}

function getPODResume(pod){
  var marker = map.getMarker(pod.idPod);
  var imgSrc = '';
  var content = '';
  if(marker){
    content = '<p style="text-align:right; padding:0; margin:0;">'
            + '<a href="javascript:openPod(\''+pod.idPod+'\');" style="font-size:0.7em;">open this pod</a>'
            + '</p>';
    imgSrc = map.getMarker(pod.idPod).GoogleMarker.getIcon().image;
  } else {
    content = '<p style="text-align:right; padding:0; margin:0;">'
            + '<a href="javascript:moveToAndOpenPod(\''+pod.lat+'\', \''+pod.lng+'\', \''+pod.idPod+'\');" style="font-size:0.7em;">open this pod</a>'
            + '</p>';
    imgSrc=getPODImage(pod);
  }
  if(pod.name!=0){
    content = '<h4 style="padding:0; margin:0;"><img src="'+imgSrc+'" width="20px" align="absmiddle" /> '+pod.name+(Object.isUndefined(pod.distance)?'':' ('+pod.distance.toFixed(1)+' km)')+'</h4>'
            + '<p style="text-align:right; padding:0; margin:0; margin-bottom:3px; font-size:0.7em; color:#000;">'
            + pod.followers+' followers'
            + '</p>'
            + '<p style="text-align:left; padding:0; margin:0; font-size:0.7em; color:#555;">'
            + pod.description
            + '</p>'
            + content;
  }
  return content;
}






function setPodSubscription(status){
  if(myLoginStatus.result=='OK'){
    $('applicationForm.subscriptionButton').disabled = true;
    $('applicationForm.subscriptionButton').href = 'javascript:return false;';
    controller.requestController('setPodSubscription', 'idPod='+idPodOpened+'&status='+status, updateSubscriptionButton);
  } else {
    openSignUpForm({
      "onCloseLoginSignUp":function(){
        if(myLoginStatus.result=='OK'){
          setPodSubscription(1);
        }
      }
    });
  }
}

function updateSubscriptionButton(pod){
  if(pod.subscription != null){
    getPod(idPodOpened).subscription = pod.subscription;
    pod = getPod(idPodOpened);
    $('applicationForm.title').innerHTML = '<img src="'+map.getMarker(idPodOpened).GoogleMarker.getIcon().image+'" width="25px" align="absmiddle" /> <span style="font-size:1.2em;">POD: '+pod.name+'</span>';
//    if(getPod(idPodOpened).admin==0 && myLoginStatus.result=='OK'){
    if(getPod(idPodOpened).admin==0){
      if(pod.subscription==0){
        $('applicationForm.title').innerHTML += ' - <input type="button" onclick="setPodSubscription(1);" id="applicationForm.subscriptionButton" value="Become a member" style="font-size:1.2em; background-image:url(./Img/buttonRed.gif);" />';
      } else {
        $('applicationForm.title').innerHTML += ' - <a href="javascript:setPodSubscription(0);" id="applicationForm.subscriptionButton" style="font-size:0.8em;">Cancel membership</a>';
      }
    }
    OnDragEnd();
  }
}







var searchAction;
function openPod(idPod, idApplication, params){
  controller.requestController('track', 'section=User&name=Open Pod');
  var pod=getPod(idPod);
  var podDelete = '';
  if(myLoginStatus.administrator){
    podDelete = '    <td>'
              + '      <a href="#" onclick="deletePod('+idPod+');">delete this pod</a>'
              + '    </td>';
  }

  $('applicationForm.subscriptionContainer').innerHTML = '<table style="display: inline;">'
                                                        +'  <tr>'
                                                        +'    <td>'
                                                        +'      '+podDelete
                                                        +'    </td>'
                                                        +'    <td>'

                                                        +'      <a href="http://www.publing.com/pod-'+encodeURIComponent((pod.directlink==''?pod.idPod:pod.directlink))+'">Direct link</a>'

                                                        +'      -'

                                                        +'      <a href="http://www.addthis.com/bookmark.php?v=250&pub=xa-4a4df379403cbc1e" onmouseover="return addthis_open(this, \'\', \'http://www.publing.com/pod-'+encodeURIComponent((pod.directlink==''?pod.idPod:pod.directlink))+'\', \''+pod.name+'\')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="http://s7.addthis.com/static/btn/sm-share-en.gif" width="83" height="16" alt="Bookmark and Share" style="border:0"/></a>'

                                                        +'    </td>'
                                                        +'    <td>'
                                                        +'      <input type="text" id="applicationForm.searchText" />'
                                                        +'    </td>'
                                                        +'    <td>'
                                                        +'      <div class="button searchButton" onclick="searchAction.options.onSubmit();">'
                                                        +'      </div>'
                                                        +'    </td>'
                                                        +'  </tr>'
                                                        +'</table>&nbsp;&nbsp;';
  searchAction = new CInputGestion('applicationForm.searchText', {
                                            'allowEmpty':true,
                                            'defaultValue':'search on the pod',
                                            'initValue':lookingForValue,
                                            'onSubmit':function(search){
                                              switchOnglet(-1);
                                            }});
  openApplicationForm(pod.idPod, idApplication, params);
  updateSubscriptionButton(pod);
  playPoonWorkflow([20,21], 5000);
}



function deletePod(idPod){
  controller.requestController('deletePod', 'idPod='+idPod, onPodDeleted);
  openWaitingForm();
}

function onPodDeleted(){
  closeWaitingForm();
  closeWindowModal();
  OnDragEnd();
}
