/*********************************************************
*	Model Search
**********************************************************/

function setModelType(type){
	
	typeId = 'modelType'+type;
		
	if( $(typeId).hasClassName('active')) {
		$('modelCategory').value = '';
		$(typeId).removeClassName( 'active' );
	} else {
    	$('modelCategory').value = type;
		$('modelTypeSmall').removeClassName( 'active' );
		$('modelTypeFamily').removeClassName( 'active' );
		$('modelTypePrestige').removeClassName( 'active' );
		$('modelTypeMPV').removeClassName( 'active' );		
		$('modelType4X4').removeClassName( 'active' );							
		$(typeId).addClassName( 'active' );
	}
	
	
	// Get all of the marques that are avaliable for the selected category
	populateMarqueList( type );
	
	if($('modelCategory').value == ''){
		// Get all marques as it has been unselected
		populateMarqueList( '' );
	}
	
	// Clear the model drop down
	for(i = $('model').options.length - 1 ; i >= 1 ; i-- ) {
		$('model').remove(i);
	}

	// Set the "Vehicles Found" 
	modelCarSearchChanged();
		
}


function populateMarqueList( type ) {
		
	var target = baseHref + 'ajax.php';
    var params = 'type=getMarques&category=' + type;

    var myAjax = new Ajax.Request(target,
    {
        method: 'post',
        parameters: params,
        onSuccess: function (request) {

        	var i;
			for(i = $('marqueDetailId').options.length - 1 ; i >= 0 ; i-- ) {
				$('marqueDetailId').remove(i);
			}

        	var outText = request.responseText;
        	outText = outText.split(',');

        	if ( outText.length > 0 ) {
        		for (i = 0 ; i < outText.length ; i++) {

        			//alert(outText[i]);
        			// split the value on |
        			makeDetails = outText[i].split('|');        			
					$('marqueDetailId').options[ $('marqueDetailId').options.length ] = new Option( makeDetails[1], makeDetails[0] );

        		}
        	}

        },

        onFailure: function(request) {
        	alert( 'request failed, please try again' );
        }
    });
	
	
}


// Model Search - Get all the models avaliable for the selected marque 
function populateModelList() {
  
	// Get all the models avaliable for the selected marque (and selected category / car types if applicable)
	
	// marqueDetailId

    var target = baseHref + 'ajax.php';
    var params = 'type=getMarqueModels&id=' + $('marqueDetailId').value + '&category=' + $('modelCategory').value;

    var myAjax = new Ajax.Request(target,
    {
        method: 'post',
        parameters: params,
        onSuccess: function (request) {

        	var i;
			for(i = $('model').options.length - 1 ; i >= 0 ; i-- ) {
				$('model').remove(i);
			}

        	var outText = request.responseText;
        	outText = outText.split(',');

        	if ( outText.length > 0 ) {
        		for (i = 0 ; i < outText.length ; i++) {

        			//alert(outText[i]);
					$('model').options[ $('model').options.length ] = new Option( outText[i], outText[i] );

        		}
        	}

        },

        onFailure: function(request) {
        	alert( 'request failed, please try again' );
        }
    });
	
    modelCarSearchChanged();
	
}

// Model Search - Calculate how many cars are avaliable from what has been selected
function modelCarSearchChanged() {
	
	var newCar = ( $('newCar').checked == true ) ? 1 : 0;
	var usedCar = ( $('usedCar').checked == true ) ? 1 : 0;
	var preRegCar = ( $('preRegCar').checked == true ) ? 1 : 0;
			
	// Calculate how many cars are avaliable from what has been selected (e.g. category, make, model, prices, car types)
	var target = baseHref + 'ajax.php';
    var params = 'type=getModelSearchTotalVehicles&category=' + $('modelCategory').value + '&marqueId=' + $('marqueDetailId').value + '&model=' + $('model').value + '&minPrice=' + $('minPriceCategory').value + '&maxPrice=' + $('maxPriceCategory').value + '&newCar=' + newCar + '&usedCar=' + usedCar + '&preRegCar=' + preRegCar;

    var myAjax = new Ajax.Request(target,
    {
        method: 'post',
        parameters: params,
        onSuccess: function (request) {
        	var outText = request.responseText;        	
        	//alert(outText);
			$('modelSearchResults').innerHTML = outText + ' Vehicles Found';
        },

        onFailure: function(request) {
        	alert( 'request failed, please try again' );
        }
    });
	    
}


