var cleanLogin = function(){
	return true;
}
	
function processCaptcha(key,url,uid){
	if (!uid){
		return false;
	}
	var _captcha_img = $("#captcha_img"+uid);
	var _captcha_key = $("#captcha_key"+uid);
	if (_captcha_img.length < 1 || _captcha_key.length < 1){
		return false;
	}
	if ($(_captcha_img).is("img")){
		$(_captcha_img).attr("src",url);
	}else{
		$(_captcha_img).replaceWith('<img id="captcha_img'+uid+'" src="'+url+'" alt="Введите эти цифры" widht="200px" height="60px" />');
	}
	$(_captcha_key).val(key);
	$("#captcha_value"+uid).val("");
}

var _make_informers;

$(document).ready(function(){

	if (typeof($.fn.placeholder) == "function"){
		$("input,textarea").placeholder();
	}

	var _errors = {
		'INVALID_USER_NAME':'name_error',
		'INVALID_USER_EMAIL':'email_error',
		'INVALID_MESSAGE':'text_error',
		'INVALID_MESSAGE_LENGTH':'length_error',
		'INVALID_CAPTCHA_VALUE':'captcha_error'
	};	
	
	var _captcha_post;
	var imgIndicator = new Object();
	var imgCount = 6;
	var imgRepeat = 2;
	var counts = 0;
	var img_need = {};
	for (var j = 0; j < imgRepeat; j++ ){
	    for (var i = 1; i <= imgCount; i++ ){
	        imgIndicator['img' + (i + j * imgCount)] = new Image(16,16);
	        imgIndicator['img' + (i + j * imgCount)].src = 'http://passport.yandex.ru/i/next' + i + '.gif';
	    }
	}
	imgIndicator['img' + (imgRepeat * imgCount + 1)] = new Image(16,16);
	imgIndicator['img' + (imgRepeat * imgCount + 1)].src = 'http://passport.yandex.ru/i/next1.gif';
	var _rotate_timeout;
	
	function rotate(_uid){
		if (img_need[_uid] && document.images['img_reloading']){
			counts++;
			document.images['img_reloading'].src = imgIndicator['img' + ((counts % imgCount)+1)].src;
			window.clearTimeout(_rotate_timeout);
			_rotate_timeout = window.setTimeout(function(){rotate(_uid)},70);
		}
	}

    function _getCaptcha(_uid){
		if (img_need[_uid]){
			return false;
		}
		img_need[_uid] = true;
		rotate(_uid);
		var rnd = Math.floor ( Math.random ( 777) * 777 );
		_captcha_post  = $.ajax({
			url:"/feedback/",
			type:"POST",
			data:{'action':'get_captcha','uid':_uid,'rnd':rnd},
			success:function(msg){
				if (img_need[_uid]){
					img_need[_uid] = false;
					$("head").append('<script type="text/javascript">'+msg+'</script>');
				}
			},
			error:function(){
				if (img_need[_uid]){
					window.setTimeout(function(){	
						img_need[_uid] = false;
						_getCaptcha(_uid);
					},300);
				}
			}
		});
    }
	
	function _make_gallery(){
		$("div.b-photo-informer").each(function(){
			var _block = this;
			$("table.pager a, td.listing a",this).each(function(){
				$(this).unbind('click').click(function(){
					var _href = $(this).attr('href');
					var _uid = _href.match(/uid=(\d*)/i)[1];
					var _page = _href.match(/page=(\d*)/i)[1];
					var _return = true;
					$(_block).height($(_block).height());
					$.ajax({
						url:"/inc/fotki/"+_uid+".html",
						data:{'uid':_uid,'page':_page},
						async:false,
						success:function(msg){
							var _html = $(msg).html();
							$(_block).html(_html);
							window.setTimeout(function(){
								$(_block).css({'height':'auto'});
								_make_gallery();
							},50);
							_return = false;
						}
					});
					return _return;
					
				});
			});
		});
	}
	
	function _make_feedback(){
		var _feedbacks = $("div.b-feedback[id]");
		if (_feedbacks.length < 1){
			return;
		}	
	
		$("div.b-feedback[id]").each(function(){
			var _uid = $(this).attr("id")||"";
			if (typeof($(this).attributes) == "function"){
				_uid = $(this).attributes("uid");
			}else{
				_uid = _uid.replace("e_","")||"";
			}
			if (_uid){
				$("#captcha_rotate"+_uid).unbind('click').click(function(){
					_getCaptcha(_uid);
					return false;
				});
				$("#feedback_form"+_uid).unbind('submit').submit(function(){
	                var _this = this;
	                $("input,textarea",_this).attr("disabled","disabled");
					$(_this).attr("action","/feedback/");
					$("#captcha_error"+_uid+",#captcha_success"+_uid+",#internal_error"+_uid+",#name_error"+_uid+",#text_error"+_uid+",#email_error"+_uid).hide();
					var params = {};
					$("input",_this).each(function(){
						var name = $(this).attr("name");
						var val = $(this).val();
						
						params[name]=val;
					});
					params["text"]=$("#b-feedback__input_comment").val()||"";
					params["action"]="send";
					params["id"]=_uid;
					
					$.ajax({
						url:"/feedback/",
						data:params,
						type:"POST",
						dataType:"xml",
						success:function(msg){
							msg = $("response",msg);
							if (!$(msg).is("response")){
								$("#internal_error"+_uid).show();
							}else{
								if ($(msg).attr("status") == "SUCCESS" ){
									$("#captcha_success"+_uid).show();
								}else{
									$("errors",msg).each(function(){
										var _err = $(this).text();
										if (_errors[_err]){
											$("#"+_errors[_err]+_uid).show();
										}else{
											$("#internal_error"+_uid).show();
										}
									});
								}
							}
							
	                        $("input,textarea",_this).removeAttr("disabled");
							_getCaptcha(_uid);
						},
						error:function(){
							$("#internal_error"+_uid).show();
	                        $("input,textarea",_this).removeAttr("disabled");
							_getCaptcha(_uid);
						}
					});
					
					return false;
				});

	            _getCaptcha(_uid);
			}
		});
	}
	
	function _make_comment(){
		var host = 'http://narod2.yandex.ru';
		var pass = '//pass.yandex.ru/services?callback=?';
        if($(location).attr('host').indexOf('f.narod.yandex.ru') > -1 || $(location).attr('host').indexOf('narod2-test.yandex.ru') > -1){
            host = $(location).attr('host');
            host = 'http://'+host.replace(/.*\.sites\.(.*)/i,"$1");
        }
	    var _page = 0;
	    var auth_login = '';
	    
	    $("div.b-comments[id]").not("[yet]").each(function(){
		    function _check_login(){
				if (auth_login){
			        $(".comments-login a",comments_div).html("<b>"+auth_login.substr(0,1)+"</b>"+auth_login.substr(1));
		    		$(".comments-captcha",comments_div).hide();
			        $(".comments-name",comments_div).val(auth_login).hide().trigger('blur');
		    	}else{
		    		$(".comments-captcha",comments_div).show();
		    		$(".comments-login",comments_div).hide();
		    	}
		    	if (auth_login.replace(/\./g,"-") != site_login){
		    		$(".b-comments-comments .b-comment__delete",comments_div).remove();
		    	}
		    }
		    
			function _check_captcha(){
				return $(".comments-captcha",comments_div).is(":visible");
			}
		
		    function get_login(callback){
		        $.getJSON(
			    pass,
			    {login: 'yes','rnd':Math.floor(Math.random(777)*777)},
			    function(data){
			    	auth_login = data.login || "";
			    	
			    	_check_login();
			    	
			    	if (callback){
				    	callback();
				    }
			    });
		    }
		
		    function delete_comment(uid,id){
		    	var params = {};
		    	params["action"] = "delete";
		    	params["id"] = uid + "-1";
		    	params["comment"] = id;
		    	params["out"] = 'json';
			    $.ajax({
				    url: host + "/narod/comment/?callback=?",
				    type: "GET",
				    dataType: "json",
					data: params,
					error: function(x,msg) {
					    alert('delete error '+ x.status + msg);
					},
					success: function(data){
					    if( data.status == 'ERROR' ){
					        alert('ошибка: ' + data.msg);
					    }
					    show_comments(uid,_page);
					}
				});
		    }
	
		    function show_comments(uid, page) { 
				per_page = parseInt($.cookie('narod_comments_count'))||3;
		        function format_time(date) {
		            return date.replace(/T.+$/,'');
		        }    
		
		        function make_del_link( id ) {
		            if( !auth_login ) { return ''; } 
		            if( auth_login.replace(/\./g,"-") !== site_login ) { return ''; } 
		            return '<div class="comments__delete_link"><a href="#" id="' + id + '">удалить</a></div>';
		        }
		
		        function pager( uid, page, remind ) {
		        	var _pager = $(".comments-pager",comments_div);
		        	if (_pager.length < 1){
		        		return false;
		        	}
		        	
		        	var count = _pager[0].onclick();
		        	if (!count && !count.count){
		        		return false;
		        	}
		        	var _count = parseInt(count.count) / per_page;
		        	count = Math.floor(_count);
		        	
		        	if (_count > count){
		        		count++;
		        	}
		        	
		        	var _pager_html = "";
		        	function make_link(count){
		        		if (count == per_page){
		        			return "&nbsp;<span><strong>"+count+"</strong></span>";
		        		}
		        		return "<a class='link b-pseudo-link' href='#' onclick='return {page:0,per:"+count+"}'>"+count+"</a>";
		        	}
		        	if ((page+1) < count){
		        		_pager_html = "<a class='link b-pseudo-link' href='#' onclick='return {page:"+(page+1)+"}'>Загрузить ещё</a>";
		        		//_pager_html+= make_link(3)+","+make_link(5)+"&nbsp;или"+make_link(10)+"&nbsp;сообщений."
		        		_pager.append(_pager_html);
		        	}
		        	
					$(".link",_pager).unbind('click').click(function(){
						var _page = this.onclick()||0;
						if (!_page && !_page.page){
							
							return false;
						}
						page = parseInt(_page.page);
						_pager.remove();
						if (_page.per){
							per_page = parseInt(_page.per)||3;
							$.cookie('narod_comments_count',per_page);
						}
						show_comments(uid,page);
						return false;
					});
		        }
		        
		    	var params = {};
		    	params["action"] = "get";
		    	params["id"] = uid + "-1";
		    	params["order"] = "0";
		    	params["per_page"] = per_page;
		    	params["page"] = page;
		    	params["out"] = "html";
		
		        $.ajax({
			        url: "/narod/comment/", 
				    data: params,
				    type: "POST",
		    		dataType: "html",
				    success: function(msg) {
	
				    	if (page > 0 && !msg){
				    		show_comments(uid,page-1);
				    		return false;
				    	}
						
						if (page < 1){
				        	$("div.b-comments-comments").html(msg);
						}else{
				        	$("div.b-comments-comments").append(msg);
						}
						
						_check_login();
				        
				        $(".comment-del-link",comments_div).click(function(){
				        	var _id = $(this).parents("div.b-comments__comment").attr("id");
				        	delete_comment(uid,_id);
				        	return false;
				        });
	
						pager(uid, page);
					}			
				});
			};    
		
			$(this).attr("yet","yet");
		    var comments_div = $(this);
		    var per_page = parseInt($.cookie('narod_comments_count'))||3;
		    if (!comments_div){
		    	return;
		    }
		    var uid = $("input[name=comments_uid]",comments_div).val()||0;
	    	if( !uid ) {
	    		return;
	    	}
	
			$(".captcha_rotate",comments_div).unbind('click').click(function(){
				if (_check_captcha()){
					_getCaptcha(uid);
				}
				return false;
			});
		
		    var site_login = $("input[name=comments_login]",comments_div).val();
			
			var is_posting = false;
			var enabler;
			
			function submit_disable(){
				is_posting = true;
		        enabler = window.setTimeout(submit_enable,3000);
				$("input[type=submit]",comments_div).attr("disabled","disabled");
			}
			
			function submit_enable(){
				if (enabler){
					window.clearTimeout(enabler);
				}
				is_posting = false;
				$("input[type=submit]",comments_div).removeAttr("disabled");
			}
			
			/* отправка комментария */
			if ($.browser && $.browser.msie){
				$("textarea",comments_div).width($(".comments_form",comments_div).width());
			}
		    $(".comments_form",comments_div).unbind('submit').submit(function(){
		    	if (is_posting){
		    		return false;
		    	}
		    	
		    	$(".b-feedback__errore",comments_div).stop().hide();
		    	
		    	// берем параметры коммента
		    	var params = {};
		    	$("input",this).each(function(){
					var name = $(this).attr("name");
					
					var val = $(this).is(".placeholder") ? "" : $(this).val()||"";
					params[name]=val;
				});
				var comment_body = $(".comments-body",comments_div);
				var text = comment_body.is(".placeholder") ? "" : $(".comments-body",comments_div).val()||"";
				
				//если текст коммента пустой (или состоит из одних пробелов\переносов строк) - пишем ошибку
		        if (!(text.replace(/\n|\s/g,''))){
		        	is_posting = false;
		        	$("."+_errors["INVALID_MESSAGE"],comments_div).show();
		        	return false;
		        }

		        function success(){
					submit_enable();
					$(".captcha_success",comments_div).show().delay(1000).fadeOut('slow');
					$(".comments_form",comments_div)[0].reset();
			        $("input[type=text],textarea",comments_div).trigger('blur');
			   		show_comments(uid,0);
		        }
		        
		    	// блокируем кнопку отправки
		    	submit_disable();
		    	
		    	params["action"] = "add";
		    	params["id"] = uid + "-1";
		    	params["body"] = text||"";
		        params["out"] = "json";
		        var get_test = JSON.stringify(params).length||text.length+200;
		        
		        // если длинный коммент - делаем POST через iframe
		        if (get_test > 600){
		        	params["out"] = "xml";
					var rnd = Math.floor ( Math.random ( 777) * 777 );
					var inputs = "";
					for (var key in params){
						if (key != "body"){
							inputs+="<input type='text' name='"+key+"' value='"+params[key]+"' />";
						}else{
							inputs+="<textarea name='body'>"+params[key]+"</textarea>";
						}
					}
					$(comments_div).append("<iframe id='iframe"+rnd+"' name='iframe"+rnd+"' src='#' style='display:none;' class='g-hidden'></iframe><form style='display:none;' class='g-hidden' id='form"+rnd+"' method='POST' action='"+host+"/narod/comment/' target='iframe"+rnd+"'>"+inputs+"</form>");  
			        
			        // ифрейм загрузился - считаем, что коммент отправлен
			        $("#iframe"+rnd).load(function(){
			        	success();
			        	$("#form"+rnd).remove();
			        	$(this).remove();
			        });
			        $("#form"+rnd).submit();
		        }else{
		        // иначе - JSONP GET
				    $.ajax({
					    url: host+'/narod/comment/?callback=?',
					    type: "GET",
					    dataType: "json",
						data: params,
						success: function(msg) {
							submit_enable();
							if (msg){
							    if (msg.status == "SUCCESS"){
									success();
								}else{
									$(msg.errors).each(function(i,val){
										var _err = val;
										if (_errors[_err]){
											$("."+_errors[_err],comments_div).show();
										}else{
											$(".internal_error",comments_div).show();
										}
									});
								}
							}
						    if (_check_captcha()){
								_getCaptcha(uid);
							}
						},
						error: function(){
							submit_enable();
							$(".internal_error",comments_div).show();
						}
						
					});
				}
						        
		        
		        return false;
		    });
		    
		    get_login(function(){
				show_comments(uid,0);
		    });
		    
		    if (_check_captcha()){
				_getCaptcha(uid);
			}
		});
	                                    
	}
	_make_informers = function(){
		_make_gallery();
		_make_feedback();
		_make_comment();
	}
	_make_informers();
});

var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());
