	/**
 * @author Paweł Skrzypiec
 * @desc reverse
 * @version 1.0
 * @example
 * @obs With no arguments, the default is update
 * @license free
 * @param string update container
 * @contribution Paweł Skrzypiec
 *
 */
 
var geocoder = null;
var map = null;
var marker = null;
var address = null;
var place = null;
var m_x = null;
var m_y = null;

(function($){  
	
 jQuery.extend({
	 
	editBestFavourite: function(){
		
		$('#box-favourite-management-list .cross').show('slow');
		
	},
	googleMap: function(link){
		
		var _link = getObject('link-google-map');
		var _iframe =  getObject('iframe-map');
		var _wrapper  = getObject('google-map-wrapper');
		
		if (_wrapper.is(':hidden')){
				_wrapper.css('display', 'block');
				_iframe.attr('src', link);
				_link.text('Close Map');
		}else{
				_wrapper.css('display', 'none');
				_link.text('Map');
		}		
	},
	showLocalization: function(options){

		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById(options.element));
			var point = new GLatLng(options.latitude, options.longitude);
			map.setCenter(point, 13);
			geocoder = new GClientGeocoder();
			
			jQuery.getAddress2(map, point);
			
		}
		
		$('body').unload(function(){
			 GUnload();
		});				
		
	},
  getAddress2: function(overlay, point) {
		if (point != null) {
			geocoder.getLocations(point, jQuery.getGeocoderResponse);
		}
	},	
  getGeocoderResponse: function(response) {
		map.clearOverlays();
		if (!response || response.Status.code != 200) {
			alert("Status Code:" + response.Status.code);
		} else {
			place = response.Placemark[0];
			point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
			
			marker = new GMarker(point);
			map.addOverlay(marker);
			
			marker.openInfoWindowHtml(
			'<b>Address:</b>' + place.address );			
													
			
		}
	},
	lunchGoogleMap: function(){
		
		if (getObject('showme').dialog('isOpen')){
		
			if (GBrowserIsCompatible()) {
				
				map = new GMap2(document.getElementById('map_canvas'));
				map.addControl(new GSmallMapControl());
				var center = new GLatLng(37.4419, -122.1419);
				
				map.setCenter(center, 13);
				
				geocoder = new GClientGeocoder();			
				GEvent.addListener(map, "click", jQuery.getAddress);
				
	
				var _country = getObject('selectbox-search-country :selected').text();
				var _city = getObject('field_city_value').val();
				var _location =  getObject('field_location_value').val();
				var _location_name =  getObject('field_location_name_value').val();
				
				if (_location != ''){
					jQuery.showAddress(_location);
					getObject('location').val(_location);
					
					if (_location_name != '')
						getObject('location_name').val(_location_name);
					else
						getObject('location_name').val(_location);	
					
					getObject('street').val(getObject('field_street_value').val());
					getObject('postal').val(getObject('field_postal_code_value').val());
				}else if (_country.indexOf('Select Country') == -1 || _city != ''){
					jQuery.showAddress(_country + ', ' + _city);
				}else{
					var marker = new GMarker(center, {draggable: true});
					map.addOverlay(marker);
				}
				
			}
		}else{
			setTimeout(function() { jQuery.lunchGoogleMap(); }, 100);
		}	
	},
  showAddress: function(address) {
		if (geocoder) {
			geocoder.getLatLng(
				address,
				function(point) {
					if (!point) {
						alert(address + " not found");
					} else {
						map.setCenter(point, 13);
						var marker = new GMarker(point);
						map.addOverlay(marker);
						marker.openInfoWindowHtml(address);
					}
				}
			);
		}
	},
  getAddress: function(overlay, latlng) {
		if (latlng != null) {
			address = latlng;
			geocoder.getLocations(latlng, jQuery.readAddress);
		}
	},
  readAddress: function(response) {
		map.clearOverlays();
		if (!response || response.Status.code != 200) {
			alert("Status Code:" + response.Status.code);
		} else {
			place = response.Placemark[0];
			point = new GLatLng(place.Point.coordinates[1],
													place.Point.coordinates[0]);
			marker = new GMarker(point);
			map.addOverlay(marker);
			
			address_data = place.address.split(',');
			google_street = '';
			google_country = '';
			google_city = '';
			
			if (address_data.length == 3){
				google_street  = jQuery.trim(address_data[0]);
				google_city = jQuery.trim(address_data[1]);
				google_country = jQuery.trim(address_data[2]);
			}
			
			if (address_data.length == 2){
				google_city = jQuery.trim(address_data[0]);
				google_country = jQuery.trim(address_data[1]);
			}			
			
			marker.openInfoWindowHtml(
			//'<b>orig latlng:</b>' + response.name + '<br/>' + 
			//'<b>latlng:</b>' + place.Point.coordinates[1] + "," + place.Point.coordinates[0] + '<br>' +
			//'<b>Status Code:</b>' + response.Status.code + '<br>' +
			//'<b>Status Request:</b>' + response.Status.request + '<br>' +
			'<b>Street:</b> ' + google_street + '<br /><b>City:</b> ' + google_city + '<br /><b>Country:</b> ' + google_country);
			//'<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
			//'<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
			
			getObject('location').val(place.address);
			getObject('location_name').val(place.address);
			getObject('postal').val('');
			getObject('street').val(google_street);
		}
	},
	saveLocation: function(){
		
		
		if (place != null){
			
			var _location = getObject('location').val();
			var _sll 	= map.getBounds().getSouthWest().toUrlValue();
			var _sspn 	= new GLatLng(map.getBounds().getNorthEast().lat() - map.getBounds().getSouthWest().lat(), map.getBounds().getNorthEast().lng() - map.getBounds().getSouthWest().lng()).toUrlValue();
			var _spn = map.getBounds().toSpan().toUrlValue();
			var _iframe_link = 'http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=' + _location.replace(', ', ',+') + '&amp;sll=' + _sll + '&amp;sspn=' + _sspn +'&amp;ie=UTF8&amp;ll=' + place.Point.coordinates[1] + ',' + place.Point.coordinates[0] + '&amp;spn=' + _spn + '&amp;z=11&amp;iwloc=A&amp;output=embed';

			getObject('field_latitude_value').val(place.Point.coordinates[1]);
			getObject('field_longitude_value').val(place.Point.coordinates[0]);
			getObject('field_location_value').val(getObject('location').val());	
			getObject('field_location_name_value').val(getObject('location_name').val());	
			getObject('field_street_value').val(getObject('street').val());	
			getObject('field_postal_code_value').val(getObject('postal').val());
			getObject('field_google_maps_link_value').val(_iframe_link);
			
			getObject('showme').dialog('close');
		}
	
	},
	showDialogSuccess: function (message, width){
		
			var _this = getObject('showme');
			var _html = '\
			<table cellspacing="0" cellpadding="0" width="100%"> \
				<tr> \
					<td><img src="' + baseUrl +'/public/images/icon-success.png" /></td> \
					<td width="10">&nbsp;</td> \
					<td>' + message + '</td> \
				</tr> \
			</table>';
			
			_this.html(_html);
			
			_this.dialog(
			{ 
				autoOpen: false,
				width: width || 305 ,
				draggable: false, 
				title: 'confirmation <b>wooloo</b>',
				bgiframe: false,
				resizable: false,
				dialogClass: 'flash-message',
				hide: 'fast',
				zIndex: 1050,
				open: function (){
					
					_this.fadeIn(1500);
					
				},
				closeOnEscape: true 
			}
			);
			
			_this.dialog('open');
			
			_this.bind('dialogclose', function(){
				
				jQuery(this).dialog('destroy');
				
			});
			
	},	
	showDialogError: function (message, width){
		
			var _this = getObject('showme');
			var _html = '\
			<table cellspacing="0" cellpadding="0" width="100%"> \
				<tr> \
					<td><img src="' + baseUrl +'/public/images/icon-error.png" /></td> \
					<td width="10">&nbsp;</td> \
					<td>' + message + '</td> \
				</tr> \
			</table>';
			
			_this.html(_html);
			
			_this.dialog(
			{ 
				autoOpen: false,
				width: width || 305 ,
				draggable: false, 
				title: '<b>attention</b>',
				bgiframe: false,
				resizable: false,
				dialogClass: 'flash-message',
				hide: 'fast',
				zIndex: 1050,
				open: function (){
					
					_this.fadeIn(1500);
					
				},
				closeOnEscape: true 
			}
			);
			
			_this.dialog('open');
			
			_this.bind('dialogclose', function(){
				
				jQuery(this).dialog('destroy');
				
			});
			
		},
		showDialogFeedback: function (message, width, type){
			
				$('body').append('<div id="feedback" style="display: none;"></div>');
				
				var _this = getObject('feedback');
				var _html = '\
				<table cellspacing="0" cellpadding="0" width="100%"> \
					<tr> \
						<td><img src="' + baseUrl +'/public/images/icon-' + type + '.png" /></td> \
						<td width="10">&nbsp;</td> \
						<td>' + message + '</td> \
					</tr> \
				</table>';
				
				_this.html(_html);
				
				_this.dialog(
				{ 
					autoOpen: false,
					width: width || 305 ,
					draggable: false, 
					title: 'confirmation <b>wooloo</b>',
					bgiframe: false,
					resizable: false,
					dialogClass: 'showme-window',
					hide: 'fast',
					zIndex: 1050,
					open: function (){
						
						_this.fadeIn(1500);
						
					},
					closeOnEscape: true 
				}
				);
				
				_this.dialog('open');
				
				_this.bind('dialogclose', function(){
					
					jQuery(this).dialog('destroy');
					
				});
				
		},
		fullscreenView: function(nid){
			
			var _self = getObject('fullscreen_' + nid)
			_self.trigger('click');
			
		},
		launchImageResizer: function(container){
			$("#" + container + " input[name=ch]:first").trigger('click');
			getObject('link-get-imageresizer').trigger('click');
		}
 });
 
	jQuery.fn.extend({
		
		updateOnKeyDown: function(element){
			
			var _update = getObject(element);
			
			if (_update){
		
				$(this).keyup(function(){
					_update.html($(this).val());
				});
				
			}
		},
		setValue: function(value ){
			
			$(this).val(value);
			
		},
		checkUserName: function(params){
			
			var _this = $(this);
			
			$.post(baseUrl + '/user/check-user-name/', params, 
			
				function(data) {
					
					if (data.error){
						_this.addClass('error');
						_this.val(data.error)
					}
					
					deactivateProgress();
						
			}, 'json');
			
		},
		checkPassword: function(){
			
			var _password = getObject('_password');
			var _confirm_password = getObject('confirm_password');
			var _confirm_password_text = getObject('confirm_password_text');
			
			if (_password.val() != _confirm_password.val()){
				_confirm_password_text.addClass('error');
				_confirm_password_text.val('confirm your password');
				_confirm_password.hide();				
				_confirm_password_text.show();
			}	
			
		},		
		checkEmail: function(params){
			
			var _this = $(this);
		
			$.post(baseUrl + '/user/check-email/', params, 
			
				function(data) {
					
					if (data.error){
						_this.addClass('error');
						_this.val(data.error);
					}
					
					deactivateProgress();
						
			}, 'json');
			
		},		
		getArtwork: function(params){
			
			var _this = $(this);
			
			if ($('#div_edit_image').length > 0) {
			   $('#div_edit_image').css('display', '');
			}
			// blank fields
         $('#field_title_value').val("");
         $('#field_material_value').val("");
         $('#field_size_value').val("");
         $('#field_price_value').val("");
            
         activateProgress(_this);
						
			$("#div_edit_image_image").html("<img src=\"/public/images/image_loading.gif\" style=\"padding-left: 80px; padding-top: 40px;\">");
			
			$.post(baseUrl + '/my-exhibition/get-artwork/', params, 
			
				function(data) {

					if (data.success){
						
						var s_field_title_value = data.success.field_title_value;
						var s_field_material_value = data.success.field_material_value;
						var s_field_size_value = data.success.field_size_value;
						var s_field_price_value = data.success.field_price_value;
						
						if (s_field_title_value == null) s_field_title_value = "";
						if (s_field_material_value == null) s_field_material_value = "";
						if (s_field_size_value == null) s_field_size_value = "";
						if (s_field_price_value == null) s_field_price_value = "";
						
						getObject('field_title_value').val(s_field_title_value);
						getObject('field_material_value').val(s_field_material_value);
						getObject('field_size_value').val(s_field_size_value);
						getObject('field_price_value').val(s_field_price_value);
						
						$("#div_edit_image_image").html(data.success.img);
						
						getObject('btt-save-change').show(500);
					}
					
					deactivateProgress();
						
			}, 'json');		
			
		},
		slideLogotyp: function(type, nid, key, name){
			
			if ($(this).hasClass('link-squer-hover'))
					return false;
			
			var _visible = $('#container-' + type + ' a:visible');
			
			_visible.fadeOut(100, function(){ 
					$('#logotyp-' + nid).fadeIn(500); 
			});
			
			var _link = $('#container-' + type).next('.column-footer').find('.link-squer-hover');
			_link.removeClass('link-squer-hover');
			$(this).addClass('link-squer-hover');
			
			$('#name-' + type).text(name);
			$('#number-' + type).text(key + 1);
																											 
			return false;
		},
		refreshCaptcha: function(){

			var _this = $(this);
			
			activateProgress(_this);
			getObject('captcha-wrapper').load(baseUrl + '/user/refresh-captcha', null, function() { deactivateProgress(); });			
			
		},
		replacePassword: function(){
				
			 var _input = '<input class="input-login" type="password" name="password" value="" id="password" />';
			 $(this).after(_input);
			 $(this).remove();
			 var _password = getObject('password');
			 _password.show('fast', function() { _password.focus(); });
		},
		setDisapearValue: function(message){
		
			var _default = message;
			var _self = $(this);
			_self.val(_default);
			
			_self.focus(function(){
				if ($(this).val() == _default)
						$(this).val('');
			});
			
		},
		setPasswordDisapearValue: function(message){
		
			var _default = message;
			var _self = $(this);
			_self.val(_default);
			
			_self.focus(function(){
				if ($(this).val() == _default){
						$(this).remove();
						var _password = getObject('_password');
						_password.show();
						_password.focus();
				}		
			});
			
		},		
		userUrl: function(){
			
			var pattern = /^[a-zA-Z0-9_\.\-]+$/gi;
			
			var _reg = new RegExp(pattern);
			
			var _self = $(this);
			var _url = getObject('user-url');
			
			_self.focus(function(){
			
					$(this).resetInput();
					var _val = $(this).val();					

			});
			
			_self.blur(function(){
				
				$(this).checkUserName({user: $(this).val()});
				_url.val($(this).val());
				
			});
			
			
			_self.keydown(function(e){
				
				var _v = $(this).val();
			  var c = String.fromCharCode(e.which);
         
				if ( !(e.keyCode >= 65 && e.keyCode <= 90) && !(e.keyCode >= 48 && e.keyCode <= 57) && e.keyCode != 46 && e.keyCode != 8 && (jQuery.inArray(e.keyCode, [9, 190, 109, 16, 189, 46]) == -1) ) {
					return false;						
				}
			});			
			
			
			_self.keyup(function(e){
				
				var _v = $(this).val();
				
				//if ( (e.keyCode >= 65 && e.keyCode <= 90) || e.keyCode == 46 || e.keyCode == 8 ||  (jQuery.inArray(e.keyCode, [190, 109, 16, 189, 46]) != -1) ) {
				if (_v.match(pattern)){	
					
					_url.html(_v);
					
				}
				
				return false;
			});
	 },
	 
	 showUserEditWrapper: function(){
		 
		 var _self = $(this);
		 
		 _self.mouseover(function(){
			 
			 $(this).find('.link-edit').show();
			 $('#cv-image').css('border', '1px solid #ec2903');
			 
		 });
		 
		 _self.mouseout(function(){
			 $(this).find('.link-edit').hide(); 
			 $('#cv-image').css('border', '1px solid #F7F7F8');
		 });
		 
	 },
	 
	 showEdit: function(){
		 var _self = $(this);
		 _self.mouseover(function(){ $(this).find('.link-edit').show();});
		 _self.mouseout(function(){ $(this).find('.link-edit').hide();});
	 },
	 
	 clearUrl: function(){
		 
		  var _self = $(this);
			
			_self.keyup(function(){
				$(this).val($(this).val().replace('http://', ''));		
			});
	 }
	});
 

})(jQuery);

