$(document).ready(function(){


// Variables
// ---------------------------------------------------------------------

// Forms 
$frmAppSearch = $('#frmAppSearch');

// Select
$selModel = $('#selModel');
$selBrand = $('#selBrand');
$selEngine = $('#selEngine');

// textbox
var $txtPartNo = $('#txtPartNo').hint('blurClass');

// div
$divWrapper = $('#divWrapper');
$divOverLay = $('#divOverLay');


// form controls array declaration
formControls = new Object();
formControls['#selBrand']= '#selModel';
formControls['#selModel']= new Array('#selEngine','#selBody');

// img
$imgLoader = $('#imgLoader');

// ON Page Load
// ---------------------------------------------------------------------
	
// reset controls
_resetControls(formControls);


if(window.location.hash)
{
	var strHash = window.location.hash;
	strHash = strHash.replace('#','');
	strHash = strHash.split('/');

	var brandId = strHash[0];
	var modelId = strHash[1];

	$selBrand.val(brandId);

	// get app grid
	_get_apps_by_model(modelId);


	// fill selModel box
	_fill_select_model(brandId,modelId);
}

// $selModel
$selModel.change(function(){

	var modelId = $selModel.val();
	if(modelId > 0)
	{
		var hashStr = _get_full_hash_str();

		// if cur page is brake page
		if(window.location.href.indexOf('/catalogue/filter/') != -1)
		{
			window.location.href = base_url + 'catalogue#' + hashStr ;
		}

		// if the page is catalogue page
		else
		{
			window.location.hash = hashStr;

			// get app grid
			_get_apps_by_model(modelId);
		}

		// reset form controls
		_resetControls(formControls);
	}
});

// $selBrand
$selBrand.change(function(){
	window.location.hash = '';
	$selModel.attr('disabled',true);
	var brandId = $(this).val();

	if(brandId > 0 )
	{
		_fill_select_model(brandId);
	}
	else
	{
		$divWrapper.html('');
	}

	_resetControls(formControls);
});


// Helper functions
// ---------------------------------------------------------------------

function _resetControls(formControls)
{
	$.each(formControls,function(key,value){
		if($(key).val() == 0)
		{
			if($.isArray(formControls[key]))
			{
				$.each(formControls[key],function(k,v){
					$(v).val(0);
					$(v).attr('disabled',true);
				});
			}
			else
			{
				$(value).val(0);
				$(value).attr('disabled',true);
			}
		}
		else
		{
			if($.isArray(formControls[key]))
			{
				$.each(formControls[key],function(k,v){
					$(v).attr('disabled',false);
				});
			}
			else
			{
				$(value).attr('disabled',false);
			}
		}
	});
}


function _get_full_hash_str()
{
	// Prep Brand
	// ---------------------------------------------------------------------

	var brand = $.trim($selBrand.find('option:selected').text());
	var brandId = $selBrand.val();
	brand = _prep_parameter_name(brand);

	// Prep Model
	// ---------------------------------------------------------------------

	var model = $.trim($selModel.find('option:selected').text());
	var modelId = $selModel.val();
	model = _prep_parameter_name(model);

	// Prep Url
	// ---------------------------------------------------------------------

	var strHash =  brandId + '/' + modelId + '/' +  brand + '/' + model;
	return strHash;
}

function _fill_select_model(brandId,modelId)
{
	$.ajax({
		type		:	'post',
		url			:	base_url + 'app_model/get_app_models',
		data		:	'appBrandId=' + brandId,
		dataType	:	'json',
		success: function(return_data){
			if(return_data)
			{
				var $array = new Array();
				$array.push('<option value="0">--Select Models--</option>');
				for(var i=0; i<return_data.length; i++)
				{
					var model = return_data[i];
					$array.push('<option value="' + model.app_model_id + '">'+ model.app_model_name+'</option>');
				}

				$selModel.html($array.join(''));

				if(modelId)
				{
					$selModel.val(modelId);
				}

				_resetControls(formControls);
				
			}
		}
	});
}

function _get_apps_by_model(modelId)
{
	if(modelId)
	{
		ajax_start();
		$.ajax({
			type		:	'POST',
			url			:	base_url + 'catalogue',
			data		:	'selModel=' + modelId,
			global		:	false,
			dataType	:	'html',
			success	:	function(return_data){
				$divWrapper.html(return_data);
				$('a.obsolete','#applicationsTable').tooltip();
				$('a.moved','#applicationsTable').tooltip();
				$('#applicationsTable').find('tr:odd').addClass('odd');
				ajax_stop();
			}
		});
		
	}
}

function _prep_parameter_name(parameter)
{
		return parameter.replace(new RegExp('[^a-z|^0-9]','gi'),'_');
}

//  Ajax Global Events
// ---------------------------------------------------------------------

// ajax Start
$imgLoader.ajaxStart(function(){
	$imgLoader.removeClass('hidden');
});

// ajax Stop
$imgLoader.ajaxStop(function(){
	$imgLoader.addClass('hidden');
});

}); // end of document


function ajax_start()
{
	$divOverLay
		.css({'opacity':'0.5'})
		.fadeIn();
}

function ajax_stop()
{
	$divOverLay
		.fadeOut();
}