// http://javascriptcompressor.com/
//Common

function $(id)  
{
	return (document.getElementById(id) ? document.getElementById(id) : false);  
}

function element_exists(id)
{
	return document.getElementById(id) != null ? true : false;
}

//TextArea resizing

function expand_textarea(id)
{
    var textarea = $(id);
    textarea.style.height = '400px';
}

function rights_overview(link_container, container)
{
    var link = $(link_container);
	var container = $(container);
    link.className = "field_hide";
	container.className = "field_show";
}

function trim(string)
{
    return string.replace(/^\s+|\s+$/g, '');
}

function enable_password_fields(id1, id2)
{
    var field1 = $(id1);
    var field2 = $(id2);
	//var icon = $("password_changer");
    field1.className = "";
    field2.className = "";
	//icon.className = "field_hide";
    field1.disabled = "";
    field2.disabled = "";
}

function select_developer_type(id1, id2)
{
    var field1 = $(id1);
    var field2 = $(id2);
    field1.className = "field_hide";
    field2.className = "field_show";
    set_focus(id2);
}

function select_file_source(id1, id2)
{
    var field1 = $(id1);
    var field2 = $(id2);
    field1.className = "field_hide";
    field2.className = "field_show";
	field1.value = "";
	field2.value = "";
    set_focus(id2);
}

function select_update_source(id1_active, id2, id3)
{
    var field1 = $(id1_active);
    var field2 = $(id2);
	var field3 = $(id3);
    field1.className = "field_show";
    field2.className = "field_hide";
	field3.className = "field_hide";
    set_focus(id1_active);
}

function set_focus(id)
{
    var field = $(id);
    field.focus();
}

/* editor */

function count_characters(id_field, id_label)
{
    var field = $(id_field);
    var label = $(id_label);
    label.innerHTML = field.value.length;
}

function compare_lengths(id_field1, id_field2, id_label)
{
    var field1 = $(id_field1);
    var field2 = $(id_field2);
    var label = $(id_label);
    var length1 = field1.value.length;
    var length2 = field2.value.length;
    var margin = 10;

    if(((length2 - length1) > margin) || (length1 > 0 && length2 == 0) || (length1 == 0 && length2 == 0))
    {
        label.className = "counter_alert";
        field2.className = "to_alert";
    }
    else
    {
        label.className = "counter";
        field2.className = "to";
    }
	
	label.innerHTML = field2.value.length;
}


function check_lengths(string_translated, string_original)
{
	//check if translated string is not too long when compared to the original
	var margin = 10;
	var length_translated = string_translated.length;
	var length_original = string_original.length;
	var difference = length_translated - length_original;
	//alert(difference);
	
	if(length_translated > 0)
	{
		return difference > margin ? false : true;
	}
	else
	{
		return false;
	}
	
}

function recount(id_field)
{
	var field_org = $('translate_from[' + id_field + ']');
	var field_edit = $('translate_to[' + id_field + ']');
	var field_counter = $('edit_count[' + id_field + ']');
	
	if(check_lengths(field_edit.value, field_org.value) == true)
	{
		field_edit.className = 'to';
		field_counter.className = 'counter';
	}
	else
	{
		field_edit.className = 'to to_alert';
		field_counter.className = 'counter_alert';
	}
	
	field_counter.innerHTML = field_edit.value.length;
}

function copy_value(id_field1, id_field2, id_label)
{   
    //from, to
    var field1 = $(id_field1);
    var field2 = $(id_field2);
	var label = $(id_label)
    field2.value = field1.value;
	label.innerHTML = field2.value.length;
	
	recount(extract_number(field2.id));
}

function confirm_action_extended(operation, message)
{

	var confirmation = confirm_action(message);
	
	if(confirmation == true)
	{
		switch(operation)
		{
		case 1:
			rewrite_values('form_editor', 'translate_import', 'translate_to');
			return true;
			break;    
		case 2:
			rewrite_values('form_editor', 'translate_published', 'translate_to');
			return true;
			break;
		case 3:
			rewrite_values('form_editor', 'translate_current', 'translate_to');
			return true;
			break;	  
		default:
			return false;
		}
	}
	else
	{
		return false;
	}

}

