/* $ID$ */
var dsHandled,userCountry,dsMode='region',dsTmpName = "",dsNameId = null;
function Dealer (a,b,c,d) {
  this.long=a;
  this.lat=b;
  this.distance=d;
  this.infoWindow=c;
}

var Url={encode:function(b){return escape(this._utf8_encode(b))},decode:function(b){return this._utf8_decode(unescape(b))},_utf8_encode:function(b){for(var b=b.replace(/\r\n/g,"\n"),d="",c=0;c<b.length;c++){var a=b.charCodeAt(c);a<128?d+=String.fromCharCode(a):(a>127&&a<2048?d+=String.fromCharCode(a>>6|192):(d+=String.fromCharCode(a>>12|224),d+=String.fromCharCode(a>>6&63|128)),d+=String.fromCharCode(a&63|128))}return d},_utf8_decode:function(b){for(var d="",c=0,a=c1=c2=0;c<b.length;)a=b.charCodeAt(c), a<128?(d+=String.fromCharCode(a),c++):a>191&&a<224?(c2=b.charCodeAt(c+1),d+=String.fromCharCode((a&31)<<6|c2&63),c+=2):(c2=b.charCodeAt(c+1),c3=b.charCodeAt(c+2),d+=String.fromCharCode((a&15)<<12|(c2&63)<<6|c3&63),c+=3);return d}};
			
function initialize() {
    if (GBrowserIsCompatible()) {
    	map = new GMap2(document.getElementById("map_canvas"));
    	map.enableScrollWheelZoom();
		map.setCenter(new GLatLng(48.63, 14.01), 5);
    	map.setUIToDefault();
    	setDSCountry();
    }
}

function hideHelps(){}

function dsSearch(mode) {
    var p = SWFAddress.getPath().split("/")[1], modes=['List','Map'];
    switch(p){
        case 'Name':doNameSearch(modes[mode]);break;
        case 'Nearby':doNearbySearch(modes[mode]);break;
        default:doRegionSearch(modes[mode]);
    }
}

function tStamp() {
    return  "/!" + new Date().getTime()
}

function doRegionSearch(mode) {
	var url='/Region/'+mode+'/' + $('#dsRegionCountrySelector').val() + '/'+ $('#dsRegionValue').val();
	SWFAddress.setValue(url + tStamp());
}

function doNearbySearch(mode) {
	var url='/Nearby/'+mode+'/' + $('#dsNearbyCountrySelector').val() + '/' + encodeURIComponent($('#dsNearbyValue').val()) + '/'+$('#dsNearbyRadius').val();
	SWFAddress.setValue(url + tStamp());
}

function doNameSearch(mode) {
	var url='/Name/'+mode+'/' + $('#dsNameCountrySelector').val() + '/' + encodeURIComponent($('#dsNameValue').val());
	SWFAddress.setValue(url + tStamp());
}

function setSelectedCountry(country) {
	$("#selectdsCountryValue").val($("#dsCountryValue").val());
}

function updateRegionList(value, target, selected) {
	if (!target)
		target = '#dsRegionValue';
	$(target).load('/index.php?eID=ds&action=getFormattedRegionSelector&type=' + jstype + '&iso=' + value, function(){findRegionByName(selected);});
}

function performSearch(pars, country) {
    var url = "index.php";
    pars+=getCategories();
    setSelectedCountry(country);
    $('#resultList').html('<div class="preload"></div>');
    
    jQuery.get(url, pars, function(data){
        $("#resultList").html(data);
        map.checkResize();
    });
}

function getCategories() {
    var v=[];
    $('.dsCat :input').each(function(){
        var b=$(this);
        if(b.val())
            v.push(b.attr('id').replace('ds','').toLowerCase() + "=" + b.val());
    });
    return '&range='+encodeURIComponent(v.join(','));
}

function performNameSearch(country, value) {
	var pars = "eID=ds&action=getFormattedNameResults&country="+country+"&type="+jstype;
    
    if (value) {
        pars+= "&name="+value;
    }
    performSearch(pars);
}

function performRegionSearch(country, region) {    
	var pars = "eID=ds&action=getFormattedRegionResults&country="+country+"&type="+jstype;
    
    if (region) {
        pars+= "&region="+encodeURIComponent(region);
    }
    performSearch(pars);
}


