/*
 *
 *	BM formCreator
 *		version 1.2
 *
 *
 */

$(document).ready(function(){
	formCreatorStart();

	$("#BMloading")
		.ajaxStart(function(){ ajaxStart(); /*jQuery.formSent=true;*/ })
		.ajaxComplete(function(){ ajaxEnd(); /*jQuery.formSent=false;*/ });

	// spam protection
	$('input.inputSPP').val('4C5RU42lij90SLV');
});


function ajaxStart() {
//	jQuery.formSent=true;
	$.blockUI({ message: '<img src="/misc/loadingAnimation.gif">',
		css: {
			top:  ($(window).height() - 13) /2 + 'px',
            left: ($(window).width() - 209) /2 + 'px',
			width: '209px',
			height: '13px',
			border: 'none',
			background: 'none'
		}
	});
}

function ajaxEnd() {
//	jQuery.formSent=false;
	$.unblockUI();
}


function formCreatorStart() {
	forms = document.forms;

	for ( i=0; i<forms.length; i++ ) {
		if ( jQuery.bmForms && jQuery.bmForms[f = $(forms[i]).attr('name')] ) {

			$(forms[f]).submit(function() {
				if ( jQuery.formSubmit($(this).attr('name')) ) {
					$(':file').remove();
					return true;
				}
				else
					return false;
			});

			for ( j=0; j<jQuery.bmForms[f].length; j++ ) {
				r = jQuery.bmForms[f][j].split(',');

				$(forms[f].elements[r[0]]).change(function() {
					jQuery.validateInput1( this );
				});
			}
		}
	}
}

jQuery.extend({

	formSent: false,
	formErrorBg: '#eeddcc',
	formInputBg: 'url(/misc/pics/bg_input.jpg)',

	formSubmit: function( form ) {
		if ( form == '[object Object]' )
			form = form.attr('name');

		if ( ! jQuery.formSent ) {
			( jQuery.bmForms[form] != '' )
				&& jQuery.validateForm(form, jQuery.bmForms[form]);

		}
		else {
			bmAlert(jQuery.formMessages.formprocess, 'error');
			return false;
		}

		return jQuery.formSent;
	},

	formMessages: {		// form, fileupload, validator
		formprocess: 'Az űrlap feldolgozás alatt! Kérem várjon!',
		notvalidform: 'A következő mezők helytelenül vannak kitöltve:',
		uploadsucces: 'File feltöltése sikerült!',
		uploaderror: 'Váratlan hiba lépett fel a feltöltés során, vagy a fájl mérete túl nagy!',
		filelimit: 'Több fájl nem tölthető fel!',
		badfilytype: 'Nem engedélyezett file tipus!',
		maxfilesize: 'A fájl mérete túl nagy!',
		nomorequota: 'Tárhelye betelt, a fájl nem tölhető fel!',
		fileexist: 'A fájl már fel lett töltve!',
		deleteconfirm: 'Biztos, hogy szeretné törölni?',
		deletecomplete: 'File törlése sikerült!',
		deleteerror: 'Váratlan hiba lépett fel a törlés során!'
	},

	insertToTMCE: function( img, name ) {
		tb_remove();
		tinyMCE.execCommand('mceInsertContent', false ,'<img src="'+img+'" title="'+ name +'" width="300" />');
	},

	insertToTMCE_link: function( file, name ) {
		tb_remove();
		tinyMCE.execCommand('mceInsertContent', false , '<a href="'+file+'">'+ name +'</a>');
	}


});


/*
 *
 *	BM validator
 *		version 1.2
 *
 *
 */

jQuery.extend({

	validateForm: function( form, inputs, ajax ) {
		var errorMessage = '';
		var f = document.forms[form];

		if ( f.elements['ONLY_AJAX_FORMSEND'] && !ajax) {
			jQuery.formSent=false;
			return false;
		}

		for ( i=0; i<inputs.length; i++ ) {
			t = inputs[i].split(',');
			field = f.elements[t[0]];

			if ( field.name != 'ONLY_AJAX_FORMSEND' && jQuery.validateInput(field, t[1]) ) {
				errorMessage += '<li><i>' + field.title + '</i></li>';
			}
		}

		if ( errorMessage != '' ) {
			bmAlert(jQuery.formMessages.notvalidform + '<ul>' + errorMessage + '</ul>', 'error');
			return false;
		}
		else if ( !ajax ) {
			//jQuery.event.trigger( "ajaxStart" );
			ajaxStart();
			f.submit();
			return true;
		}
		else
			return true;
	},

	validateInput: function( input, filters ) {
		var error   = false;
		filters = filters.split('');

		for ( j=0; j<filters.length; j++ ) {
			if ( error = jQuery.validatorRules( input, filters[j] ) )
				break;
		}

		( error )
			? $(input).css('background', jQuery.formErrorBg)
			: $(input).css('background', '');

		return error;
	},

	validateInput1: function( input ) {
		f = $(input.form).attr('name');

		if ( jQuery.bmForms[f] ) {
			for ( j=0; j<jQuery.bmForms[f].length; j++ ) {
				r = jQuery.bmForms[f][j].split(',');

				if ( r[0] == input.name ) {
					return jQuery.validateInput( input, r[1] );
				}
			}
		}
		else
			return true;
	},

	validatorRules: function( input, rule ) {
		switch( rule ) {
			case '+':		// isEmpty
				return Validator.isEmpty(input);
			case 'W':		// isAbsURL
				return !Validator.isAbsUrl(input);
			case 'N':		// isNumber
				return !Validator.isNumber(input);
			case 'E':		// isEmail
				return !Validator.isEmail(input);
			case 'L':		// isLoginName
				return !Validator.isLoginName(input);
			case 'T':		// test
				input = input.nodeType == 1 ? input.value : input;
				return input == '' || new RegExp(p).test(input);
		}
	}

});

