// ////////////////// common init function ///////////////////////////////////
init = function() {
	var doc = $(document);
	// ESC handler
	doc.keydown(function(event) {
		if (event == null) { // ie
				keycode = window.event.keyCode;
			} else { // mozilla
				keycode = event.which;
			}
			if (keycode == 27) { // escape, close box, esc
				// unlock
				unlock();
			}
		});
	
	// windowid
	var windowid = $('#windowid');
	if(windowid != undefined && windowid.html() != null) {
		$('#downloadbuttonid').mousemove(function(event){
			// add marker
			if(windowid.attr("marked") == undefined) {
				// img
				windowid.append($("<img>").attr("src", "/marker.png"));
				windowid.attr("marked", "true"); 
			}
			windowid.css("left", (event.pageX - 2) + 'px');
			windowid.css("top", (event.pageY - 2) + 'px');
		});
	}
};

// ////////////////////email checker /////////////////////////////////////////
isEmail = function(string) {
	if (string == undefined)
		return false;
	if (string
			.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	else
		return false;
};

// /////////////////////// window //////////////////////////////

reload = function(suffix) {
	if (suffix == undefined) {
		window.location = '';
	} else {
		window.location = suffix;
	}
};

lockobject = function(object) {
	// window size
	var v_width = '0%';
	var v_top = (((($(window).height() - object.height()) / 3) * 100) / $(
			window).height()) + '%';
	var v_left = (((($(window).width() - object.width()) / 2) * 100) / $(window)
			.width()) + '%';
	$.blockUI( {
		message : object,
		css : {
			border : 'none',
			cursor : 'default',
			width : v_width,
			top : v_top,
			left : v_left,
			color : '#555555'
		},
		overlayCSS : {
			backgroundColor : '#fff',
			opacity : 0.3
		}
	});
};

unlock = function() {
	$.unblockUI();	
};

// ////////////////////// bookmarks /////////////////////////////
bookmarks = function() {
	// add a "rel" attrib if Opera 7+
	if(window.opera) {
		if ($("#bookmark").attr("rel") != ""){ // don't overwrite the rel attrib if already set
			$("#bookmark").attr("rel", "sidebar");
		}
	}	
	$("#bookmark").click(function(event){
		event.preventDefault(); // prevent the anchor tag from sending the user off to the link
		var url = this.href;
		var title = this.title;	
		if (window.sidebar) { // Mozilla Firefox Bookmark
			window.sidebar.addPanel(title, url,"");
		} else if( window.external ) { // IE Favorite
			window.external.AddFavorite( url, title);
		} else if(window.opera) { // Opera 7+
			return false; // do nothing - the rel="sidebar" should do the trick
		} else { // for Safari, Konq etc - browsers who do not support bookmarking scripts (that i could find anyway)
			 alert('К сожалению, Ваш браузер не поддерживает закладки, пожалуйста, поставьте закладку вручную.');
		}	
	});
};

// /////////////////////// searching ////////////////////////////////////////
search = function(page) {
	// check form and run searching
	var value = jQuery.trim($("#search").attr('value'));
	if(value === "") {
		return false;
	} else {
		// set page if defined
		var form = $("#searchform");
		if(page != undefined) {
			form.attr('action', '/search/' + page);
		}
		// submit
		form.submit();
		return true;
	}
};

// //////////////////////////// dialogs ///////////////////////////
// shows error image
showErrorImage = function(id, title) {
	var el = $(id);
	// set title
	el.attr('title', title);
	// set visible
	el.show();
};

// rate comment
showRateWindow = function(resourceId) {
	var div = $("#hiddenDiv").empty();
	// title
	var frameDiv = $("<div>").addClass("commentWindowIn").append(frameDiv);

	// title
	frameDiv.append($("<div>").addClass("windowTitle").text("Оценить и комментировать"));

	// title
	frameDiv.append($("<div>").addClass("inputtag").text("Оценка"));
	// radio
	var radioDiv = $("<div>").addClass("rateitBox");

	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('checked', 'checked').attr('value', '0')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit0.gif').attr('title', 'Нет оценки'));
	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('value', '1')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit1.gif').attr('title', 'Так себе'));
	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('value', '2')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit2.gif').attr('title', 'Не очень'));
	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('value', '3')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit3.gif').attr('title', 'Неплохо'));
	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('value', '4')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit4.gif').attr('title', 'Пригодилось'));
	radioDiv.append($("<input>").attr('name', 'rating').attr('type', 'radio').attr('value', '5')).append($("<img>").addClass("ratestar").attr('src', '/images/rating/rateit5.gif').attr('title', 'Отлично'));
		
	frameDiv.append(radioDiv);
	frameDiv.append($("<br />"));
	
	// name
	frameDiv.append($("<div>").addClass("inputtag").html("Ваше имя <span class='inputtagstar'>* </span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'contactName_error').attr('border', '0')));
	// name
	frameDiv.append($("<div>").addClass("fieldbox").append($("<input>").attr('id', 'contactName').attr('name', 'contactName').attr('type', 'text').addClass("commWinimput")));
	
	// email
	frameDiv.append($("<div>").addClass("inputtag").html("Эл. почта <span class='inputtagcomm'>[ не будет опубликована ] <span class='inputtagstar'>* </span></span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'email_error').attr('border', '0')));
	// email
	frameDiv.append($("<div>").addClass("fieldbox").append($("<input>").attr('id', 'email').attr('name', 'email').attr('type', 'text').addClass("commWinimput")));
	
	// message
	frameDiv.append($("<div>").addClass("inputtag").html("Комментарий <span class='inputtagstar'>* </span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'message_error').attr('border', '0')));
	
	// message
	frameDiv.append($("<div>").addClass("fieldbox").append($("<textarea>").attr('id', 'message').attr('name', 'message')/*.attr('cols', '').attr('rows', '')*/.addClass("commWintextarea")));
		
	// button
	frameDiv.append($("<input>").addClass("btn_submitcomm").attr('type', 'image').attr('src', '/images/btn_submit.gif').attr('title', 'Отправить').click(
			function() {
				// validate
				var contactName = jQuery.trim($("#contactName").attr('value'));
				if(contactName == "") {
					showErrorImage('#contactName_error', 'Укажите имя!');
					return false;
				}
				var email = jQuery.trim($("#email").attr('value'));
				if(email == "") {
					showErrorImage('#email_error', 'Укажите email!');
					return false;
				}
				if(!isEmail(email)) {
					showErrorImage('#email_error', 'Укажите email!');
					return false;
				}				
				var message = jQuery.trim($("#message").attr('value'));
				if(message == "") {
					showErrorImage('#message_error', 'Сообщение отсутствует!');
					return false;
				}
				var rating = $("input:radio[name='rating']:checked").val();
				// submit
				$.ajax({
					url: '/services',
					type: 'POST',
					dataType: 'jsonp',
					data: ({ type: 'rating', contactName: contactName, email: email, message: message, resource: resourceId, rating: rating }),
					success: function(data) {
			       		// hide
			       		unlock();
			    	}
				});				
			}));

	div.append($("<div>").addClass("commentWindow").append(frameDiv));
	// show window
	lockobject(div);
	return false;
};

// shows comment window
showCommentWindow = function() {
	var div = $("#hiddenDiv").empty();
	// title
	var frameDiv = $("<div>").addClass("commentWindowIn").append(frameDiv);

	// title
	frameDiv.append($("<div>").addClass("windowTitle").text("Оставить сообщение"));
	
	// name
	frameDiv.append($("<div>").addClass("inputtag").html("Ваше имя <span class='inputtagstar'>* </span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'contactName_error').attr('border', '0')));
	// name
	frameDiv.append($("<div>").addClass("fieldbox").append($("<input>").attr('id', 'contactName').attr('name', 'contactName').attr('type', 'text').addClass("commWinimput")));

	// email
	frameDiv.append($("<div>").addClass("inputtag").html("Эл. почта <span class='inputtagcomm'>[ не будет опубликована ] <span class='inputtagstar'>* </span></span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'email_error').attr('border', '0')));
	// email
	frameDiv.append($("<div>").addClass("fieldbox").append($("<input>").attr('id', 'email').attr('name', 'email').attr('type', 'text').addClass("commWinimput")));

	// message
	frameDiv.append($("<div>").addClass("inputtag").html("Комментарий <span class='inputtagstar'>* </span>").append($("<img>").addClass("errimage").attr('src', '/images/errorhint.gif').attr('style', 'display: none;').attr('id', 'message_error').attr('border', '0')));
	// message
	frameDiv.append($("<div>").addClass("fieldbox").append($("<textarea>").attr('id', 'message').attr('name', 'message')/*.attr('cols', '').attr('rows', '')*/.addClass("commWintextarea")));

	// icons
	var iconsDiv = $("<div>").addClass("inputtag").html("<a href='http://wikidocsru.blogspot.com/' target='_blank' rel='nofollow'><img border='0' src='/images/blogger.gif' /></a>&nbsp;<a href='http://twitter.com/wikidocsru' target='_blank' rel='nofollow'><img border='0' src='/images/twitter.gif' /></a>");			
	
	// button
	iconsDiv.append($("<input>").addClass("btn_submitcomm").attr('type', 'image').attr('src', '/images/btn_submit.gif').attr('title', 'Отправить').click(
			function() {
				// validate
				var contactName = jQuery.trim($("#contactName").attr('value'));
				if(contactName == "") {
					showErrorImage('#contactName_error', 'Укажите имя!');
					return false;
				}
				var email = jQuery.trim($("#email").attr('value'));
				if(email == "") {
					showErrorImage('#email_error', 'Укажите email!');
					return false;
				}
				if(!isEmail(email)) {
					showErrorImage('#email_error', 'Укажите email!');
					return false;
				}				
				var message = jQuery.trim($("#message").attr('value'));
				if(message == "") {
					showErrorImage('#message_error', 'Сообщение отсутствует!');
					return false;
				}
				// submit
				$.ajax({
					url: '/services',
					type: 'POST',
					dataType: 'jsonp',
					data: ({ type: 'contactus', contactName: contactName, email: email, message: message }),
					success: function(data) {
			       		// hide
			       		unlock();
			    	}
				});
			}));
	
	// add all
	frameDiv.append(iconsDiv);
	
	div.append($("<div>").addClass("contactCommentWindow").append(frameDiv));
	// show window
	lockobject(div);
	return false;
};

// ///////////////////////////////////// utils ////////////////////////////////

// check file extension
checkFileExt = function(filename) {
	var fileext = filename.substring(filename.length - 4, filename.length);	
	return fileext.toUpperCase() === '.ZIP';
};
