
// gTravel public object
// Minden JS függvény itt kap helyet
// 
// Created by Tibor Szász, 2009 

var gTravel = new Class({

    // "Turn on the lights"
		initialize: function(){

		  this.map = {}; // Google map object placeholder

		  // Felső keresősáv extra pramamétereinek elrejtése
			if( $('vextra') ){
				$('vextra').efx = new Fx.Slide( 'vextra' );
				if( ($('ven_regio').value=="")&&($('ven_fiz').value=="")&&($('ven_c').value=="")){
				      $('vextra').efx.hide();
				}else{
					$('vextra').style.display = 'block'
				    	var link = $('vextra_toggler');
					if( !$defined( this.orig ) ) this.orig = link.innerHTML;
					link.innerHTML = ( link.innerHTML == this.orig ) ? link.get('rel') : this.orig;
				}
			}
			if( $('szextra') ){
				$('szextra').efx = new Fx.Slide( 'szextra' );
				if( ($('szal_regio').value=="")&&($('szal_fiz').value=="")&&($('ett').value=="")&&($('konf').value=="")){
				     $('szextra').efx.hide();
				}else{
					$('szextra').style.display = 'block'
				    	var link = $('szextra_toggler')
					if( !$defined( this.orig ) ) this.orig = link.innerHTML;
					link.innerHTML = ( link.innerHTML == this.orig ) ? link.get('rel') : this.orig;
				}
			}
			if( $('extra') ){
				$('extra').efx = new Fx.Slide( 'extra' );
				$('extra').efx.hide();
			}
		  // Elfelejtett jelszó
			if( $('pwdreq') ){
				$('pwdreq').efx = new Fx.Slide('pwdreq');
				$('pwdreq').efx.hide();
			}
  
			// Focus keyword
			//if( $('keyword') ) $('keyword').focus();
  
			// Image gallery opacity
			if( $('black_bar') ){
        $('black_bar').setOpacity(0.75);
      }
      
      // Initilalize google map
      if( $('google_map') ){
        this.initGoogleMap();
      }
		},
		
		// Other public methods
/*		toggleExtra: function(neve){
			var link = $(neve+'extra_toggler')
			$(neve+'extra').efx.toggle();
			// Replace toggler link's text
			if( !$defined( this.orig ) ) this.orig = link.innerHTML;
			link.innerHTML = ( link.innerHTML == this.orig ) ? link.get('rel') : this.orig;
		},*/
		
	togglePassReq: function(){
      $('pwdreq').efx.toggle();
    },
		
	// Other public methods
	toggleExtra: function(neve){
			$(neve+'extra').style.display = 'block';
			var tl = neve+'extra_toggler';
			var link = $(neve+'extra_toggler')
			$(neve+'extra').efx.toggle();
			// Replace toggler link's text
			if( !$defined( this.orig ) ) this.orig = link.innerHTML;
			link.innerHTML = ( link.innerHTML == this.orig ) ? link.get('rel') : this.orig;
		},
		
	// Very complex image gallery handler :)
	activate: function( obj ){
		  // Élesben majd webos/uploaded/ kell ide
      $('the_active_image').src = obj.src.replace('thumbs/', '');
    },
    
    // Automatically detects if there are locations, or an exact address 
    // based on the REL attribute of #loc2show
    initGoogleMap: function(){
        if( $('loc2show').get('rel') == 'address' ){
            this.gMapDecodeAddress( $('loc2show').innerHTML );

        } else if(  $('loc2show').get('rel') == 'coords'  ) {
            var coords = $('loc2show').innerHTML.split('|');
            this.gMapShowCords( coords[0], coords[1] );        
        }
    },


    
    // Shows exact coordinates, based on latitude and longitude
    gMapShowCords: function( lat, long ){
        this.map = new GMap2( $('google_map') );
        this.map.addControl(new GLargeMapControl());
        this.map.addControl(new GMapTypeControl());
        // Get the point
        var point = new GLatLng( lat, long );        
        this.map.setCenter(point, 15);
	      if(!($('info_bubble'))){
                  var marker = new GMarker(point, {draggable: true});
    			  GEvent.addListener(marker, "dragend", function() {
			          $('longI').value  = this.getPoint().x;
        			  $('lattI').value = this.getPoint().y;
                  });
			  $('longI').value = point.x;
        	  $('lattI').value = point.y;
	      }else{
                  var marker = new GMarker(point, {draggable: false});	      
	      }
        this.map.addOverlay(marker);
        if($('info_bubble')){
				  marker.openInfoWindowHtml( $('info_bubble' ).innerHTML );
				  GEvent.addListener(marker, "click", function() {
			          marker.openInfoWindowHtml( $('info_bubble' ).innerHTML );
                  });
		}
        // GPS Coordinate conversion
        $('computed_gps').innerHTML = this.decCordToGPS( lat, 'lat' );
        $('computed_gps').appendText( this.decCordToGPS( long, 'long' ));
    },
    
    // Tries to find out the latitude and longitude of and address
    // Success rate: ~95%
    gMapDecodeAddress: function( address ){
        var pass = this;
        this.map = new GMap2( $('google_map') );
        this.map.addControl(new GLargeMapControl());
        this.map.addControl(new GMapTypeControl());

        geocoder = new GClientGeocoder();

        geocoder.getLatLng( address, function(point1) {
          if (!point1) {
              alert(address + " not found");
    	      var point = new GLatLng( 0.0, 0.0 );        
	      var zoom = 1;
          } else {
	      var point = new GLatLng(point1.y, point1.x);
	      var zoom=15;
	  }
              $('computed_gps').innerHTML = pass.decCordToGPS( point.y, 'lat' );
              $('computed_gps').appendText( pass.decCordToGPS( point.x, 'long' ));

              pass.map.setCenter(point, zoom);
	      if(!($('info_bubble'))){
                  var marker = new GMarker(point, {draggable: true});
    		  GEvent.addListener(marker, "dragend", function() {
        	  $('longI').value  = this.getPoint().x;
        	  $('lattI').value = this.getPoint().y;
                  });
		  $('longI').value  = point.x;
        	  $('lattI').value = point.y;
	      }else{
                  var marker = new GMarker(point, {draggable: false});	      
	      }
              pass.map.addOverlay(marker);
              if($('info_bubble')){
					marker.openInfoWindowHtml( $('info_bubble' ).innerHTML );
					GEvent.addListener(marker, "click", function() {
			          marker.openInfoWindowHtml( $('info_bubble' ).innerHTML );
                	});
			  }
          
        });
    },
    
    // Lat, Lang 2 GPS Decoder
    // Returns: string( a GPS Coordinate )
    decCordToGPS: function( deg, dir ){

    	    var returnCord = '';
       		var gpsdeg = parseInt(deg);
      		var remainder = deg - (gpsdeg * 1.0);
      		var gpsmin = remainder * 60.0;
          var ssrem = 0;
          var prefixArr = $('directions').innerHTML.split('-');
          var prefix = '';
          if( dir == 'lat' ){
              prefix = ( deg < 0 ) ? prefixArr[1] : prefixArr[0]; // D - É
          } else {
              prefix = ( deg < 0 ) ? prefixArr[3] : prefixArr[2]; // NY - K
          }
          
      		returnCord += prefix + ' ' + gpsdeg + '° ';
      		returnCord += parseInt(gpsmin) + "' ";
      		var remainder2 = gpsmin - (parseInt(gpsmin)*1.0);
      		returnCord += parseInt( remainder2*60.0 );
      		ssrem = parseInt( remainder2*60.0 );
          ssrem = ( remainder2*60.0 - ssrem ).toString().substr(1,3);
          returnCord += ssrem + '"  ';

      		return returnCord;
    }
});

var gt = {};

//window.addEvent('load', function(){ gt = new gTravel(); } );




