var getUID = (function(){
    var id = 0;
    return function(){
        return 'ajaxUpload' + id++;
    };
})();

$(document).ready(function() {

	//When page loads...
	$(".tab_content").hide(); //Hide all content
	$("ul.tabs li:first").addClass("active").show(); //Activate first tab
	$(".tab_content:first").show(); //Show first tab content

	//On Click Event
	$("ul.tabs li").click(function() {

		$("ul.tabs li").removeClass("active"); //Remove any "active" class
		$(this).addClass("active"); //Add "active" class to selected tab
		$(".tab_content").hide(); //Hide all tab content

		var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
		$(activeTab).fadeIn(); //Fade in the active ID content
		return false;
	});

});

/*
 * LAYOUT
 */

/* LAYOUT STYLE */

// PAGE LAYOUT ONLY
// LAYOUT ELEMENT ONLY
// ANOTHER ELEMENT

function element_param_set(_element, _style, _value) {
// STYLES
// GET CURRENT STYLE
	var _style_old = $('#' + _element).val();
	var _new_style = '';
	var _styles = _style_old.split(';');
	var _style_found = false;
	for (var _i in _styles) {
	// STYLE TYPES
		var _style_array = _styles[_i].split(':');
		var _style_name = _style_array[0];
		var _style_value = _style_array[1];
		if (_style_name && _style_name == _style) {
			_new_style += _style + ':' + _value + ';';
			_style_found = true;
		} else if (_style_name) {
			_new_style += _style_name + ':' + _style_value + ';';
		}
	}
	if (!_style_found) {
		_new_style += _style + ':' + _value + ';';
	}
	$('#' + _element).val(_new_style);
// APPLY NEW STYLE
}

function element_param_get(_element, _style) {
	var _style_old = $('#' + _element).val();
	var _styles = _style_old.split(';');
	for (var _i in _styles) {
	// STYLE TYPES
		var _style_array = _styles[_i].split(':');
		var _style_name = _style_array[0];
		var _style_value = _style_array[1];
		if (_style_name && _style_name == _style) {
			return _style_value;
		}
	}
	return '';
}

function element_param_edit(_element) {
	
	var _style_old = $('#' + _element).val();
	var _styles = _style_old.split(';');
	for (var _i in _styles) {
	// STYLE TYPES
		var _style_array = _styles[_i].split(':');
		var _style_name = _style_array[0];
		var _style_value = _style_array[1];
		switch (_style_name) {
		// BACKGROUND
			case 'background-image':
				$('#style_background_preview').attr('src', __domain + 'resample/' + _style_value + '?width=200&height=200');
				break;
			case 'background-color':
				$.farbtastic('#style_bgcolor_chooser').setColor(_style_value);
				break;
			case 'background-position':
				var _positions = _style_value.split(' ', 2);
				var _style_vertical = ''; var _style_horizontal = '';

				if (_positions[0] == 'left' || _positions[0] == 'center' || _positions[0] == 'right') _style_horizontal = _positions[0];
				if (_positions[1] == 'top' || _positions[1] == 'middle' || _positions[1] == 'bottom') _style_vertical = _positions[1];
				
				$('#style_bgposition_horizontal_chooser').val(_style_horizontal);
				$('#style_bgposition_vertical_chooser').val(_style_vertical);
				break;
			case 'background-repeat':
				$('#style_bgrepeat_chooser').val(_style_value);
				break;
		// TEXT
			case 'color':
				$.farbtastic('#style_txtcolor_chooser').setColor(_style_value);
				break;
			default:
				break;
		}
	}
	return '';
}

function layout_window_upload(_form) {	
	$("#layout_window_upload_photo").dialog({
		autoOpen: false,
		height: 300,
		width: 400,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			'Select': function () {
				$(this).dialog('destroy');
			}
		}
	});
	
	$("#layout_window_upload_photo").dialog('open');
}