function rewrite_values(id_form, source_field, target_field)
{   
    var form = $(id_form);
	var source_field_length = source_field.length;
	var myList = "";
	var myList2 = "";
	var counter = 0;
		
		for (i = 0; i < form.elements.length; i++)
		{
			var myElement = form.elements[i];
			var myName = myElement.name;
			var myType = myElement.type;
			var myValue = myElement.value;
			var myLength = myValue.length;
			var myNameBlank = myName.substr(0, source_field_length).toLowerCase();
			
			if(myType == "hidden" && myNameBlank === source_field.toLowerCase() )
			{
			
				myList = myList + "\n" + myName;
				
				var myId = myName.replace("[", "");
				myId = myId.replace("]", "");
				myId = myId.replace(source_field, "");
				
				var sourceElement = $(source_field + "[" + myId + "]");
				var sourceValue = sourceElement.value;
				var sourceLength = sourceValue.length;
				var targetElement = $(target_field + "[" + myId + "]");
				var targetValue = targetElement.value;
				var targetLength = targetElement.length;

			    if((sourceValue !== targetValue && trim(sourceValue) !== "") && (trim(targetValue) == ""))
			    {
					targetElement.value = sourceValue;
					compare_lengths("translate_from" + "[" + myId + "]", target_field + "[" + myId + "]", "edit_count" + "[" + myId + "]");
					counter++
					recount(myId);
				}

			}
			else
			{
				myList2 = myList2 + "\n" + myNameBlank;
			}
		}
	
	if(counter > 0)
	{
		alert(counter + " values has been inserted!");
	}
	else
	{
		alert("No values has been inserted!");
	}
	
	//alert(myList);
	//alert(myList2);

	return false;
}

function show_translations(id)
{
    var field = $(id);
    field.className = "field_show google_translator";
}

function show_suggestions(id)
{
    var field = $(id);
    field.className = "field_show suggestions";
}

function insert_suggestion(id, string)
{
    var field = $("translate_to[" + id + "]");
    field.value = string;
	recount(id);
	//alert(string);
}

/*
function hide_translations(id)
{
    var field = $(id);
    field.className = "field_hide google_translator";
}

function toggle_translations(id)
{
    var field = $(id);
	
		if (field.style.display != 'none')
		{
			field.style.display = 'none';
		}
		else
		{
			field.style.display = '';
		}
}
*/

/*
function expand_textfield(id_field)
{
    var field = $(id_field);
    field.style.height = '60px';
}
*/

function preview_value(id, title)
{
	var org = $("translate_from[" + id + "]");
	var mod = $("translate_to[" + id + "]");
	
	var preview = $("editor_preview");
	var preview_title = $("editor_prev_caption");
	var preview_org = $("editor_prev_org");
	var preview_mod = $("editor_prev_mod");
	
	preview_org.innerHTML = add_accelerator_key(org.value);
	preview_mod.innerHTML = add_accelerator_key(mod.value);
	preview_title.innerHTML = title;
	preview.className = 'visible';
		
	return true;
}

function add_accelerator_key(string)
{
	string = string.replace(/(<([^>]+)>)/ig, "");
	string = string.replace(/[&]{1}[a-zA-z0-9]{1}/g, "<u>$&</u>");
	string = string.replace(/(<u>){1}[&]{1}/g, "<u>");
	
	return string;
}

function show_field(id)
{
    var field = $(id);
    field.className = "field_show";
}

function hide_field(id)
{
    var field = $(id);
    field.className = "field_hide";
}

function show_field_advanced(id, classname)
{
    var field = $(id);
    field.className = "field_show" + " " + classname;
}

function hide_field_advanced(id, classname)
{
    var field = $(id);
    field.className = "field_hide" + " " + classname;
}

function disable_field(id)
{
    var field = $(id);
    field.disabled = "disabled";
}

function select_url(id, url)
{
	box = $(id);
	destination = box.options[box.selectedIndex].value;

	if (destination)
    {
       location.href = url + destination;
    }
}

/*
function hide_calendar()
{
    var calendar = $('calendar');
    calendar.style.visibility = "hidden";
}
*/

function get_timestamp(id)
{
	var fieldDate = $(id);
	var lastStamp = fieldDate.value;
	var theDate = new Date;
	var unixtime_ms = theDate.getTime();
	var newStamp = parseInt(unixtime_ms / 1000);
	
	var diffSeconds = newStamp - lastStamp;
	
	return diffSeconds;
}

//checks the rights string for validity (xxxxxx)
function check_rights_validity(rights)
{
	var filter = /^[0-1]{6}$/;
	return filter.test(rights) == false ? false : true;
}	 

