/*
 * MEDIAOBJECT FUNCTIONS
 */

$.fn.YFmediaobjectListActivate = function(ref_class, ref_slug)
{
	var mytable = $().YFgetmediaobjectTableId(ref_class, ref_slug);

	$().YFinterfaceTableZebraRowsInit(mytable);
	$().YFinterfaceLightboxInit();
	$().YFinterfaceTableDragNDropInit({'module':'mediaobject','module_name':$().msg('mediaobjectreference'), 'table_class':'medialist'});

	$().YFmediaobjectBindIconSelector();

	if ($("#"+mytable).find('tr.noicon').length > 0) {
		$().YFmediaobjectBindNoIconSelector();
	}
}

$.fn.YFmediaobjectBindIconSelector = function() {
	$(".iconselector").unbind();
	$(".iconselector").click(function(){
		if($(this).parent().parent().parent().find('.profilepic_wrapper').html() != null) {
			var mediaobject_id = $(this).parent().attr("rel");
			var table = $(this).parent().parent();
		} else {
			var mediaobject_id = $(this).parent().parent().find('.metaeditor').data('mediaobject_id');
			var table = $(this).parent().parent().parent().parent();
		}

		var ref_vars 	=  $().YFmediaobjectListGetRelVals(table);
		var ref_class 	= ref_vars.ref_class;
		var ref_id 		= ref_vars.ref_id;
		var api_url 	= $().msg('uri_api')+$().msg('mediaobjectreference')+'/seticonbackground';

		$.post(api_url, {'mediaobjectreference[mediaobject_id]' : mediaobject_id,
		 				 'mediaobjectreference[ref_class]' : ref_class,
		 				 'mediaobjectreference[ref_id]' : ref_id,
						 'mediaobjectreference[field]' : 'is_icon' }, function(data){
			if (!data.errors){
				return(true);
			} else {
				alert('Could not save the icon');
			}},"json");
	});
}

$.fn.YFmediaobjectBindNoIconSelector = function() {
	$(".noiconselector").unbind();
	$(".noiconselector").click(function(){
		var table = $(this).parent().parent().parent().parent();
		var ref_vars =  $().YFmediaobjectListGetRelVals(table);
		var ref_class = ref_vars.ref_class;
		var ref_id = ref_vars.ref_id;
		
		var api_url = $().msg('uri_api')+$().msg('mediaobjectreference')+'/removeiconbackground';
		
		$.post(api_url, {'mediaobjectreference[ref_class]' : ref_class,
		 				 'mediaobjectreference[ref_id]' : ref_id,
						 'mediaobjectreference[field]' : 'is_icon' }, function(data){
			if (!data.errors){
				return(true);
			} else {
				alert('Could not unset the icon');
			}},"json");
	});
}

$.fn.YFmediaobjectDeleteReference = function(options) {
	var defaults = {
		title: '',
		row_id: false,
		ref_slug: false,
		ref_class: false
	};
	var opts = $.extend(defaults, options);
	
	var mediaobject_id	= $('#'+opts.row_id).find('.metaeditor').data('mediaobject_id');

	if (mediaobject_id == '' || mediaobject_id == undefined) {
		var mediaobject_id = $('#'+opts.row_id).attr('rel');
	} 
	console.log(mediaobject_id);
	var ref_slug = opts.ref_slug;
	var ref_class = opts.ref_class;

	if (!ref_slug || !ref_class) {
		return;
	}

	var ref_id = $().YFmediaobjectListGetRefId(ref_class, ref_slug);

	if (!ref_id) {
		return;
	}

	// give confirmation alert
	var yes=confirm($().msg('delete_reference_confirm')+" «" + opts.title + "»?");
	var offset = 2;
	if(yes){
		var uri = $().msg('uri_api')+$().msg('mediaobjectreference')+'/delete/';

		var table = $("#"+opts.row_id).parent();

		// decrease successful_uploads count to allow a new upload
		var swfu_obj_name = table.find(".swfu_obj_name");
		if (swfu_obj_name) {
			var swfu_obj = window[swfu_obj_name.html()];
			if (swfu_obj) {
				var stats = swfu_obj.getStats();
				stats.successful_uploads--;
				swfu_obj.setStats(stats);
			}
		}

		$(".even").removeClass('even');
		$.post(uri,{'mediaobjectreference[ref_class]':ref_class,'mediaobjectreference[ref_id]':ref_id,'mediaobjectreference[mediaobject_id]':mediaobject_id},function(json) { 
			$("#"+opts.row_id).effect("highlight", {color:"#d41111"}, 1000).slideUp().remove().YFinterfaceTableZebraRowsInit(table.id);
		});
        return true;
	} else {
        return false;
	}
}