function layout_window_style_background(_style_element, _style_preview) {
	$("#layout_window_style").dialog({
		autoOpen: false,
		height: 400,
		width: 700,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			'Accept': function() {
			// GATHER BACKGROUND
			// GATHER TEXT
			// GATHER FONT
				$('#' + _style_preview).attr('style', 'background-image: url(' + __domain + $('#style_background_image_value').val() + '); background-position: center top;');
				$(this).dialog('destroy');
			}
		}
	});
	$("#layout_window_style").dialog('open');
}

function layout_window_style_border(_page_layout, _element, _element_destination) {
	
}

function layout_element_style_change(_page_layout, _element, _style, _value) {
// STYLES
// GET CURRENT STYLE
	var _style_old = $('#layout-element-' + _page_layout + '-' + _element + '_style-value').val();
	var _new_style = '';
	var _styles = _style_old.split(';');
	var _style_found = false;
	for (var _i in _styles) {
	// STYLE TYPES
		var _style_array = _styles[_i].split(':');
		var _style_name = _style_array[0];
		var _style_value = _style_array[1];
		if (_style_name && _style_name == _style) {
			_new_style += _style + ':' + _value + ';';
			_style_found = true;
		} else if (_style_name) {
			_new_style += _style_name + ':' + _style_value + ';';
		}
	}
	if (!_style_found) {
		_new_style += _style + ':' + _value + ';';
	}
	$('#layout-element-' + _page_layout + '-' + _element + '_style-value').val(_new_style);
// APPLY NEW STYLE
}

function layout_element_style(_page_layout, _element, _style) {
	var _style_old = $('#layout-element-' + _page_layout + '-' + _element + '_style-value').val();
	var _new_style = '';
	var _styles = _style_old.split(_style + ':', 2);
	if (!_styles[1]) return '';
	var _style_value = _styles[1];
		_style_value = _style_value.split(';', 2);
		_style_value = _style_value[0];
	return _style_value;
}

/* ELEMENT TEXT */

function layout_element_edit_text(_page_layout, _element) {
	var _value = $('#layout-element-' + _page_layout + '-' + _element + '-value').val();
	if (__language_default != __language_selected) {
		$('#layout_element_text_value_language').val(_value);
		var _value = $('#layout-element-' + _page_layout + '-' + _element + '-value-language').val();
	}
	$('#layout_element_text_value').val(_value);
	
	$("#layout_window_edit_text").dialog({
		autoOpen: false,
		height: 400,
		width: 200,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			'Save': function() {
				if (__language_default != __language_selected) {
					$('#layout-element-' + _page_layout + '-' + _element + '-value-language').val($('#layout_element_text_value').val());
				} else {
					$('#layout-element-' + _page_layout + '-' + _element + '-value').val($('#layout_element_text_value').val());
				}
				$('#layout-element-' + _page_layout + '-' + _element).html($('#layout_element_text_value').val());
				$(this).dialog('destroy');
			}
		}
	});
	
	$("#layout_window_edit_text").dialog('open');
}

/* ELEMENT HTML */

function layout_element_edit_html(_page_layout, _element) {
	var _value = $('#layout-element-' + _page_layout + '-' + _element + '-value').val();
	//alert(_value);
	if (__language_default != __language_selected) {
		$('#layout_element_html_value_language').val(_value);
		var _value = $('#layout-element-' + _page_layout + '-' + _element + '-value-language').val();
	}
	
	var editor = $('#layout_element_html_value').ckeditorGet();
	editor.setData(_value);
	
	$("#layout_window_edit_html").dialog({
		autoOpen: false,
		height: 500,
		width: 850,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			'Save': function() {
				if (__language_default != __language_selected) {
					$('#layout-element-' + _page_layout + '-' + _element + '-value-language').val($('#layout_element_html_value').val());
				} else {
					$('#layout-element-' + _page_layout + '-' + _element + '-value').val($('#layout_element_html_value').val());
				}
				$('#layout-element-' + _page_layout + '-' + _element).html($('#layout_element_html_value').val());
				$(this).dialog('destroy');
			}
		}
	});
	
	$("#layout_window_edit_html").dialog('open');
	//$('#layout-element-' + _page_layout + '-' + _element + '-value').ckeditor('destroy');
}

