function adriatica_search( p_app_rewrite_base )
{
	this._arr_results = null,

	this._arr_unit_results = null,

	this._url_search = 'http://www.adriatica.net/ski/resultsnjuskalo_hr.htm?onload=obj_adriatica.process_search_response';
	this._url_units = 'http://www.adriatica.net/ski/resultsboxnjuskalo_hr.htm?room1_childAges=&showNapomena=1&onload=obj_adriatica.process_units_response';
	this._url_njuskalo_ad_data = p_app_rewrite_base + 'index.php?cmd=adriatica_search&action=get_njuskalo_ad_data',

	this.app_rewrite_base = p_app_rewrite_base,

	this._arr_filter = null,

	this._object_html = '\
<div class="ski_list_item ad_item">\n\
	<div class="ski_item_img" id="id_item_slika_{id}"></div>\n\
	<div class="ski_item_data desc">\n\
		<h4><a href="javascript:void(0)" id="id_item_link_{id}">{naziv}</a></h4>\n\
		<p>{object_type} u: {destination}, {country}<br />\n\
		Skijalište: <span id="id_item_ski_resorts_{id}"></span></p>\n\
		Cijena od: {min_price} {currency}\n\
	</div>\n\
	<div class="tools" id="id_item_tools_{id}">\n\
	</div>\n\
	<div class="clear"></div>\n\
</div>\n\
	',

	this._unit_html = '\
<tr>\n\
	<td>{naziv}</td>\n\
	<td align="right">{iznos} {valuta}</td>\n\
</tr>\
	',

	this._ad_unit_html = '\
							<tr{class}>\n\
								<td>{naziv}</td>\n\
								<td align="right">{iznos} {valuta}</td>\n\
								<td><a href="{reservation_link}" target="_blank" class="ski_button rezerviraj">Rezerviraj</a></td>\n\
							</tr>\n\
	',

	this._no_objects_found_html = '<div class="user_account_c2c_notification_warning relative no_ski_results">\n\
<strong>Nema rezultata koji odgovaraju Vašem upitu!</strong><br/>\n\
<h2 class="tmarg_10px">Pokušajte odabrati drugi datum polaska!</h2>\n\
<strong style="display: block;" class="tmarg_10px">Napomena: skijaški aranžmani najčešće počinju SUBOTOM i traju 7,14 ili 21 dan.</strong>\n\
</div>\n\
	',

	this.process_search_response = function( p_str_response )
	{
		var arr_response;

		//alert( 'process search response' );

		eval( 'arr_response = ' + p_str_response );

		//alert( 'response processed' );
		_result_count = parseInt( arr_response[ 'response' ][ 'results' ][ 'total' ] );

		// postavi broj rezultata
		$( '#id_adriatica_list_result_count' ).text( _result_count.toString() );

		if( arr_response[ 'status' ][ 'code' ] != 'no-results' ){
			this._arr_results = arr_response[ 'response' ][ 'results' ][ 'hotels' ];
		} else {
			this._arr_results = null;
		}

		this.render_results();
	},

	this.process_units_response = function( p_str_response )
	{
		var arr_response;

		eval( 'arr_response = ' + p_str_response );

		//_result_count = parseInt( arr_response[ 'response' ][ 'results' ][ 'total' ] );

		//alert( arr_response[ 'response' ][ 'results' ][ 'htdet' ][ 0 ][ 'hotelRooms' ] );
		if( arr_response[ 'status' ][ 'code' ] != 'no-results' ){
			//alert( 'ima rezultata' );
			this._arr_unit_results = arr_response[ 'response' ][ 'results' ][ 'htdet' ][ 0 ][ 'hotelRooms' ][ 'room' ];
		} else {
			this._arr_unit_results = null;
		}
		this.render_unit_results();
	},

	this.render_results = function()
	{
		var _work_html;
		var _arr_rooms;
		var _full_html = '';
		var _object_type_name = '';
		var _min_price;
		var _currency = '';
		$( '#id_adriatica_list_spinner' ).hide();
		$( '#id_adriatica_list_placeholder' ).show();
		//$( '#id_adriatica_list_spinner1' ).hide();
		//$( '#id_adriatica_list_placeholder1' ).show();
		if( this._arr_results.length == 0 ){
			$( '#id_adriatica_list_placeholder' ).html( this._no_objects_found_html );
			//$( '#id_adriatica_list_placeholder1' ).html( '' );
			return;
		}

		//alert( 'result_count=' + this._arr_results.length );
		for( var index in this._arr_results ){
			//console.log( 'index=' + index );
			_min_price = 999999;

			_work_html = this._object_html;
			_work_html = _work_html.replace( /{naziv}/g, this._arr_results[ index ][ 'name' ] );
			_work_html = _work_html.replace( /{id}/g, this._arr_results[ index ][ 'id' ] );
			_work_html = _work_html.replace( /{starrating}/g, this._arr_results[ index ][ 'starRating' ] );
			_work_html = _work_html.replace( /{destination}/g, this._arr_results[ index ][ 'destination' ] );
			_work_html = _work_html.replace( /{country}/g, this._arr_results[ index ][ 'country' ] );

			if( this._arr_results[ index ][ 'typecs' ] == '41-9' )
			{
				_object_type_name = 'Hotel / pansion';
			}
			else
			{
				_object_type_name = 'Privatni objekt';
			}

			_work_html = _work_html.replace( /{object_type}/g, _object_type_name );


			_work_units_html = '';
			_arr_rooms = this._arr_results[ index ][ 'hotelRooms' ][ 'room' ];
			//alert( concatObject( _arr_rooms ) );
			for( var unit_index in _arr_rooms ){
				if( Math.round( _arr_rooms[ unit_index ][ 'total' ] ) < _min_price )
				{
					_min_price = Math.round( _arr_rooms[ unit_index ][ 'total' ] );
				}
				_currency = _arr_rooms[ unit_index ][ 'currency' ];
				//alert( _arr_rooms[ unit_index ] );
				/*_work_unit_html = this._unit_html;
				_work_unit_html = _work_unit_html.replace( /{naziv}/g, _arr_rooms[ unit_index ][ 'type' ] );
				_work_unit_html = _work_unit_html.replace( /{iznos}/g, Math.round( _arr_rooms[ unit_index ][ 'total' ] ) );
				_work_unit_html = _work_unit_html.replace( /{valuta}/g, _arr_rooms[ unit_index ][ 'currency' ] );
				_work_units_html = _work_units_html + _work_unit_html;*/
			}

			//_work_html = _work_html.replace( '{unit_items}', _work_units_html );
			_work_html = _work_html.replace( /{min_price}/g, _min_price );
			_work_html = _work_html.replace( /{currency}/g, _currency );

			_full_html = _full_html + _work_html;
			//$( '#id_adriatica_list_placeholder1' ).html( $( '#id_adriatica_list_placeholder1' ).html() + _work_html );
			//alert( _arr_results[ index ][ 'id' ] + ' ' + _arr_results[ index ][ 'name' ] );

		}

		$( '#id_adriatica_list_placeholder' ).html( _full_html );

		this.paste_njuskalo_ad_data();

	},

	this.paste_njuskalo_ad_data = function()
	{
		var id_list = '';

		var _tool_html = '		<div onclick="javascript:spremi_oglas_veza({id})" class="slicica_veza">\n\
			<img alt="Spremi" src="' + this.app_rewrite_base + 'templates/assets/images/icon_save_white.gif" />\n\
		</div>\n\
		';

		for( var index in this._arr_results ){
			if( id_list != '' ){
				id_list = id_list + ',';
			}
			id_list = id_list + this._arr_results[ index ][ 'id' ];
		}

		// test case
		// maknuti prije odlaska u produkciju
		if( id_list != '' ){
			id_list = id_list + ',';
		}
		//id_list = id_list + '115915-9';
		// end test case
		var obj_this = this;

		var _filter_params = '';

		//console.log( this._arr_filter );

		for( var index in obj_this._arr_filter )
		{
			_filter_params = _filter_params + '&' + index + '=' + this._arr_filter[ index ];
		}

		//alert( _filter_params );
		var item_tool_html = '';

		$.get( this._url_njuskalo_ad_data + '&external_ad_id=' + id_list , function( data )
			  {
				//console.log( data );
				var image_html = '';
				var _href = '';
				eval( 'var arr_result=' + data );

				//console.log( arr_result );
				for( var index in arr_result )
				{
					_href = obj_this.app_rewrite_base + arr_result[ index ][ 'url' ] + '?';

					_image_html = '<a href="' + _href + _filter_params + '"><image src="' + obj_this.app_rewrite_base + 'slika-100x100-' + arr_result[ index ][ 'image_id' ] + '.jpg" border="0"></a>';
					// postavi sliku
					$( '#id_item_slika_' + arr_result[ index ][ 'external_ad_id' ] ).html( _image_html );

					// postavi link
					$( '#id_item_link_' + arr_result[ index ][ 'external_ad_id' ] ).attr( 'href', _href + _filter_params );


					// postavi skijalista
					$( '#id_item_ski_resorts_' + arr_result[ index ][ 'external_ad_id' ] ).text( arr_result[ index ][ 'ski_resorts' ] );


					// postavi datum objave
					$( '#id_item_created_' + arr_result[ index ][ 'external_ad_id' ] ).text( arr_result[ index ][ 'created' ] );

					// postavi tool
					item_tool_html = _tool_html.replace( '{id}', arr_result[ index ][ 'ad_id' ] );
					$( '#id_item_tools_' + arr_result[ index ][ 'external_ad_id' ] ).html( item_tool_html );
				}
			  }
			  );

	}

	this.render_unit_results = function()
	{
		//alert( 'tu sam!!!' );

		var _work_unit_html;

		var _header_html = '						<table width="100%" cellpadding="0" cellspacing="2" border="0" class="ski_table">\n\
							<tr class="ski_table_head">\n\
								<td><strong>Aranžman</strong></td>\n\
								<td width="65"><strong>Cijena</strong></td>\n\
								<td style="background: none; border: none;" width="73">&nbsp;</td>\n\
							</tr>\n\
							';
		var _footer_html = '						</table>\n\
							';

		var _no_units_html = '<div class="user_account_c2c_notification_warning relative">\n\
				<strong>Nema rezultata koji odgovaraju Vašem upitu!</strong><br>\n\
				<h2 class="tmarg_10px">Pokušajte odabrati drugi datum polaska!</h2>\n\
				<strong class="tmarg_10px" style="display: block">Napomena: skijaški aranžmani najčešće počinju SUBOTOM i traju 7,14 ili 21 dan.</strong>\n\
		</div>';

		$( '#adriatica_no_initial_search' ).hide();
		$( '#adriatica_no_initial_search1' ).hide();
		$( '#adriatica_search_results' ).show();
		$( '#adriatica_search_results1' ).show();

		//alert( 'tu sam' );

		$( '#id_adriatica_list_spinner' ).hide();
		$( '#id_adriatica_list_spinner1' ).hide();
		$( '#id_adriatica_list_placeholder' ).show();
		$( '#id_adriatica_list_placeholder1' ).show();


		//console.log( this._arr_unit_results );

		if( this._arr_unit_results == null ){
			$( '#id_adriatica_list_placeholder' ).html( _no_units_html );
			$( '#id_adriatica_list_placeholder1' ).html( _no_units_html );
			return;
		}

		var _full_html = _header_html;
		var _result_cnt = 0;
		for( var unit_index in this._arr_unit_results ){
			//alert( this._arr_unit_results[ unit_index ][ 'type' ] );
			_work_unit_html = this._ad_unit_html;
			_work_unit_html = _work_unit_html.replace( /{naziv}/g, this._arr_unit_results[ unit_index ][ 'type' ] );
			_work_unit_html = _work_unit_html.replace( /{iznos}/g, Math.round( this._arr_unit_results[ unit_index ][ 'total' ] ) );
			_work_unit_html = _work_unit_html.replace( /{valuta}/g, this._arr_unit_results[ unit_index ][ 'currency' ] );
			_work_unit_html = _work_unit_html.replace( /{reservation_link}/g, this._arr_unit_results[ unit_index ][ 'link' ] );
			_result_cnt = _result_cnt + 1;
			if( _result_cnt % 2 == 1 )
			{
				_work_unit_html = _work_unit_html.replace( /{class}/g, ' class="odd"' );
			}
			else
			{
				_work_unit_html = _work_unit_html.replace( /{class}/g, '' );
			}
			_full_html = _full_html + _work_unit_html;
		}

		_full_html = _full_html + _footer_html;

		//alert( _full_html );

		$( '#id_adriatica_list_placeholder' ).html( _full_html );
		$( '#id_adriatica_list_placeholder1' ).html( _full_html );

	},

	this.do_search = function( p_type, p_arr_filter )
	{
		if( p_type == 'search' ){
			var _url = this._url_search;
		} else {
			var _url = this._url_units;
		}

		this._arr_filter = p_arr_filter;
		//console.log( p_arr_filter );
		if( p_arr_filter[ 'country_id' ] != undefined && p_arr_filter[ 'country_id' ] != '' )
		{
			_url = _url + '&DRZAVE=' + p_arr_filter[ 'country_id' ];
		}

		if( p_arr_filter[ 'object_id' ] != undefined && p_arr_filter[ 'object_id' ] != '' )
		{
			_url = _url + '&OC=' + p_arr_filter[ 'object_id' ];
			//_url = _url.replace( /{object_id}/g, p_arr_filter[ 'object_id' ] );
		}

		if( p_arr_filter[ 'ski_resort_id' ] != undefined && p_arr_filter[ 'ski_resort_id' ] != '' )
		{
			_url = _url + '&RESORT=' + p_arr_filter[ 'ski_resort_id' ];
		}

		if( p_arr_filter[ 'object_type' ] != undefined && p_arr_filter[ 'object_type' ] != '' )
		{
			_url = _url + '&T=' + p_arr_filter[ 'object_type' ];
			//_url = _url.replace( /{object_type}/g, p_arr_filter[ 'object_type' ] );
		}

		if( p_arr_filter[ 'start_date' ] != undefined && p_arr_filter[ 'start_date' ] != '' )
		{
			_url = _url + '&POLAZAK=' + p_arr_filter[ 'start_date' ];
			//_url = _url.replace( /{start_date}/g, p_arr_filter[ 'start_date' ] );
		}

		if( p_arr_filter[ 'end_date' ] != undefined && p_arr_filter[ 'end_date' ] != '' )
		{
			_url = _url + '&POVRATAK=' + p_arr_filter[ 'end_date' ];
			//_url = _url.replace( /{end_date}/g, p_arr_filter[ 'end_date' ] );
		}

		if( p_arr_filter[ 'days' ] != undefined && p_arr_filter[ 'days' ] != '' )
		{
			_url = _url + '&lengthOfStay=' + p_arr_filter[ 'days' ];
			//_url = _url.replace( /{days}/g, p_arr_filter[ 'days' ] );
		}

		if( p_arr_filter[ 'person_count' ] != undefined && p_arr_filter[ 'person_count' ] != '' )
		{
			_url = _url + '&BROJOSOBA=' + p_arr_filter[ 'person_count' ];
			//_url = _url.replace( /{person_count}/g, p_arr_filter[ 'person_count' ] );
		}

		if( p_arr_filter[ 'child_count' ] != undefined && p_arr_filter[ 'child_count' ] != '' )
		{
			_url = _url + '&childCount=' + p_arr_filter[ 'child_count' ];
			//_url = _url.replace( /{child_count}/g, p_arr_filter[ 'child_count' ] );
		}

		var obj_this = this;

		$( '#id_adriatica_list_spinner' ).show();
		$( '#id_adriatica_list_spinner1' ).show();
		$( '#id_adriatica_list_placeholder' ).hide();
		$( '#id_adriatica_list_placeholder1' ).hide();

		//alert( _url );

		$.getJSON( _url + '&callback=?', function( response )
		  {
			//obj_this.render_results();
		  }
		 );

	},

	this.process_ad_filter_form = function( p_object_id )
	{
		var values_valid = true;
		var d_end_date = new Date();

		// odredi vrijednosti parametara
		var days = parseInt( $( '#broj_nocenja' ).val() );
		var person_count = parseInt( $( '#broj_osoba' ).val() );
		var child_count = parseInt( $( '#broj_djece' ).val() );

		var start_date = $( '#datum_polaska' ).val().toString();

		//alert( start_date );

		start_date = start_date.replace( /\./g, '/' );

		// pretvori date string u date object
		var arr_start_date = start_date.split( '/' );

		if( arr_start_date.length < 3 )
		{
			values_valid = false;
			alert( 'Neispravan format datuma polaska' );
		}
		else
		{
			d_end_date.setFullYear( parseInt( arr_start_date[ 2 ], 10 ), parseInt( arr_start_date[ 1 ], 10 ) - 1, parseInt( arr_start_date[ 0 ], 10 ) );
			d_end_date.setDate( d_end_date.getDate() + days );
		}

		var end_date = this.zeropad( d_end_date.getDate().toString(), 2 ) + '/' + this.zeropad( ( d_end_date.getMonth() + 1 ).toString(), 2 ) + '/' + d_end_date.getFullYear().toString();


		//alert( 'start_date=' + start_date + ', end_date=' + end_date + ', days=' + days + ', cnt_pers=' + person_count + ', cnt_child=' + child_count );
		if( values_valid )
		{
			var arr_filter = {
			  'object_id' : p_object_id,
			  'start_date' : encodeURIComponent( start_date ),
			  'end_date' : encodeURIComponent( end_date ),
			  'days' : days,
			  'person_count' : person_count,
			  'child_count' : child_count
			};

			$( '#adriatica_filter_start_date' ).text( start_date.replace( /\//g, '.' ) );
			$( '#adriatica_filter_end_date' ).text( end_date.replace( /\//g, '.' ) );
			$( '#adriatica_filter_days' ).text( days.toString() );
			$( '#adriatica_filter_person_count' ).text( person_count.toString() );
			$( '#adriatica_filter_children_count' ).text( child_count.toString() );

			$( '#adriatica_filter_start_date1' ).text( start_date.replace( /\//g, '.' ) );
			$( '#adriatica_filter_end_date1' ).text( end_date.replace( /\//g, '.' ) );
			$( '#adriatica_filter_days1' ).text( days.toString() );
			$( '#adriatica_filter_person_count1' ).text( person_count.toString() );
			$( '#adriatica_filter_children_count1' ).text( child_count.toString() );


			// prikazi spinner
			$( '#adriatica_search_results1' ).show();
			$( '#adriatica_search_results' ).show();

			this.do_search( 'units', arr_filter );

			if( $.browser.msie && $.browser.version=='6.0' )
			{
				alert( 'Poslan zahtjev za podatcima' );
			}
		}
	},

	this.process_list_filter_form = function( p_location_id )
	{
		var ajax_search = false;
		var redirect_ajax_search = false;
		var values_valid = true;
		var d_end_date = new Date();

		// odredi vrijednosti parametara
		var days = parseInt( $( '#broj_nocenja' ).val() );
		var person_count = parseInt( $( '#broj_osoba' ).val() );
		var child_count = parseInt( $( '#broj_djece' ).val() );
		var destination_id = $( '#_id_f_destination_id' ).val();
		var original_start_date = $( '#datum_polaska' ).val();
		var start_date = original_start_date;
		var category_id = $( '#hid_category_id' ).val();
		var ski_resort_id = $( '#_id_f_ski_resort_id' ).val();
		var object_type = $( '#_id_f_object_type' ).val();

		if( parseInt( $( '#hid_redirect_ajax' ).val() ) == 1 )
		{
			redirect_ajax_search = true;
		}
		//alert( start_date );

		if( start_date != '' ){
			ajax_search = true;

			start_date = start_date.replace( /\./g, '/' );

			// pretvori date string u date object
			var arr_start_date = start_date.split( '/' );

			if( arr_start_date.length < 3 )
			{
				values_valid = false;
				alert( 'Neispravan format datuma polaska' );
			}
			else
			{
				//alert( 'dan=' + arr_start_date[ 0 ] + ', mj=' + arr_start_date[ 1 ] + ', god=' + parseInt( arr_start_date[ 2 ] ) );
				//alert( 'dan=' + parseInt( arr_start_date[ 0 ] ) + ', mj=' + ( parseInt( arr_start_date[ 1 ] ) - 1 ) + ', god=' + parseInt( arr_start_date[ 2 ] ) );
				d_end_date.setFullYear( parseInt( arr_start_date[ 2 ], 10 ), parseInt( arr_start_date[ 1 ], 10 ) - 1, parseInt( arr_start_date[ 0 ], 10 ) );
				//alert( d_end_date );
				//alert( d_end_date.getDate() );
				d_end_date.setDate( d_end_date.getDate() + days );
				//alert( d_end_date );
			}
		}

		var end_date = this.zeropad( d_end_date.getDate().toString(), 2 ) + '/' + this.zeropad( ( d_end_date.getMonth() + 1 ).toString(), 2 ) + '/' + d_end_date.getFullYear().toString();


		//alert( 'start_date=' + start_date + ', end_date=' + end_date + ', days=' + days + ', cnt_pers=' + person_count + ', cnt_child=' + child_count );
		if( ajax_search )
		{
			if( redirect_ajax_search )
			{
				var _url = this.app_rewrite_base + 'index.php?cmd=adriatica_search&autosearch=1';
				_url = _url + '&destination_id=' + destination_id + '&start_date=' + encodeURIComponent( original_start_date ) + '&days=' + days + '&location_id=' + p_location_id + '&children_count=' + child_count + '&person_count=' + person_count;
				_url = _url + '&object_type=' + object_type + '&ski_resort_id=' + ski_resort_id;
				_url = _url + '&category_id=' + category_id;
				//alert( _url );
				window.location = _url;
			}
			else
			{
				var arr_filter = {
				  'country_id' : p_location_id,
				  'start_date' : encodeURIComponent( start_date ),
				  'end_date' : encodeURIComponent( end_date ),
				  'days' : days,
				  'object_type' : object_type,
				  'person_count' : person_count,
				  'child_count' : child_count,
				  'ski_resort_id' : ski_resort_id
				};

				//console.log( 'ski_resort_id=' + ski_resort_id );
				//console.log( arr_filter );

				//$( '#adriatica_filter_start_date' ).text( start_date.replace( /\//g, '.' ) );
				//$( '#adriatica_filter_end_date' ).text( end_date.replace( /\//g, '.' ) );
				//$( '#adriatica_filter_days' ).text( days.toString() );
				//$( '#adriatica_filter_person_count' ).text( person_count.toString() );
				//$( '#adriatica_filter_child_count' ).text( child_count.toString() );

				this.do_search( 'search', arr_filter );
			}
		}
		else
		{
			//alert( 'napravit cu klasicni search' );
			$( '#form_browse_detailed_search' ).submit();
		}
	},

	this.zeropad = function( s, len )
	{

		 if ( s.length < len ) {
			 s = ( '0000000000' + s ).slice( -len );
		 }

		 return s;

	}
}