function setModelValues( category, marque, model ) {

	// if category isn't empty then set it
	if ( category != '' ) {
		
		typeId = 'modelType'+category;
		
		if( $(typeId).hasClassName('active')) {
			$('modelCategory').value = '';
			$(typeId).removeClassName( 'active' );
		} else {
	    	$('modelCategory').value = category;
			$('modelTypeSmall').removeClassName( 'active' );
			$('modelTypeFamily').removeClassName( 'active' );
			$('modelTypePrestige').removeClassName( 'active' );
			$('modelTypeMPV').removeClassName( 'active' );							
			$('modelType4X4').removeClassName( 'active' );							
			$(typeId).addClassName( 'active' );
		}
		
		// Get all of the marques that are avaliable for the selected category		
		var target = baseHref + 'ajax.php';
	    var params = 'type=getMarques&category=' + category;
	
	    var myAjax = new Ajax.Request(target,
	    {
	        method: 'post',
	        parameters: params,
	        onSuccess: function (request) {
	
	        	var i;
	        	// clear the marque drop down
				for(i = $('marqueDetailId').options.length - 1 ; i >= 0 ; i-- ) {
					$('marqueDetailId').remove(i);
				}
	
	        	var outText = request.responseText;
	        	outText = outText.split(',');
	
	        	if ( outText.length > 0 ) {
	        		for (i = 0 ; i < outText.length ; i++) {
		        		// split the value on |
	        			makeDetails = outText[i].split('|');        			
						$('marqueDetailId').options[ $('marqueDetailId').options.length ] = new Option( makeDetails[1], makeDetails[0] );	
						if ( $('marqueDetailId').options[i].value == marque ) {
							$('marqueDetailId').selectedIndex = i;
						}
	        		}
	        	}
	        	
	        	
	        	// if marque isn't empty then set the drop-down
				if ( marque != '' ) {
					
					var target = baseHref + 'ajax.php';
				    var params = 'type=getMarqueModels&id=' + marque + '&category=' + category;
				
				    var myAjax = new Ajax.Request(target,
				    {
				        method: 'post',
				        parameters: params,
				        onSuccess: function (request) {
				
				        	var i;
							for(i = $('model').options.length - 1 ; i >= 0 ; i-- ) {
								$('model').remove(i);
							}
				
				        	var outText = request.responseText;
				        	outText = outText.split(',');
				
				        	if ( outText.length > 0 ) {
				        		for (i = 0 ; i < outText.length ; i++) {
									$('model').options[ $('model').options.length ] = new Option( outText[i], outText[i] );
									if ( $('model').options[i].value.toLowerCase() == model.toLowerCase() ) {				      					
				  						$('model').selectedIndex = i;
				  					} 				
				        		}
				        	}
				
				        },
				
				        onFailure: function(request) {
				        	alert( 'request failed, please try again' );
				        }
				    });
											
				} else {			
					// Clear the model drop down
					for(i = $('model').options.length - 1 ; i >= 1 ; i-- ) {
						$('model').remove(i);
					}
				}
	        	
	
	        },
	
	        onFailure: function(request) {
	        	alert( 'request failed, please try again' );
	        }
	    });
		
					
		// Set the "Vehicles Found" 
		//modelCarSearchChanged();
				
	} else {
		// if marque isn't empty then 
		if ( marque != '' ) {
		
			// loop through each option and check to see if the value is the same as the set make
			for( i = $('marqueDetailId').options.length - 1; i >= 1; i-- ) {						      				
				if ( $('marqueDetailId').options[i].value == marque ) {				      					
					$('marqueDetailId').selectedIndex = i;
				}							      					
			}
			
					
			var target = baseHref + 'ajax.php';
		    var params = 'type=getMarqueModels&id=' + marque + '&category=' + category;
		
		    var myAjax = new Ajax.Request(target,
		    {
		        method: 'post',
		        parameters: params,
		        onSuccess: function (request) {
		
		        	var i;
					for(i = $('model').options.length - 1 ; i >= 0 ; i-- ) {
						$('model').remove(i);
					}
		
		        	var outText = request.responseText;
		        	outText = outText.split(',');
		
		        	if ( outText.length > 0 ) {
		        		for (i = 0 ; i < outText.length ; i++) {
							$('model').options[ $('model').options.length ] = new Option( outText[i], outText[i] );
							if ( $('model').options[i].value.toLowerCase() == model.toLowerCase() ) {				      					
		  						$('model').selectedIndex = i;
		  					} 		
		        		}
		        	}
		
		        },
		
		        onFailure: function(request) {
		        	alert( 'request failed, please try again' );
		        }
		    });
				
			
		} else {
			// Clear the model drop down
			for(i = $('model').options.length - 1 ; i >= 1 ; i-- ) {
				$('model').remove(i);
			}	
		}
		
		// Set the "Vehicles Found" 
		//modelCarSearchChanged();
				
	}
				
}

