
/*
	desc:
		Media scripts (photo gallery, video)
	note: 
		"MEDIA_TYPE" - globaly set var (defined in html templates header)
*/

// alert("Media scripts connected!");
// var PATH_TO_UPLOADER = "http://upload.bikerspublic.com/uploader.php";	// NOTE: disabled now

//-------------
// desc:
//		Common
//-------------
// This function is being called after the ajax changes happened
function action_on_load()
{	
	$('#act_completed').show().fadeOut(5000, function(){
		$('#act_completed').parent().hide();
	});
}

// Shows "alert" message
function show_message(el_id)
{
	$('#'+el_id).show();
	$('#'+el_id).fadeOut(5000);
}

//--------------
// desc:
// 		Main (first) media page
//--------------
// Actions over media
function run_action(set_val, mediaId)
{
	$("#select_action").val(set_val);
	var theName = $("#select_media").attr('name');
	$("#select_media").attr('name', theName+mediaId);
	$("#mediaForm")[0].onsubmit();
}	

// Confirm before deleting media
function select_delete_act(mediaId)
{
	theMediaId = mediaId;
	myconfirm(get_title('deleteEls'), get_body('deleteEls'), function()
	{
		run_action('delete_media', theMediaId);
	});
	return false;
}

// Set media limited by selected tag
function Tag_limit(El, pre_set_tags)
{
	var tag = "";
	if(pre_set_tags)
		tag = pre_set_tags;
	else
		tag = $(El).html();
	$('#_tag_limit').val(tag);
	$('#duplicate-filter').html('');
	$('#current_page').val('');
	$('#quant_on_page').val('');
	$('#mediaForm')[0].onsubmit();
}

// Marks current tag
function tag_mark(tag)
{
	if(!tag.length)
		tag = "%21ALL_TAGS%21";
	var as = $("#tag_place a");
	var el;
	as.each(function(i){
		el = $(as[i]);
		el.removeClass('red');
		if (tag == el.attr('tag_name'))
			el.addClass('red');
	});
}

/*
// TODO: activate this function
function control_checkboxes()
{
	control_checkboxes.set = false;
	
	$('.checks').attr('selected')
}
*/

//-----------
// desc:
// 		Upload page
//-----------
// Submit form
function formSubmit()
{	
	if(!$("#selected_files").html().length)
	{
		show_message('upl_message_empty_form');
		return false;
	}
	$(".hide_after_start").hide();
	//$('.media_upl_status').remove(); 	// hide the delete button near
	loadInfo();		// gets ids of loading media for uploader progress bar
	$('#Indicator').show();
	$("#load_media").submit();
	return false;
}

// Set unic id for every load field (need to uploading_progress function)
// NOTE: disabled now
function setLoadId(first)
{
	var d = new Date;
	var Id = d.getTime();
	if(first) {
		$("#uplId_0").val(Id);
	}	
	else return Id;	
}

// Get unic load Id (for progress meter)
function getLoadId()
{
	var Id;	
	var Str = "";		
	for(i = 0; i < addLoadFld.Id; i++)
	{f
		if($("#uplId_"+i).length == 1)
		{				
			if($("#uplMedia_"+i).val().length > 0) {
				Str += "lid["+i+"]="+$("#uplId_"+i).val()+"&";
			}
		}	
	}
	Str = Str.substring(0, Str.length-1);
	return Str;	
}

  
/*
TODO: disabled now
   // Shows progress bar
   function progress_bar(percent)
   {
   	$("#mediaIndicator").html(percent);
     	$("#Indicator_line").css("width", percent*2);  
   } 
   */
      
// Adds load field
function addLoadFld()
{
	if(!testFileExt("uplMedia_"+addLoadFld.Id))		// NOTE: unkomment this to quick test extension of file
	{
		show_message('upl_message_extension_err');
		return;
	}
	var num = ++addLoadFld.Id;						// id for uploading fields
	$('#load_place > *').hide();					// hide input fields
	
	// places selected file to filelist
	var tpl = $('#selected_file_tpl').html();
	tpl = macros_set(tpl, 'id', num-1);
	tpl = macros_set(tpl, 'selected_file', $('#uplMedia_'+(num-1)).val());
	$('#selected_files').append(tpl);
	makeButtonActive('_start_media_load_button');
	if(MEDIA_TYPE == "video" || MEDIA_TYPE == "photo_archive")
		return;
	else	
		tpl = macros_set(tpl, 'media_style', '');
	// creates new load field
	tpl = $('#load_field_tpl').html();
	tpl = macros_set(tpl, 'id', num);
	tpl = macros_set(tpl, 'load_id', setLoadId());
	$("#load_place").append(tpl);
}

// Test selected file extension
function testFileExt(inpId)
{
	var formats = get_valid_formats(MEDIA_TYPE);
	if (formats.length == 0)
		return true; // logic error if html was render without formats
	// get extension
	var ext = $('#'+inpId).val();
	var pos = ext.lastIndexOf(".");
	if (pos == -1)
		return false;
	ext = ext.substr(pos+1).toLowerCase();
	return formats.in_array(ext);
}

// in_array() function, as in PHP
Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
 	}
	return false;
}