$.fn.YFmediaobjectMetadataSave = function(mediaobject_id, ref_class, ref_slug, ref_id)
{
	var form = $("div#mediaobject"+mediaobject_id);
	var title 				= form.find("#mediaobject_title").val();
	var caption 			= form.find("#mediaobject_caption").val();
	var credit_name 		= form.find("#mediaobject_credit_name").val();
	var credit_uri 			= form.find("#mediaobject_credit_uri").val();
	var keywords 			= form.find("#mediaobject_keywords").val();
	var clickthrough_url 	= form.find("#mediaobject_clickthrough_url").val();
	if (clickthrough_url === undefined) { clickthrough_url = 0; }
	var no_download 		= form.find("#mediaobject_nodownload").is(':checked');
	if (no_download == false) { no_download = 0; } else { no_download = 1; }


	if (credit_name === undefined) { credit_name = ''; }
	if (credit_uri === undefined) { credit_uri = ''; } else if (credit_uri != '' && !$().isValidURL(credit_uri)) {

		alert($().msg('error_url_not_valid'));
	}
	// derrty hack
	var justification 		= $('input[name=mediaobject[justification]]:checked', form.find('.radiogroup')).val();
	if (justification === undefined) {
		justification = 'center';
	}
	
	console.log('ref class '+ref_class);
	console.log('ref id '+ref_id);
	
	form.parent().html('<img src="'+$().msg('url_loading_anim')+'">');

		$.post($().msg('uri_api')+$().msg('mediaobject_module')+'/update', { 'where':'mediaobject', 'action':'update','mediaobject[id]': mediaobject_id, 'mediaobject[title]': title, 'mediaobject[credit_name]': credit_name, 'mediaobject[credit_uri]': credit_uri, 'mediaobject[caption]': caption , 'mediaobject[no_download]': no_download , 'mediaobject[keywords]': keywords , 'mediaobject[clickthrough_url]': clickthrough_url , 'mediaobject[justification]': justification, 'mediaobject[ref_class]': ref_class, 'mediaobject[ref_id]': ref_id, 'mediaobject[redirect]': 0 }, function(data){
			console.log(data);
			// check for valid
			if (!data.errors) {
				var table = $().YFgetmediaobjectTable(ref_class, ref_slug);

				var mediarow_options = '';
				if (table.hasClass('no_embed_button')) {
					mediarow_options += '&embed_button=0';
				}
				if (table.hasClass('no_select_icon')) {
					mediarow_options += '&select_icon=0';
				}

				var ref_options_str = $().YFgetRefOptionsStr(ref_class, ref_slug, 1, ref_id);

				var row_url = $().msg('url_prefix') + '/'+$().msg('mediaobject_module')+'/'+$().msg('row')+'/?id='+data.values.id+ref_options_str+mediarow_options;
				$.get(row_url,function(data) {
						$("#mediaobject"+mediaobject_id).replaceWith(data).YFmediaobjectListActivate(ref_class, ref_slug);
					if (ref_id) {
						if($("#"+ref_class+"_id").get() == '') {
							$("input[name=action]").after('<input type="hidden" id="'+ref_class+'_id" name="'+ref_class+'[id]" value="'+ref_id+'">');
						}
					}
				});
			} else {
				$(data.errors).each(function(index){
					if (this.credit_uri !== undefined) {
						alert(this.credit_uri);
					} else {
						alert($().msg('could_not_save_media_metadata'));
					}
				});
				// load the editor again
				$().YFmediaobjectEditMetadata({ mediaobject_id : mediaobject_id, ref_class : ref_class, ref_slug : ref_slug, row_id : 'mediaobject'+mediaobject_id});
			}
		}, "json");
}

