
function fileInputReproduce(elem,i,max_iterations,url_name,url_label,from_url,cover_label,delete_button,no_url) {
	if (from_url && ($(elem).attr('value').length == 0))
		return false;

	if (i < max_iterations) {
		i++;
		
		var input = $(elem);
		var input_name_parts = input.attr('name').split('__');
		var input_id_parts = input.attr('id').split('__');
		
		var name = input_name_parts[0] + '__' + i + ']';
		var id = input_id_parts[0] + '__' + i;
		var class = $(input).attr('class'); 
		delete_button1 = delete_button.replace(/\|/g,'"');
		fileInputText(elem);
		
		var clone = '<li><span class="file_input_container"><input type="text" name="cover" class="input_cover" value=""/><input type=\"button\" name="cover_button" class="input_cover_button" value="'+cover_label+'"/><input type="file" name="'+name+'" value="" id="'+id+'" onchange="fileInputReproduce(this,'+i+','+max_iterations+',\''+url_name+'\',\''+url_label+'\',0,\''+cover_label+'\',\''+delete_button+'\',\''+no_url+'\')" class="'+class+'" /></span>';
		
		if (!no_url)
			clone += '<label class="file_label">'+url_label+'</label><input type="text" class="file_url" name="urls['+url_name+']['+i+']" value="" id="'+id+'" onchange="fileInputReproduce(this,'+i+','+max_iterations+',\''+url_name+'\',\''+url_label+'\',1,\''+cover_label+'\',\''+delete_button+'\')"  />';
		
		clone += '<span onclick="multipleRemoveInput(this)" class="file_remove">'+delete_button1+'</span><div class="clear"></div></li>';
		$(elem).parent().parent().after(clone);
	}
}

function checkEmpty(elem,multiple,hidden_elem_id,run) {
	if (!run) {
		var hidden_elem_id = elem.id.replace('_dummy','');
		var elem_id = $(elem).attr('id');
		setTimeout("checkEmpty('"+elem_id+"','"+multiple+"','"+hidden_elem_id+"',1)",300);
	}
	else {
		var hidden_elem = $('#'+hidden_elem_id);
		var elem = $('#'+elem);
		var elem_value = $(elem).attr('value');
		
		if (multiple.length == 0) {
			if (isNaN(parseInt($(hidden_elem).attr('value')))) {
				$(hidden_elem).attr('value',elem_value);
			}
			else if ($(hidden_elem).attr('value').length == 0) {
				$(hidden_elem).attr('value','');
			}
		}
		else {
			var values = $(elem).attr('value').split(',');
			var hidden_values = $(hidden_elem).attr('value').replace("array:","");
			var h_values = hidden_values.split('|||');
			var new_values = new Array();
			
			for (i in h_values) {
				var h_parts = h_values[i].split('|');
				var h_id = h_parts[0];
				var h_value = h_parts[1];
				
				for (j in values) {
					var v = jQuery.trim(values[j]);
					if (v == h_value && h_value.length > 0) {
						new_values[j] = h_id + '|' + h_value;
					}
				}
			}
			if (new_values.length > 0) {
				var new_string = 'array:' + new_values.join('|||');
				$(hidden_elem).attr('value',new_string);
			}
			else {
				$(hidden_elem).attr('value','');
			}
		}
	}
}

function saveForm(elem,refresh_elem,refresh_query) {
	var query = '';
	$("#edit_box").fadeOut('slow');
	$(elem).parents('form').eq(0).find(':input').each(function (i,input) {
		if ($(input).attr('type') == 'checkbox') {
			if ($(input).is(':checked')) {
				query += $(input).attr('name') + '=' + urlencode($(input).attr('value')) + '&';
			}
		}
		else {
			query += $(input).attr('name') + '=' + urlencode($(input).attr('value')) + '&';
		}
	});
	ajaxSave(query,'ajax.form.php');
	setTimeout("ajaxGetPage('"+refresh_query+"','"+refresh_elem+"')",400);
}

function formCancel(url,elem) {
	var is_popup = $(elem).parents('#edit_box').length;
	
	if (is_popup > 0) {
		$(elem).parents('#edit_box').fadeOut('slow');
	}
	else {
		ajaxGetPage('index.php?bypass=1&current_url='+url,'content');
	}
}