/* ELEMENT PHOTO */

function layout_element_edit_photo(_page_layout, _element, _event) {
	$('#layout_element_photo_value').val($('#layout-element-' + _page_layout + '-photo-value').val());
	$('#layout_element_photo_value_width').val(layout_element_style(_page_layout, _element, 'width'));
	$('#layout_element_photo_value_height').val(layout_element_style(_page_layout, _element, 'height'));
	/*
	if (_event) $("#layout_window_edit_photo").bind('select_photo', _event);
	else {
	// DEFAULT EVENT FOR BROWSING & SELECTING PHOTO
		$("#layout_window_edit_photo").bind('browse_photo', function(_event, _id, _path){
			$.ajax({
				type: "GET",
				url: __domain + __language_default + '/photos.' + _id + '-media-ajax-entity.html',
				//data: '',
				dataType: 'json',
				success: function (request) {
					$('#layout_element_photo_value_preview').attr('src', __domain + request.thumb_200);
					$('#layout_element_photo_value').val(request.photo);
					$("#layout_window_select_photo").dialog('destroy');
				}
			});
		});
	}
	*/
	// DIALOG SELECT PHOTO
	$("#layout_window_edit_photo").dialog({
		autoOpen: false,
		height: 400,
		width: 700,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			'Accept': function() {
				$('#layout-element-' + _page_layout + '-' + _element + '-value').val(
					$('#layout_element_photo_value').val());
			// PREPARE
				$('#layout-element-' + _page_layout + '-photo').attr(
					'src', __domain + 'resample/' + $('#layout_element_photo_value').val() + 
						'?width=' + $('#layout_element_photo_value_width').val() + 
						'&height=' + $('#layout_element_photo_value_width').val());
				$(this).dialog('destroy');
			}
		}
	});
	//$("#layout_window_select_photo").bind('select_photo', _event);
	//layout_element_search_photo(0, _event);
	$("#layout_window_edit_photo").dialog('open');
	//entity_item('layout_window_select_photo', __domain + 'browse.0-media-ajax-entity.html');
}

function photo_select(_target, _param) {	
// INIT DIALOG
	$("#layout_window_select_photo").dialog({
		autoOpen: false,
		height: 500,
		width: 800,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			}
		}
	});
	photo_search(0, _target, _param);
	$("#layout_window_select_photo").dialog('open');
}

function photo_search(_page, _target, _param) {
	_page = parseInt(_page);
	$.ajax({
		type: "GET",
		url: __domain + __language_default + '/photos.0-p' + _page + '-media-ajax-entity.html',
		//data: '',
		dataType: 'json',
		success: function (request) {
		// BUILD NAVIGATION
		// LIST PHOTOS
			$('#layout_window_select_photo_list').empty();
			for (var item in request.list) {
				var _e = request['list'][item];
				$('#layout_window_select_photo_list')
					.append('<span class="media-file-lite" onclick="$(\'#layout_window_select_photo\').trigger(\'select_photo\', [\'' + _e.id + '\', \'' + _target + '\', \'' + _param + '\']);"><img src="' + __domain + _e.thumbnail + '" alt="preview"/></span>');
			}
		}
	});
}

/* BACKGROUNDS */

/*
 * FORMS
 */

function form_submit(_form_id, _form_action, _submit_id, _submit_event) {
	$('#' + _submit_id).val(_submit_event);
	if (_form_action) {
		$('#' + _form_id).attr('action', _form_action);
	}
	$('#' + _form_id).submit();
}

/*
 * CATEGORIES
 */