$.fn.YFgetmediaobjectTableId = function(ref_class, ref_slug)
{
		var mediaobject_table_id = $().YFgetmediaobjectTable(ref_class, ref_slug).attr('id');

		return mediaobject_table_id;
}

$.fn.YFgetmediaobjectTable = function(ref_class, ref_slug)
{
	// simplify slug to avaid errors
	var stripped_slug = jQuery().YFstripSlug(ref_slug);

	var mediaobject_table = $("#medialist"+ref_class+"_"+stripped_slug);
	
	if (mediaobject_table.length == 0) {
		mediaobject_table = $("#medialisticon"+ref_class+"_"+stripped_slug);
	}
	
	return mediaobject_table;
}

/**
 * Parse ref values from the main table's rel attribute
 */
$.fn.YFmediaobjectListGetRelVals = function(table)
{
	var ret = Object;

	var rel = table.attr('rel');
	var vars = rel.split(",");

	
	// get ref_class
	var pair = vars[0].split(":");
	ret['ref_class'] = pair[1];

	// get ref_slug
	var pair = vars[1].split(":");
	ret['ref_slug'] = pair[1];

	// get no_ref_obj
	var pair = vars[2].split(":");
	var val = pair[1];
	if (val == "1") {
		ret['no_ref_obj'] = 1;
	} else {
		ret['no_ref_obj'] = 0;
	}

	// get ref_id
	var pair = vars[3].split(":");
	if (pair.length < 2 || pair[1] == "") {
		ret['ref_id'] = null;
	} else {
		ret['ref_id'] = pair[1];
	}
	
	return ret;
}

$.fn.YfmediaobjectStoreRefId = function(ref_class, ref_slug, ref_id)
{
	var table = $().YFgetmediaobjectTable(ref_class, ref_slug);
	// only add it if it doesn't exist
	if (!$().YFmediaobjectListGetRefId(ref_class, ref_slug)) {
		var val = table.attr('rel');
		val += ref_id;
		table.attr('rel', val);
	}
}

$.fn.YFmediaobjectListGetRefId = function(ref_class, ref_slug)
{
	var values = $().YFmediaobjectListGetRelVals($().YFgetmediaobjectTable(ref_class, ref_slug));
	return values['ref_id'];
}	

$.fn.YFmediaobjectListNoRefObj = function(ref_class, ref_slug)
{
	var values = $().YFmediaobjectListGetRelVals($().YFgetmediaobjectTable(ref_class, ref_slug));
	return values['no_ref_obj'];
}

$.fn.YFmediaobjectGetList = function(ref_class, ref_slug)
{	
	var table = $().YFgetmediaobjectTable(ref_class, ref_slug);
	var stripped_slug = jQuery().YFstripSlug(ref_slug);
	var loader = $("div#medialistloader_"+ref_class+'_'+stripped_slug);
	var no_ref_obj = $().YFmediaobjectListNoRefObj(ref_class, ref_slug);
	var ref_id = $().YFmediaobjectListGetRefId(ref_class, ref_slug);

	var uri_admin = $().msg('uri_admin');

	if (!no_ref_obj && ref_id){
		table.hide();
		loader.show();
		
		var mediarow_options = '';
		
		if (table.hasClass('no_embed_button')) {
			mediarow_options += '&embed_button=0';
		}
		if (table.hasClass('no_select_icon')) {
			mediarow_options += '&select_icon=0';
		}
		if (table.hasClass('no_admin_view')) {
			mediarow_options += '&admin_view=0';
		}               
		if (table.hasClass('no_drag_to_order')) {
			mediarow_options += '&drag_to_order=0';
		}             
		if (table.hasClass('no_edit_button')) {
			mediarow_options += '&edit_button=0';
		}
		if (table.hasClass('no_metadata')) {
			mediarow_options += '&metadata=0';
		}
		
		if (table.hasClass('openweb_row')) {
			uri_admin = '/';
		}
		
		mediarow_options += '&embed_field='+table.find(".embed_field_data").text();
		mediarow_options += '&embed_size='+table.find(".embed_size_data").text();
		
		var markup_url = $().msg('url_prefix')+'/'+$().msg('mediaobject_module')+'/'+$().msg('row')+'/?ref_id='+ref_id+'&ref_class='+ref_class+mediarow_options;
		
		$.get(markup_url,function(markup) { 
			if (markup !== ''){
				if (table.find('tr.noicon').length > 0) {

					table.find('tr.noicon').before(markup);
					table.removeClass('hidden');
					table.slideDown().YFmediaobjectListActivate(ref_class, ref_slug);
				} else {
					table.removeClass('hidden');
					table.append(markup).slideDown().YFmediaobjectListActivate(ref_class, ref_slug);
				}
				loader.hide();
			} else {          
				loader.hide();
				table.hide();	
			}
		});
	} else {
		table.hide();
	}
}

