// JavaScript Document
function ajax(params){
	if (params){
		p = eval(params);
		if (p.destroy){
			if ($("#dialog-box").attr("id")){
				$("#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 'clear':
								$("#"+item.id).html('');
								break;
						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 'append':
								$("#"+item.id).append(item.value);
								break;
						case 'remove':
								$("#"+item.id).remove();
								break;
						case 'after':
								$("#"+item.id).after(item.value);
								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':
								dialog_id = item.id;
								/*if ($("#" + dialog_id).attr("created") == true){
									
									if (item.properties.nodestroy){
										
									} else {
										$("#" + dialog_id).remove();
										$("#" + dialog_id).dialog("destroy");
										//$("#dialog-box").dialog("destroy");
									}
								}*/
								/*$(".dialog-box-class").each(function(d){
									alert($(this).attr("id"));
									$(this).dialog("destroy");
								});*/
								//$(".dialog-box-class").remove();
								/*each(function(d){
									alert($(this).attr("id"));
									$(this).dialog("destroy");
								});*/
								//dialog-boxes
								if (item.properties.nodestroy){
									
								} else {
									$("#dialog-box").dialog("destroy");
									//$(".dialog-box-class").dialog("destroy");
									
								}

								
								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 (){ajax(button_code);};
										});
									} else {
										prop[j] = opt;
									}
								});
								if (item.properties.buttons){
									$.each(item.properties.buttons, function(button_key, button_code){
										prop.buttons[button_code.title] = function (){
											if (button_code.cancel){
												$("#" + dialog_id).dialog("destroy");
											} else if (button_code.form_id){
												ajax_form(button_code.form_id, '(' +button_code.params + ')');
											} else {
												ajax('(' +button_code.params + ')');
											}
										};
									});
									
								}
								/*parentObj = $("body");
								dialog_block = $("<div id='" + dialog_id + "' class='dialog-box-class' style='display:none' created=true ></div>");
								dialog_block.appendTo(parentObj);*/
								$("#"+dialog_id).html(item.value);
								$("#"+dialog_id).show();
								$("#" + dialog_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");
	if (db.attr("id")){
		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){
			if ($("#dialog-box").attr("id")){
				$("#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 updateeditor() {
    var textareas = $('textarea');
    $.each(textareas, function () {
        var idname = $(this).attr('id');
        var editor = CKEDITOR.instances[idname];
        if (editor) $(this).val(editor.getData());
    });
}

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();
}

