var hurttaBaseUrl='/club/';

var TextareaLimiter=Class.create();

TextareaLimiter.prototype = {

	initialize: function()
	{
		this.el=false;
		this.limitNum=false;
		this.doLimit=this._doLimit.bindAsEventListener(this);
	},


	setLimiter: function(el, count)
	{
		this.el=el;
		this.limitNum=count
	},

	_doLimit: function()
	{
		var limitField=$(this.el);
		var limitCount=$(this.el+'_count');

		if (limitField.value.length > this.limitNum) {
			limitField.value = limitField.value.substring(0, this.limitNum);
		} else {
			if (limitCount) {
				limitCount.value = this.limitNum - limitField.value.length;
			}
		}
	}
}


/*
 *  hurtta.js
 */
var Hurtta=Class.create();

Hurtta.prototype = {

	initialize: function()
	{
		this.activeImageId=false;
		this.lastMessageId=false;
		this.updater=false;
		this.mouseX=0;
		this.mouseY=0;
		this.smileyId=0;

		this.editablePopup=false;
		this.popupOpened=false;
		this.popup=0;
		this.updatePopup=false
		this.popupLastPetId=0;

		// Page unloading intervention
		this.askUnload=false;

		// Uploads
		this.actionAfterUpload=false;

		this.castVote=this._castVote.bindAsEventListener(this);
		this.updateMouse=this._updateMouse.bindAsEventListener(this);
		this.unloadPage=this._unloadPage.bindAsEventListener(this);

		Event.observe(document, 'mousemove', this.updateMouse);
		Event.observe(window, 'beforeunload', this.unloadPage);
	},


	_unloadPage: function(e)
	{
		if (this.askUnload) {
			Event.stop(e);
		}
		return false;
	},


	_updateMouse: function(event)
	{
		this.mouseX=Event.pointerX(event);
        this.mouseY=Event.pointerY(event);

		if (this.updatePopup) {
			$('popup').style.left=(this.mouseX+20)+"px";
			$('popup').style.top=(this.mouseY-20)+"px";
		}
	},


	openPopup: function(pet_id)
	{
		this.updatePopup=true;
		if ($('popup')) {
			$('popup').show();
		} else {
			var popup;
			popup=document.createElement('div');
			popup.id='popup';
			popup.className='popup';
			this.popupOpened=true;
			document.body.insertBefore(popup, document.body.childNodes[0]);
		}

		// load content to the box
		if (pet_id!=this.popupLastPetId) {
			// Place waiting animation
			$('popup').innerHTML='<img src="/clubgfx/rot.gif" />';
			this.loadPetInfo(pet_id);
		}
		this.popupLastPetId=pet_id;
	},


	loadPetInfo: function(pet_id)
	{
		var url=hurttaBaseUrl+'pet/viewPetInfo';
		var pars='pet_id='+pet_id;

		var ajax = new Ajax.Updater('popup',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Ei voitu ladata ."); },
			onSuccess: function(transport) {
				
			}
		});
	
	},


	closePopup: function()
	{
		if ($('popup')) {
			$('popup').hide();
			this.updatePopup=false;
		}
	},


	initVoting: function(activeImageId)
	{
		if (this.activeImageId) {
			return;
		}
		this.activeImageId=activeImageId;
		Event.observe(window, 'load', function() {
			Event.observe('pos', 'click', function() { hurtta.castVote(1); } );
		});
	},


	_castVote: function(votingValue)
	{
		// Make request 
		var url=hurttaBaseUrl+'pet/doVote';
		var pars={image_id: this.activeImageId, value: votingValue};

		var ajax = new Ajax.Updater('points',
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {
						
			}
		});
	},


	addComment: function()
	{
		if (this.addingMessage) {
			return;
		}
		this.addingMessage=true;

		// Page should have only one type of comment
		var url=hurttaBaseUrl+'pet/addComment';
		var pars=Form.serialize('comment');

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
				$('commentBox').value='';
				hurtta.addingMessage=false;
			}
		});
	},


	addKennelComment: function()
	{
		if (this.addingMessage) {
			return;
		}
		this.addingMessage=true;

		// Page should have only one type of comment
		var url=hurttaBaseUrl+'kennel/addComment';
		var pars=Form.serialize('comment');

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
				$('commentBox').value='';
				hurtta.addingMessage=false;
			}
		});
	},



	addCommunityComment: function()
	{
		if (this.addingMessage) {
			return;
		}
		this.addingMessage=true;

		// Page should have only one type of comment
		var url=hurttaBaseUrl+'community/addComment';
		var pars=Form.serialize('comment');

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
				$('commentBox').value='';
				hurtta.addingMessage=false;
			}
		});
	},


	deleteComment: function(comment_id, image_id, start)
	{
		// Page should have only one type of comment
		var url=hurttaBaseUrl+'pet/deleteComment';
		var pars={comment_id: comment_id, image_id: image_id, start: start};

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
				
			}
		});
	},


	deleteCommunityComment: function(comment_id, start)
	{
		// Page should have only one type of comment
		var url=hurttaBaseUrl+'community/deleteCommunityComment';
		var pars={comment_id: comment_id,  start: start};

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu poistaa."); },
			onSuccess: function(transport) {

			}
		});
	},


	deleteKennelComment: function(comment_id, start)
	{
		// Page should have only one type of comment
		var url=hurttaBaseUrl+'kennel/deleteKennelComment';
		var pars={comment_id: comment_id,  start: start};

		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu poistaa."); },
			onSuccess: function(transport) {

			}
		});
	},


	showChangeIdentity: function()
	{
		var url=hurttaBaseUrl+'pet/loadIdentities';
		var pars;

		var ajax = new Ajax.Updater('identityChanger',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Identiteettiï¿œ ei voitu vaihtaa."); },
			onSuccess: function(transport) {

			}
		});
	},


	loadContent: function(url, pars, id, success, onComplete)
	{
		var url=hurttaBaseUrl+url;
		var ajax = new Ajax.Updater(id,
		url,
		{
			evalScripts:true,
			method: 'get',
			parameters: pars,
			onComplete: onComplete,
			onFailure: function() { confirm("Virhe."); },
			onSuccess: success
		});
	},


	changeIdentity: function()
	{
		var url=hurttaBaseUrl+'pet/changeIdentity';
		var pars="pet_id="+$('newIdentity').value;

		var ajax = new Ajax.Updater('identityChanger',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Identiteettiï¿œ ei voitu vaihtaa."); },
			onSuccess: function(transport) {

			}
		});
	},


	loadMessages: function(pet_id, image_id, start)
	{
		// Page should have only one type of comment
		var url=hurttaBaseUrl+'pet/loadMessages';
		var pars={pet_id: pet_id, image_id: image_id, start: start};
	
		var ajax = new Ajax.Updater('comments',
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
			}
		});
	},


	loadEditInPlace: function(id)
	{
		var url=hurttaBaseUrl+'manage/saveImageText';
		$$('.eip').each( function(value, key) {
	
			var id=value.id.split('_');
			var el=value;		// This element

			new Ajax.InPlaceEditor(value.id, url, {
				formClassName: 'imageEIP',
				okText:	'Tallenna',
				cancelControl: 'button',
				cancelText: 'Peruuta',
				savingText: 'Tallennetaan...',
				clickToEditText: 'Klikkaa muokataksesi',
				callback: function(form, value) {
					var len=value.length;
					if (len==0) {
						Element.addClassName(el, 'noImgText');
						Element.removeClassName(el, 'yesText');
					} else {
						Element.addClassName(el, 'yesImgText');
						Element.removeClassName(el, 'noText');
					}
					return 'imageId='+id[1]+'&text=' + encodeURIComponent(value)
				}
			})
		});
	},


	initializeVideoEIP: function(id)
	{
		var url=hurttaBaseUrl+'manage/saveVideoText';
		$$('.eip').each( function(value, key) {

			var id=value.id.split('_');
			var el=value;		// This element

			new Ajax.InPlaceEditor(value.id, url, {
				formClassName: 'videoEIP',
				okText:	'Tallenna',
				cancelControl: 'button',
				cancelText: 'Peruuta',
				savingText: 'Tallennetaan...',
				clickToEditText: 'Klikkaa muokataksesi',
				callback: function(form, value) {
					var len=value.length;
					if (len==0) {
						Element.addClassName(el, 'noImgText');
						Element.removeClassName(el, 'yesText');
					} else {
						Element.addClassName(el, 'yesImgText');
						Element.removeClassName(el, 'noText');
					}
					return 'videoId='+id[1]+'&text=' + encodeURIComponent(value)
				}
			})
		});
	},


	initializeGenericEIP: function(id)
	{
		var url=hurttaBaseUrl+'manage/saveGenericEIP';
		$$('.geip').each( function(value, key) {

			// type, id?
			var id=value.id.split('_');
			var el=value;

			new Ajax.InPlaceEditor(value.id, url, {
				okText:	'Tallenna',
				cancelControl: 'button',
				cancelText: 'Peruuta',
				savingText: 'Tallennetaan...',
				clickToEditText: 'Klikkaa muokataksesi',
				callback: function(form, value) {
					var len=value.length;
					if (len==0) {
						Element.addClassName(el, 'noText');
						Element.removeClassName(el, 'yesText');
					} else {
						Element.addClassName(el, 'yesText');
						Element.removeClassName(el, 'noText');
					}
					return 'value='+encodeURIComponent(value);
				}
			})
		});
	},


	initPetStatus: function(pet_id)
	{
		var url=hurttaBaseUrl+'manage/savePetStatus';
		$$('.petGeip').each( function(value, key) {

			// type, id?
			var id=value.id.split('_');
			var el=value;

			new Ajax.InPlaceEditor(value.id, url, {
				okText:	'Tallenna',
				cancelControl: 'button',
				cancelText: 'Peruuta',
				savingText: 'Tallennetaan...',
				clickToEditText: 'Klikkaa muokataksesi',
				callback: function(form, value) {
					var len=value.length;
					if (len==0) {
						Element.addClassName(el, 'noText');
						Element.removeClassName(el, 'yesText');
					} else {
						Element.addClassName(el, 'yesText');
						Element.removeClassName(el, 'noText');
					}
					return 'pet_id='+pet_id+'&value='+encodeURIComponent(value);
				}
			})
		});
	},



	sendMessage: function()
	{
		var origText=$('line').value;
		$('line').value='';

		var el=new Element('div', { 'class': 'chatLine'}).update(origText);
		var element=$('messages').insert(el, {position: 'bottom'} );
		new Effect.Highlight(el, { startcolor: '#ffff99', endcolor: '#ffffff' }); 

		hurtta.updateScrollbar();

		var url='/chat/addMessage';
		var pars={userId: this.userId, message: origText};
		var ajax = new Ajax.Request(
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
	
			onSuccess: function(transport) {
				var json=transport.responseText.evalJSON();
				if (!json.success) {
					alert("error");
				}
			}
		});
	},


	addFriend: function(pet_id)
	{
		var popup;

		if (this.editablePopup) {
			popup=this.editablePopup;
		} else {
			popup=this.createPopup('editable', 'editableLayer');
		}

		// Get link position
		var pos=Element.positionedOffset($('addToFriend'));
		popup.style.left=(pos[0]-40)+'px';
		popup.style.top=(pos[1]+30)+'px';

		this.addFriendOpeneded=true;
		this.loadContent('pet/viewAddToFriend', 'pet_id='+pet_id, 'editableLayerContent');

		if (!this.editablePopup) {
			this.editablePopup=popup;
		}
	},


	addFriendSubmit: function()
	{
		// Serialize form
		var url=hurttaBaseUrl+'pet/doFriendRequest';
		var pars=Form.serialize('addFriendForm');

		// Send form
		var ajax = new Ajax.Request(url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Viestiï¿œ ei voitu lisï¿œtï¿œ."); },
			onSuccess: function(transport) {
				if (transport.responseText=='1') {
					Element.remove($('editableLayer'));
					$('addToFriend').innerHTML='Lï¿œhetetty!';
				} else {
					$('editableLayerContent').innerHTML=transport.responseText;
				}
			}
		});
	},


	updateScrollbar: function()
	{
		var objDiv=$('messages');
		objDiv.scrollTop = objDiv.scrollHeight;
	},


	addMessages: function(messages, lastMessageId)
	{
		messages.each(function(value, key) {
			var el=new Element('div', { 'class': 'chatLine'}).update(value);
			var element=$('messages').insert(el, {position: 'bottom'} );
			new Effect.Highlight(el, { startcolor: '#ffff99', endcolor: '#ffffff' }); 
		});
		hurtta.updater=false;
		hurtta.lastMessageId=lastMessageId;
		hurtta.updateScrollbar();
	},


	chatUpdater: function()
	{
		if (hurtta.updater) {
			return;
		}
		hurtta.updater=true;

		var url='/club/chat/pollMessages';
		var pars={userId: hurtta.userId, messageId: hurtta.lastMessageId};
		var ajax = new Ajax.Request(
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
	
			onSuccess: function(transport) {
				var json=transport.responseText.evalJSON();
				hurtta.addMessages(json.messages, json.messageId);
			}
		});
	
	},
		

	handleFriendRequest: function(type, request_id)
	{
		var url=hurttaBaseUrl+'manage/handleFriendRequest';
		var pars={type: type, request_id: request_id};
		var ajax = new Ajax.Updater('request_'+request_id,
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {

			}
		});
	},


	handleCommunityRequest: function(type, request_id)
	{
		var url=hurttaBaseUrl+'manage/handleCommunityRequest';
		var pars={type: type, request_id: request_id};
		var ajax = new Ajax.Updater('c_request_'+request_id,
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {

			}
		});
	},


	handleCommunityOffer: function(type, offer_id)
	{
		var url=hurttaBaseUrl+'manage/handleCommunityOffer';
		var pars={type: type, offer_id: offer_id};
		var ajax = new Ajax.Updater('o_request_'+offer_id,
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {

			}
		});
	},



	handleKennelRequest: function(type, request_id)
	{
		var url=hurttaBaseUrl+'manage/handleKennelRequest';
		var pars={type: type, request_id: request_id};
		var ajax = new Ajax.Updater('kennel_request_'+request_id,
		url,
		{
			method: 'get',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {

			}
		});
	},



	initChat: function(lastMessageId, userId)
	{	
		this.userId=userId;
		this.lastMessageId=lastMessageId;
		new PeriodicalExecuter(this.chatUpdater, 2);
	},


	viewSmileySelector: function(id)
	{
		if (!this.smileyId) {
			this.smileyId=id;
		}
		$('smileyLayer').toggle();
	},


	addSmiley: function(txt)
	{
		this.insertAtCursor($(this.smileyId), unescape(txt));
	},


	insertAtCursor: function (myField, myValue)
	{
		//IE support
		if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			sel.text = myValue;
		} else if (myField.selectionStart || myField.selectionStart == '0') {
			//Mozilla/Firefox/Netscape 7+ support
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);
		} else {
			myField.value += myValue;
		}
	},


	viewEditableBlock: function(block, id, type, cb, el)
	{
		var popup;

		if (cb) {
			this.customHandler=cb;
		}

		if ($('editableLayer') && this.editablePopup) {
			popup=this.editablePopup;
		} else {
			popup=this.createPopup('editable', 'editableLayer');
		}

		this.popupType=type;		// With type
		this.saveContainer=block;	// Block that should be updated after saving
		this.saveId=id;				// Generic id
	

		var pos=Element.positionedOffset($(block+'_button'));
		var offset;

		if (el) {
			offset=Element.cumulativeOffset(el);
		} else {
			offset=Element.cumulativeOffset($(block+'_button'));
		}

		pos[0]=offset[0];
		pos[1]=offset[1];
	
		popup.style.left=(pos[0]+$(block+'_button').offsetWidth+20)+"px";
		popup.style.top=(pos[1]-20)+"px";
		
		var pars={block: block, id: id};
		this.loadContent('manage/loadEditable', pars, 'editableLayerContent', null, hurtta.positionEditableBlock);

		if (!this.editablePopup) {
			this.editablePopup=popup;
		}
	},



	positionEditableBlock: function()
	{
		//
		maxPosX=document.viewport.getWidth();
		maxPosY=document.viewport.getHeight();
		var offsets=document.viewport.getScrollOffsets();
		var popup=$('editableLayer');
		var left=popup.offsetLeft;
		var top=popup.offsetTop;

		var width=popup.offsetWidth;
		var height=popup.offsetHeight;

		if (left+width>maxPosX) {
			popup.style.left=(maxPosX-width-100)+"px";
		}
		
		if (top+height>maxPosY) {
			popup.style.top=(maxPosY-height-100)+"px";
		}
	},


	closeEditable: function()
	{
		$('editableLayer').remove();
		this.editablePopup=false;
	},


	setCustom: function(type)
	{
		if (!type) {
			this.customHandler=function(result) {
				$('editableLayer').remove();
				hurtta.loadContent('manage/viewPetsList', null, 'addPet');
			};
		} else {
			this.customHandler=type;
		}
	},


	saveEditable: function()
	{
		// Submit form to form action url
		var url=$('editableContent').action;
		var pars=Form.serialize('editableContent');

		var ajax = new Ajax.Request(url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Virhe."); },
			onSuccess: function(transport) {
				var ret=transport.responseText;
				
				switch(hurtta.popupType) {
					case 'custom':
						if (hurtta.customHandler) {
							hurtta.customHandler(ret);
						}
						break;

					// Close editor window on success
					case 'closeOnSuccess':
						if (ret=='1') {
							hurtta.editablePopup=null;
							$('editableLayer').remove();
						} else {
							$('editableSaveInfo').innerHTML=ret;
						}
						// Hide info in
						hurtta.autoLoadBlock();
						break;

					default:
					// Display something when thing goes as planned
					case 'displayOnSuccess':
						if (ret=='1') {
							$('editableSaveInfo').innerHTML='<div class="ok">'+ 'Tallennus onnistui! ' +'<div>';
						} else if (ret=='2') {
							$('editableContent').innerHTML='';
						} else {
							$('editableSaveInfo').innerHTML='<div class="error">'+ 'Tallennus epï¿œonnistui! ' +ret+'<div>';
						}
						new Effect.Opacity('editableSaveInfo',  {duration:3.5, from:1.0, to:0.0} );
						// Hide info in
						hurtta.autoLoadBlock();
						break;
				}
			}
		});
	},


	initializeSortable: function(pet_id)
	{
		Sortable.create("list", { onUpdate:function() {
			new Ajax.Updater('list-info', hurttaBaseUrl+'manage/reOrder?pet_id='+pet_id, {asynchronous:true, evalScripts:true, onComplete:function(request){new Effect.Highlight("list",{});}, parameters:Sortable.serialize("list")})
		 }
		});
	},


	autoLoadBlock: function()
	{
		var pars={pet_id: this.saveId, block: this.saveContainer };
		this.loadContent('pet/viewBlock', pars, this.saveContainer);
	},


	joinCommunity: function(el, community_id)
	{
		var popup;
		if ($('editableLayer') && this.editablePopup) {
			popup=this.editablePopup;
		} else {
			popup=this.createPopup('editable', 'editableLayer');
		}

		var pos=Element.positionedOffset(el);
		popup.style.left=(pos[0]-50)+"px";
		popup.style.top=(pos[1]+20)+"px";

		var pars={community_id: community_id};
		this.loadContent('community/joinCommunity', pars, 'editableLayerContent');
		this.community_id=community_id;

		if (!this.editablePopup) {
			this.editablePopup=popup;
		}
	},


	joinKennel: function(el, user_id)
	{
		var popup;
		if ($('editableLayer') && this.editablePopup) {
			popup=this.editablePopup;
		} else {
			popup=this.createPopup('editable', 'editableLayer');
		}

		var pos=Element.positionedOffset(el);
		popup.style.left=(pos[0]-50)+"px";
		popup.style.top=(pos[1]+20)+"px";

		var pars={user_id: user_id};
		this.loadContent('kennel/joinKennel', pars, 'editableLayerContent');
		this.user_id=user_id;

		if (!this.editablePopup) {
			this.editablePopup=popup;
		}
	},


	//
	// This is a generic implementation of form submit
	//
	doSubmit: function()
	{
		// Submit form to form action url
		var url=$('editableContent').action;
		var pars=Form.serialize('editableContent');

		var ajax = new Ajax.Updater('editableLayerContent', url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Virhe."); },
			onSuccess: function(transport) {
				if ($('community_count_'+hurtta.community_id)) {
					hurtta.loadContent('community/getCount', {community_id: hurtta.community_id}, 'community_count_'+hurtta.community_id, function () {
						Effect.Pulsate( 'community_count_'+hurtta.community_id, { pulses: 5, duration: 1.5 });
						}
					);
				}
				if ($('communityMessage_'+hurtta.community_id)) {
					$('communityMessage_'+hurtta.community_id).innerHTML='Tiedot tallennettu.';
				}
				$('editableLayer').remove();
			}
		});
	},

	doKennelSubmit: function()
	{
		// Submit form to form action url
		var url=$('editableContent').action;
		var pars=Form.serialize('editableContent');

		var ajax = new Ajax.Updater('editableLayerContent', url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Virhe."); },
			onSuccess: function(transport) {
			
				$('editableLayer').remove();
			}
		});
	},



	submitPoll: function()
	{
		// Submit form to form action url
		var url=$('pollForm').action;
		var pars=Form.serialize('pollForm');

		var ajax = new Ajax.Updater('pollForm', url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Virhe."); },
			onSuccess: function(transport) {
			}
		});
	},


	createPopup: function(className, name)
	{
		var popup=document.createElement('div');
		popup.id=name;
		popup.className=className;
		
		// Add close button
		var closeButton=document.createElement('div');
		closeButton.className="buttonCloseContainer";
		closeButton.innerHTML="<a href=\"javascript:void(0);\" class=\"buttonClose\" onclick=\"hurtta.closeEditable();\">&nbsp;</a>";
		Element.insert(popup ,{bottom: closeButton});
	

		var content=document.createElement('div');
		content.className="editableLayerContent";
		content.id="editableLayerContent";
		Element.insert(popup, {bottom: content});

		document.body.insertBefore(popup, document.body.childNodes[0]);
		return popup;
	},


	uploadDone: function(type)
	{
		switch(type) {
			case 'video':
				this.loadContent('pet/viewVideos', {pet_id: this.saveId}, this.saveContainer);
				$('editableLayer').remove();
				break;

			case 'profile':
				this.loadContent('manage/viewUserProfileImageOnly', 0, this.saveContainer);
				$('editableLayer').remove();
				break;

			default:
				this.loadContent('pet/viewAlbum', {pet_id: this.saveId}, this.saveContainer);
				$('editableLayer').remove();
				break;
		}



//		if (type=='profile') {
//			this.loadContent('manage/viewUserProfileImageOnly', 0, this.saveContainer);
//			$('editableLayer').remove();
//		} else {
//			this.loadContent('pet/viewAlbum', {pet_id: this.saveId}, this.saveContainer);
//			$('editableLayer').remove();
//		}

		if ($('loading')) {
			$('loading').hide();
		}
		this.askUnload=false;
	},


	uploadError: function(str)
	{
		alert(str);
	},


	setAsDefaultImage: function(pet_id, image_id)
	{
		//
		var start;
		if ($('start')) {
			start=$('start').value;
		} else {
			start=0;
		}

		//
		var url=hurttaBaseUrl+'manage/setAsDefaultImage';
		var pars={pet_id: pet_id, image_id: image_id, start: start};
		
		var ajax = new Ajax.Request(url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("Kuvaa ei voitu asettaa!"); },
			onSuccess: function(transport) {
				if (transport.responseText=='1') {
					// Load page again
					hurtta.loadContent('pet/viewAlbum', {pet_id: pet_id, start: start}, 'addImage');
				} 
			}
		});
	},


	deleteImage: function(pet_id, image_id)
	{
		//
		var start;
		if ($('start')) {
			start=$('start').value;
		} else {
			start=0;
		}

		var success=confirm("Haluatko varmasti poistaa tämän kuvan?");
		if (success) {
			
			var url=hurttaBaseUrl+'manage/deleteImage';
			var pars={image_id: image_id, start: start};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Kuvaa ei voitu poista!"); },
				onSuccess: function(transport) {
					if (transport.responseText=='1') {
						// Load page again
						hurtta.loadContent('pet/viewAlbum', {pet_id: pet_id, start: start}, 'addImage');

					} else {

					}
				}
			});

		}
	},

	
	// Delete pet
	deletePet: function(pet_id)
	{
		var success=confirm("Haluatko varmasti poistaa koiran?");
		if (success) {

			var url=hurttaBaseUrl+'manage/deletePet';
			var pars={pet_id: pet_id};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Kuvaa ei voitu poista!"); },
				onSuccess: function(transport) {
					if (transport.responseText=='1') {
						// Load page again
						hurtta.loadContent('manage/viewPetsList', null, 'addPet');
					} 
				}
			});

		}
	},


	deleteFriend: function(pet_id, friend_id)
	{
		var success=confirm("Haluatko varmasti poistaa kaverin?");
		if (success) {
			var url=hurttaBaseUrl+'pet/deleteFriend';
			var pars={pet_id: pet_id, friend_id: friend_id};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Ei voitu poistaa!"); },
				onSuccess: function(transport) {
				
					if (transport.responseText=='1') {
						// Remove item
						$('friend_'+friend_id).remove();
					}
				}
			});
		}
	},


	viewCommunityProfile: function()
	{
		$('editableLayer').remove();
		this.loadContent('community/viewCommunityProfile', {community_id: this.saveId}, 'communityProfile');
	},


	deleteMember: function(community_id, pet_id)
	{
		var success=confirm("Haluatko varmasti erottaa jÃ€senen?");
		if (success) {
			var url=hurttaBaseUrl+'community/deleteMember';
			var pars={community_id: community_id, pet_id: pet_id, start: $('start').value};
			var ajax = new Ajax.Updater('communityMembers',
			url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("qred_ajax loading failure."); },
				onSuccess: function(transport) {

				}
			});
		}
	},



	deleteMemberFromKennel: function(user_id, pet_id)
	{
		var success=confirm("Haluatko varmasti poistaa jï¿œsenen?");
		if (success) {
			var url=hurttaBaseUrl+'kennel/deleteMember';
			var pars={user_id: user_id, pet_id: pet_id, start: $('start').value};
			var ajax = new Ajax.Updater('communityMembers',
			url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("qred_ajax loading failure."); }
			});
		}
	},



	submitPrivateMessage: function(community_id, pet_id)
	{
		var url=hurttaBaseUrl+'pet/submitPrivateMessage';
		var pars=Form.serialize('privateMessageForm');

		var ajax = new Ajax.Updater('privateMessageForm',
		url,
		{
			method: 'post',
			parameters: pars,
			onFailure: function() { confirm("qred_ajax loading failure."); },
			onSuccess: function(transport) {

			}
		});
	},


	deletePrivateMessage: function(message_id)
	{
		var success=confirm("Haluatko varmasti poistaa viestin?");
		if (success) {

			var url=hurttaBaseUrl+'manage/deletePrivateMessage';
			var pars={message_id: message_id};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Kuvaa ei voitu poista!"); },
				onSuccess: function(transport) {
					if (transport.responseText=='1') {
						// Delete row
						new Effect.Puff('private_message_'+message_id);

					} else {
						alert("Viestiï¿œ ei voitu poistaa!");
					}
				}
			});
		}
	},

	
	deleteAchievement: function(achievement_id)
	{
		var success=confirm("Haluatko varmasti poistaa tï¿œmï¿œn saavutuksen?");
		if (success) {

			var url=hurttaBaseUrl+'manage/deleteAchievement';
			var pars={achievement_id: achievement_id};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Kuvaa ei voitu poista!"); },
				onSuccess: function(transport) {
					if (transport.responseText=='1') {
						// Delete row
						$('item_'+achievement_id).remove();
					} else {
						alert("Ei voitu poistaa!");
					}
				}
			});
		}
	},


	deleteCommunity: function(community_id)
	{
		var success=confirm("Haluatko varmasti poistaa tï¿œmï¿œn lauman?");
		if (success) {
			var url=hurttaBaseUrl+'manage/deleteCommunity';
			var pars={community_id: community_id};

			// Send form
			var ajax = new Ajax.Request(url,
			{
				method: 'post',
				parameters: pars,
				onFailure: function() { confirm("Kuvaa ei voitu poista!"); },
				onSuccess: function(transport) {
					if (transport.responseText=='1') {
						// Delete row
						$('community_'+community_id).remove();
					} else {
						alert("Ei voitu poistaa!");
					}
				}
			});

		}
	},

	//hurtta.getEditableBlock('petAchievement', 'editAchievement', {ach_id: $ach_id, pet_id: $pet_id}, 'closeOnSuccess');"
	getEditableBlock: function(block, blockToLoad, pars, type, el, cb)
	{
		var popup;

		if (cb) {
			this.customHandler=cb;
		}

		if ($('editableLayer') && this.editablePopup) {
			popup=this.editablePopup;
		} else {
			popup=this.createPopup('editable', 'editableLayer');
		}

		this.popupType=type;		// With type
		this.saveContainer=block;	// Block that should be updated after saving

		var pos=Element.positionedOffset($(block+'_button'));
		var offset;

		if (el) {
			offset=Element.cumulativeOffset(el);
		} else {
			offset=Element.cumulativeOffset($(block+'_button'));
		}

		pos[0]=offset[0];
		pos[1]=offset[1];

		popup.style.left=(pos[0]+$(block+'_button').offsetWidth+20)+"px";
		popup.style.top=(pos[1]-20)+"px";
		
		this.loadContent(blockToLoad, pars, 'editableLayerContent', null, hurtta.positionEditableBlock);

		if (!this.editablePopup) {
			this.editablePopup=popup;
		}
	},



	createLimitTextarea: function(el, count)
	{
		var limiter=new TextareaLimiter();
		limiter.setLimiter(el, count);
		Event.observe(el, 'keydown', limiter.doLimit);
		Event.observe(el, 'keyup', limiter.doLimit);
	},

	deleteVideo: function(video_id)
	{
		alert(video_id);
	},

	notifyUpload: function()
	{
		$("uploadButton").innerHTML='<img src="/clubgfx/ajax-loader-1.gif">';
	}
}

hurtta=new Hurtta();

// Bind general upload success to class
document.uploadDone=function(type)
{
	hurtta.uploadDone(type);
}

document.uploadError=function(str)
{
	hurtta.uploadError(str);
}

function limit_textarea(el, limitNum)
{
	var limitField=$(el);
	var limitCount=$(el+'_count');

	alert("test");

	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		if (limitCount) {
			limitCount.value = limitNum - limitField.value.length;
		}
	}
}

