// Global variables for currency changer
var price_in_ruble = [];

var rub_c = 1.0;
var euro_c = 1.0;
var doll_c = 1.0;

// Add startsWith method for base string object
String.prototype.startsWith = function(str){
    return (this.indexOf(str) === 0);
}

$(document).ready(function()
{
    //$('body').c
//    msgce.init();


	$(".item").hover(function() { $(this).addClass("mark"); }, function() { $(this).removeClass("mark"); });
//	$(".top-panel .city, #show-city").toggle(function() { $(".cities").show();$(".sites-u").hide()}, function() { $(".cities").hide();$(".sites-u").hide();});
//	$(".top-panel .sites, #show-sites").toggle(function() {
//                $(".sites-u").show();$(".cities").hide();}, function() { $(".sites-u").hide();$(".cities").hide();});
	$(".reg").click(function(){ fast_auth(); return false; })
	$(".btn-reg .reg").click(function(){ fast_auth(); return false; })

    $('.top-panel .sites, #show-sites').click(function(){
        $('.cities, .favs').hide();
        var menu = $(".sites-u");
        if(menu.is(':visible')) {
            menu.hide();
        } else {
            menu.show();
        }
    });

    $('.top-panel .city, #show-city').click(function(){
        $(".sites-u, .favs").hide();
        var menu = $(".cities");
        if(menu.is(':visible')) {
            menu.hide();
        } else {
            menu.show();
        }
    });

	// Popup big image
	$("a.popup-img").live('click',function()
	{
		var url = $(this).attr("href");
		$('body').createOverlay("Изображение","<div><img style='max-width:700px' src='"+url+"' /></div><br />",700);
		return false;
	});


	// Show region selector on custom region selected
	$("#region").change(function() {
		if ($(this).val()=="add-subregion")
		{
			$.ajax({
                url:"/json/regions/",
                dataType: "json",
                success: function(r){
                	
                	var region_selector_element = $("<div id='region-selector'></div>");
                	// Create overlay
                	$('body').createOverlay("Выбор другого региона", region_selector_element);
                	//Create selector
                	$('#region-selector').createSelector(r.regions, true, false);

                	// Selector events

                	// Hide region selector
                	$(document).bind('close', function(){ $('body').trigger("close_overlay"); });
                	// Close region selector
                	$(document).bind('done', function(){ 
	                									var res = get_path($(this));
														var e = res[0].split("/");
														var v = res[1].split("/");
														e = e[e.length-1];
														v = v[v.length-1];
	                									
                	 									// $("#region-selector").remove();
                	 									$('body').trigger("close_overlay");
                	 									
                	 									// var selected_text = e.text();
                	 									// var selected_value = e.find("input").attr("id").substring(2);

                	 									$("#region option[value='add-subregion']").before("<option selected='selected' value='"+e+"'>"+v+"</option>")

                	 									});
                }
            });
		}
	});

	focus_blur($("#search"));

	$("#authorization").click(function()
	{
		$(".authorization").show();	
		focus_blur($("#email"),"Эл. почта");
		focus_blur($("#pass"),"Пароль");
		return false;
	});

	$("#email").change(function(){ $("#pass").val(""); });

	$(".authorization").find(".close").click( close_auth );
	$("#close_btn").click( close_auth );

	function close_auth() { $(".authorization").fadeOut('fast'); }


	// Form prepare before submit (remove defualt value)
	$(".search").submit(function()
	{
		$(this).find("input[default]").each(function()
		{
			if ($(this).val() == $(this).attr('default')) $(this).val("");
			
		});
		return true;
	});

	// Currency changer
	// Get currency price for $ and euro
	euro_c = parseFloat ($("#e-cur").text());
	doll_c = parseFloat ($("#d-cur").text());
	
	collect_prices();

	// Delegate function for click on currency
	$("#currency-changer li b").click(function()
	{
		// Active currency changer
		$("#currency-changer li").removeClass("active");
		var parent = $(this).parent("li")
		parent.addClass("active");
		
		recalc_currency();
		
	});
	
	$('#more').click(function() {
		$('#more-container').slideToggle('fast').mouseleave(function() {});
		return false;
    }).parent().find('#more-container').find('a').click(function() {
	    return true;
    });

    // Click on menu item with childs
    $('.showSubcat').click(function(){
        var e = $(this);
        e.closest('li').find('ul').slideToggle('fast');
        return false;
    });

    // Review form check
    $('#review-form').live('submit',function() {
        var e = 0;
        $(this).find('.check').each(function() {
            if ($(this).val() == '' || $(this).val() == 0 || $(this).attr('minlength') > $(this).val().length) {
                e++;
                $(this).addClass('d_-error');
            } else {
                $(this).removeClass('d_-error');
            }
        });

        $('.d_-error').focus(function() {
            $(this).removeClass('d_-error');
        });

        if (e) return false;
        $(this).submit();
    });

    // Close adverts on Company Site
    $('.close_advert').mouseenter(function(){
        var html = '<div id="rek" style="position: absolute;width: 100%;height: 60px;z-index: 50;background: red;color: #fff;text-align: center;padding-top:40px; font-size: 24px;opacity:0.85">' +
                'Убрать рекламу с Вашего сайта</div>'
        $(this).parent().css({borderColor: 'red', position: 'relative'}).prepend(html)
    }).mouseleave(function(){
        $(this).parent().css({borderColor: '', backgroundColor: ''});
        $('#rek').remove();
    });


    $('#toggleProd').click(function(){
        $(this).closest('ul').find('.hidden').slideToggle('fast')
    });


    $('.catree').find('.ttl').click(function(){
        $(this).parent().children('ul').children('.child').slideToggle('fast')
    });

    $('.catree').find('li').each(function(){
        if($(this).find('.cur').size()) $(this).show();
    });

    var novote = 0;
    $('.vote').click(function(){
//        if(novote) return false;
        var el = $(this);

        var cl = '';
        var url = $(this).attr('href');
        if($(this).hasClass('for')){
            cl = true;
        }
        if($(this).hasClass('against')) {
            cl = false;
        }
        $.ajax({
            url: url,
            async: true,
            error: function(){alert('Нарушена связь с сервером. Проверьте ваше соединение с сетью: возможно люди в масках уже отключили вас от интернета.')},
            success: function(data) {
//                novote = 1;
                switch(data){
                    case 'error': alert('Ошибка на сервере.');break;
                    case 'voted': alert('Вы уже голосовали, повторно голосовать не нужно.');break;
                    case 'ok': successVote();break;
                }
                function successVote() {
                    if (cl) { el.next().text(el.next().text()*1 + 1)
                    } else { el.next().text(el.next().text()*1 - 1) }
                }

            }
        });

        return false;
    });


});