function performPointSearch(country, value, radius) {
	var pars = "eID=ds&action=findByPoint&country="+country+"&value="+ window.encodeURIComponent(value)+"&country="+country+"&radius="+radius+"&type="+jstype;
    performSearch(pars);
}

function performUpdateNameHelp(s){}
function updateNameHelp(s){}
function updateZip2Help(s){}

function findRegionByName(n) {
	$('#dsRegionValue').val(n).trigger('Update');
}

function handleChange(event) {
    if (window.dsHandled != null && window.dsHandled)
		return;
    var index, rel, paths = event.path.split("/");
    if (!paths[1])
    	paths[1] = 'Region';
    
	$('#resultMap').toggle(paths[2]=='Map');
    $('#resultList').toggle(paths[2]=='List');
    
    map.checkResize();
    if (paths[2]) {
    	switch(paths[1]) {
    		case 'Name':
    			$('#dsNameValue').val(paths[4]);
  				if(paths[2]!="Form")performNameSearch(paths[3], paths[4]);
    			break;
    		case 'Nearby':
    			$('#dsNearbyValue').val(paths[4]);
                if(paths[2]!="Form")performPointSearch(paths[3], paths[4], paths[5]);
                break;
    		default:
    			$('#dsRegionValue').val(paths[4]);
                if(paths[2]!="Form")performRegionSearch(paths[3], paths[4]);
    	}    
	  	var b = oldButton,a = $("#btn" + paths[2]).children()[0];
	    if(a != null) {
	      a.onmouseoutOld = a.onmouseout, a.onmouseoverOld = a.onmouseover, a.onmouseout = null, a.onmouseover = null, active(a.id)
	    }
	    oldButton = a
	  }
	  else {
	    oldButton = null
	  }
	  if(b != null && b != a) {
	    b.onmouseout = b.onmouseoutOld, b.onmouseover = b.onmouseoverOld, out(b.id)
	  }
    	
    $('.dsPanel').hide().filter('#dsPanel'+paths[1]).show(); 
    $('.dsLink').removeClass('active').filter('#dsLink'+paths[1]).addClass('active');    
}

function setCountries(iso,s) {
	$('#dsRegionCountrySelector,#dsNameCountrySelector,#dsNearbyCountrySelector').val(iso).trigger('update');	
	updateRegionList(iso,'',s);
}

function syncCountries(sel) {
	$('#dsRegionCountrySelector,#dsNameCountrySelector,#dsNearbyCountrySelector').val($(sel).val()).trigger('update');
	updateRegionList($(sel).val());
}

var oldButton,oldTextLink;
SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);

function geoHandler(l){}
function setDSCountry() {
    jQuery.getJSON("index.php?eID=dscs&type="+jstype,setDSCountryCallBack);
}

function setDSCountryCallBack(iso) {
	$("#dsNearbyCountrySelector").val(iso);	
	updateRegionList(iso);
}

function populateMapWith(dealers,mode) {
	map.clearOverlays();
	
	var points = [],marker;
	$.each(dealers, function(i, dealer) {
		var point = new GLatLng(dealer.lat, dealer.long);
		points.push(point);
		if (mode == "nearby") {
			if (dealer.distance == 0) {
			    marker = createPin(point);
            } else {
                marker = createLabeledMarker(point, dealer.infoWindow, dealer.distance);
            }            
		} else {
			marker = createMarker(point, dealer.infoWindow);
		}
		map.addOverlay(marker);
	});
	
	
	if (mode == "nearby") {
		fitMapNearbySearch(points);
	} else {
		fitMap(points);
	}
}

function removeDealers() {
	if(map)map.clearOverlays();
}

function resetSearch() {
	SWFAddress.setValue('');	
}

$('.dsResult .menu a').live('click', function(){
	var i = $(this).attr('rel');
	$('.dsResult .menu a').removeClass('active').filter('[rel="'+i+'"]').addClass('active');
	$('.dsResult .dsPage').removeClass('active').filter('[data-id="'+i+'"]').addClass('active');
})


$('.dsPage li, .dsPage div.img_tip').live('mouseover mouseout',function(e){
	if(e.type == 'mouseover'){
		$(this).addClass('hover');
	}else{
		$(this).removeClass('hover');
	}
	
	
});