//return array of valid formats for upload
function get_valid_formats(cont_type)
{
	var tmp = null;
	switch (cont_type)
	{
		case "photo_archive":
			return new Array("rar", "zip");
		case "photo":
			if (!upload_photo_formats)	
				return new Array();
			tmp = upload_photo_formats;
			break;
		case "video":
			if (!upload_video_formats)	
				return new Array();
			tmp = upload_video_formats;
			break;
	}
	if (tmp)
	{
		tmp = tmp.split(",");
		return trim(tmp);
	}
	return new Array();
}

// Macros set
function macros_set(str, name, val)
{
	var macros_prefix = "%";
	var re = new RegExp('%'+name, 'g');
	return str.replace(re, val);
}
		
// Deletes load field
function delLoadFld(el)
{	
	if(Fld = $("#upl_"+el)) 
		Fld.remove();
	$("#sel_file_"+el).remove();
	if(MEDIA_TYPE == 'video' || MEDIA_TYPE == "photo_archive")
		$(".uplFld").show();
	/*
		TODO: finish this
//		var regx = / /ig;	
	if( regx.test($('#selected_files').html() )
		makeButtonUnactive('_start_media_load_button');	
	*/	
}
		
// Shows load info while photoes are loading
function loadInfo()
{
//	$("#load_media").hide();
	$("#Indicator").show();
	$("#selected_files a").removeAttr("onclick").click( function() {return false;} );
}

// First load of the page
function iframeFirstLoad()
{
	iframeAct.load = true;
	if($("#uplMedia_0").val().length > 0) {
		addLoadFld();
	}
}

// Actions after server return response (photoes being loaded)
function iframeAct(if_all_error)
{
	//$('#Indicator').fadeTo(500, 0);		// gif-progress bar hide
	$('#Indicator').hide();		// gif-progress bar hide
	if(iframeAct.if_all_error)
		return;
	try
	{
		if(!if_all_error)
		{
			var output = window.frames['output'].document.body.innerHTML;
			var res = output.split(',');
			showPostLoadStatus(res);
		}
		else
		{
			iframeAct.if_all_error = true;
			showPostLoadStatus();
		}
	}
	catch(err)
	{
		showPostLoadStatus();
	}	
}

// Shows uploading status after it finished
// result is string for iframe (splited by comma `,` )
function showPostLoadStatus(result)
{
	var ok_load = [];
	var res = [];
	if(result)
		res = result;
	// Set status message to each uploaded file						 		
	for(i = j = 0; i < addLoadFld.Id; i++)
	{
		if($('#mediaLoading_'+i).length)
		{
			if(/^[\d]+:.+$/.test(res[j]))
			{
				$('#mediaLoading_'+i).html( $("#loaded_ico").html() );
				ok_load[j] = res[j];
			}
			else
			{
				var Err = $('#'+res[j]).html();
				if(Err == null)	Err = $('#err_wasnotload').html();
				$('#mediaLoadingErr_'+i).html(Err);
			}
			j++;
		}
	}
	// Post loaded links
	if(ok_load.length)
		$(".upload_ok").show();
	else
		$(".try_load_again").show();
	
}

// Initialise load field UID
$(document).ready(function() {
	setLoadId(true);
	addLoadFld.Id = 0;
});	

//----------------
// desc:
// 		View full size page
//----------------

// Shows edit form
function startEdit(pos)
{
	pos = (!pos) ? "" : "-"+pos; 
	$(".info-block"+pos+" .view").hide();	
	$(".info-block"+pos+" .edit").show();
}

// Hides edit form
function cancelEdit(pos)
{
	pos = (!pos) ? "" : "-"+pos; 
	$(".info-block"+pos+" .view").show();	
	$(".info-block"+pos+" .edit").hide();
}

function showPhotoInfo(photoId)
{
	 $("#photo_"+photoId).fadeIn(500);
}
function hidePhotoInfo(photoId)
{
	$("#photo_"+photoId).fadeOut(500);
}

function makeButtonUnactive(el)
{
	if(typeof(el) == 'object') el = $(el);
	else el = $('#'+el);
	$(el).attr('type','button');
	$(el).attr('class', 'gray_button');
	$(el).attr('href', saveAttr( $(el).attr('href') ));
	$(el).attr('onclick', saveAttr( $(el).attr('onclick') )); 
	$(el).css('opacity', 0.5); 
	$(el).css('cursor', 'default'); 
	function saveAttr(attr)
	{
		attr = "javascript:void(0);/*"+attr+"*/";
		return attr;
	}
}
function makeButtonActive(el)
{
	if(typeof(el) == 'object') el = $(el);
	else el = $('#'+el);
	$(el).attr('class', 'green_button');
	$(el).attr('onclick', returnAttr( $(el).attr('onclick') ));
	$(el).attr('href', returnAttr( $(el).attr('href') )); 
	$(el).css('opacity', 1); 
	$(el).css('cursor', 'pointer');
	function returnAttr(attr)
	{
		var regx = /\/\*(.*?)\*\//ig;
		if(regx.test(attr))
			return RegExp.$1;
		return "";
	}
}

function upload_privacy()
{
	$('#privacy_selector').find('li').hover(
		function() { $(this).addClass('over'); },
		function() { $(this).removeClass('over'); }
	).click(function(){
		var el = $(this);
		var hint = el.find('img').attr('hint');
		$('#_privacy_control').val(hint);
		el.siblings().removeClass('sel');
		el.addClass('sel');
		return false;
	});
} 