// Recalculate all prices on page for new currency 
function recalc_currency()
{
	var cur = $("#currency-changer li.active").attr("id");
	$.each(price_in_ruble, function()
	{
		var price = 0;
		var sign = "";
		if (cur == "cur_r") { sign="р.";  price = (this[0] / rub_c).toFixed(2); }
		if (cur == "cur_e") { sign="€";  price = (this[0] / euro_c).toFixed(2); }
		if (cur == "cur_d") { sign="$";  price = (this[0] / doll_c).toFixed(2); }
		if (price % 1 == 0) price = (parseInt(price));

		price = ins1000Sep(price.toString());
		$(this[1]).text(price+" "+sign+" "+this[2]);
	});
}


// Collect all cost from page	
function collect_prices()
{
	price_in_ruble = [];

	$(".price").each (function()
	{
		var du = $(this).find("span.du").text();
		var s = $(this).text();
		price_in_ruble.push([parseFloat(s.replace(/ /g, '')), $(this), du]);	
	});
}

// Function for change standart text in input fields
function focus_blur(obj, init_text)
{
	var def_text = ""
	if (init_text == undefined) def_text = obj.attr("default");	
	else def_text = init_text;

	if (obj.val() == "") obj.val(def_text);

	obj.focus(function() 
				 { if (obj.val()==def_text) obj.val(""); }
			 ).blur(function()
				 { if (obj.val()=="") obj.val(def_text); }
			 );			
}

// UnFocus function
function un_focus(obj)
{
	var val = obj.val();
	var def = obj.attr("default");

	if (val==def) return "";
	else return val;
}

// Fast E-mail validation
function validate_email(email) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    return reg.test(email);
}

// Function for inserting the thousand-separators
function ins1000Sep(val){
	val = val.split(".");
	val[0] = val[0].split("").reverse().join("");
	val[0] = val[0].replace(/(\d{3})/g,"$1 ");
	val[0] = val[0].split("").reverse().join("");
	val[0] = val[0].indexOf(",")==0?val[0].substring(1):val[0];
	return val.join(".");
}

// Function for check and rebuild long strings
function check_length(in_str, length)
{
	var MAX_LENGTH = 0;
	if (length == undefined) MAX_LENGTH = 25; else MAX_LENGTH = length;
	
	// Check string length
	if (in_str.length<=MAX_LENGTH) return in_str;

	// Long string
	var out_str = in_str.substring(0,MAX_LENGTH-2)
	// Build string for fadeout effect
	out_str += "<i>"+in_str[MAX_LENGTH-2]+"<i>"+in_str[MAX_LENGTH-1]+"<i>"+in_str[MAX_LENGTH]+"</i></i></i>"
	return out_str;
}


// Validate user email in db
function simple_json_validate(email, callback, on_error_callback)
{
	$.ajax({
		url: '/ajax/check_email/?email='+email,
		type: 'GET',
		async: true,
		error: function(){ on_error_callback() },
		success: function(data){
			callback(data);
		}
	});
}
