//<![CDATA[

function $WB(ident){
	return document.getElementById(ident);
}

// AJAX object.
var ajaxRequest = createXmlHttpRequestObject();

// Return XMLHttpRequest object.
function createXmlHttpRequestObject() {
	// Object to handle XMLHttpRequest.
  	var ajaxRequest;

  	try { // Mozilla, Safari, Opera ...
		ajaxRequest = new XMLHttpRequest();
    }
    catch (e) {
    	try {
    		ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    	}
    	catch (e) {
    		try { // IE
    			ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    		catch (e) {
				ajaxRequest = false;
    		}
    	}
	}

  	// Return result.
  	if (!ajaxRequest) {
		alert("AJAX is not supported by your browser");
    	return  false;
    }
  	else
    	return ajaxRequest;
}

function bulbAjax(actionMethod, parameters, functionResponse, formButton, resend) {
	// Make request
  	if (ajaxRequest.readyState == 4 || ajaxRequest.readyState == 0) {
		// Lock send button.
		if (formButton != null) {
			// Value of formButton object.
			var formButton = document.getElementById(formButton);
			formButton.disabled = true;
		}

		// Make arguments list to send.
		var toSend = '';
		for (var i = 0; i < parameters.length; i++) {
			var parameter = document.getElementById(parameters[i]);
			toSend = toSend + parameters[i] + '=' + encodeURIComponent(parameter.value) + '&';
		}

  		// Execute requerst.
        ajaxRequest.open('GET', '/bulb_search.php?ajax=true&action=' + actionMethod + '&' + toSend + new Date().getTime(), true);

        // Set method to response.
        ajaxRequest.onreadystatechange = functionResponse;

        // Send data to server.
        ajaxRequest.send(null);
  	}
  	else if(resend == 1){
    	// Repeate request.
    	setTimeout('ajaxRequest(' + parameters + ', ' + functionResponse + ', ' + formButton + ')', 3000);
    }
}

function ajaxResponseMethod(formButton) {
  	// If transaction is completed.
  	if (ajaxRequest.readyState == 4) {
    	// If transaction is completed successful.
    	if (ajaxRequest.status == 200) {
			// Unlock send button.
			if (formButton != null) {
				// Value of formButton object.
				var formButton = document.getElementById(formButton);
				formButton.disabled = false;
			}

			// Return response.
      		return trim(ajaxRequest.responseText);
    	}
    	// If transaction is completed failed.
    	else {
		  	alert("AJAX request faild: " + ajaxRequest.statusText);
    	}
  	}
}

function trim(str, chars) {
    if(typeof(str) != "undefined") return ltrim(rtrim(str, chars), chars);
    else return str;
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    if(typeof(str) != "undefined") return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    else return str;
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    if(typeof(str) != "undefined") return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
    else return str;
}

//////////////////////
//                  //
//  BULB functions  //
//                  //
//////////////////////


// Get model by car id
function getBulb_ModelByCar(that){
	var bMS = $WB('bulbManufacturerSelect');
	var bM = $WB('bulbManufacturer');
	var bModelS = $WB('bulbModelSelect');	
	var bModel = $WB('bulbModel');
	var bYS = $WB('bulbVersionSelect');
	var bY = $WB('bulbVersion');
	
	var i = 1;
	bModelS.selectedIndex = 0;
	bYS.selectedIndex = 0;
	for(i=bModelS.options.length;i>0;i--){bModelS.remove(i);}
	for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
	
	if(bMS.selectedIndex == 0){
		bM.value = 0;
		bModel.value = 0;
		bY.value = 0;
		return false;
	}
	
	bM.value = 0;
	bModel.value = 0;
	bY.value = 0;
	
	bModelS.disabled = true;
	bM.value = bMS.options[bMS.selectedIndex].value;
	
	var parameters = new Array('bulbManufacturer');
	bulbAjax('getBulb_ModelByCar', parameters, getBulb_ModelByCar_response, 'bulbManufacturerSelect', 1);
}
// Get model by car id - ajax response method
function getBulb_ModelByCar_response(){
	var response = ajaxResponseMethod('bulbManufacturerSelect');
	if(typeof(response)!="undefined" && response != null){
		response = response.split('::');
		var bModelS = $WB('bulbModelSelect');

		if(response[0] && response[0] == '1'){
			var response_length = response.length;
			for( var i = 0; i < response_length; i++){
				var row_values = response[i].split('^^');
				
				if(row_values[0] && row_values[1]){
					// add data to select box
					bModelS.options[i] = new Option( row_values[1], row_values[0] );
				}else{
					// error getting data
					continue;
				}
			}
			bModelS.disabled = false;
		}else if(response[0] && response[0] == '-2'){
			// main error
			bModelS.disabled = false;
		}else if(response[0] && response[0] == '-1'){
			// no data for manufacturer/model/engine(year)
			bModelS.disabled = false;
		}else{
			// other
		}
	}
}

// Get Year (engine) by model id
function getBulb_EngineByModel(that){
	var bModelS = $WB('bulbModelSelect');	
	var bModel = $WB('bulbModel');
	var bYS = $WB('bulbVersionSelect');
	var bY = $WB('bulbVersion');
	
	var i = 1;
	bYS.selectedIndex = 0;
	for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
	
	if(bModelS.selectedIndex == 0){
		bModel.value = 0;
		bY.value = 0;
		return false;
	}
	
	bModel.value = 0;
	bY.value = 0;
	
	bYS.disabled = true;
	bModel.value = bModelS.options[bModelS.selectedIndex].value;
	
	var parameters = new Array('bulbModel');
	bulbAjax('getBulb_EngineByModel', parameters, getBulb_EngineByModel_response, 'bulbModelSelect', 1);
}
// Get Year (engine) by model id - ajax response method
function getBulb_EngineByModel_response(){
	var response = ajaxResponseMethod('bulbModelSelect');
	
	if(typeof(response)!="undefined" && response != null){
		response = response.split('::');

		if(response[0] && response[0] == '1'){
			var response_length = response.length;
			for( var i = 0; i < response_length; i++){
				var row_values = response[i].split('^^');
				var bYS = $WB('bulbVersionSelect');
				
				if(row_values[0] && row_values[1]){
					// add data to select box
					bYS.options[i] = new Option( row_values[1], row_values[0] );
				}else{
					// error getting data
					continue;
				}
			}
			bYS.disabled = false;
		}else if(response[0] && response[0] == '-2'){
			// main error
			bYS.disabled = false;
		}else if(response[0] && response[0] == '-1'){
			// no data for manufacturer/model/engine(year)
			bYS.disabled = false;
		}else{
			// other
		}
	}

}

function getBulb_checkVersions(that){
	var bVS = $WB('bulbVersionSelect');	
	var bV = $WB('bulbVersion');
	bV.value = bVS.options[bVS.selectedIndex].value;
	
	var bYS = $WB('bulbYearSelect');
	var bY = $WB('bulbYear');
	
	var i = 1;
	bYS.selectedIndex = 0;
	for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
	
	if(bVS.selectedIndex == 0){
		bY.value = 0;
		bV.value = 0;
		return false;
	}
	
	bV.value = 0;
	bY.value = 0;
	
	bVS.disabled = true;
	bV.value = bVS.options[bVS.selectedIndex].value;
	
	var parameters = new Array('bulbVersion');
	bulbAjax('getBulb_checkVersions', parameters, getBulb_checkVersions_response, 'bulbVersionSelect', 1);
}
// Get Year (engine) by model id - ajax response method
function getBulb_checkVersions_response(){
	var response = ajaxResponseMethod('bulbModelSelect');
	
	if(typeof(response)!="undefined" && response != null){
		response = response.split('::');
		var bYS = $WB('bulbYearSelect');
		var bY = $WB('bulbYear');
		var bVS = $WB('bulbVersionSelect');	

		if(response[0] && response[0] == '2'){
			// Brak roczników
			bY.value = 0;
			var i = 1;
			bYS.selectedIndex = 0;
			for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
			$WB('bulbYearRow').style.display='none';
			
			var bYS = $WB('bulbVersionSelect');	
			var bY = $WB('bulbVersion');
			bY.value = bYS.options[bYS.selectedIndex].value;
			bVS.disabled = false;
		}else if(response[0] && response[0] == '1'){
			// s± roczniki
			var response_length = response.length;
			for( var i = 0; i < response_length; i++){
				var row_values = response[i].split('^^');
				
				if(row_values[0] && row_values[1]){
					// add data to select box
					bYS.options[i] = new Option( row_values[1], row_values[0] );
				}else{
					// error getting data
					continue;
				}
			}
			$WB('bulbYearRow').style.display='';
			bVS.disabled = false;
		}else if(response[0] && response[0] == '-2'){
			// main error
			bVS.disabled = false;
		}else if(response[0] && response[0] == '-1'){
			// no data for manufacturer/model/engine(year)
			bVS.disabled = false;
		}else{
			// other
		}
	}

}

function getBulb_EnableSearch(that){
	var bYS = $WB('bulbVersionSelect');	
	var bY = $WB('bulbVersion');
	bY.value = bYS.options[bYS.selectedIndex].value;
}

function getBulb_EnableSearch_year(that){
	var bYS = $WB('bulbYearSelect');	
	var bY = $WB('bulbYear');
	bY.value = bYS.options[bYS.selectedIndex].value;
}


// Validate search form
function getBulb_CheckForm(variant){
	var bM = $WB('bulbManufacturer');
	var bModel = $WB('bulbModel');
	var bY = $WB('bulbVersion');
	var msg = 'Aby wyszukaÄ‡ dostepne Å¼arÃ³wki uzupeÅ‚nij poniÅ¼sze pola:';
	var error_count = 0;

	if(bM.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz producenta';
	}
	if(bModel.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz model';
	}
	if(bY.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz wersje';
	}

	if(error_count > 0){
		alert(msg);
		return false;
	}else{
		if(typeof(variant) == "undefined"){
			var urlToOpen = '/wbApp/zarowkiApp.php?marka='+bM.value+'&model='+bModel.value+'&wersja='+bY.value;
			wb_open(urlToOpen, 'bulbSearch');
		}
		return true;
	}
		
}



///////////////////////
//                   //
//  WIPER functions  //
//                   //
///////////////////////


// Get model by car id
function getWiper_ModelByCar(that){
	var bMS = $WB('wiperManufacturerSelect');
	var bM = $WB('wiperManufacturer');
	var bModelS = $WB('wiperModelSelect');	
	var bModel = $WB('wiperModel');
	var bYS = $WB('wiperYearSelect');
	var bY = $WB('wiperYear');
	
	var i = 1;
	bModelS.selectedIndex = 0;
	bYS.selectedIndex = 0;
	for(i=bModelS.options.length;i>0;i--){bModelS.remove(i);}
	for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
	
	if(bMS.selectedIndex == 0){
		bM.value = 0;
		bModel.value = 0;
		bY.value = 0;
		return false;
	}
	
	bM.value = 0;
	bModel.value = 0;
	bY.value = 0;
	
	bModelS.disabled = true;
	bM.value = bMS.options[bMS.selectedIndex].value;
	
	var parameters = new Array('wiperManufacturer');
	bulbAjax('getWiper_ModelByCar', parameters, getWiper_ModelByCar_response, 'wiperManufacturerSelect', 1);
}
// Get model by car id - ajax response method
function getWiper_ModelByCar_response(){
	var response = ajaxResponseMethod('wiperManufacturerSelect');
	if(typeof(response)!="undefined" && response != null){
		response = response.split('::');

		if(response[0] && response[0] == '1'){
			var response_length = response.length;
			for( var i = 0; i < response_length; i++){
				var row_values = response[i].split('^^');
				var bModelS = $WB('wiperModelSelect');
				
				if(row_values[0] && row_values[1]){
					// add data to select box
					bModelS.options[i] = new Option( row_values[1], row_values[0] );
				}else{
					// error getting data
					continue;
				}
			}
			bModelS.disabled = false;
		}else if(response[0] && response[0] == '-2'){
			// main error
			bModelS.disabled = false;
		}else if(response[0] && response[0] == '-1'){
			// no data for manufacturer/model/engine(year)
			bModelS.disabled = false;
		}else{
			// other
		}
	}
}

// Get Year (engine) by model id
function getWiper_EngineByModel(that){
	var bModelS = $WB('wiperModelSelect');	
	var bModel = $WB('wiperModel');
	var bYS = $WB('wiperYearSelect');
	var bY = $WB('wiperYear');
	
	var i = 1;
	bYS.selectedIndex = 0;
	for(i=bYS.options.length;i>0;i--){bYS.remove(i);}
	
	if(bModelS.selectedIndex == 0){
		bModel.value = 0;
		bY.value = 0;
		return false;
	}
	
	bModel.value = 0;
	bY.value = 0;
	
	bYS.disabled = true;
	bModel.value = bModelS.options[bModelS.selectedIndex].value;
	
	var parameters = new Array('wiperModel');
	bulbAjax('getWiper_EngineByModel', parameters, getWiper_EngineByModel_response, 'wiperModelSelect', 1);
}
// Get Year (engine) by model id - ajax response method
function getWiper_EngineByModel_response(){
	var response = ajaxResponseMethod('wiperModelSelect');
	
	if(typeof(response)!="undefined" && response != null){
		response = response.split('::');

		if(response[0] && response[0] == '1'){
			var response_length = response.length;
			for( var i = 0; i < response_length; i++){
				var row_values = response[i].split('^^');
				var bYS = $WB('wiperYearSelect');
				
				if(row_values[0] && row_values[1]){
					// add data to select box
					bYS.options[i] = new Option( row_values[1], row_values[0] );
				}else{
					// error getting data
					continue;
				}
			}
			bYS.disabled = false;
		}else if(response[0] && response[0] == '-2'){
			// main error
			bYS.disabled = false;
		}else if(response[0] && response[0] == '-1'){
			// no data for manufacturer/model/engine(year)
			bYS.disabled = false;
		}else{
			// other
		}
	}

}

function getWiper_EnableSearch(that){
	var bYS = $WB('wiperYearSelect');	
	var bY = $WB('wiperYear');
	bY.value = bYS.options[bYS.selectedIndex].value;
}


// Validate search form
function getWiper_CheckForm(variant){
	var bM = $WB('wiperManufacturer');
	var bModel = $WB('wiperModel');
	var bY = $WB('wiperYear');
	var msg = 'Aby wyszukaÄ‡ dostepne Å¼arÃ³wki uzupeÅ‚nij poniÅ¼sze pola:';
	var error_count = 0;

	if(bM.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz producenta';
	}
	if(bModel.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz model';
	}
	if(bY.value <= 0){
		error_count += 1;
		msg += '\r\n- wybierz rok produkcji';
	}

	if(error_count > 0){
		alert(msg);
		return false;
	}else{
		if(typeof(variant) == "undefined"){
			var urlToOpen = '/wbApp/wycieraczkiApp.php?marka='+bM.value+'&model='+bModel.value+'&rocznik='+bY.value;
			wb_open(urlToOpen, 'wiperSearch');
		}
		return true;
	}
		
}

function wb_open(wUrl, wName){
	var wWidth = 1024;
	var wHeight = 768;
	if(typeof(window.outerHeight) != "undefined" && typeof(window.outerWidth) != "undefined"){
		wWidth = window.outerWidth;
		wHeight = window.outerHeight;
	}else if(typeof(screen.availHeight) != "undefined" && typeof(screen.availWidth) != "undefined"){
		wWidth = screen.availWidth;
		wHeight = screen.availHeight;
	}
	var parameters = 'height='+wHeight+',width='+wWidth+',resizable=yes,scrollbars=yes,location=yes,menubar=yes,status=yes,titlebar=yes,toolbar=yes,top=0,left=0';
	var wNew = window.open(wUrl, wName, parameters);
	wNew.focus();
}