function formDeleteTemp(elem,filename) {
	if (!confirm('Are you sure you want to delete this?')) 
		return false;

	$(elem).parents('li').eq(0).remove();
	
	if (filename) {
		ajaxDeleteFile(filename);
	}
}

function formDeleteUrl(elem,table,id) {
	if (!confirm('Are you sure you want to delete this?')) 
		return false;

	$(elem).parents('li').eq(0).remove();
	
	ajaxDelete(table,id);
}

function formDeleteFile(elem,table,id,filename,dir) {
	if (!confirm('Are you sure you want to delete this?')) 
		return false;

	$(elem).parents('li').eq(0).remove();
	
	ajaxDelete(table,id,false,false,filename,dir);
}

function prepend(elem,text) {
	var value = $(elem).attr('value').replace(text,'');
	$(elem).attr('value',text + value);
}

function defaultText(elem,text) {
	if ($(elem).attr('value') == text) {
		$(elem).attr('value','');
	}
	else if ($(elem).attr('value') == '') {
		$(elem).attr('value',text);
	}
}

var new_multiple_i = 1;
function multipleNewInput(elem,is_colorpicker,elem_id,in_grid) {
	if (!in_grid) {
		var parent = $(elem).parents('ul');
		var add_elem = $(parent).children('.multiple_add');
	}
	else {
		var parent = $(elem).parents('.multiple_add').siblings('table');
		var add_elem = $(parent).find('tr:hidden');
	}
	
	if (is_colorpicker) {
		var html = $(parent).children('li:hidden').html();
		if (html) {
			var numbers = html.match(/[\d\.]+/g);
			if (numbers) {
				var rand = Math.floor(Math.random()*999);
				for (i in numbers) {
					if (html.search(numbers[i])) {
						html = html.replace(numbers[i],rand);
					}
				}
				
				$('<li style="display:none;"></li>').insertBefore(add_elem).html(html).show('slow');
				
				$("#"+elem_id+rand).ColorPicker({
					onChange: function (hsb, hex, rgb) {
						$('#'+elem_id+rand+'_color').css('backgroundColor', '#' + hex);
						$('#'+elem_id+rand).attr("value",'#' + hex);
					}
				});
			}
		}
	}
	else {
		if (!in_grid) {
			var clone = $(parent).children('li:hidden').clone();
			var html = $(clone).html();
			var numbers = html.match(/[\d\.]+/g);
			if (numbers.length > 0) {
				var new_number = parseInt(numbers[0]) + new_multiple_i;
				html = html.replace(new RegExp(numbers[0], 'g'),new_number);
				$(clone).html(html);
			}
			
			$(clone).show('slow');
			$(clone).insertBefore(add_elem);
		}
		else {
			var clone = $(parent).find('tr:hidden').clone();
			var html = $(clone).html();
			var numbers = html.match(/[\d\.]+/g);
			if (numbers.length > 0) {
				var new_number = parseInt(numbers[0]) + new_multiple_i;
				html = html.replace(new RegExp(numbers[0], 'g'),new_number);
				$(clone).html(html);
			}
			
			$(clone).css('display','');
			$(clone).insertBefore(add_elem);
			
			if (grid_totals) {
				for (input_name in grid_totals) {
					clearInterval(intervals['total_'+input_name]);
					formGridTotal(input_name);
				}
			}
			if (operations) {
				for (id in operations) {
					operation(operations[id]['operation'],operations[id]['variable_names'],operations[id]['form_name'],operations[id]['id'],new_number,operations[id]['grid_input']);
				}
			}
			
			new_multiple_i++;
		}
	}
}

function multipleRemoveInput(elem,in_grid) {
	if (!in_grid) {
		if ($(elem).parent().siblings(':visible:not(.multiple_add)').length > 0) {
			$(elem).parent().hide('slow',function(){
				$(elem).parent().remove();
			});
		}
		else {
			$(elem).parent().find('input:not(:submit,:button)').each(function() {
				$(this).attr('value','');
				$(this).attr('checked','');
			});
			$(elem).parent().find('select').each(function() {
				$(this).children('option:first').attr('selected','selected');	
			});
		}
	}
	else {
		if ($(elem).parents('table').find('tr:visible').length > 0) {
			$(elem).parents('tr').hide('slow',function(){
				$(elem).parents('tr').remove();
			});
		}
		else {
			$(elem).parents('tr').find('input:not(:submit,:button)').each(function() {
				$(this).attr('value','');
				$(this).attr('checked','');
			});
			$(elem).parents('tr').find('select').each(function() {
				$(this).children('option:first').attr('selected','selected');	
			});
		}
	}
}

