;(function($) {
	$.fn.hideOnOuterClick = function() {
		return this.each(function() {
			var $popup = $(this);
			
			var hide = function() {
				//console.log('hide, unbound');
				$popup.hide();
				$(document).unbind('click', blur);
			};
			
			var blur = function(e) {
				//console.log('blur');
				var trgt = e.target;
        		var curElements = $popup.find('*').andSelf();
        		if ($.inArray(trgt, curElements) < 0) {
            		hide();
        		}	
			};
			
			if (!$(this).is(':visible')) {
				//console.log('visible, unbound');
				$(document).unbind('click', blur);
				return;
			}
			//console.log('bound');
			$(document).bind('click', blur);
		});
	};
})(jQuery);

function fadersResize(){
    var height = $('#main').height();
   
    $('#faders').height(height).width($('#main').width());
};

function popup_shows()
{
    $('body').prepend('<div id="faders"></div>');
    fadersResize();
    $('#faders').css({
        opacity: '0'
    }).animate({
        opacity: '0.8'
    }, 100).attr('title', 'Закрыть').click(function(){
        popup_hides();
    });
    $(window).bind('resize', fadersResize);
}

function popup_hides()
{
    $('#faders').animate({
        opacity: '0'
    }, 100, function(){
        $(this).remove();
        $('#callback').hide();
    });
	
    
    $(window).unbind('resize', fadersResize);
    return false;
}

$(document).ready(function(){

	$('.callback-trigger').click(function(){
		popup_shows();
		$('#callback').show().css({top: (self.pageOffsetY || document.documentElement.scrollTop) + 100});
		
		if ($('body').hasClass('apart')) {
			//$('#f_info').html();
			var text = $('#popup .apartment_title').html() + '\n\n';
						
			$('#popup .popup_content table td').each(function(){
				
				text +=	str_replace('<span>2</span>', '.кв.', $(this).html());
				var index = $('#popup .popup_content table tr td').index($(this));
				if (index%2 != 0) text += '\n';
				
			});
			$('#f_info').val(text);
			
		}
		return false;
	});
	
	/*$('.callback').click(function(){
		popup_shows();
		$('#callback').show();
		$('#callback').css({
			top: (self.pageOffsetY || document.documentElement.scrollTop) +
				Math.ceil(($(window).height() - $('#callback').height()) / 2) 
		});
		return false;
	});*/

    $('#callback .close').click(function(){
	   popup_hides();
	   return false;
	});

	$('input[type=text], textarea', '#callback').attr('autocomplete', 'off').val('');
	$('.select .current', '#callback').html('&nbsp;');
		
	$('.trigger a, .current', '#callback').click(function(){
		var $select = $(this).parents('.select');
		$('ul', $select).toggle().hideOnOuterClick();
		$('.select').not($select).find('ul').hide();
		return false;	
	});
	$('.select li', '#callback').hover(function(){
		$(this).addClass('hover');
	}, function(){
		$(this).removeClass('hover');
	});
	
	$('.select li', '#callback').click(function(){
		var $select = $(this).parents('.select');
		$('.current', $select).html($(this).html());
		$select.prev('input').val($(this).html());
		$('ul', $select).hide();
		return false;
	});
	$('form', '#callback').submit(function(){
		if (!$('#f_name', '#callback').val()) {
			alert('Укажите имя');
			$('#f_name', '#callback').focus();
			return false;
		}
		if (!$('#f_phone', '#callback').val().replace(' ', '') ||
			!/^[-0-9()+ ]+$/.test($('#f_phone', '#callback').val())) {
			alert('Укажите телефон');
			$('#f_phone', '#callback').focus();
			return false;
		}
		if (!$('#f_from', '#callback').val()) {
			alert('Укажите время звонка');
			$('#f_from', '#callback').next('.select').find('ul').show();
			return false;
		}
		if (!$('#f_to', '#callback').val()) {
			alert('Укажите время звонка');
			$('#f_to', '#callback').next('.select').find('ul').show();
			return false;
		}

		$.post('/callback.php', $(this).serialize(), function(reply){
				if (reply == -1) {
					alert('Неверный код подтверждения');

				} else {
					
					$('form', '#callback').hide(250, function(){
						if (reply == 1) {
							$(this).after('<p>Спасибо, ваш запрос принят!</p>');
							
							
							
							if (strstr(window.location, '/apartamenty/') || strstr(window.location, '/apartments/index.html') || strstr(window.location, '/payment/') || strstr(window.location, '/safety/') || strstr(window.location, '/use/') || strstr(window.location, '/parking/'))
							{
								_gaq.push(['_trackPageview', '/callback_apartment/']);
								
							}
							else _gaq.push(['_trackPageview', '/callback/']);
							//var str = str_replace('apartamenty', '123', window.location)
						
						}
						else
							$(this).after('<p>Произошла ошибка, попробуйте повторить ваш&nbsp;запрос позже.</p>');
						$('input[type=text], textarea', '#callback').val('');
						$('.select .current', '#callback').html('&nbsp;');
					});
				}
		});		
	
		return false;
	});

});
function strstr (haystack, needle, bool) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr('Kevin van Zonneveld', 'van');
    // *     returns 1: 'van Zonneveld'
    // *     example 2: strstr('Kevin van Zonneveld', 'van', true);
    // *     returns 2: 'Kevin '
    // *     example 3: strstr('name@example.com', '@');
    // *     returns 3: '@example.com'
    // *     example 4: strstr('name@example.com', '@', true);
    // *     returns 4: 'name'

    var pos = 0;
    
    haystack += '';
    pos = haystack.indexOf( needle );
    if (pos == -1) {
        return false;
    } else{
        if (bool){
            return haystack.substr( 0, pos );
        } else{
            return haystack.slice( pos );
        }
    }
}
function str_replace (search, replace, subject, count) {
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
 
    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {
            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}
        }
    }
    return sa ? s : s[0];
}
