// JavaScript Document
function ajax(params){
	if (params){
		p = eval(params);
		if (p.destroy){
			$("#dialog-box").dialog("destroy");
		}
		if (p.answer){
			if (!confirm(p.answer)){
				return false;
			}
		}
		if (!p.url){
			alert("URL for ajax request not setted");
			return false;
		}
		if (p.async == true){
			blockPage();
		}
		//cancel(p);
		p.success = handleResponse;
		p.error = handleError;
		$.ajax(p);
	}
}

function handleResponse(msg){
	if (msg){
		p = eval(msg);
		if (p){
			$.each(p, function(i, item){
					switch(item.action){
						case 'html':
								$("#"+item.id).html(item.value);
								break;
						case 'value':
								$("#"+item.id).val(item.value);
								break;
						case 'value':
								$("#"+item.id).attr(item.value, item.properties);
								break;
						case 'fill_select':
								if (typeof(item.value) == 'object' ) {
									$("#"+item.id).addOption(item.value, false);
								} else {
									$("#"+item.id).removeOption(/./);
								}
								break;
						case 'img_src':
								$("#"+item.id).attr("src", item.value);
								break;
						case 'clear':
								$("#"+item.id).html('');
								break;
						case 'clear_select':
								$("#"+item.id).removeOption(/./);
						case 'show':
								$("#"+item.id).show();
								break;
						case 'hide':
								$("#"+item.id).hide();
								break;
						case 'addClass':
								$("#"+item.id).addClass(item.value);
								break;
						case 'removeClass':
								$("#"+item.id).removeClass(item.value);
								break;
						case 'toggleClass':
								$("#"+item.id).toggleClass(item.value);
								break;
						case 'focus':
								$("#"+item.id).focus();
								break;
						case 'blur':
								$("#"+item.id).blur();
								break;
						case 'add':
								if (item.properties){
									prop = item.properties;
									if (item.id){
										parentObj = $("#" + item.id);
									} else {
										parentObj = $("body");
									}
									block = $("<div>");
									if (prop.id){
										block.attr('id', prop.id);
										//append_body += " id='" + prop.id + "' ";
									}
									if (prop.className){
										block.addClass(prop.className);
										//append_body += " class='"+ prop.className +"'";
									}
									//append_body += ">";
									if (prop.html){
										//append_body += prop.html;
										block.html(prop.html);
									}
									//append_body += "</div>";
									block.appendTo(parentObj);
								}
								break;
						case 'location':
								document.location.href = item.value;
								break;
						case 'effect':
								if (item.value == 'blur'){
					    			$("#"+item.id).blur();
					    		} else if (item.value == 'focus'){
					    			$("#"+item.id).focus();
					    		} else if (item.value == 'revert') {
					    			if ($("#"+item.id).attr('checked') == true){
					    				$("#"+item.id).attr('checked', false);
					    			} else {
						    			$("#"+item.id).attr('checked', true);
					    			}
					    		}
					    		break;
						case 'click' :
								$("#"+item.id).click(item.value);
								break;
						case 'virtual_click':
							/*
								//a_c = "<a href='javascript:;' onlcick='alert('asdasd!!!');ajax("+item.value+")'>link</a>";
								a = $(document.createElement("a"));
								//a.attr('')
								a.click(function(){
									ajax(item.value);
								});
								a.click();
								//a = $(a_c);
								//aler
								//a.click();
								//alert("asdasda");
								*/
								alert("Virtual click not supported");
								break;
						case 'dialog':
								$("#"+item.id).html(item.value);
								$("#"+item.id).show();
								prop = new Object;
								prop.buttons = new Object;
								$.each(item.properties.options, function(j, opt){
									
									if (j=='buttons'){
										$.each(opt, function(button_title, button_code){
											prop.buttons[button_title] = function (){eval(button_code);};
										});
									} else {
										prop[j] = opt;
									}
								});
								$("#"+item.id).dialog(prop);
								break;
						case 'callback':
								eval(item.target+"("+item.code+")");
								break;
						case 'resetForm':
								clearFormData(item.id);
								break;
						case 'ajax':
								//ajax(unescape(item.value));
								//alert("a");
								if (item.value){
									//alert("b");
									$("#dialog-box").dialog("destroy");
									p1 = item.value;
									p2 = eval(p1);
									p3 = unescape(p1);
									p4 = eval(p3);
									alert(p1.url);
									if (p1.answer){
										if (!confirm(p1.answer)){
											return false;
										}
									}
									if (!p1.url){
										alert("URL for ajax request not setted");
										return false;
									}
									if (p1.async == true){
										blockPage();
									}
									//cancel(p);
									p1.success = handleResponse;
									p1.error = handleError;
									$.ajax(p1);
								}
								break;
						default:
								break;
					}
		          });
		}
		
	}
	unblockPage();
}