function category_path(_id, _field, _domain, _context, _entity) {
	if (!_id) _id = 0;
	_id = parseInt(_id);

	var _url = _domain;
	if (_context == 'admin') {
		_url += 'admin/' + _entity + "/category-browse." + _id + "-ajax-category.html";
	}
	$.ajax({
		type: "POST",
		url: _url,
		data: '',
		success: function (request) {
			var json, i;
			eval('json = ' + request);
			$("#" + _field + "_path").empty();
			$("#" + _field + "_path").append('<a href="#" onclick="category_path(0, \'' + _field + '\', \'' + _domain + '\', \'' + _context + '\', \'' + _entity + '\'); return false;"> Navigacija </a>');
			for (i = 0; i < json.length; i++) {
				$("#" + _field + "_path").append('<a href="#" onclick="category_path(' + json[i].id + ', \'' + _field + '\', \'' + _domain + '\', \'' + _context + '\', \'' + _entity + '\'); return false;"> &raquo; ' + json[i].name + ' </a>');
			}
		}
	});

	$("#" + _field).val(_id);
	category_children(_id, _field, _url);
}

function category_children(_id, _field, _url) {
	var _select = $("#" + _field + "_select");
	_select.empty();
	_select.append('<option value="">Loading ...</option>');
	$.ajax({
		type: "POST",
		url: _url,
		data: 'category_children=true',
		success: function (request) {
			var json, i;
			eval('json = ' + request);
			_select.empty();
			_select.append('<option value="0">...</option>');
			for (i = 0; i < json.length; i++) {
				_select.append('<option value="' + json[i].id + '">' + json[i].name + '</option>');
			}

			if (json.length == 0) {
				_select.hide();
			} else {
				$("#" + _field + "_path").append(' &raquo; ');
				_select.show();
			}
		}
	});
}

function directory_category_path(_id, _field, _domain, _context, _entity, _submit) {
	if (!_id) _id = 0;
	_id = parseInt(_id);

	var _url = _domain;
	if (_context == 'admin') {
		_url += 'admin/' + _entity + "/category-browse." + _id + "-ajax-category.html";
	}
	var _prefix = "";
	$("#" + _field).val(_id);
	$.ajax({
		type: "POST",
		url: _url,
		data: '',
		success: function (request) {
			var json, i;
			eval('json = ' + request);
			$("#" + _field + "_path").empty();
			var _click_submit = '';
			if (_submit) _click_submit = '$(\'#' + _submit + '\').trigger(\'submit\');';
			$("#" + _field + "_path").append('<p style="margin: 2px 0 0 0;"><a href="#" onclick="directory_category_path(0, \'' + _field + '\', \'' + _domain + '\', \'' + _context + '\', \'' + _entity + '\', \'' + _submit + '\'); ' + _click_submit + ' return false;"> Navigacija </a></p>');
			for (i = 0; i < json.length; i++) {
				_prefix += "&raquo; ";
				$("#" + _field + "_path").append('<p style="margin: 2px 0 0 0;"><a href="#" onclick="directory_category_path(' + json[i].id + ', \'' + _field + '\', \'' + _domain + '\', \'' + _context + '\', \'' + _entity + '\', \'' + _submit + '\'); ' + _click_submit + ' return false;"> ' + _prefix + json[i].name + ' </a></p>');
			}
			_prefix += "&raquo; ";
			directory_category_children(_id, _field, _domain, _context, _entity, _url, _prefix, _submit);
		}
	});
}

function directory_category_children(_id, _field, _domain, _context, _entity, _url, _prefix, _submit) {
	var _select = $("#" + _field + "_select");
	_select.empty();
	_select.append('<p>Loading ...</p>');
	$.ajax({
		type: "POST",
		url: _url,
		data: 'category_children=true',
		success: function (request) {
			var json, i;
			eval('json = ' + request);
			_select.empty();
			var _click_submit = '';
			if (_submit) _click_submit = '$(\'#' + _submit + '\').trigger(\'submit\');';
			for (i = 0; i < json.length; i++) {
				_select.append('<p style="margin: 2px 0 0 0;"><a href="#" onclick="directory_category_path(' + json[i].id + ', \'' + _field + '\', \'' + _domain + '\', \'' + _context + '\', \'' + _entity + '\', \'' + _submit + '\'); ' + _click_submit + ' return false;"> ' + _prefix + json[i].name + ' </a></p>');
			}
		}
	});
}

/*
 * PLUGINS
 **/