$.fn.YFmediaobjectToggleAndEmbed = function(title, module_name, object_slug, ref_class, ref_slug, ref_id, button_id, textfield_id, embed_size, media_type)
{
	var button = $("#"+button_id);
	var previous_state = button.attr("class");
		
	if (media_type === undefined) { media_type = 'media'; }
	if (media_type == 'image') {
		str_list_info = $().msg('list_info_image');
		str_turn_visibility_on = $().msg('turn_visibility_on_image');
	} else if (media_type == 'audio') {
		str_list_info = $().msg('list_info_audio');
		str_turn_visibility_on = $().msg('turn_visibility_on_audio');
	}
	// give confirmation alert
	if (previous_state == 'on'){
		var field_name = window['str_embed_' + textfield_id] == undefined ? "" : " " + window['str_embed_' + textfield_id];
		var yes=confirm("«" + title + "» "+ $().msg('embed_info') + field_name + ". "+$().msg('embed_remember_save'));
	} else {
		var yes=confirm("«" + title + "» "+$().msg('list_info'));
	}
	
	if(yes){
		var uri = $().msg('uri_api')+module_name+'/toggle/?slug='+object_slug+'&ref_class='+ref_class+'&ref_id='+ref_id;
		$.getJSON(uri,function(json) { 
			if (previous_state == 'on'){
				button.text($().msg('turn_visibility_on'));
				button.attr("class", "off");
				if (embed_size) {
					var embed_string = object_slug+":"+embed_size;
				} else { // for audio
					var embed_string = object_slug;
				}
				$("#"+textfield_id).val($("#"+textfield_id).val() + "\n\n!"+embed_string+"!");
			} else {
				button.text($().msg('turn_visibility_off'));
				button.attr("class", "on");
			}
		});
        return true;
	} else {
        return false;
	}
}

$.fn.YFsetMediaSelectorLightBoxContent = function(ajax_url) {
	$.get(ajax_url, {}, function(data){ 
			$('#existingdialog').html(data);
		});
}

$.fn.YFMediaSelectLightBoxClose = function() {
	$('#existingdialog').dialog('close');
}


$.fn.YFhasMediaSelectorLightBox = false;

$.fn.YFspawnMediaSelectorLightBox = function(ajax_url) {
	if ($.fn.YFhasMediaSelectorLightBox) {
		$('#existingdialog').dialog('open');
		return;
	}

	$.fn.YFhasMediaSelectorLightBox = true;

	$.get(ajax_url, {}, function(data){ 
			$('#existingdialog').html(data);
			var buttons = {};

			buttons[$().msg('cancel')] = function() {
				$(this).dialog('close');
				$('.flashbuttons').show();
			};

			var dialog_params = {
			bgiframe: true,
			resizable: false,
			height:460,
			width: 840,
			modal: true,
			overlay: {
				backgroundColor: '#000',
				opacity: 0.5
				},
			buttons: buttons,
			beforeclose: function(){ $('.flashbuttons').show();},
			open: function(){ $('.flashbuttons').hide();}
			};
			$("#existingdialog").dialog(dialog_params);
		});
}