function handleError(request, textStatus, errorThrown) {
	//alert(textStatus + "\n" + request.responseText);
	db = $("#dialog-box");
	db.attr("title", textStatus);
	db.html(request.responseText);
	db.show();
	db.dialog();
	unblockPage();
}


function ajax_form(formID, params){
	
	updateeditor();
	
	fp = getFormData(formID);

	if (params){
		p = eval(params);
		if (p.destroy){
			$("#dialog-box").dialog("destroy");
		}
		if (p.answer){
			if (!confirm(p.answer)){
				return false;
			}
		}
		if (!p.url){
			alert("URL for ajax request not setted");
			return false;
		}
		if (p.async == true){
			blockPage();
		}
		if (p.files){
			$.ajaxFileUpload
			(
				{
					url:p.url, 
					secureuri:false,
					fileElementId:formID,
					dataType: 'json',
					params: fp,
					data: fp,
					type: p.type,
					success: handleResponse,
					error:  handleError

				}
			)
		} else {
			n = fp.name.length;
			fps = '';
			for(i=0;i<n;i++){
				fps += '&' + fp.name[i] + '=' + fp.value[i];
			}

			$.ajax (
						{
							url:p.url, 
							secureuri:false,
							dataType: 'json',
							data: fps,
							type: 'POST',
							success: handleResponse,
							error:  handleError

						}
					);
		}
	}
}
/*	
function getFormData(formID){
	//parameter = new Object;
	parameter = '';
	a = $('#'+formID+' input:text');
	for (i = 0; i < a.length; i++){
		//parameter[a[i].name] = a[i].value;
		parameter += '&' + a[i].name + '=' + a[i].value;
		
	}

	a = $('#'+formID+' select');
	for (i = 0; i < a.length; i++){
		if (a[i].selectedIndex >= 0){
			val = a[i].options[a[i].selectedIndex].value;
		} else {
			val = 0;
		}
		parameter += '&' + a[i].name + '=' + val;
	}
	a = $('#'+formID+' input:checkbox:checked');
	for (i = 0; i < a.length; i++){
		parameter += '&' + a[i].name + '=' + a[i].value;
	}
	
	a = $('#'+formID+':radio:checked');
	for (i = 0; i < a.length; i++){
		//parameter[a[i].name] = a[i].value;
		parameter += '&' + a[i].name + '=' + a[i].value;
	}
	
	a = $('#'+formID+' textarea');
	for (i = 0; i < a.length; i++){
		//parameter [a[i].name] = a[i].value;
		parameter += '&' + a[i].name + '=' + a[i].value;
	}
	a = $('#'+formID+' input[type=hidden]');
	for (i = 0; i < a.length; i++){
		//parameter[a[i].name] = a[i].value;
		parameter += '&' + a[i].name + '=' + a[i].value;
	}

	a = $('#'+formID+' input:password');
	for (i = 0; i < a.length; i++){
		//parameter[a[i].name] = a[i].value;
		parameter += '&' + a[i].name + '=' + a[i].value;
	}
	alert(parameter);
	return parameter;
}*/
function getFormData(formID){
	//parameter = new Object;
	parameter = new Object();
	parameter.name = new Array();
	parameter.value = new Array();
	a = $('#'+formID+' input:text');
	num = 0;
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}

	a = $('#'+formID+' select');
	for (i = 0; i < a.length; i++){
		if (a[i].selectedIndex >= 0){
			val = a[i].options[a[i].selectedIndex].value;
		} else {
			val = 0;
		}
		parameter.name[num] = a[i].name;
		parameter.value[num] = val;
		num++;
	}
	a = $('#'+formID+' :checkbox[checked=true]');
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}
	a = $('#'+formID+' input[type=radio]:checked');
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}
	
	a = $('#'+formID+' textarea');
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}
	a = $('#'+formID+' input[type=hidden]');
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}

	a = $('#'+formID+' input:password');
	for (i = 0; i < a.length; i++){
		parameter.name[num] = a[i].name;
		parameter.value[num] = a[i].value;
		num++;
	}
	return parameter;
}
function clearFormData(formID){
	document.getElementById(formID).reset();
};

function updateeditor() {
	try{
		if (FCKeditorAPI) {
		    var textareas = $('textarea');
		    $.each(textareas, function () {
		        var idname = $(this).attr('id');
		        var editor = FCKeditorAPI.GetInstance(idname);
		        if (editor) { $(this).val(editor.GetData()) };
		    });
		}
	} catch(e){
	}
}
