/*
 * JavaScript interface to the SB network.
 * class SB.mytip - myTIP management
 *
 * Requirements: jQuery library 1.4.2 and above
 * Copyright (C) 2011 Tomas Hnilica.   All Rights Reserved.
 */

/** CONVENIENCE FUNCTIONS*/

function addMyTip() {
		var context = this;
		var params = {}
		params["ws"] = "getMyTipCategories";
		$.get("/ws/", params, function(data){
			  var code = "<span style='text-align:left;' id='mytip-dialog'>";
				code += "<table>";
				code += "<tr><td>Název:</td><td><input id='mytip-name'></td></tr>";
				code += "<tr><td>Kategorie:</td><td><select id='mytip-cat'>";
				for (i in data) {
				  var id = i;
				  var q = data[i];
				  code += "<option value='" + id + "'>" + q + "</option>";
				  
				}
				code += "</select></td></tr></table>";
				code += "</span>";
				
				thDialog(code, "Zadejte Váš nový TIP", function(r) {
					if (!r) return;
					var name = $('#mytip-name').val();
					var cat = $('#mytip-cat').val();
					if (name=="") return false;					
					var link = '/mytip/new/' + name + '/' + cat + '/';
					location.href  = link;
					});
					
		},"json");
}

/**
Handler of GMaps interface.
*/
function mytipMapClick(event) {
	return SBmytip.mapClick(event);
}



SB.mytip = function(fid, a, init) {
	if (init == null) init = true;

	this.fid = fid;
	this.a = a;
	if (init) this.init();	
}

/** initialize*/
SB.mytip.prototype.init = function() {
	code = "";
	if (this.a) {
     code += "<a href='#' onclick='SBmytip.edit(); return false;' class='buttonLike fr'><span>upravit</span></a>";
     code += "<a href='#' onclick='SBmytip.del(); return false;' class='buttonLike fr'><span>smazat</span></a>";
	}
	$('#mytip-toolbar').append(code);

  if (this.a && $('span[key=mytip-desc]').html() == "") this.edit();
	
}

SB.mytip.prototype.del = function() {
		var context = this;
		var params = {}
		params["ws"] = "deleteMyTip";
		params["fid"] = this.fid;
		
		thConfirm("Skutečně chcete smazat tento tip?","Smazat můjTIP?", function(ret) {
		   if (ret) {
				$.get("/ws/", params, function(data){
						window.location = '/mytips/';
				});
		   }
		});
		return false;	
}

SB.mytip.prototype.edit  = function() {
   var context = this;
   $('.mytip-property').each(function() {
      var val = $(this).html();
      var key = $(this).attr('key');
      if (key=="mytip-desc") {
      	/*replace <br> to newline to the textarea.*/
      	val = str_replace("<br>","\n",val);
      	var code = "<textarea name='"+key+"' id='"+key+"'>" + val + "</textarea>";
      } else {
      	var code = "<input type='text' name='"+key+"' value='"+val+"' id='"+key+"'>";
      }
      $(this).html(code);
      $(this).find('input[name='+key+']').val(val);
   });
   
   /*customize the form*/
  	var params = {}
		params["ws"] = "getMyTipCategories";
    $('#mytip h2').after("<div id='mytip-categorydiv'></div>");
    $.get("/ws/", params, function(data){
			  var ccode = "<table>";
				ccode += "<tr><td>Kategorie:</td><td><select id='mytip-category' name='mytip-category'>";
				for (i in data) {
				  var id = i;
				  var q = data[i];
				  ccode += "<option value='" + id + "'>" + q + "</option>";  
			}
			$('#mytip-categorydiv').html(ccode);
			$('#mytip-category').val($('#mytip').attr('category'));
		},"json");
			 
 
   
   
   try {
   	this.jmp = $('#mytipMap').data('jMapping').map;
	  } catch(err) {
	    /*create and set ther map*/
	    	$('#mytip').append("<div id='mytipMap' style='width:600px; height:300px;'></div><div id='mytipMapDesc'></div>");
				$('#mytipMap').jMapping({default_zoom_level:6, default_point : {lat:49.866316729538674 , lng:15.29296875}});
				this.jmp = $('#mytipMap').data('jMapping').map;
	  
	  }
   google.maps.event.addListener(this.jmp, 'click', mytipMapClick);
   var loc = $('#mytipMap').attr('loc');
   if (!loc) loc = "";
   $('#mytipMapDesc').append("<div><h3>Kliknutím umístěte můjTIP na mapu.</h3><table><tr><td>Pozice:</td><td><input type='text' id='mytip-gps' name='mytip-gps' value='"+loc+"' size='50'></td></tr><tr><td>Najít adresu:</td><td><input type='text' id='mytip-geocode' name='mytip-geocode'  size='32'>&nbsp;<a href='#' id='mytip-geocode-search' class='jq-button'>Hledat</a></td></tr></table></div>");
   var context = this;
   $('#mytip-geocode-search').button().click(function(){
   		context.geocode($('#mytip-geocode').val());
   		return false;
   	});
   
   
   /*$('#mytip-desc').wysiwyg();*/
   
   
   var cancelbtn = "<a href='#'  onclick='return SBmytip.getMyTip();' id='mytip-edit' class='fr'>Zrušit</a>";
   var savebtn = "<a href='#' onclick='return SBmytip.saveMyTip();' class='fr'>Uložit</a>";
   $('#mytip-toolbar').html(savebtn + cancelbtn);
   return false;		
}

SB.mytip.prototype.getMyTip = function() {
	var context = this;
	var params = {}
	params["ws"] = "getMyTipHTML";
	params["fid"] = this.fid;
	$.get("/ws/", params, function(data){
    $('#mytip').replaceWith(data);
    $('#mytip-toolbar').html('');
    context.init();
    $('.jq-button').button();
	});	
	return false;
  
};

SB.mytip.prototype.saveMyTip = function() {
    /*check data*/
    /*get the data*/
    var params = {}
    params['fid'] = this.fid;
		$('#mytip').find("input, textarea, select").each(function() { 
			params[ this.name ] = this.value; 
		});
	 var context = this; 
	 $.post("/ws/?ws=saveMyTip", params, function(data){
      /*
      $('#mytip-toolbar').html('');
      context.getMyTip();
      */
      location.reload();
	 });
   return false;
};


SB.mytip.prototype.addPhotogallery = function() {
	var context = this;
	thPrompt("Zadejte název nové fotogalerie", "", "Nová galerie", function(r,v){
		if (!r) return;
		location.href = '/fotogalerie/'+context.fid+'/new/' + v + '/';
	});
};

SB.mytip.prototype.mapClick = function(event) {
			var markers = $('#mytipMap').data('jMapping').gmarkers;
			for (i in markers) {
			      markers[i].setMap(null);
			    }
			
			var marker = new google.maps.Marker({
			      position: event.latLng,
			      title:""
			  });
			  

 			 marker.setMap(this.jmp);  
 			 markers['custom'] = marker;
			$('#mytip-gps').val(event.latLng.lng()+','+event.latLng.lat()+',0');
			this.jmp.setCenter(event.latLng);
}	

SB.mytip.prototype.geocode = function(addr) {
	 var context = this;
	 var geocoder = new google.maps.Geocoder();
		geocoder.geocode( {'address': addr }, function(results, status) {
							
		          if (status == "OK") {
		          	var rq = {}
		          	rq ['latLng'] = results[0].geometry.location;
		          	context.mapClick(rq);
		        	} else {
		        	}
	  });
} 
