(function($) {

	$.fn.searching = function(options) {

		options = jQuery.extend({
			url: 		'',
			defultId:	'ajaxSearch',
			resultType:	'json',
			searchLang:	'Search',
			searchingLang:	'Searching Plase Wait...',
			noresultLang:	'No Result!',
			feildsLang:	'Plase Select options above to procced',
			countLang:	'<span></span> results found!',
			errorLang:	'The bluebuy search is not working right now plase try again later!',
		}, options);

		var prependAddHTML = '';
		var appendAddHTML = '';

//		prependAddHTML = prependAddHTML.concat('<form id="' + options.defultId + '-form" name="' + options.defultId + '-form">');

		appendAddHTML = appendAddHTML.concat('<div id="' + options.defultId + '-loader" class="hide-searching"></div>');
		appendAddHTML = appendAddHTML.concat('<div id="' + options.defultId + '-go" name="search" class="ajaxsearch-gobtn">' + options.searchLang + '</div>');
		appendAddHTML = appendAddHTML.concat('<div id="' + options.defultId + '-result" class="ajaxsearch-result" style="display: none;"></div>');
//		appendAddHTML = appendAddHTML.concat('</form>');

		$(this).append(appendAddHTML).prepend(prependAddHTML);

		$('#' + options.defultId + '-go').click(function() {
			$('#' + options.defultId + '-loader').removeClass().addClass('searching').html(options.searchingLang);

			$('.' + options.defultId + '-remove').slideUp('slow', function()
			{
				$('#' + options.defultId + '-result').slideUp('slow', function() 
				{
					var resultNumber = '<div id="' + options.defultId + '-countresult" class="ajaxsearch-countresult">' + options.countLang + '</div>';
					$(this).html('');

					if(options.resultType == 'json')
					{
						$.getJSON(options.url + '?ajax=true' + makeURLfromFORM('', $('#' + options.defultId + '-form').get(0), ''), {}, function(data) 
						{
							if(data.row.indexOf('<!--ajax:FeildsNeeded-->') >= 0)
							{
								$('#' + options.defultId + '-result').html('<div class="ajaxsearch-noresult">' + options.feildsLang + '</div>');
							}
							else if(data.row.indexOf('<!--ajax:NoResult-->') >= 0)
							{
								$('#' + options.defultId + '-result').html(resultNumber + '<div class="ajaxsearch-noresult">' + options.noresultLang + '</div>');
								$('#' + options.defultId + '-countresult span').html(0);
							}
							else if(data.row.indexOf('<!--ajax:Result-->') >= 0)
							{
								$('#' + options.defultId + '-result').html(resultNumber + data.row);
								$('#' + options.defultId + '-countresult span').html(data.results);
							}
							else
							{
								$('#' + options.defultId + '-result').html('<div class="ajaxsearch-noresult">' + options.errorLang + '</div>');
							}

							$('#' + options.defultId + '-result').slideDown('slow', function()
							{
								$('#' + options.defultId + '-loader').removeClass().addClass('hide-searching').html('');
							});
						});
					}
					else if(options.resultType == 'get')
					{
						$.get(options.url + '?ajax=true', makeURLfromFORM('&submit=submit', $('#' + options.defultId + '-form').get(0), ''), function(data) 
						{
							$('#' + options.defultId + '-result').html(data).slideDown('slow');
						});
					}
				});
			});
		});
	};

})(jQuery);

function makeURLfromFORM(urlBase, form, submit_name)
{
	var elem = form.elements;

	for(var k in elem)
	{ 
		if(typeof(elem[k].value) != "undefined")
		{
			if(elem[k].type == 'submit' && elem[k].name != submit_name) continue;
			if((elem[k].type == 'checkbox'||elem[k].type == 'radio') && !elem[k].checked) continue;
			urlBase = urlBase + '&' + encodeURI(elem[k].name) + '=' + encodeURI(elem[k].value);
		}
		else if(typeof(elem[k].checked) != "undefined")
		{
			if(elem[k].checked) urlBase = urlBase + '&' + encodeURI(elem[k].name);
		}
	}

	return urlBase;
}
