var selected_type, selected_make, selected_year, selected_model, selected_version, selected_tyre;
var selected_type2, selected_width, selected_aspect, selected_diameter;
var cfg;
var ie6;
 
var settings = 
{
  "fi_FI":
  {
    "text_select": "Valitse",
    "result_url": "/tyreselector_results",
    "default_tyre_type": 1
  },
 
  "en_US": 
  {
    "text_select": "Select",
    "result_url": "/tyre-selector-results",
    "default_tyre_type": 2
  },
 
  "fr_FR": 
  {
    "text_select": "Sélectionner",
    "result_url": "/tyre-selector-results-fr",
    "default_tyre_type": 2
  },
 
  "cs_CZ":
  {
    "text_select": "Vybrat",
    "result_url": "/vyhledavac-pneumatik-results",
    "default_tyre_type": 2
  },
 
  "de_DE":
  {
    "text_select": "Wählen",
    "result_url": "/reifensucher-results",
    "default_tyre_type": 2
  },
 
  "pl_PL":
  {
    "text_select": "Wybierz",
    "result_url": "/dobor-opon-results",
    "default_tyre_type": 2
  },
 
  "ru_KZ":
  {
    "text_select": "Выбрать",
    "result_url": "/tyre-selector-results-kzru",
    "default_tyre_type": 1
  },
 
  "nn_NO": 
  {
    "text_select": "Velg",
    "result_url": "/tyre-selector-results-no",
    "default_tyre_type": 1
  },
 
  "ru_RU": 
  {
    "text_select": "Выбрать",
    "result_url": "/tyre-selector-results-ru-sort",
    "default_tyre_type": 1
  },
 
  "de_CH": 
  {
    "text_select": "Wählen",
    "result_url": "/reifensucher-results-chde",
    "default_tyre_type": 2
  },
 
  "sv_SE":
  {
    "text_select": "Välj",
    "result_url": "/tyre-selector-results-se",
    "default_tyre_type": 1
  },
 
  "uk_UA":
  {
    "text_select": "Обрати",
    "result_url": "/tyre-selector-results-ua",
    "default_tyre_type": 1
  },
  
  "it_IT":
  {
    "text_select": "Selezionare",
    "result_url": "/selettore-pneumatico-results",
    "default_tyre_type": 1
  },
  
  "zh_CN":
  {
    "text_select": "挑选",
    "result_url": "/tyre-selector-results-cn",
    "default_tyre_type": 1
  }
  
}
 
 
$(document).ready( function () {
 
  if (!$("#tyreselector").length) return;
 
  var urlvars = getUrlVars();
  
  cfg = (settings[ globalsitelang ] ? settings[ globalsitelang ] : settings[ 'en_US' ]);
  ie6 = ($.browser.msie && $.browser.version < 7 ? true : false);
 
  $("#tyreselector_car input:submit").attr("disabled", "disabled").css("opacity", 0.5);
 
  var selectedvalues = $.cookie("tyreselector");
  if (selectedvalues)
  {
    var tmp = selectedvalues.split("|");
    selected_type = tmp[0];
    selected_make = tmp[1];
    selected_year = tmp[2];
    selected_model = tmp[3];
    selected_version = tmp[4];
    selected_tyre = tmp[5]
    selected_type2 = tmp[6];
    selected_width = tmp[7];
    selected_aspect = tmp[8];
    selected_diameter = tmp[9];
 
    // Set size-form parameters only if GET-parameters are not defined
    if (selected_width && !urlvars[ 'width' ]) $("#tyre_width").val( selected_width );
    if (selected_aspect && !urlvars[ 'height' ]) $("#tyre_aspect").val( selected_aspect );
    if (selected_diameter && !urlvars[ 'radius' ]) $("#wheel_diameter").val( selected_diameter );
    
    debug("Type: "+ selected_type);
    debug("Make: "+ selected_make);
    debug("Year: "+ selected_year);
    debug("Model: "+ selected_model);
    debug("Version: "+ selected_version);
    debug("Tyre: "+ selected_tyre);
    debug("Type2: "+ selected_type2);
    debug("Width: "+ selected_width);
    debug("Aspect: "+ selected_aspect);
    debug("Diameter: "+ selected_diameter);
  }
 
  // Set tyre type    
  if (selected_type) $('#tyreselector_car [value="'+ selected_type +'"]').attr("checked", "checked");
  else if (cfg[ "default_tyre_type" ]) $("#tyreselector_car [name=tyre_type]:eq("+ (cfg[ 'default_tyre_type' ] - 1) +")").attr("checked", "checked");
  else $("#tyreselector_car [name=tyre_type]:last").attr("checked", "checked");
 
  if (selected_type2) $('#tyreselector_size [value="'+ selected_type2 +'"]').attr("checked", "checked");
  else if (cfg[ "default_tyre_type" ]) $("#tyreselector_size [name=tyre_type]:eq("+ (cfg[ 'default_tyre_type' ] - 1) +")").attr("checked", "checked");
  else $("#tyreselector_size [name=tyre_type]:last").attr("checked", "checked");
 
  // GET-parameters defined, submit size-form
  if (urlvars[ 'width' ] && urlvars[ 'height' ] && urlvars[ 'radius' ])
    $("#tyreselector_size").searchBySize();
    
  // Load makes
  getdata("make");
 
  if (selected_make) 
  {
    if (ie6) setTimeout( function () { $("#make").val( selected_make ) }, 1);
    else $("#make").val( selected_make );
    getdata("year");
  }
 
  if (selected_year) 
  {
    if (ie6) setTimeout( function () { $("#year").val( selected_year ) }, 1);
    else $("#year").val( selected_year );
    getdata("model");
  }
  
  if (selected_model) 
  {
    if (ie6) setTimeout( function () { $("#model").val( selected_model ) }, 1);
    else $("#model").val( selected_model );
    getdata("version");
  }
 
  if (selected_version) 
  {
    if (ie6) setTimeout( function () { $("#version").val( selected_version ) }, 1);
    else $("#version").val( selected_version );
    getdata("tyres");
  }
 
  if (selected_tyre)
  {
    if (ie6) setTimeout( function () { $("#tyre_size").val( selected_tyre ) }, 1);
    else $("#tyre_size").val( selected_tyre );
 
    if (!ie6 && !urlvars[ 'width' ] && !urlvars[ 'height' ] && !urlvars[ 'radius' ])
      $("#tyreselector_car").searchByCar();
  }
 
  // Load years  
  $("#make").change( function () {
    selected_make = $(this).val();
    selected_year = '';
    selected_model = '';
    selected_version = '';
    getdata("year");
  });
 
  // Load models
  $("#year").change( function () {
    selected_year = $(this).val();
    selected_model = '';
    selected_version = '';
    getdata("model");
  });
 
  // Load versions
  $("#model").change( function () {
    selected_model = $(this).val();
    selected_version = '';
    getdata("version");
  });
 
  // Load tyres
  $("#version").change( function () {
    selected_version = $(this).val();
    getdata("tyres");
  });
 
  // Tyre size selected
  $("#tyre_size").change( function () {
    selected_tyre = $(this).val();
    $("#tyreselector_car").searchByCar();
  });
 
  // Search by car -form
  $("#tyreselector_car").submit( function (e) {
    e.preventDefault();
    $(this).searchByCar();
  });
 
  // Search by size -form
  $("#tyreselector_size").submit( function (e) {
    e.preventDefault();
    $(this).searchBySize();
  });
 
});
 
 
$.fn.searchByCar = function () 
{
  if (!this.length) return;
 
  $(".ajax_loader").show(500);
 
  var tyretype = $(this).find("[name=tyre_type]:checked").val();
  var tyresize = '';
  if ($("#tyre_size").val())
    tyresize = $("#tyre_size").val().split("/");
  else return;
 
  var params = {
    "tyre_type": tyretype,
    "tyre_width": tyresize[0],
    "tyre_aspect": tyresize[1],
    "wheel_diameter": tyresize[3]
  };
 
  storeSelectedValues();
 
  $.get(cfg['result_url'], params, function (html) 
  {
    $(".ajax_loader").fadeOut(500);
    $("#tyreselector_results").html(html);
	$('html, body').animate({
		scrollTop : $("#prodlisting").offset().top - $('#ws-toolbar').outerHeight() - 20 + 'px'
	}, 400);
    //$(window).scrollTop($("#prodlisting").offset().top - $('#ws-toolbar').outerHeight() - 20);
  }, "html");
  
  if (ie6) pngFix();
}
 
 
$.fn.searchBySize = function () 
{
  if (!this.length) return;
  
  $(".ajax_loader").show(500);
 
  var tyretype = $(this).find("[name=tyre_type]:checked").val();
  var params = {
    "tyre_type": tyretype, 
    "tyre_width": $("#tyre_width").val(),
    "tyre_aspect": $("#tyre_aspect").val(),
    "wheel_diameter": $("#wheel_diameter").val()
  };
 
  storeSelectedValues();
 
  $.get(cfg['result_url'], params, function (html) 
  {
    $(".ajax_loader").fadeOut(500);
    $("#tyreselector_results").html(html);
  }, "html");
  
  if (ie6) pngFix();
}
 
 
function getdata (mode)
{
  var url = '';
  var params = {};
 
  if (mode == 'make')
  {
    url = '/tyreinfo_makes.xml';
  }
 
  if (mode == 'year')
  {
    url = '/tyreinfo_years.xml';
    params['make'] = selected_make;
  }
 
  if (mode == 'model')
  {
    url = '/tyreinfo_models.xml';
    params['make'] = selected_make;
    params['year'] = selected_year;
  }
 
  if (mode == 'version')
  {
    url = '/tyreinfo_versions.xml';
    params['make'] = selected_make;
    params['year'] = selected_year;
    params['model'] = selected_model;
  }
 
  if (mode == 'tyres')
  {
    url = '/tyreinfo_tyres.xml';
    params['tyres'] = selected_version;
  }
 
  $.ajax({
    "type": "POST",
    "url": url,
    "data": params,
    "async": false,
    "success": function (xml) 
    {
      if (mode == 'make')
      {
        $("#make").append('<option disabled="disabled">'+ cfg['text_select'] +'</option>');
        $(xml).find("make").each( function () {
          $("#make").append('<option value="'+ $(this).attr("id") +'">'+ $(this).text() +'</option>');
        });
       
        if (!selected_make) 
        {
          if (ie6) setTimeout( function () { $("#make option:first").attr("selected", "selected") }, 1);
          else $("#make option:first").attr("selected", "selected");
        }
 
        $("#year option").remove()
        $("#model option").remove();
        $("#version option").remove();
        $("#tyre_size option").remove();
      }
 
      if (mode == 'year')
      {
        $("#year option").remove();
 
        $("#year").append('<option disabled="disabled">'+ cfg['text_select'] +'</option>');
        $(xml).find("year").each( function () {
          $("#year").append('<option value="'+ $(this).text() +'">'+ $(this).text() +'</option>');
        });
        
        if (!selected_year)
        {
          if (ie6) setTimeout( function () { $("#year option:first").attr("selected", "selected") }, 1);
          else $("#year option:first").attr("selected", "selected");
        }
         
        $("#year").removeAttr("disabled");
 
        $("#model option").remove();
        $("#version option").remove();
        $("#tyre_size option").remove();
      }
      
      if (mode == 'model')
      {
        $("#model option").remove();
 
        $("#model").append('<option disabled="disabled">'+ cfg['text_select'] +'</option>');
        $(xml).find("model").each( function () {
          $("#model").append('<option value="'+ $(this).attr("id") +'">'+ $(this).text() +'</option>');
        });
        
        if (!selected_model)
        {
          if (ie6) setTimeout( function () { $("#model option:first").attr("selected", "selected") }, 1);
          else $("#model option:first").attr("selected", "selected");
        }
 
        $("#model").removeAttr("disabled");
 
        $("#version option").remove();
        $("#tyre_size option").remove();
      }
    
      if (mode == 'version')
      {
        $("#version option").remove();
 
        $("#version").append('<option disabled="disabled">'+ cfg['text_select'] +'</option>');
        
        $(xml).find("version").each( function () {
        	
        	var teksti = $(this).text();
        	var lisaa = 'kylla';
        	$("#version option").each(function(){
        		
        		var d = $(this).text();	
       			if (teksti == d) {	

        		lisaa = 'ei';

        		}
        	
        	});
        	
        	if (lisaa == 'kylla') {
        	$("#version").append('<option value="'+ $(this).attr("tyres") +'">'+ $(this).text() +'</option>');
        	}
        	else {
        	
        	}
        	
        	
        });
        
        
        
        if (!selected_version) 
        {
          if (ie6) setTimeout( function () { $("#version option:first").attr("selected", "selected") }, 1);
          else $("#version option:first").attr("selected", "selected");
        }
 
        $("#version").removeAttr("disabled");
 
        $("#tyre_size option").remove();
      }
    
      if (mode == 'tyres')
      {
        $("#tyre_size option").remove();
 
        $("#tyre_size").append('<option disabled="disabled">'+ cfg['text_select'] +'</option>');
 
        var tyresizes = {};
        $("tyre", xml).each( function () {
          var tmp = $(this).text().split("\\");
          tyresizes[ tmp[0] ]++;
          tyresizes[ tmp[1] ]++;
        });
        $.each(tyresizes, function (size, n) {
          var tmp = size.split("/");
          var sizestring = parseInt(tmp[0]) +"/"+ tmp[1] + tmp[2] + tmp[3];
          var sizestring2 = parseInt(tmp[0]) +"/"+ tmp[1] +"/"+ tmp[2] +"/"+ tmp[3];
          // $("#tyre_size").append('<option value="'+ size +'">'+ sizestring +'</option>');
          $("#tyre_size").append('<option value="'+ sizestring2 +'">'+ sizestring +'</option>');
        });
    
        if (!selected_tyre) 
        {
          if (ie6) setTimeout( function () { $("#tyre_size option:first").attr("selected", "selected") }, 1);
          else $("#tyre_size option:first").attr("selected", "selected");
        }
 
        $("#tyre_size").removeAttr("disabled");
 
        $("#tyreselector input:submit").removeAttr("disabled").css("opacity", 1.0);
      }
      else
      {
        $("#tyreselector_car input:submit").attr("disabled", "disabled").css("opacity", 0.5);
      }
    }
  });
}
 
 
/*
function selectValue (select, value)
{
  if (value)
  {
    if (ie6) setTimeout( function () { select.val( value ) }, 1);
    else select.val( value );
  }
}
*/
 
