/*================== UI Dialog ===================*/
	$(function() {
//		$( "#dialog:ui-dialog" ).dialog( "destroy" );
		
		var name = $( "#name" ),
			email = $( "#email" ),
			comment = $( "#comment" ),
			current = $( "#current" ),
			allFields = $( [] ).add( name ).add( email ).add( comment ),
			tips = $( "#validate_tips" );

//		var repName = name.val();

		function updateTips( t ) {
			tips
				.text( t )
				.addClass( "ui-state-highlight" );
			setTimeout(function() {
				tips.removeClass( "ui-state-highlight", 1500 );
			}, 500 );
		}

		function checkLength( o, n, min, max ) {
			if ( o.val().length > max || o.val().length < min ) {
				o.addClass( "ui-state-error" );
				updateTips( "Длина " + n + " должна быть от " +
					min + " до " + max + " символов." );
				return false;
			} else {
				return true;
			}
		}

		function checkComment( o, min ) {
			if ( o.val().length < min ) {
				o.addClass( "ui-state-error" );
				updateTips( "Не заполнено поле Правильный вариант." );
				return false;
			} else {
				return true;
			}
		}

		function checkRegexp( o, regexp, n ) {
			if ( !( regexp.test( o.val() ) ) ) {
				o.addClass( "ui-state-error" );
				updateTips( n );
				return false;
			} else {
				return true;
			}
		}
		
		$( "#dialog-form" ).dialog({
			autoOpen: false,
			height: 350,
			width: 350,
			modal: true,
			buttons: {
				"Отправить": function() {
					var bValid = true;
					allFields.removeClass( "ui-state-error" );

					bValid = bValid && checkComment( comment, 1 );
					bValid = bValid && checkLength( name, "имени", 2, 64 );
					bValid = bValid && checkLength( email, "адреса", 6, 80 );
					bValid = bValid && checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Неверный адрес электронной почты." );

					if ( bValid ) {

						var dataString = 'name='+ name.val() + '&email=' + email.val() + '&comment=' + comment.val() + '&current=' + current.val() + '&pageurl=' + $(location).attr('href');
						$.ajax({
						  type: "POST", 
						  url: "/errrep.action",  
						  data: dataString,  
						  success: function() {  
							//display message back to user here  
						  }  
						}); 

						$( this ).dialog( "close" );
					}
				},
				"Отмена": function() {
					$( "#seltext" ).empty();
					$( "#validate_tips" ).empty();
					$( this ).dialog( "close" );
				}
			},
			close: function() {
				$( "#seltext" ).empty();
				$( "#validate_tips" ).empty();
//				allFields.val( "" ).removeClass( "ui-state-error" );
				allFields.removeClass( "ui-state-error" );
			}
		});

	});


/*================== Форма для ошибок ===================*/
function openFeedback()	{
	var sel = "";
	sel = window.GetSelected().toString();
	$( "#seltext" ).append( "<b>Выделенный текст, содержащий ошибку:</b><br />" );
	$( "#seltext" ).append(sel);
	$( "#current" ).val(sel);
	$( "#dialog-form" ).dialog( "open" );
}

function GetSelected() {
	var txt = "";
	if (window.getSelection) {
        txt = window.getSelection();
    } else if (document.getSelection) {
        txt = document.getSelection();
    } else if (document.selection) {
        txt = document.selection.createRange().text;
    }

	txt = txt.toString();
	txt = txt.replace(/\r/g, " ");
	txt = txt.replace(/\n/g, " ");

	var swapCodes = new Array(8211, 8212, 8216, 8217, 8220, 8221, 8226, 8230, 8482, 61558, 8226, 61607, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376, 402);	
	var swapRegex = "";
	$.each(swapCodes, function(key, value) { 
		var swapRegex = new RegExp("\\u" + value.toString(16),"g");
		txt = txt.replace(swapRegex, "");
	});
	
	return txt;
	return "";
}

window.onload=function(){

	document.onkeypress = function(event) {
		event = (event) ? event : window.event;
		if ((event.keyCode == 13 || event.keyCode == 10) && event.ctrlKey == true) {
			openFeedback();
		}
	}

};