function pluginLoad( url )
{
	document.write( '<scr' + 'ipt language="javascript" type="text/javascript" src="' + url + '"><\/scr' + 'ipt>' ) ;
}

function pluginPath(_pluginName) {
    var scripts = document.getElementsByTagName("script");
    var regex = '(.*/' + _pluginName+ '/).*';
    for(var i=0; i<scripts.length; i++)
    {
        var currentScriptSrc = scripts[i].src;
        if (currentScriptSrc.match(regex))
        return currentScriptSrc.match(regex)[1];
    }

    return null;
}

function pluginCSS( _file ) {
	document.write('<link rel="stylesheet" type="text/css" href="' + _file + '" />');
}

// ######### ENTITY

/*
 * ENTITY SET DATA
 */

function entity_values_set(_entity, _values) {
// SET VALUES
	var _field;
	for (_field in _values) {
		for (_field in _values) {
			$('#' + _entity + '_' + _field).val(_values[_field]);
		}
	}
	
// SET VALUES TANSLATIONS
	var _translations = _values['language'];
	var _lang;
	for (_lang in _translations) {
		for (_field in _translations[_lang]) {
			$('#' + _entity + '_' + _field + '_' + _lang).val(_translations[_lang][_field]);
		}
	}
}
/*
 * _id = Parent menu
 */
function window_menu_add(_id) {
	$("#window_menu_edit").attr('title', 'Add Menu');
	$("#window_menu_edit").dialog({
		autoOpen: false,
		height: 350,
		width: 300,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			Add: function () {
				$.ajax({
					type: "POST",
					url: __domain + __language_selected + '/category.' + _id + '-page-ajax-category.html?submit=add',
					//dataType: 'json',
					data: $('#menu_form').serialize(),
					success: function(request) {
						$('#window_menu_edit').dialog('destroy');
						location.reload(true);
					}
				});
			}
		}
	});
	/*
	if (_id) {
	// LOAD DATA
		$.ajax({
			type: "GET",
			url: __domain + 'entity.' + _id + '-page-ajax-category.html?action=get',
			dataType: 'json',
			success: function(request) {
			
			}
		});
	}
	*/
	//$("#window_edit").empty();
	//$("#" + _dialog).append('<iframe src="' + _url + '" width="100%" height="300px" frameborder="0"></iframe>')
	$("#window_menu_edit").dialog('open');
}

function window_menu_edit(_id) {
	$("#window_menu_edit").attr('title', (_id ? 'Update Menu' : 'Add Menu'));
	$("#window_menu_edit").dialog({
		autoOpen: false,
		height: 350,
		width: 300,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('destroy');
			},
			Save: function () {
				$.ajax({
					type: "POST",
					url: __domain + __language_selected + '/category.' + _id + '-page-ajax-category.html?submit=save',
					//dataType: 'json',
					data: $('#menu_form').serialize(),
					success: function(request) {
						$('#window_menu_edit').dialog('destroy');
						location.reload(true);
					}
				});
			}
		}
	});
	
	if (_id) {
	// LOAD DATA
		$.ajax({
			type: "GET",
			url: __domain + __language_selected + '/category.' + _id + '-page-ajax-category.html?submit=select',
			dataType: 'json',
			success: function(request) {
				entity_values_set('data', request);
			}
		});
	}

	$("#window_menu_edit").dialog('open');
}

function window_menu_delete(_id) {
	$("#window_menu_edit").attr('title', 'Delete Menu');
	$("#window_menu_edit").dialog({
		autoOpen: false,
		height: 350,
		width: 300,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('close');
			},
			Delete: function () {
				$.ajax({
					type: "POST",
					url: __domain + __language_selected + '/category.' + _id + '-page-ajax-category.html?submit=delete',
					success: function(request) {
						$('#window_menu_edit').dialog('destroy');
						location.reload(true);
					}
				});
			}
		}
	});
	
	if (_id) {
	// LOAD DATA
		$.ajax({
			type: "GET",
			url: __domain + __language_selected + '/category.' + _id + '-page-ajax-category.html?submit=select',
			dataType: 'json',
			success: function(request) {
				entity_values_set('data', request);
			}
		});
	}

	$("#window_menu_edit").dialog('open');
}