var Validator = {
	isEmail : function(s) {
		s = s.nodeType == 1 ? s.value : s;
		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
	},

	isLoginName : function(s) {
		return this.test(s, '^[0-9a-zA-Z\.\_]+$');
	},

	isAbsUrl : function(s) {
		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
	},

	isEmpty : function(s) {
		var nl, i;

		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
			return true;

		if (s.type == 'checkbox' && !s.checked)
			return true;

		if (s.type == 'radio') {
			for (i=0, nl = s.form.elements; i<nl.length; i++) {
				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
					return false;
			}

			return true;
		}

		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
	},

	isNumber : function(s, d) {
		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
	},

	test : function(s, p) {
		s = s.nodeType == 1 ? s.value : s;

		return s == '' || new RegExp(p).test(s);
	}
};


/*
 *
 *	BM fileupload
 *		version 1.2
 *
 *
 */


$(document).ready(function(){
	$(':file').change(function() {
		jQuery.fileUploadOnChange(this);
	});
});

jQuery.extend({

	fileUploadOnChange: function( input ) {
		jQuery.fileUpload(input);
		$(input).replaceWith('<input type="file" name="'+$(input).attr('name')+'" onchange="jQuery.fileUploadOnChange(this);">');
	},

	fileUpload: function( input ) {
		//jQuery.event.trigger( "ajaxStart" );
		ajaxStart();

		id    = new Date().getTime();
		form  = $(input.form).attr('name');
		frame = jQuery.createFileUploadIframe(id, form, input.name);

		f = $(document.forms[form]);
		f.attr('target', frame);
		document.forms[form].submit();
		f.attr('target', '_self');
	},

	createFileUploadIframe: function( id, form, input ) {
		id = 'bmFileUploadIFrame' + id;
		div = document.createElement('DIV');
//		div.innerHTML = '<iframe style="display:none" src="about:blank" id="'+id+'" name="'+id+'" onload="$.updateFileUploadContent(\''+id+'\', \''+form+'\', \''+input+'\')"></iframe>';
		div.innerHTML = '<iframe style="display:none" src="about:blank" id="'+id+'" name="'+id+'"></iframe>';
		document.body.appendChild( div );
		$('#'+id).load( function() { $.updateFileUploadContent(id, form, input) });
		return id;
	},

	createFileUploadForm: function( id, i, frame ) {
		var formId = 'bmFileUploadForm' + id;
		var fileId = 'bmFileUploadFile' + id;
		var form  = $('<form  style="display:none" target="'+frame+'" action="" method="post" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"><input type="text" name="ajaxFormFunction"></form>');
		var newI  = $(i).clone();
		newI.appendTo(form);
		$(form).appendTo('body');

		return form;
	},

	updateFileUploadContent: function( frame, form, input ) {
		iname = form + input + 'list';
		var frame = document.getElementById(frame);
		var list  = document.getElementById(form + input + 'list');
		var input = $(document.forms[form].elements[input]);

		if ( frame.contentDocument )
            var content = frame.contentDocument.body;
        else if ( frame.contentWindow )
            var content = frame.contentWindow.document.body;

		if (content.innerHTML.substr(0,8) == '_|spFn|_') {
			switch ( content.innerHTML.substr(8,1) ) {
				case '0':
					cc = content.innerHTML.substr(9);
					$(list).append(cc);
					bmAlert(jQuery.formMessages.uploadsucces);
					break;
				case '1': bmAlert(jQuery.formMessages.uploaderror, 'error'); break;
				case '2': bmAlert(jQuery.formMessages.filelimit, 'error'); break;
				case '3': bmAlert(jQuery.formMessages.badfilytype, 'error'); break;
				case '4': bmAlert(jQuery.formMessages.maxfilesize, 'error'); break;
				case '5': bmAlert(jQuery.formMessages.fileexist, 'error'); break;
				case '9': bmAlert(jQuery.formMessages.nomorequota, 'error'); break;
			}
		}
		else
			bmAlert(jQuery.formMessages.uploaderror, 'error');

		input.attr('value', '');
		//jQuery.event.trigger( "ajaxComplete" );
		ajaxEnd();
	},

	deleteUploadFile: function( form, field, count, moduleID ) {
		if ( confirm(jQuery.formMessages.deleteconfirm) ) {
			//jQuery.event.trigger( "ajaxStart" );
			ajaxStart();
			$.post(document.URL, {field: field, count: count, ajaxFormFunction: form, moduleID: moduleID},
				function( data ) {
					if ( data == '' ) {
						$('#'+field+'-'+count).queue(function () {
					        $(this).fadeOut('slow');
					        $(this).dequeue();
						});
						$('#'+field+'-'+count).queue(function () {
					        $(this).remove();
					        $(this).dequeue();
						});
						bmAlert(jQuery.formMessages.deletecomplete);
					}
					else
						bmAlert(jQuery.formMessages.deleteerror, 'error');

					//jQuery.event.trigger( "ajaxComplete" );
					ajaxEnd();
				}
			);
		}
	},

	renameUploadFile: function ( fid ) {
		old_value = $('#gPic'+fid).html();
		$('.fuModifyButton').hide();

		text = '<input type="hidden" id="oldValueGallery'+fid+'" value="'+ old_value +'">';
		text += '<table><tr>';
		text += '	<td colspan="2"><input type="text" id="newValueGallery'+fid+'" value="'+ old_value +'"><td></tr><tr>';
		text += '	<td><input type="button" value="Mentés" onclick="$.renameUplaoadFileOK('+fid+', false)"></td>';
		text += '	<td><input type="button" value="Mégsem" onclick="$.renameUplaoadFileCANCEL('+fid+')"></td>';
		text += '</tr></table>';
		$('#gPic'+fid).html( text );
	},

	renameUplaoadFileOK: function ( id ) {
		ajaxStart();
		nValue = $('#newValueGallery'+id).attr('value');
		$.post(document.URL, {ajaxFunction: 'renameUploadFile', ajaxFile: 'modulok/module_gallery/ajax.php', id: id, value: nValue },
			function ( data ) {
				if ( data == 'ok' ) {
					$('#gPic'+id).html( nValue );
					bmAlert('Kép neve sikeresen módosítva!');
					$('.fuModifyButton').show();
				}
				ajaxEnd();
		});
	},




	renameUploadFile2: function ( filed, count ) {
		old_value = $('#gPic'+count).html();
		$('.fuModifyButton').hide();

		text = '<input type="hidden" id="oldValueGallery'+count+'" value="'+ old_value +'">';
		text += '<table><tr>';
		text += '	<td colspan="2"><input type="text" id="newValueGallery'+count+'" value="'+ old_value +'"><td></tr><tr>';
		text += '	<td><input type="button" value="Mentés" onclick="$.renameUplaoadFileOK2(\''+filed+'\', '+count+')"></td>';
		text += '	<td><input type="button" value="Mégsem" onclick="$.renameUplaoadFileCANCEL('+count+')"></td>';
		text += '</tr></table>';
		$('#gPic'+count).html( text );
	},

	renameUplaoadFileOK2: function ( field, count ) {
		ajaxStart();
		nValue = $('#newValueGallery'+count).attr('value');
		$.post(document.URL, {ajaxFunction: 'renameUploadFile2', ajaxFile: 'modulok/module_gallery/ajax.php', value: nValue, field: field, count: count },
			function ( data ) {
				if ( data == 'ok' ) {
					$('#gPic'+count).html( nValue );
					$('.fuModifyButton').show();
					bmAlert('Kép neve sikeresen módosítva!');
				}
				ajaxEnd();
		});
	},


	renameUploadFileD: function ( count ) {
		old_value = $('#gPic'+count).html();
		$('.fuModifyButton').hide();

		text = '<input type="hidden" id="oldValueGallery'+count+'" value="'+ old_value +'" style="float:left">';
		text += '<table><tr>';
		text += '	<td colspan="2"><input type="text" id="newValueGallery'+count+'" value="'+ old_value +'"><td>';
		text += '	<td><input type="button" value="Mentés" onclick="$.renameUplaoadFileOK('+count+')"></td>';
		text += '	<td><input type="button" value="Mégsem" onclick="$.renameUplaoadFileCANCEL('+count+')"></td>';
		text += '</tr></table>';
		$('#gPic'+count).html( text );
	},

	renameUplaoadFileCANCEL: function ( id ) {
		nValue = $('#oldValueGallery'+id).attr('value');
		$('.fuModifyButton').show();
		$('#gPic'+id).html( nValue );
	}

})