$.fn.YFmediaobjectEditMetadata = function(options) {
	var defaults = {
		mediaobject_id: false,
		mediaobject_slug: false,
		ref_class: false,
		ref_slug: false,
		row_id: false
	};
	var opts = $.extend(defaults, options);
	
	var ref_options_str = $().YFgetRefOptionsStr(opts.ref_class, opts.ref_slug, 0);
	
	var editor_url = $().msg('url_prefix')  + "/"+$().msg('mediaobject_module')+"/meta/?id="+opts.mediaobject_id+ref_options_str;
	
	$("#"+opts.row_id).html('<td class="inlinemediaobjecteditor" colspan="7"><img src="'+$().msg('url_loading_anim')+'"></td>');
	
	$.get(editor_url, function(data){
		$("#"+opts.row_id).html('<td class="inlinemediaobjecteditor" colspan="7">'+data+'</td>').YFinterfaceLightboxInit();
	});
	
	return false;
}

$.fn.YFaddExistingMediaObjToList = function(ref_class, ref_slug, ref_id, med_id) {
	$.fn.YFaddMediaObjToList(ref_class, ref_slug, ref_id, med_id, 1, 1);
}

$.fn.YFgetRefOptionsStr = function(ref_class, ref_slug, no_slug, ref_id) {
	var ret = "";

	var no_ref_obj = $().YFmediaobjectListNoRefObj(ref_class, ref_slug);
	
	if (no_ref_obj) {
		return ret;
	}

	if (!ref_id) {
		ref_id = $().YFmediaobjectListGetRefId(ref_class, ref_slug);		
	}

	ret = '&ref_class='+ref_class+'&ref_id='+ref_id;

	if (no_slug) {
		return ret;
	}
	
	return ret + '&ref_slug=' + ref_slug;
}

$.fn.YFaddMediaObjToList = function(ref_class, ref_slug, ref_id, med_id, create_reference, force_is_published) {
	$.get($().msg('url_prefix') + '/'+$().msg('mediaobject_module')+'/'+$().msg('row')+'/', {}, function(data){ 
			var mediarow_options = '';
			var table = $().YFgetmediaobjectTable(ref_class, ref_slug);
            
			if (table.hasClass('no_embed_button')) {
				mediarow_options += '&embed_button=0';
			}
			if (table.hasClass('no_select_icon')) {
				mediarow_options += '&select_icon=0';
			}
			if (table.hasClass('no_admin_view')) {
				mediarow_options += '&admin_view=0';
			}               
			if (table.hasClass('no_drag_to_order')) {
				mediarow_options += '&drag_to_order=0';
			}             
			if (table.hasClass('no_edit_button')) {
				mediarow_options += '&edit_button=0';
			}
			if (table.hasClass('no_metadata')) {
				mediarow_options += '&metadata=0';
			}

			var ref_options_str = $().YFgetRefOptionsStr(ref_class, ref_slug, 1, ref_id);

			var row_url = $().msg('url_prefix') + '/'+$().msg('mediaobject_module')+'/'+$().msg('row')+'/?id='+med_id+ref_options_str+mediarow_options;
			if (force_is_published) {
				// needed to allow _row.php to show "embed i body" instead of "Show in media list" for existing images
				row_url += "&force_is_published=1";
			}

			if (create_reference) {
				// create mediaobject reference for existing media objects
				row_url += "&create_reference=1";
			}

			var table = $().YFgetmediaobjectTable(ref_class, ref_slug);

			if (table.find('div.profilepic_wrapper').length > 0) {
				table.append('<div id="temp'+med_id+'" class="profilepic_wrapper temp"><img src="'+$().msg('url_loading_anim')+'"></div>');				
			} else if (table.find('tr.noicon').length > 0) {
				table.find('tr.noicon').before('<tr id="temp'+med_id+'" class="mediarow temprow"><td colspan="6"><img src="'+$().msg('url_loading_anim')+'"></td></tr>');
			} else {
				table.append('<tr id="temp'+med_id+'" class="mediarow temprow"><td colspan="6"><img src="'+$().msg('url_loading_anim')+'"></td></tr>');
			} 

			$.get(row_url,function(data) { 
					var my_media_id = $(data).find(".metaeditor").data("mediaobject_id");
					if (my_media_id == '' || my_media_id == undefined) {
						var my_media_id = $(data).attr('rel');
					}
					$("#temp"+my_media_id).replaceWith(data).YFmediaobjectListActivate(ref_class, ref_slug);
					var ref_id = $().YFmediaobjectListGetRefId(ref_class, ref_slug);
					if (ref_id) {
						if($("#"+ref_class+"_id").get() == '') {
							$("input[name=action]").after('<input type="hidden" id="'+ref_class+'_id" name="'+ref_class+'[id]" value="'+ref_id+'">');
						}
					}
					table.show();
				});
		});
}

