var dbn = {};

//////////////////////////////////////////////////////////////////////////

dbn.lang = function(key)
{
	return (dbn.language[key]) ? dbn.language[key] : key;
};

//////////////////////////////////////////////////////////////////////////

dbn.District = function(id, quarter_id, name)
{
	this.id = id;
	this.quarter_id = quarter_id;
	this.name = name;
};

dbn.Quarter = function(id, name)
{
	this.id = id;
	this.name = name;
};

//////////////////////////////////////////////////////////////////////////

ajaxFileUpload = (function()
{
	var _p =
	{
		success : false,
		url : '',
		successCallback : undefined,
		errorCallback : undefined,
		fileElementId: 'fileToUpload',
		
		Upload : function () 
		{
			$('#uploadControl .ajaxanimation').show();
			$('#buttonUpload').attr('disabled', 'disabled');
			$.ajaxFileUpload(
				{
					url : _p.url,
					secureuri: false,
					fileElementId: _p.fileElementId,
					dataType: 'json',
					success: function (data, status)
					{
						$('#uploadControl .ajaxanimation').hide();
						$('#buttonUpload').removeAttr('disabled');
						_p.success = false;
						if(typeof(data.error) != 'undefined')
						{
							if(data.error !== '')
							{
								alert(data.error);
							}
							else
							{
								_p.success = true;
								if (_p.successCallback != undefined)
									_p.successCallback(data.msg);
							}
						}
					},
					error: function (data, status, e)
					{
						$('#uploadControl .ajaxanimation').hide();
						$('#buttonUpload').removeAttr('disabled');
						alert(e);
					}
				}
			);
			return false;
		}
	};
	
	
   return _p;

})();

//////////////////////////////////////////////////////////////////////////