/*************************************************************************************
*	Budget Search 
**************************************************************************************/

function financeSearch() {
	
    if( $('monthlyBudget').value != '' && !isNaN( $('monthlyBudget').value ) ){
        
    	var apr = 13.3;
    	var deposit = 1000;
    	var term = 60;

        var monthly_apr = ( parseFloat( apr ) / 12 ) /100;
        
        var totalFunds = 0;
        var totalInterest = 0;
        var totalAll = 0;
        
        var monthly_interest_payment = new Array();
        var monthly_total_payment = new Array();
        
        // Loop over the term to generate the monthly values
        for( var i = 0; i < term; i++  ) {				                
            if( i == 0 ) {
                monthly_interest_payment[i] = parseFloat( $('monthlyBudget').value ) * parseFloat( monthly_apr );
                monthly_total_payment[i] = parseFloat( $('monthlyBudget').value ) - parseFloat( monthly_interest_payment[i] );
            } else {
                monthly_interest_payment[i] = ( parseFloat( $('monthlyBudget').value ) + parseFloat( monthly_total_payment[ i -1 ] ) )* parseFloat( monthly_apr ); 
                monthly_total_payment[i] = ( parseFloat( $('monthlyBudget').value ) + parseFloat( monthly_total_payment[ i -1 ] ) ) - parseFloat( monthly_interest_payment[i] );
                totalFunds = monthly_total_payment[i];
                
            }    
            totalInterest = parseFloat( totalInterest + monthly_interest_payment[i] );
        }
        
        var finance_total = parseFloat( totalInterest ) + parseFloat( totalFunds);
        var finance_total_funds = parseFloat( totalFunds ) + parseFloat( deposit );

        var maxPrice = finance_total_funds * 1;
        $('maxPriceBudget').value = maxPrice.toFixed(2);                
        $('minPriceBudget').value = 0;     
        
    }
    
}


function changeBudgetMinPrice() {	
	$('minPriceBudget').value = $('minPriceBudgetFake').value;	
}


function changeBudgetMaxPrice() {
	$('maxPriceBudget').value = $('maxPriceBudgetFake').value;		
    if ( $('maxPriceBudgetFake').value == '999999' ) {
        financeSearch();
    }
    $('minPriceBudget').value = $('minPriceBudgetFake').value;	
}

// Calculate how many cars are avaliable from what has been selected
function budgetCarSearchChanged() {
	
	var newCar = ( $('budgetNewCar').checked == true ) ? 1 : 0;
	var usedCar = ( $('budgetUsedCar').checked == true ) ? 1 : 0;
	var preRegCar = ( $('budgetPreRegCar').checked == true ) ? 1 : 0;
			
	// Calculate how many cars are avaliable from what has been selected (e.g. prices, car types)
	var target = baseHref + 'ajax.php';
    var params = 'type=getBudgetSearchTotalVehicles&minPrice=' + $('minPriceBudget').value + '&maxPrice=' + $('maxPriceBudget').value + '&newCar=' + newCar + '&usedCar=' + usedCar + '&preRegCar=' + preRegCar;

    var myAjax = new Ajax.Request(target,
    {
        method: 'post',
        parameters: params,
        onSuccess: function (request) {
        	var outText = request.responseText;        	
        	//alert(outText);
			$('budgetSearchResults').innerHTML = outText + ' Vehicles Found';
        },

        onFailure: function(request) {
        	alert( 'request failed, please try again' );
        }
    });
	    
}