function fileInputText(elem) {
	var val = $(elem).val();
	$(elem).parent().children('.input_cover').attr('value',val);
}

var grid_totals = new Array();
function formGridTotal(input_name) {
	var inputs = new Array();
	$('#total_'+input_name).parents('table').find('input').each(function(i) {
		var id = $(this).attr('id');
		if (id.search(input_name) > -1) {
			inputs[i] = id;
		}
	});
	
	if (inputs.length > 0) { 
		grid_totals[input_name] = input_name;
		intervals['total_'+input_name] = setInterval(function() {
			var total = 0;
			for (j in inputs) {
				var a = ($('#'+inputs[j]).attr('value') > 0) ? parseFloat($('#'+inputs[j]).attr('value')) : 0;
				total += a;
			}
			$('#total_'+input_name).html(total.toFixed(2));
		},200);
	}
}

var passive_values = new Array();
function getPassiveValue(url,primary_id,get_id) {
	intervals[primary_id] = setInterval(function() {
		if ($('#'+primary_id).length > 0) {
			var value = $('#'+get_id).attr('value');
			if (value > 0 && value != passive_values[primary_id]) {
				ajaxGetPage(url+'&get_id='+value,primary_id,0,0,1);
				passive_values[primary_id] = value;
			}
		}
	},200);
}

// functions that can be used in the $jscript argument
var operations = new Array();
function operation(operation,variable_names,form_name,id,j,grid_input) {
	var primary_id = (j > 0) ? form_name+'_'+id+'_'+j+'_'+grid_input : form_name+'_'+id;
	intervals[primary_id] = setInterval(function() {
		var variables = new Array();
		for (name in variable_names) {
			if (j > 0)
				variables[name] = $('#'+form_name+'_'+id+'_'+j+'_'+name).attr('value');
			else
				variables[name] = $('#'+form_name+'_'+name).attr('value');
		}
		
		var value = eval(operation);
		$('#'+primary_id).attr("value",value.toFixed(2));
		
		operations[primary_id] = new Array();
		operations[primary_id]['operation'] = operation;
		operations[primary_id]['primary_id'] = primary_id;
		operations[primary_id]['variable_names'] = variable_names;
		operations[primary_id]['form_name'] = form_name;
		operations[primary_id]['id'] = id;
		operations[primary_id]['j'] = j;
		operations[primary_id]['grid_input'] = grid_input;
	},200);
}

function getValue(variable_names,primary_id) {
	intervals[primary_id] = setInterval(function() {
		for (name in variable_names) {
			var var_id = name;
		}

		if (var_id) {
			var elem = $('#'+var_id);
			var value = ($('#'+var_id).attr('nodeName') == 'INPUT' || $('#'+var_id).attr('nodeName') == 'SELECT') ? $(elem).attr('value') : $(elem).html();
			$('#'+primary_id).attr('value',value);
		}
	},200);
}
/*
function createRecord(url,is_tab,f_id_field,f_id,target_elem_id,record_id) {
	if (!target_elem_id) target_elem_id = 'content';
	ajaxGetPage('index.php?action=form&is_tab=1&current_url='+url+'&fill_elems['+f_id_field+']='+f_id,target_elem_id);
}
*/
function displayIf(variable_names,primary_id,desired_value,form_name) {
	intervals[primary_id] = setInterval(function() {
		for (name in variable_names) {
			var var_id = name;
		}
		if (var_id) {
			var primary = $('#'+primary_id).parents('li');
			var type = $('#'+form_name+'_'+var_id).attr('type');
			var elem = (type == 'radio') ? $('#'+form_name+'_'+var_id).parent().children('input:checked') : $('#'+form_name+'_'+var_id);
			
			var actual_value = ($(elem).attr('nodeName') == 'INPUT' || $(elem).attr('nodeName') == 'SELECT') ? $(elem).attr('value') : $(elem).html();
			if (actual_value)
				actual_value = actual_value.replace('"','');
				
			if (actual_value != desired_value) {
				if ($(primary).is(':visible'))
					$(primary).css('display','none');
			}
			else {
				if ($(primary).is(':hidden'))
					$(primary).css('display','');
			}
		}
	},200);
}
