var map = null;
var GMarkers = [];

function getUrl(url) {
	document.location.href=url;
}

function jumpTo (anchor) {
	window.location.hash = anchor;
}

function setPriceTab (tab) {
	var tab = tab.split('_');
	var group = tab[0];
	var price = tab[1];
	
	var alt = price == 0 ? 1 : 0;
	
	$('.gr'+group+'_'+price).css('display','');
	$('.gr'+group+'_'+alt).css('display','none');
	
	$('.tb'+group+'_'+price).addClass('active');
	$('.tb'+group+'_'+alt).removeClass('active');
}

function setCity(id, update_google) {
	if (update_google) {
		$.ajax({
			url: "/includes/plugins/map.php?task=getmap&cityid="+id,
			cache: false,
			success: function(html){
				var res = html.split('|');
				if (GBrowserIsCompatible()) {
    				map = new GMap2(document.getElementById("GoogleMap"));
					map.addControl(new GSmallMapControl());
					map.setCenter(new GLatLng(res[0],res[1]),parseInt(res[2]));
					loadMarkers(id);
				}
			}
		});
	}
	
	$('#placesList').html('<img src="/images/common/ajax-loader.gif" alt="" />');
	
	if (id > 0) {
		$.ajax({
			url:"/includes/plugins/map.php?task=getplaces&cityid="+id,
			cache:false,
			success:function(html) {
				$('#markersTable').css('display','block');
				map.checkResize();
				$('#placesList').html(html);
			}
		});
	} else {
		$('#markersTable').css('display','none');
	}
	
}

function createMarker(index, point, name, address) {
	var marker = new GMarker(point,{draggable: true});
	/*
	var html = '<div class="markerInfoWindow">aaaa</div>';
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
		lastIndex = index;
	});
	*/
	return marker;
}


function loadMarkers(cityId) {
	map.clearOverlays();
	GDownloadUrl("/includes/plugins/map.php?task=getmarkers&cityid="+cityId, function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
          	for (var i = 0; i < markers.length; i++) {
            	var name = markers[i].getAttribute("name");
            	var address = markers[i].getAttribute("address");
            	var id = markers[i].getAttribute("id");
            	var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
            	var marker = createMarker(i, point, name, address);
            	GMarkers[i] = [id,marker];
            	map.addOverlay(GMarkers[i][1]);
          	}
        });
    }

    function addToCampaign(cityid, id) {
    	$.ajax({
		url:"/includes/plugins/map.php?task=addcamp&cityid="+cityid+"&markerid="+id,
		cache:false,
		success:function(html) {
				setCity(cityid, false);
				updateAddedPoints();
			}
		});
    	
	}
	
	function removeFromCampaign(cityid, id) {
		$.ajax({
		url:"/includes/plugins/map.php?task=remcamp&cityid="+cityid+"&markerid="+id,
		cache:false,
		success:function(html) {
				setCity(cityid, false);
				updateAddedPoints();
			}
		});
		
    	
	}
	
	function setMapCenter(lat,lng) {
		if (map) {
			map.setCenter(new GLatLng(lat,lng));
			
		}
	}
	
	function updateAddedPoints() {
		var elm = $('#addedPoints');
		elm.html('<img src="/images/common/ajax-loader.gif" alt="" />');
		$.ajax({
		url:"/includes/plugins/map.php?task=getsummary",
		cache:false,
		success:function(html) {
			elm.html(html);
		}
	});
	}
	
	function setCurrency(c) {
		$.ajax({
			url:"/includes/plugins/map.php?task=set-currency&currency="+c,
			cache:false,
			success:function() {
				updateAddedPoints();
				var cityid = $('select[name=city]').val();
				
				setCity(cityid,false);
			}
		});
	}
	
	var slideId = 1;
var totalSlides = 4;

function nextSlide() {
	var n = slideId + 1;
	if (n > totalSlides) {
		n = totalSlides;
	}
	setSlide(n);
}

function prevSlide() {
	var p = slideId - 1;
	if (p <= 0) {
		p = 1;
	}
	setSlide(p);
}

function setSlide(id) {
	slideId = id;
	$('.slideDescription').css('display','none');
	$('.slide').css('display','none');
	$('#firstTabsContent li').removeClass('active');
	
	
	$('#descr'+slideId).css('display','block');
	$('#slide'+slideId).css('display','block');
	$('#link'+slideId).addClass('active');
	
	$('#prevItem').css('display','block');
	$('#nextItem').css('display','block');
	
	if (slideId <= 1) {
		$('#prevItem').css('display','none');	
	}
	
	if (slideId >= 4) {
		$('#nextItem').css('display','none');
	}
}

function toggleContacts() {
	var obj = $('#contacts');
	obj.toggle('fast');
}

function Submit (formid, handler) {
	var show_form = arguments[2];
	var reset_form = arguments[3];
	var form = $('#'+formid);
	var msgBoxId = formid+'Msg';
	var msgBox = $('#'+msgBoxId);
	var data = form.serialize()+'&task='+formid;
	msgBox.empty();
	var loading_msg = $('#'+formid+'LoadingMsg').attr('value');
	
	var method = $('#'+formid+' input[name=method]').attr('value');
	
	if (method == 'visibility') {
		$('#'+formid+' * :not(div#'+msgBoxId+')').css('visibility','hidden');
	} else {
		$('#'+formid+'Content').css('display','none');
	}
	
	$(msgBox).removeClass().addClass('loading').html(loading_msg+'&nbsp;');
	$('#'+formid+' label').removeClass();

	$.post (handler,data, processor);
	
	function processor (result) {
		var resdata = result.split('|');
		var status = resdata[0].toUpperCase();
		msgBox.html(resdata[1]);
		$(msgBox).removeClass().addClass('message');
		
		if (status == 'OK') {
			$(msgBox).addClass('ok');
			if (show_form>0) {
				if (method == 'visibility') {
					$('#'+formid+' *').css('visibility','visible');
				} else {
					$('#'+formid+'Content').css('display','block');
				}
			}
			if (reset_form) {
				document.getElementById(formid).reset();
			}
			if (resdata[2]) {
				eval (resdata[2]);	
			}
		} else if (status == 'ER') {
			if (method == 'visibility') {
				$('#'+formid+' *').css('visibility','visible');
			} else {
				$('#'+formid+'Content').css('display','block');
			}
			$(msgBox).addClass('error');
			var err_fields = resdata[2];
			if (err_fields) {	
				var err_fields_arr = err_fields.split(',');
			for (i=0;i<err_fields_arr.length;i++){
					$('#'+formid+' label[for="'+err_fields_arr[i]+'"]').addClass('errfield');
				}
			}
			if (resdata[3]) {
				eval (resdata[3]);	
			}
		}		
	}
}

function popUp(URL,w,h,scrollbars,resize) {
	var day = new Date();
	var id = day.getTime();
	var sc = scrollbars ? 1 : 0;
	var rs = resize ? 1 : 0;
	myleft=(screen.width)?(screen.width-w)/2:100;
	mytop=(screen.height)?(screen.height-h)/2:100;
	return eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars="+sc+",location=0,statusbar=0,menubar=0,resizable="+rs+",width="+w+",height="+h+",top="+mytop+",left="+myleft+"')");
}

var Base64 = {
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }
}