function storeSelectedValues ()
{
var make = ($("#make").attr('value')!=undefined ? $("#make").attr('value') : '');
var year = ($("#year").attr('value')!=undefined ? $("#year").attr('value') : '');
var model = ($("#model").attr('value')!=undefined ? $("#model").attr('value') : '');
var version = ($("#version").attr('value')!=undefined ? $("#version").attr('value') : '');
var tyre_size = ($("#tyre_size").attr('value')!=undefined ? $("#tyre_size").attr('value') : '');
 
  var selectedvalues = [
    $("#tyreselector_car").find("[name=tyre_type]:checked").val(),
    make,
    year,
    model,
    version,
    tyre_size,
    $("#tyreselector_size").find("[name=tyre_type]:checked").val(),
    $("#tyre_width").val(),
    $("#tyre_aspect").val(),
    $("#wheel_diameter").val() 
  ];
 
  $.cookie("tyreselector", selectedvalues.join("|"), {"path": "/"});
}
 
function debug (s)
{
  return;
  $("#debug").append(s +"<br />");
}
 
 
function getUrlVars ()
{
  var vars = [], hash;
  var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  for (var i = 0; i < hashes.length; i++)
  {
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
  }
  return vars;
}
 
 
function pngFix ()
{
  setTimeout( function () {
    $("#tyreselector_results").find("img[src$='.png'], input[src$='.png']").each( function () {
      $(this).css({
        "height": this.height,
        "width": this.width,
        "behavior": "url('/files/nokiantyres/js/iepngfix.htc')"
      });
    });
  }, 500);
}