$.fn.YFmediaobjectUploadSuccess = function(file, serverData) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setComplete();
		progress.setStatus($().msg('swfupload_completed'));
		progress.toggleCancel(false);

		var serverData = eval('(' + serverData + ')');

		if ($.fn.YFmediaobjectOnUploadSucccess) {
			$().YFmediaobjectOnUploadSucccess(serverData);
		}

		if(serverData.errors.media) {
			alert(serverData.errors.media);
		} else {
			$().YfmediaobjectStoreRefId(serverData.values.ref_class, serverData.values.ref_slug, serverData.values.ref_id);
			$().YFaddMediaObjToList(serverData.values.ref_class, serverData.values.ref_slug, serverData.values.ref_id, serverData.values.id);
		}
	} catch (ex) {
		this.debug(ex);
	}
}

$.fn.YFmediaobjectUpdateUploadSuccess = function(file, serverData) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setComplete();
		progress.setStatus($().msg('swfupload_completed'));
		progress.toggleCancel(false);

		var serverData = eval('(' + serverData + ')');

		if(serverData.errors) {
			alert(serverData.errors);
		} else {
			$("#file_size_kb_value").text(serverData.values.file_size_kb);
		}
	} catch (ex) {
		this.debug(ex);
	}
}

$.fn.YFmediaobjectFileQued = function(file) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		$('#fsUploadProgress').show();
		progress.setStatus($().msg('swfupload_pending'));
		progress.toggleCancel(true, this);

	} catch (ex) {
		this.debug(ex);
	}
}

// This event comes from the Queue Plugin
$.fn.YFmediaobjectQueueComplete = function(numFilesUploaded) {
	var status = document.getElementById("divStatus");
	status.innerHTML = numFilesUploaded + " fil" + (numFilesUploaded === 1 ? "" : "er") + " lastet opp.";
	$('#fsUploadProgress').hide();
}

$.fn.YFmediaobjectUploadComplete = function(file) {
	if (this.getStats().files_queued === 0) {
		document.getElementById(this.customSettings.cancelButtonId).disabled = true;
	}
}

$.fn.YFmediaobjectHideMetaeditor = function(options) {
	var defaults = {
		mediaobject_id: false,
		ref_class: false,
		ref_slug: false,
		ref_id: false
	};
	var opts = $.extend(defaults, options);
	
	var table = $().YFgetmediaobjectTable(opts.ref_class, opts.ref_slug);

	var mediarow_options = '';
	if (table.hasClass('no_embed_button')) {
		mediarow_options += '&embed_button=0';
	}
	if (table.hasClass('no_select_icon')) {
		mediarow_options += '&select_icon=0';
	}
	
	var ref_options_str = $().YFgetRefOptionsStr(opts.ref_class, opts.ref_slug, 1, opts.ref_id);

	var row_url = $().msg('url_prefix') + '/'+$().msg('mediaobject_module')+'/'+$().msg('row')+'/?id='+opts.mediaobject_id+ref_options_str+mediarow_options;

	$("#mediaobject"+opts.mediaobject_id).html('<td colspan="7"><img src="'+$().msg('url_loading_anim')+'"></td>');
	
	$.get(row_url, function(data){
		$("#mediaobject"+opts.mediaobject_id).replaceWith(data).YFinterfaceLightboxInit();
	});
	
	return false;
}

$.fn.YFstripSlug = function(slug)
{	
	if (slug == "") {
		return slug;
	}

	return slug.replace(/[^a-zA-Z 0-9]+/g,'');
}

$.fn.YFplayMP3 = function(file)
{
	document.getElementById('mp3player').SetVariable('player:jsUrl', file); 
	document.getElementById('mp3player').SetVariable('player:jsPlay', '');
}

$.fn.isValidURL = function(str)
{
	var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
	if (RegExp.test(str)){
		return true;
	} else {
		return false;
	}
}