var Photo = function(element, img, id, comment)
{
	var _ = 
	{
		el : undefined,
		html : '<div class="imageHolder"><div class="tools"><a class="icon delete" href="#">delete</a><span class="ajaxanimation">deleting</span></div><input type="hidden" name="photo_file[]"/><input type="hidden" name="photo_id[]"/><span class="image"></span><span class="comment"><input type="text" maxlength="500" name="photo_comment[]"/></span></div>'
	};
	
	var _p =
	{
		id : undefined,
		img : '',
		comment : '',
		DisplayCallback : undefined,
		DeleteCallback : undefined,
		
		Display : function(img)
		{
			if (img != undefined)
				_p.img = img;
			$("input[name='photo_file[]']", _.el).val(_p.img);
			$("input[name='photo_id[]']", _.el).val(_p.id);
			$("input[name='photo_comment[]']", _.el).val(_p.comment);
			
			var ext = _p.img.substr(_p.img.lastIndexOf('.') + 1, _p.img.length - _p.img.lastIndexOf('.') - 1);
			var name = _p.img.substr(0, _p.img.lastIndexOf('.'));
			
			if (ext == 'swf')
				$('.image', _.el).append(ACDC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'src', Photo.imagePath + name, 'quality', 'high', 'pluginspage', 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash', 'movie', Photo.imagePath + name ));
			else
				$('.image', _.el).append('<img src="' + Photo.imagePath + _p.img + '" alt="photo image" />');
			
			$(_.el).show();
			if (typeof(_p.DisplayCallback) == 'function')
				_p.DisplayCallback(this);
		},
		
		Remove : function()
		{
			$(_.el).remove();
		},
		
		Delete : function(event)
		{ 
			event.preventDefault();
			$('.delete', _.el).hide();
			$('.ajaxanimation', _.el).show();
			$.post(Photo.deleteUrl, { file : _p.img }, function(data) { _p.DeleteAjaxCallback(data); });
		},
		
		DeleteAjaxCallback : function(rawData)
		{
			$('.ajaxanimation', _.el).hide();
			eval( "data = " + rawData );
			if (data.error)
				alert(data.error);
			else
			{
				if (data.msg == 'ok')
				{
					$('.image', _.el).attr('src', '');
					$(_.el).hide();
					$("input[name='photo_file[]']", _.el).val('');
				}
			}
			$('.delete', _.el).show();
			$('.ajaxanimation', _.el).hide();
			if (typeof(_p.DeleteCallback) == 'function')
				_p.DeleteCallback(this);
		}
	};
	
	if (element != undefined)
	{
		$(element).append(_.html);
		_.el = $('.imageHolder:last', element);
		$('.delete', _.el).click(function(event){_p.Delete(event);});
	}
	if (img != undefined)
		_p.img = img;
	if (id != undefined)
		_p.id = id;
	if (comment != undefined)
		_p.comment = comment;
	return _p;
};

// static
Photo.imagePath = '';
Photo.deleteUrl = '';

//////////////////////////////////////////////////////////////////////////

dbn.Photos = new Array();

Photos = (function()
{
	var _ =
	{
		count : 0,
		DeletePhoto : function(photo)
		{
			photo.Remove();
			photo = null;
			_.count--;
			if (typeof(_p.DeleteCallback) == 'function')
				_p.DeleteCallback();
		}
	};
	
	var _p =
	{
		photosElement : undefined,
		DisplayCallback : undefined,
		DeleteCallback : undefined,
		limit : 40,
		
		Count : function()
		{
			return _.count;
		},
		
		LimitReached : function()
		{
			return (_.count == _p.limit);
		},
		
		Add : function(photo)
		{
			if (!_p.LimitReached())
			{
				_.count++;
				photo.DisplayCallback = _p.DisplayCallback;
				photo.DeleteCallback = _.DeletePhoto;
				photo.Display();
				$('fileToUpload').attr('disabled', 'disabled');
			}
		},
		
		AddPhoto : function(img)
		{
			if (!_p.LimitReached())
				_p.Add(photo = new Photo(_p.photosElement, img));
		},
		
		Setup : function(photosElement)
		{
			if (photosElement != undefined)
				_p.photosElement = photosElement;
				
			if (dbn.Photos != undefined)
			{
				for (var i=0; i<dbn.Photos.length; i++)
					_p.AddPhoto(dbn.Photos[i]);
			}
		}
	};
	return _p;
})();


//////////////////////////////////////////////////////////////////////////

dbn.DatePickers = (function()
{
	var _ =
	{
		setupCulture : function()
		{
			Date.format = 'dd.mm.yyyy';
			Date.dayNames = [dbn.language['day:0'], dbn.language['day:1'], dbn.language['day:2'], dbn.language['day:3'], dbn.language['day:4'], dbn.language['day:5'], dbn.language['day:6']];
			Date.monthNames = [dbn.language['month:0'], dbn.language['month:1'], dbn.language['month:2'], dbn.language['month:3'], dbn.language['month:4'], dbn.language['month:5'], dbn.language['month:6'], dbn.language['month:7'], dbn.language['month:8'], dbn.language['month:9'], dbn.language['month:10'], dbn.language['month:11'] ];
			$.dpText = {
				TEXT_PREV_YEAR : dbn.language['label:previous year'],
				TEXT_PREV_MONTH : dbn.language['label:previous month'] ,
				TEXT_NEXT_YEAR : dbn.language['label:next year'],
				TEXT_NEXT_MONTH : dbn.language['label:next month'],
				TEXT_CLOSE : dbn.language['label:Close'],
				TEXT_CHOOSE_DATE : dbn.language['label:Choose date']
			}
		},
		
		setupPublishExpiry : function()
		{
			$('#publish_date').change(dbn.DatePickers.FormatForDatePicked).datePicker();
			$('#expiry_date').change(dbn.DatePickers.FormatForDatePicked).datePicker();
			
			$('#publish_date').bind(
				'dpClosed',
				function(e, selectedDates)
				{
					var d = selectedDates[0];
					if (d) {
						d = new Date(d);
						$('#expiry_date').dpSetStartDate(d.addDays(1).asString());
					}
				}
			);
			$('#expiry_date').bind(
				'dpClosed',
				function(e, selectedDates)
				{
					var d = selectedDates[0];
					if (d) {
						d = new Date(d);
						$('#publish_date').dpSetEndDate(d.addDays(-1).asString());
					}
				}
			);
		}
	};
	
	var _p = 
	{
		FormatForDatePicked : function()
		{
			if ($(this).val() != '' && $(this).val().length == 10)
				$(this).val($(this).val() + ',00:00');
		},
		
		Setup : function()
		{
			_.setupCulture();
			if ($('#publish_date').length == 1 && $('#expiry_date').length == 1)
				_.setupPublishExpiry();
			if ($('#birthday').length == 1)
				$('#birthday').datePicker({startDate:'01/01/1900'});
		}
	}
	return _p;
})();


function getCookie(CookieName)
{
	var Value = "";
	if (document.cookie.length > 0)
	{
		var Cookies = document.cookie.toString() + "\n";
		var RegEx = new RegExp( CookieName +"=(.*?)[;\n]", "gi" );
		var Matches = RegEx.exec(Cookies);
		if( Matches )
			Value = unescape(Matches[1]);
	}
	return Value;
}