/*
 * MEDIA
 */

function media_entity_item(_dialog, _url) {
	$("#" + _dialog).dialog({
		autoOpen: false,
		height: 400,
		width: 600,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('close');
			}
		}
	});
	$("#" + _dialog).empty();
	$("#" + _dialog).append('<iframe src="' + _url + '" width="100%" height="300px" frameborder="0"></iframe>')
	$("#" + _dialog).dialog('open');
}

function entity_item(_dialog, _url) {
	$("#" + _dialog).dialog({
		autoOpen: false,
		height: 500,
		width: 930,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('close');
			}
		}
	});
	$("#" + _dialog).empty();
	$("#" + _dialog).append('<iframe src="' + _url + '" width="100%" height="400px" frameborder="0"></iframe>')
	$("#" + _dialog).dialog('open');
}

function entity_category(_dialog, _url) {
	$("#" + _dialog).dialog({
		autoOpen: false,
		height: 300,
		width: 500,
		modal: true,
		buttons: {
			Cancel: function() {
				$(this).dialog('close');
			}
		}
	});
	$("#" + _dialog).empty();
	$("#" + _dialog).append('<iframe src="' + _url + '" width="100%" height="400px" frameborder="0"></iframe>')
	$("#" + _dialog).dialog('open');
}

function entity_reference_assign(_field, _item, _domain, _type) {

}

function media_select_photo(_field, _item, _domain) {
	$("#" + _field).val(_item.path);
	$("#" + _field + "_preview").attr('src', _domain + _item.thumb_200);
}

function entity_reference(_item, _container, _field, _domain) {
	
	var _description = _item.description_short ? _item.description_short : _item.description;
	$('#' + _container).append(
	'<p style="width:104px; height:104px; padding: 2px; float:left; position:relative;">'
		+ '<input type="checkbox" name="' + _field + '[reference][]" value="' + _item.id + '" style="position:absolute; left:2px; bottom:4px;" checked="checked"/>'
		+ '<img src="' + _domain + _item.thumb_100 + '" align="left"/></p>');
}

function entity_entity(_item, _container, _field, _domain) {
	var _description = _item.description_short ? _item.description_short : _item.description;
	$('#' + _container).append(
	'<p style="width:104px; height:104px; padding: 2px; float:left; position:relative;">'
		+ '<input type="checkbox" name="' + _field + '[reference][]" value="' + _item.id + '" style="position:absolute; left:2px; bottom:4px;" checked="checked"/>'
		+ '<img src="' + _domain + _item.thumb_100 + '" align="left"/></p>');
}

/*
 * GOOGLE TRANSLATE
 */
function translate_word(_word, _source, _destination, _field) {
	google.language.translate(_word.replace(/(<([^>]+)>)/ig,""), _source, _destination, function(result) {
		if (result.translation) {
			$('#' + _field).val(result.translation);
		} else {
			alert('Empty Translation');
		}
	});
}

/*
 * MATH
 */

var _digiting = ".";
var _grouping = ",";
/**
 * Postavlja potrebne digit i group simbole za brojeve
 * @access public
 * @return void
 **/
function number_decode(str){
	str += '';
	var tmp_str = str;
	var found_digit = false;
	var digit = "";
	var num = "";
	for (i = tmp_str.length - 1; i >= 0; i--) {
		var _char = tmp_str.charAt(i);
		if (_char == _digiting || _char == _grouping) {
			// pogodak
			found_digit = true;
		} else if (!isNaN(_char) || _char=='-' || _char=='+') {
			if (found_digit) {
				num = _char + num;
			} else {
				digit = _char + digit;
			}
		}
	}
	//alert(digit);
	if (!found_digit) {
		return parseFloat(digit + _digiting + '00');
	} else {
		return parseFloat(num + _digiting + digit);
	}
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.toString().split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}