//check user id for validity (number)
function check_user_validity(user)
{
	var filter = /^\d+$/;
	return filter.test(user) == false ? false : true;
}

//check email for validity
function check_email_validity(email)
{
	var email = email.toLowerCase();
	var filter = /^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/;
	return filter.test(email) == false ? false : true;
}

//check confirmation code for validity
function check_confirmation_validity(code)
{
	var code = code.toLowerCase();
	var filter = /^(tra|dev){1}\-[a-z0-9]{40}$/;
	return filter.test(code) == false ? false : true;
}

//check ini section validity
function check_inisection_validity(string)
{
	//var filter = /^\[{1}[a-zA-Z0-9-_.]*\]{1}$/;  // with  [  ]
	var filter = /^[a-zA-Z0-9-_.|]*$/;
	return filter.test(string) == false ? false : true;
}

//check ini key validity
function check_inikey_validity(string)
{
	var filter = /^[a-zA-Z0-9-_.|]*$/;
	return filter.test(string) == false ? false : true;
}

//check tag name validity
function check_tag_name_validity(string)
{
	var filter = /^[a-zA-Z0-9]+$/;
	return filter.test(string) == false ? false : true;
}

//check date validity
// 2007-12-15
function check_date_validity(string)
{
	var filter = /^(\d{4}\-\d{1,2}\-\d{1,2})$/;
	return filter.test(string) == false ? false : true;
}

//check time validity
// 12:12:12
function check_time_validity(string)
{
	var filter = /^(\d{1,2}\:\d{1,2}\:\d{1,2})$/;
	return filter.test(string) == false ? false : true;
}

//check version validity
// 1.2.444
function check_version_validity(string)
{
	var filter = /^[\d.]+$/;
	return filter.test(string) == false ? false : true;
}

//check number validity
function check_number_validity(number)
{
	var filter = /^\d+$/;
	return filter.test(number) == false ? false : true;
}

//check floating point number validity
function check_float_validity(number)
{
	var filter = /^([0-9]*[.]+[0-9]+|[0-9]+)$/;
	return filter.test(number) == false ? false : true;
}

//check image file validity
function check_image_file_validity(string)
{
	var string = trim(string.toLowerCase());
	var filter = /^.*[.]{1}(jpg|jpeg|gif|png)$/;
	return filter.test(string) == false ? false : true;
}

//check text file validity
function check_text_file_validity(string)
{
	var string = trim(string.toLowerCase());
	var filter = /^.*[.]{1}(ini|txt|lang|lng|dat|irl)$/;
	return filter.test(string) == false ? false : true;
}

//check language filename validity
//lang_file_colsel-en-english.ini
function check_language_filename_validity(string)
{
	var string = trim(string.toLowerCase());
	var filter = /^([a-zA-Z0-9-_.]*|{xx}|{english}|{native}|{software})+\.{1}[a-zA-Z]{3,4}$/;
	var filter2 = /^.*({xx}|{english}|{native}|{software})+.*$/;
	var filter3 = /^[a-zA-Z0-9-_.]+[.]{1}[a-zA-Z]{3,4}$/;
	
	if(filter.test(string) == true)
	{
		if(filter2.test(string) == true || filter3.test(string) == true)
		{
			return true;
		}
		else
		{
			return false;
		}		
	}
	else
	{
		return false;
	}
	
}

function confirm_action(content)
{
	return confirm(content);
}

function extract_number(string)
{
    return string.replace(/\D/g, ''); 
}

function select_text(id)
{
	if(element_exists(id) == true)
	{
		$(id).focus();
		$(id).select();
	}
}

//Focusing fields
function focus_field(id)
{
	if(element_exists(id) == true)
	{
		$(id).focus();
	}
}

function get_browser_specific_class(string)
{
	if(/Firefox[\/\s](\d+\.\d+)/.test(string) == true
	|| /Chrome[\/\s](\d+\.\d+)/.test(string) == true
	|| /Opera[\/\s](\d+\.\d+)/.test(string) == true)
	{
		return "class";
	}
	else
	{
		//ie
		return "className";
	}
}

//Track searches
function track_search(id)
{
	var keyword = trim($(id).value);
	if(keyword.length > 0)
	{
		pageTracker._trackEvent('Search', 'Keyword', keyword);
	}
}

//check url validity
/*
function check_url_validity(string)
{
	var filter = "/|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i/";
	return filter.test(string) == false ? false : true;
}
*/