var searchmycar = function($) {
	var priv = {
		
		selectedId : -1,
		selectedYear : 0,
		selectedIndex : -1,
		selectedMonth : -1,
		resultTypeList : null,
		
		initialSerie : '',
		initialBody : '',
		initialFuel : '',
		initialYear : '',
		initialMonth : '',
		initialTypesOpened : false,
		replace : true,
		licensePlate : '',
		initialTargetting : '',
		
		successSerieList : function (resultObj){
			var results;
			eval('results = ' + resultObj + '*/');
			
			var resHtml = [];
			resHtml.push('<option value="-1" selected="selected">Selecteer model</option>');
			
			for(x = 0; x < results.length; x++){
				resHtml.push('<option value="' + results[x] + '">' + results[x] + '</option>');
			}
			
			$('#ddSerieSelect').html(resHtml.join(''));
			$('#ddSerieSelect').get(0).selectedIndex = 0;
			
			$('#ddSerieSelect').removeAttr('disabled');
			$('#ddSerieSelect').removeClass('disabled');
			
			//check if the initial serie has been set
			if (priv.initialSerie != ''){
			    $('#ddSerieSelect').attr('value', priv.initialSerie);
			    priv.initialSerie = '';
			    searchmycar.serieSelectChange();
			}
			else {
		        priv.initialBody = '';
		        priv.initialFuel = '';
		        priv.initialYear = '';
			    priv.initialMonth = '';
		        priv.initialTypesOpened = false;
			}
		},
		
		errorSerieList : function (){
			zomoto.hideLoader('searchmycar-loader');
		},
		
		successBodyList : function(resultObj){
			var results;
			eval('results = ' + resultObj + '*/');
			
			var resHtml = [];
			
			if(results.length == 1){
			    resHtml.push('<option value="-1">Selecteer carrosserie</option>');
			    var item = results[0].split('|');
				resHtml.push('<option value="' + item[0] + '" selected="selected">' + item[1] + '</option>');
				$('#ddBodySelect').html(resHtml.join(''));
			    
			}
			else {
			    resHtml.push('<option value="-1" selected="selected">Selecteer carrosserie</option>');
			    for(x = 0; x < results.length; x++){
				    var item = results[x].split('|');
				    resHtml.push('<option value="' + item[0] + '">' + item[1] + '</option>');
			    }
			    $('#ddBodySelect').html(resHtml.join(''));
			    $('#ddBodySelect').get(0).selectedIndex = 0;
			}
			
			$('#ddBodySelect').removeAttr('disabled');
			$('#ddBodySelect').removeClass('disabled');
			//check if the initial body has been set
			if (priv.initialBody != ''){
			    $('#ddBodySelect').attr('value', priv.initialBody);
			    priv.initialBody = '';
			}
			else {
		        priv.initialFuel = '';
		        priv.initialYear = '';
			    priv.initialMonth = '';
		        priv.initialTypesOpened = false;
			}
			searchmycar.bodySelectChange();
			
		},
		
		errorBodyList : function(){
			
		},
		
		successFuelList  : function(resultObj){
			var results;
			eval('results = ' + resultObj + '*/');
			
			var resHtml = [];
			
			if(results.length == 1){
			    resHtml.push('<option value="-1">Selecteer brandstof</option>');
			    var item = results[0].split('|');
				resHtml.push('<option value="' + item[0] + '" selected="selected">' + item[1] + '</option>');
				$('#ddFuelSelect').html(resHtml.join(''));
			}
			else {
			    resHtml.push('<option value="-1" selected="selected">Selecteer brandstof</option>');
			    for(x = 0; x < results.length; x++){
				    var item = results[x].split('|');
				    resHtml.push('<option value="' + item[0] + '">' + item[1] + '</option>');
				    $('#ddFuelSelect').html(resHtml.join(''));
				    $('#ddFuelSelect').get(0).selectedIndex = 0;
			    }
			}

			$('#ddFuelSelect').removeAttr('disabled');
			$('#ddFuelSelect').removeClass('disabled');
			//check if the initial body has been set
			if (priv.initialFuel != ''){
			    $('#ddFuelSelect').attr('value', priv.initialFuel);
			    priv.initialFuel = '';
			}
			else {
		        priv.initialYear = '';
			    priv.initialMonth = '';
		        priv.initialTypesOpened = false;
			}
			
			searchmycar.fuelSelectChange();
		
		},
		
		errorFuelList : function(){
			
		},
		
		successSelectType : function(resultObj){
		    location.href = global.pathPrefix+'/my/carvalue.aspx';
		},
		
		successYearList  : function(resultObj){
			var results;
			eval('results = ' + resultObj + '*/');
			
			var resHtml = [];
			$('#ddProdYearSelect').removeAttr('disabled');
			$('#ddProdYearSelect').removeClass('disabled');
			//$('#ddProdMonthSelect').removeAttr('disabled');
		   
			if(results.length == 1){
			    resHtml.push('<option value="-1">Jaar</option>');
			    resHtml.push('<option value="' + results[0] + '" selected="selected">' + results[0] + '</option>');
			    
			    $('#ddProdYearSelect').html(resHtml.join(''));
			}
			else {
			    resHtml.push('<option value="-1" selected="selected">Jaar</option>');
			    for(x = 0; x < results.length; x++){
				    resHtml.push('<option value="' + results[x] + '">' + results[x] + '</option>');
			    }
			    $('#ddProdYearSelect').html(resHtml.join(''));
			    $('#ddProdYearSelect').get(0).selectedIndex = 0;
			   
			}
			 
		    var hasYear = false;
            //check if the initial body has been set
			if (priv.initialYear != ''){
			    $('#ddProdYearSelect').attr('value', priv.initialYear);
			    priv.initialYear = '';
			    hasYear = true;
			}
			else {
			    priv.initialMonth = '';
		        priv.initialTypesOpened = false;
			}
//			if (priv.initialMonth != ''){
//			    $('#ddProdMonthSelect').attr('value', priv.initialMonth);
//			    priv.initialMonth = '';
//			    if (hasYear) {
//			        //searchmycar.findModels();
//			    }
//			}
			
			searchmycar.prodYearSelectChange();
		},
		
		errorYearList : function(){
			
		},
		
		successTypesList : function(resultObj)
		{		    
			var results;
			eval('results = ' + resultObj + '*/');
//			$('#ddBrandSelect').attr('disabled', '');
//			$('#ddSerieSelect').attr('disabled', '');
//			$('#ddBodySelect').attr('disabled', '');
//			$('#ddFuelSelect').attr('disabled', '');
//			$('#ddProdYearSelect').attr('disabled', '');
//			
			var year = $('#ddProdYearSelect').attr('value');
			var month = $('#ddProdMonthSelect').attr('value');
			var brandDd = document.getElementById('ddBrandSelect');
			var brand = brandDd[brandDd.selectedIndex].text;
			var model = $('#ddSerieSelect').val();
			
			var resHtml = [];
			priv.resultTypeList = results;
			var resultList = $('#searchmycar_result_list');
			
			if(results.length > 0) {
				$('#searchmycar_results').show();resultList.html
			}
			
			resHtml.push('<div class="types-header">'+brand+' '+model+'</div>\n');
			resHtml.push('<div class="types-subheader">Selecteer hieronder de juiste uitvoering.</div>\n');
			
			for(x = 0; x < results.length; x++){
			    if(results[x][6] == 0) { results[x][6] = "Niet bekend"; }
			
			    var carName = results[x][1] + ' ' + results[x][2] + ' ' + results[x][3];
				resHtml.push('<div id="smc_' + results[x][0] + '-' + year +'-' + month + '" class="result_block" onmouseover="searchmycar.setOnMouseOver(\'carlist1_' + results[x][0] + '\', \'carlist2_' + results[x][0] + '\')" onmouseout="searchmycar.setOnMouseOut(\'carlist1_' + results[x][0] + '\', \'carlist2_' + results[x][0] + '\')">\n' +
								'<a id="carlist1_' + results[x][0] + '" title="'+carName+'">' + zomoto.toShort(carName, 40) + '</a>\n' +
								'<div id="carlist2_' + results[x][0] + '"><span>Nieuwprijs</span> &euro; ' + results[x][6] +'</div></div>\n');

			}
			
			resultList.html(resHtml.join(''));
			
			$('.result_block').click(function(){
				searchmycar.selectType($(this).attr('id').substring(4));
			});
			
			$('.result_block').hover(
				function(){
					$(this).css('cursor', 'pointer');									 
				},
				function(){
					$(this).css('cursor', 'default');
					
				}
			);
		},	
		
		showNotificationBar : function()
		{
		    	$('#notificationbar').addClass("notification-error-not-absolute");
			    $('#notificationbar').html("Het door u ingevulde kenteken is bij ons onbekend.");
			    $('#notificationbar').show();
		},
		
		hideNotificationBar : function()
		{
		    	$('#notificationbar').removeClass("notification-error-not-absolute");
			    $('#notificationbar').html('');
		},
				
		successTypesListByLicensePlate : function(resultObj)
		{		    
	    
			var results;
			eval('results = ' + resultObj + '*/');
			
			//results == null when no the licenseplate returned no cars
			if(results == null)
			{
                priv.showNotificationBar();
                $('#searchmycar_result_list').hide();
                
			}
			else {
	            priv.hideNotificationBar();
	            $('#searchmycar_result_list').show();
	
			    var brandDd = document.getElementById('ddBrandSelect');
    			
			    var model = "";
    			
			    var resHtml = [];
			    priv.resultTypeList = results;
			    var resultList = $('#searchmycar_result_list');
			    var brand = "";
			    var brandId = "";
			    var modelGroupId = "";
    			
			    if(results.length > 0) {
				    $('#searchmycar_results').show();resultList.html
				    brand = results[0][9];
				    brandId = results[0][10];
				    
				    model = results[0][1];
				    modelGroupId = results[0][11];
			    }
    			
			    resHtml.push('<div class="types-header">'+brand+' '+model+'</div>\n');
			    resHtml.push('<div class="types-subheader">Selecteer hieronder de juiste uitvoering</div>\n');
    			
			    for(x = 0; x < results.length; x++){
			        var carName = results[x][1] + ' ' + results[x][2] + ' ' + results[x][3];
			        var year = results[x][7];
			        var cssClass = "";
			        if(results[x][6] == "0") { results[x][6] = "Niet bekend"; }
			        else { results[x][6] = '&euro; ' + results[x][6]; }
    			    
			        //make a distinction between the first line and the rest because of the css borders
			       // if(x == 0)
    			        //cssClass = "result_block_first";
    			    //else
    			    cssClass = "result_block";
    			    
				    resHtml.push('<div id="smc_' + results[x][0] + '-' + year +'-' + results[x][8] + '" class="'+cssClass+'" onmouseover="searchmycar.setOnMouseOver(\'carlist1_' + results[x][0] + '\', \'carlist2_' + results[x][0] + '\')" onmouseout="searchmycar.setOnMouseOut(\'carlist1_' + results[x][0] + '\', \'carlist2_' + results[x][0] + '\')">\n' +
								    '<a id="carlist1_' + results[x][0] + '" title="'+carName+'">' + zomoto.toShort(carName, 40) + '</a>\n' +
								    '<div id="carlist2_' + results[x][0] + '"><span>Nieuwprijs</span> ' + results[x][6] +'</div></div>\n');

			    }
    			
			    resultList.html(resHtml.join(''));
			    
			    //if a brand and or model is known, add them in the targetting for the banner
		        if(brandId != "")
		        {
		            if(priv.initialTargetting == '')
		            {
		                priv.initialTargetting = $('#abafb73d').attr('src');
		            }
		            
		            var targettingSrc = priv.initialTargetting + "&source=m"+brandId + "|";
		            if(modelGroupId != "")
		            {
		                targettingSrc = targettingSrc + "t" + modelGroupId;
		            }
		            
		            $('#abafb73d').attr('src', targettingSrc);
		        }
		        
		        		    	    		    
			    $('.result_block').click(function(){
				    searchmycar.selectType($(this).attr('id').substring(4));
			    });
    			
			    $('.result_block').hover(
				    function(){
					    $(this).css('cursor', 'pointer');									 
				    },
				    function(){
					    $(this).css('cursor', 'default');
    					
				    }
			    );
			}
		},	
	
		
		errorTypesList : function(){
			
		}
		
	};
	
	return {
		//txtIdYear : null,
		hfOverWriteId : null,
	    setReplace : function(replace){
	        priv.replace = replace;
	    },
	    /*showDetailForm : function (){
	        $('#searchmycar_results').hide();
			$('#selectTypeSection').hide();
			
			$('#fillDetailsSection').show();
			
			
	    },*/
	    
		setOnMouseOver : function(objID, objID1)
		{	
		    $('#'+objID).addClass('hover');
		    $('#'+objID1).addClass('hover');
		},
		
		setOnMouseOut : function(objID, objID1)
		{		
		    $('#'+objID).removeClass('hover');
		    $('#'+objID1).removeClass('hover');
		},
		
		selectType : function (idYear){
			
			var sel = idYear.split('-');
			
			var typeId = sel[0];
			var year = sel[1];
			var month = 0;
			
			if(sel[2] != 0)
			{
			    month = sel[2];
				
			}
			else 
			{
			    month = priv.selectedMonth;
			}
		    var paramList = zomoto.ajaxParams(['typeId', 'year', 'month', 'replace', 'license'], [typeId, year, month, priv.replace, priv.licensePlate]);
		    zomoto.ajaxCall('CarSearch', 'SearchMyCarRedirect', priv.successSelectType, null, paramList);
		},
		
		brandSelectChange : function(){
		    $('#searchmycar_results').hide();
			$('#ddSerieSelect').attr('disabled', 'disabled');
			$('#ddSerieSelect').removeClass('disabled');
			$('#ddSerieSelect').addClass('disabled');
        	$('#ddBodySelect').attr('disabled', 'disabled');
			$('#ddBodySelect').removeClass('disabled');
			$('#ddBodySelect').addClass('disabled');
			$('#ddFuelSelect').attr('disabled', 'disabled');
			$('#ddFuelSelect').removeClass('disabled');
			$('#ddFuelSelect').addClass('disabled');
			$('#ddProdYearSelect').attr('disabled', 'disabled');
			$('#ddProdYearSelect').removeClass('disabled');
			$('#ddProdYearSelect').addClass('disabled');
			$('#ddProdMonthSelect').attr('disabled', 'disabled');
			$('#ddProdMonthSelect').removeClass('disabled');
			$('#ddProdMonthSelect').addClass('disabled');
			searchmycar.toggleFindButton(false);
		    
			if($('#ddBrandSelect').attr('value') == '-1'){
				return;
			}
			else {
				var brandId = $('#ddBrandSelect').attr('value');
				
				zomoto.ajaxCall('CarSearch', 'GetModelGroupList', priv.successSerieList, priv.errorSerieList, zomoto.ajaxParams(['brandId'], [brandId]));
			}
		},
		
		serieSelectChange : function (){
			$('#ddBodySelect').attr('disabled', 'disabled');
			$('#ddBodySelect').removeClass('disabled');
			$('#ddBodySelect').addClass('disabled');
			$('#ddFuelSelect').attr('disabled', 'disabled');
			$('#ddFuelSelect').removeClass('disabled');
			$('#ddFuelSelect').addClass('disabled');
			$('#ddProdYearSelect').attr('disabled', 'disabled');
			$('#ddProdYearSelect').removeClass('disabled');
			$('#ddProdYearSelect').addClass('disabled');
			$('#ddProdMonthSelect').attr('disabled', 'disabled');
			$('#ddProdMonthSelect').removeClass('disabled');
			$('#ddProdMonthSelect').addClass('disabled');
			searchmycar.toggleFindButton(false);
		    
			if($('#ddSerieSelect').attr('value') == '-1'){
				return;
			}
			else {
				var modelGroupName = $('#ddSerieSelect').attr('value');
				var brandId = $('#ddBrandSelect').attr('value');
				var paramList = zomoto.ajaxParams(['brandId', 'serie'], [brandId, modelGroupName]);
				
				zomoto.ajaxCall('CarSearch', 'GetBodyList', priv.successBodyList, priv.errorBodyList, paramList);
			}
		},
		
		bodySelectChange : function (){
			$('#ddFuelSelect').attr('disabled', 'disabled');
			$('#ddFuelSelect').removeClass('disabled');
			$('#ddFuelSelect').addClass('disabled');
			$('#ddProdYearSelect').attr('disabled', 'disabled');
			$('#ddProdYearSelect').removeClass('disabled');
			$('#ddProdYearSelect').addClass('disabled');
			$('#ddProdMonthSelect').attr('disabled', 'disabled');
			$('#ddProdMonthSelect').removeClass('disabled');
			$('#ddProdMonthSelect').addClass('disabled');
			searchmycar.toggleFindButton(false);
		    
			if($('#ddBodySelect').attr('value') == '-1'){
				return;
			}
			else {
				var modelGroupName = $('#ddSerieSelect').attr('value');
				var brandId = $('#ddBrandSelect').attr('value');
				var bodyShort = $('#ddBodySelect').attr('value');
				var paramList = zomoto.ajaxParams(['brandId', 'serie', 'bodyShort'], [brandId, modelGroupName, bodyShort]);
				

				zomoto.ajaxCall('CarSearch', 'GetFuelList', priv.successFuelList, priv.errorFuelList, paramList);
			}
		},
		
		fuelSelectChange : function(){
			$('#ddProdYearSelect').attr('disabled', 'disabled');
			$('#ddProdYearSelect').removeClass('disabled');
			$('#ddProdYearSelect').addClass('disabled');
			$('#ddProdMonthSelect').attr('disabled', 'disabled');
			$('#ddProdMonthSelect').removeClass('disabled');
			$('#ddProdMonthSelect').addClass('disabled');
			searchmycar.toggleFindButton(false);
		    
			if($('#ddFuelSelect').attr('value') == '-1'){
				return;
			}
			else {
				var modelGroupName = $('#ddSerieSelect').attr('value');
				var brandId = $('#ddBrandSelect').attr('value');
				var bodyShort = $('#ddBodySelect').attr('value');
				var fuel = $('#ddFuelSelect').attr('value');
				
				var paramList = zomoto.ajaxParams(['brandId', 'serie', 'bodyShort', 'fuel'], [brandId, modelGroupName, bodyShort, fuel]);
				

				zomoto.ajaxCall('CarSearch', 'GetYearBoundaries', priv.successYearList, priv.errorYearList, paramList);
			}
		},
		
		prodYearSelectChange : function() {
		    //alert($('#ddProdYearSelect').attr('value'));
			$('#ddProdMonthSelect').attr('disabled', 'disabled');
			$('#ddProdMonthSelect').removeClass('disabled');
			$('#ddProdMonthSelect').addClass('disabled');
		    if ($('#ddProdYearSelect').attr('value') != '-1') {
		        $('#ddProdMonthSelect').removeAttr('disabled');
		        $('#ddProdMonthSelect').removeClass('disabled');
		        this.prodMonthSelectChange();
		    }
		    else {
		        searchmycar.toggleFindButton(false);
		        return;
		    }
		},
		
		prodMonthSelectChange : function() {
   			if (priv.initialMonth != ''){
			    $('#ddProdMonthSelect').attr('value', priv.initialMonth);
		        priv.initialMonth = '';
		    }
		    if ($('#ddProdMonthSelect').attr('value') != '-1') {
		        searchmycar.toggleFindButton(true);
		        if (priv.initialTypesOpened == true) {
		            searchmycar.findModels();
		        }
   		        priv.initialTypesOpened = false;
		    }
		    else {
		        priv.initialTypesOpened = false;
		        searchmycar.toggleFindButton(false);
		        return;
		    }
		},
		
		toggleFindButton : function(enabled){
		    if(enabled){
		        $('#btnFindType').css('cursor', 'pointer');
		        $('#btnFindType').removeClass('btn-7-disabled');
		        $('#btnFindType').addClass('btn-7');
		        $('#btnFindType').click(function () { 
                    searchmycar.findModels();
                });
		    }
		    else {
		        $('#btnFindType').css('cursor', 'default');
		        $('#btnFindType').removeClass('btn-7');
		        $('#btnFindType').addClass('btn-7-disabled');
		        $('#btnFindType').unbind('click');
		        $('#searchmycar_results').hide();
		        $('#searchmycar_result_list').html('');
		    }
		    
		},
		
		findModels : function(){
		    if ($('#ddProdMonthSelect').attr('value') == '-1') {
		        $('#montherror').html('selecteer eerst een maand');
		    }
		    else {
		        $('#montherror').html('');
			    var modelGroupName = $('#ddSerieSelect').attr('value');
			    var brandId = $('#ddBrandSelect').attr('value');
			    var bodyShort = $('#ddBodySelect').attr('value');
			    var fuel = $('#ddFuelSelect').attr('value');
    			
			    var year = $('#ddProdYearSelect').attr('value');
			    var month = $('#ddProdMonthSelect').attr('value');
			    priv.selectedMonth = month;
    			
    			priv.licensePlate = '';
			    var paramList = zomoto.ajaxParams(['brandId', 'serie', 'bodyShort', 'fuel', 'year'], [brandId, modelGroupName, bodyShort, fuel, year]);
    				
			    zomoto.ajaxCall('CarSearch', 'GetTypes', priv.successTypesList, priv.errorTypesList, paramList);
			    
	        }
		},
		
		findModelsViaLicensePlate : function()
		{
		    var licensePlate = $('#txtLicensePlate').attr('value');
		    priv.licensePlate = licensePlate;
		    
		    var skipcache = 0;
		    if($('.hdnSkipCache').text() == "1") 
		    {
		        skipcache = 1;
		    }
		    
		    var paramList = zomoto.ajaxParams(['licensePlate', 'skipCache'], [licensePlate, skipcache]);
				
	        zomoto.ajaxCall('CarSearch', 'GetTypesByLicensePlate', priv.successTypesListByLicensePlate, priv.errorTypesList, paramList);
		},
	
		
		preSelect : function(brandId, serieId, bodyId, fuelId, year, month){
		    if (brandId != undefined && brandId != ''){
		        priv.initialSerie = serieId;
		        priv.initialBody = bodyId;
		        priv.initialFuel = fuelId;
		        priv.initialYear = year;
		        priv.initialMonth = month;
		        priv.initialTypesOpened = true;
		        $('#ddBrandSelect').attr('value', brandId);
		        this.brandSelectChange();
		    }
		},
		
		showNotificationBar : function()
		{
		    	$('#notificationbar').addClass("notification-error-not-absolute");
			    $('#notificationbar').html("Het door u ingevulde kenteken is bij ons onbekend.");
			    $('#notificationbar').show();
		},
		
		hideNotificationBar : function()
		{
		    	$('#notificationbar').removeClass("notification-error-not-absolute");
			    $('#notificationbar').html('');
		},
		
		searchcar_onload : function(plate)
		{
		    $('#txtLicensePlate').attr('value', plate);
		    
		    searchmycar.findModelsViaLicensePlate();
		}
	}

}(jQuery);


