var x_pos = 20;
var y_pos = 20;
var already_open = 0;
var next_wid = 0;
var registry = new Array();
registry['grid_prefixes'] = Array();

function setUserLanguage(lang)
{
	document.kernel_form.action = front_end_action;
	if (document.kernel_form.t.value = 'cms') {
		document.kernel_form.t.value = document.kernel_form.ct.value.toString().replace(/^\//, '');
	}
	document.kernel_form.lang_prefix.value = lang;
	document.kernel_form.elements["branch"].value = branch;
	submit_kernel_form();
}

function setSubAction(prefix, sub_action, item_id) 
{ 
     // sets specific sub action (makes requested item selected if needed) 
     if(item_id != null) 
     { 
          document.kernel_form.elements[prefix + 'id'].value = item_id; 
          registry[prefix+'selected_count'] = 1; // one item selected      
     } 
     submit_action(prefix, 'action_grid', sub_action);      
} 

function SelectCompare(a, b)
{
	if (a[0] < b[0])
		return -1;
	if (a[0] > b[0])
		return 1;
	return 0;
}

function SelectToString(aSelect)
{
	// patched by Alex
	var result = '';
	for (var i=0; i < aSelect.length; i++)
	{
		cur = aSelect.options[i];
		result += cur.value+',';
	}
	if(result.length > 0) result = result.substring(0,result.length-1);
	//alert(result);
	return result;
}

function MoveSelected(FromList, ToList)
{
	FromArr = SelectToArray(FromList);
	ToArr = SelectToArray(ToList);
	
	NewFrom = Array();
	
	for (var i=FromArr.length-1; i >= 0; i--)
	{
		cur = FromArr[i];
		if (cur[2]) { //If selected - add to To array
			ToArr[ToArr.length] = cur;
		}
		else { //Else - keep in new From
			NewFrom[NewFrom.length] = cur;
		}
	}
	
	NewFrom.sort(SelectCompare);
	ToArr.sort(SelectCompare);
	
	FromList = ArrayToSelect(NewFrom, FromList);
	ToList = ArrayToSelect(ToArr, ToList);
}

function SelectToArray(aSelect)
{
	var an_arr = new Array();
	for (var i=0; i < aSelect.length; i++)
	{
		cur = aSelect.options[i];
		an_arr[an_arr.length] = new Array(cur.text, cur.value, cur.selected);
	}
	return an_arr;
}

function ArrayToSelect(anArray, aSelect)
{
	var initial_length = aSelect.length;
	for (var i=initial_length-1; i >= 0; i--) {	aSelect.options[i] = null; }
		
	for (var i=0; i < anArray.length; i++)
	{
		cur = anArray[i];
		aSelect.options[aSelect.length] = new Option(cur[0], cur[1]);
	}
}

function select_selected(list, selected_value) 
{
	var count = list.options.length;
 	for (var current = 0; current < count; current ++) 
 	{
  	if (list.options[current].value == selected_value) 
  	{
   		list.options[current].selected = "1";
   		break;
  	}
 	}
}

function submit_kernel_form()
{
	document.kernel_form.submit();
	document.kernel_form.target = '';
	document.kernel_form.t.value = t;
}

function submit_action(prefix, action_field, action)
{
	// submit_action('cart__', 'action', 'UpdateCart');
	// alert(" prefix = " + prefix + " action_field = " + action_field + " action = " + action);
	
	document.kernel_form.elements[prefix + action_field].value = action;
//	alert (document.kernel_form.elements[prefix + action_field].value);
	submit_kernel_form();
}

function main_window()
{
	//alert('here: '+typeof(window.opener));
	//alert('opener name: '+typeof window.opener.name);
	if (typeof(window.opener) != 'undefined') {
		if (window.opener != null) {
			//alert('opener exists parent: '+window.parent['hidden_script'].name);
			return window.opener;
		}	
	}
	return window;
}

function hidden_script()
{
	var wnd = main_window();
	//alert('name of wnd: '+wnd.name);
	//alert('alert: type of wnd parent: '+typeof(wnd.parent));
	return wnd.parent['hidden_script'];
}

function new_item(t, prefix)
{
	//alert(prefix + 'action_form');
	document.kernel_form.elements[prefix + 'action_form'].value='new';
	document.kernel_form.t.value = t;
	if (popups == 1) {
		tmp_t = t.replace('/', '_');
		openwin('', 'edit_'+tmp_t, 800,600);
		document.kernel_form.target='edit_'+tmp_t;
	}
	submit_kernel_form();
}

function set_first_selected(field, prefix)
{
	id = get_first_selected(prefix);
	if (id !== false) {
		field.value = id;
		return true;
	}
	else
		return false;
}

function get_first_selected(prefix)
{
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value) && document.kernel_form.elements[i].checked) {
			id = RegExp.$1;
			return id;
		}
	}
	return false;
}

function count_selected(prefix) {
	count=0;
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value)) {
			if (document.kernel_form.elements[i].checked) count++;
		}
	}
	return count;
}

function inverse_selected(prefix)
{
	//alert(prefix);
	for (var i = 0; i < document.kernel_form.elements.length; i++)
	{
		cur_name = document.kernel_form.elements[i].name;
		//alert( cur_name );
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value))
		{
			//alert( "eq" );
			document.kernel_form.elements[i].checked = !document.kernel_form.elements[i].checked
			id = RegExp.$1;
			select_row(id, 1, prefix);
		}
	}
}

/*function inverse_selected(prefix)
{
	alert(prefix);
	for (var i = 0; i < document.kernel_form.elements.length; i++)
	{
		cur_name = document.kernel_form.elements[i].name;
		alert( cur_name );
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value))
		{
			alert( "eq" );
			document.kernel_form.elements[i].checked = !document.kernel_form.elements[i].checked
			id = RegExp.$1;
			select_row(id, 1, prefix);
		}
	}
}
*/

function inverse_selected_2(prefix) {	
	mask = "^" + prefix + "_([0-9]+)";	
	
	for (var i = 0; i < document.kernel_form.elements.length; i++)
	{
		cur_name = document.kernel_form.elements[i].name;
//		alert( cur_name );
		if (cur_name.match(mask))
		{
			document.kernel_form.elements[i].checked = !document.kernel_form.elements[i].checked
			id = RegExp.$1;
//			alert(prefix+'_'+id);
//			document.all[prefix+'_'+id].checked = true;
	//		alert( document.kernel_form.elements[visible_1] );
//				alert( document.kernel_form.elements['visible_1'].name );
		}
	}
}

function my_select_all(prefix)
{
	mask = "^" + prefix + "_([0-9]+)";	
	for (var i = 0; i < document.kernel_form.elements.length; i++) 
	{
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(mask)) 
			document.kernel_form.elements[i].checked = true;
	}
}




function clear_all_selected(prefix) {
	submit_action(prefix, 'action_grid', 'ClearSelected');
}

function select_all(prefix)
{
//	alert(prefix);
	
	if (!document.kernel_form.cb_select_all.checked)
		clear_all_selected(prefix);
	else
	{
		document.kernel_form.elements[prefix + 'action_grid'].value = 'SelectAll';
		submit_kernel_form();
	}
}

/* commented by Sergey
function select_all_2(prefix)
{
	alert(document.kernel_form.cb_select_all_2.checked);
	if (!document.kernel_form.cb_select_all_2.checked)
		clear_all_selected(prefix);
	else
	{
		document.kernel_form.elements[prefix + 'action_grid'].value = 'SelectAll';
		submit_kernel_form();
	}
}
*/

/* commented by Sergey
function clear_selected(prefix)
{
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value)) {
			if (document.kernel_form.elements[i].checked) {
				document.kernel_form.elements[i].checked = false;
				id = RegExp.$1;
				select_row(id, 1, prefix);
			}
		}
	}
}
*/
function clear_selected( prefix )
{
	mask = "^" + prefix + "_([0-9]+)";	
	for (var i = 0; i < document.kernel_form.elements.length; i++) 
	{
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(mask)) 
			document.kernel_form.elements[i].checked = false;
	}
}

function select_n_modify(t, item_id, prefix) {
		document.kernel_form.elements['item_'+item_id].checked = true;
		edit_item(t, prefix);
	}

function edit_item(t, prefix)
{ 
	if (registry[prefix+'selected_count'] > 0) {
			if (document.kernel_form.elements[prefix + 'id'] == '')
				set_first_selected(document.kernel_form.elements[prefix + 'id'], prefix);
			document.kernel_form.elements[prefix + 'action_form'].value='load';
			document.kernel_form.t.value=t;
			if (popups == 1) {
				tmp_t = 'edit_'+t+'_';
				if (multiple_windows == 1) 
					tmp_t += document.kernel_form.elements[prefix + 'id'].value;
				tmp_t = tmp_t.replace('/', '_');
				openwin('', tmp_t, 800,600);
				document.kernel_form.target=tmp_t;
			}
			if (already_open != 1) submit_kernel_form();
			if ((popups == 1) && (multiple_windows == 1))
				clear_selected(prefix);
	}
	else 
		alert('Please select at least one item!');
}

function delete_items(prefix) {
	if (registry[prefix+'selected_count'] > 0) {
		if (confirm('Are you sure you want to delete '+registry[prefix+'selected_count']+' selected items?')) {
			submit_action(prefix, 'action_grid', 'Delete');
		}
	}
	else 
		alert('Please select at least one item!');
}

function go_to_page(prefix, template, page) {
	document.kernel_form.t.value = template;
	document.kernel_form.elements[prefix + 'page'].value = page;
	document.kernel_form.elements[prefix + 'action_grid'].value = 'gotoPage';
	submit_kernel_form();
}

function save_edit(prefix)
{//	alert(document.kernel_form.elements[prefix + 'save_action'].value);
	submit_action(prefix, 'action_form', document.kernel_form.elements[prefix + 'save_action'].value);		
}


function cancel_edit(prefix)
{
	document.kernel_form.elements[prefix + 'action_form'].value='cancel';
	submit_kernel_form();
}

function cancel_select(prefix)
{
	document.kernel_form.elements[prefix + 'action_grid'].value='cancel';

	submit_kernel_form();
}

var has_changed = false;
function changed()
{
	has_changed = true;
}

function set_on_change() {
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur = document.kernel_form.elements[i];
		if (cur.type != 'hidden') {
			document.kernel_form.elements[i].onchange=changed;
		}
	}
	return false;		
}

function save_and_go(prefix, item_id) {
	if (!has_changed) {
		document.kernel_form.elements[prefix + 'action_form'].value='GoToId';
		document.kernel_form.elements[prefix + 'go_id'].value=item_id;
		submit_kernel_form();	
	}
	else {
		if (confirm('Do you want to save changes?')) {
			document.kernel_form.elements[prefix + 'action_form'].value='SaveAndGoToId';
			document.kernel_form.elements[prefix + 'go_id'].value=item_id;
			submit_kernel_form();
		}
		else {
			document.kernel_form.elements[prefix + 'action_form'].value='GoToId';
			document.kernel_form.elements[prefix + 'go_id'].value = item_id;
			submit_kernel_form();	
		}
	}
}

function sort_grid(prefix, field)
{
	document.kernel_form.elements[prefix + 'sort1'].value = field;
	document.kernel_form.elements[prefix + 'action_grid'].value = 'sort';

	submit_kernel_form();
}

function filter_grid(prefix)
{
	document.kernel_form.elements[prefix + 'action_grid'].value = 'filter';
	submit_kernel_form();
}

function reset_filters(prefix)
{
	document.kernel_form.elements[prefix + 'action_grid'].value = 'ResetFilters';
	submit_kernel_form();
}

function update_checkbox(cb, cb_hidden)
{
	cb_hidden.value = cb.checked ? 1 : 0;
}

function update_checkbox_options(cb_mask, cbo_hidden)
{
	var tmp = '';
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(cb_mask)) {
			if (document.kernel_form.elements[i].checked) 
				tmp += '|'+document.kernel_form.elements[i].value+'|,';
		}
	}
	tmp = tmp.replace(/,$/, '');	
	cbo_hidden.value = tmp;
}

function column_picker(table,prefix,special)
{
	norm_width = 300;
	norm_height = 440;
	screen_x = (screen.availWidth-norm_width)/2;
	screen_y = (screen.availHeight-norm_height)/2;
	window.open('index.php?t=std/column_picker&action=init&table='+table+'&template='+t+'&sid='+sid+'&prefix='+prefix+'&special='+special, 'fields', 'width='+norm_width+',height='+norm_height+',resizable=yes,left='+screen_x+',top='+screen_y);
}

function synchronize_selected(prefix)
{
	for (var i = 0; i < document.kernel_form.elements.length; i++) {
		cur_name = document.kernel_form.elements[i].name;
		if (cur_name.match(document.kernel_form.elements[prefix + 'mask'].value)) {
			id = RegExp.$1;
			select_row(id, 1, prefix);
		}
	}
}

function update_selected_count(prefix)
{
	if (typeof(document.getElementById('sp_selected_count')) != 'undefined') {
		document.getElementById('sp_selected_count').innerHTML = registry[prefix+'selected_count'];
	}
	if (registry[prefix+'selected_count'] == registry[prefix+'_total_items']) document.kernel_form.cb_select_all.checked = true;
	else document.kernel_form.cb_select_all.checked = false;
	
	if (count_selected(prefix) == registry[prefix+'_per_page']) document.kernel_form.inverse.checked = true;
	else document.kernel_form.inverse.checked = false;
	
}

function select_row(id, mode, prefix)
{
	// alert(' index = ' + prefix+'item_'+id );
	
	selector = document.getElementById(prefix+'item_'+id);
	
	var selected = selector.checked;
	if (mode == 1) {
		selected = !selected;
	}
	if (selected){
		registry[prefix+'selected_count']--;
		document.getElementById(prefix+'data_tr_'+id).className = 'data-tr';
		document.getElementById(prefix+'cb_tr_'+id).className = 'data-tr';
		document.getElementById(prefix+'item_'+id).checked = false;
	}
	else {
		registry[prefix+'selected_count']++;		
		document.kernel_form.elements[prefix + 'id'].value = id;
		document.getElementById(prefix+'data_tr_'+id).className = 'data-tr-selected';
		document.getElementById(prefix+'cb_tr_'+id).className = 'data-tr-selected';
		document.getElementById(prefix+'item_'+id).checked = true;

	}
	update_selected_count(prefix);
}

function pass_selected(prefix)
{
	if (registry[prefix+'selected_count'] == 1) {
		document.kernel_form.elements[prefix + 'action_grid'].value='select';
	
		submit_kernel_form();	
	}
	else {
		alert('You can only select 1 item!');
	}
}

function highlight_row(id, mode, prefix)
{
	if (mode == 1) {
		document.getElementById(prefix+'data_tr_'+id).className = 'data-tr-highlighted';
		document.getElementById(prefix+'cb_tr_'+id).className = 'data-tr-highlighted';
	}
	else {
		if (document.getElementById(prefix+'item_'+id).checked) {
			document.getElementById(prefix+'data_tr_'+id).className = 'data-tr-selected';
			document.getElementById(prefix+'cb_tr_'+id).className = 'data-tr-selected';
		}
		else {
			document.getElementById(prefix+'data_tr_'+id).className = 'data-tr';
			document.getElementById(prefix+'cb_tr_'+id).className = 'data-tr';
		}
	}
}

function remove_closed_windows()
{
	var windows_tmp = Array();
	if (typeof(hidden_script().windows.length) == 'unknown') {
		hidden_script().windows = Array();
		return;
	}
	for(var i = 0;i < hidden_script().windows.length;i++) {
		if(!hidden_script().windows[i].closed) {
			windows_tmp.push(hidden_script().windows[i]);
		}
	}
	hidden_script().windows = windows_tmp;
	var windows_tmp = Array();
}

function find_window(name)
{
	var ix;
	for(var i = 0;i < hidden_script().windows.length;i++) {
		if(hidden_script().windows[i].name == name) {
			ix = i;
			break;
		}
	}
	return ix;
}

function close_windows()
{
	//alert (window.parent['hidden_script'].windows.length);
	for(var i = 0;i < window.parent['hidden_script'].windows.length;i++) {
		window.parent['hidden_script'].windows[i].close(); 
	}
}

function openwin(url,name,w,h) {
	
	remove_closed_windows();
	//if(params != '') { params = '&'+params; }
	//if(name == '') { name = t+'_'+last_level_id; }
	
	var ix = find_window(name);
	
	if(isNaN(ix)) {
		next_wid = hidden_script().next_wid;
		var new_windw = window.open(url,name, 'status=yes,resizable=yes,toolbar=no,location=no,scrollbars=yes,width='+w+',height='+h+',resizable=yes,top='+y_pos+',left='+x_pos);
		hidden_script().next_wid++;
		var x = hidden_script().windows.push(new_windw) - 1;
		already_open = 0;
		
		x_pos += 25;
		y_pos += 25;
		if (	(x_pos > (window.screen.width - 800)) ||
					(y_pos > (window.screen.height - 600))) {
			x_pos = 20;
			y_pos = 20;
		}
	}else {
		x = ix;
		if (multiple_windows == 1) already_open = 1;
	}
	
	hidden_script().windows[x].focus();
	if (name != 'show_list') {
		document.kernel_form.wid.value = next_wid;
	}
}

function m_column_picker(obj,template,table)
{
	norm_width = 300;
	norm_height = 440;
	screen_x = (screen.availWidth-norm_width)/2;
	screen_y = (screen.availHeight-norm_height)/2;
	window.open('index.php?t=member/column_picker&action=init&table='+table+'&template='+t+'&sid='+sid+'&obj='+obj, 'fields', 'width='+norm_width+',height='+norm_height+',resizable=yes,left='+screen_x+',top='+screen_y);
}

function set_window_size(width, height)
{
	window.resizeTo(width, height);
}

function set_page_title(title)
{
	if (window.name == 'body') 
		window.parent.document.title = title+' - '+main_title;
	else
		document.title = title+' - '+main_title;	
}

var tmp_background;
function display_fulldiv(a_div)
{
	a_div.style.width = 'auto';
	tmp_background = a_div.style.background;
	a_div.style.background = 'white';  
	a_div.style.padding = '0 10 0 0';
	a_div.style.zIndex = 100;
}

function hide_fulldiv(a_div, width)
{ 
	a_div.style.width = width;
	a_div.style.background = tmp_background;
	a_div.style.padding = '0';
	a_div.style.zIndex = 99;
}

function SetGridSizes(prefix)
{
	//alert('setting sizes for prefix: '+prefix);
	var a_width = registry[prefix+'width'];
	var a_height = registry[prefix+'height'];
		//alert ('a_width: '+a_width+' a_height: '+a_height);
	var top = document.getElementById(prefix+'dataDiv').offsetTop;
	var left = document.getElementById(prefix+'dataDiv').offsetLeft;
	//252alert('top: '+top+' left: '+left);
	
		var add = 32;
		
	var width = 0;
	var height = 0;
	
	if (first_left == 0) {
		first_left = left;
		add_width = 0;
	}
	else {
		left = first_left;
		add_width = 80;
	}
	
	//alert ('left: '+left);
		
	width = document.body.clientWidth - left - add_width;
	if (a_width != '') {
		width = width*(a_width/100);
	}
	
	height = document.body.clientHeight - top - add;
	
	//alert ('width: '+width+' height: '+height);
	
	if(height < 99){
		height = 100;
		document.body.scroll = 'yes';
	} //else
		document.body.scroll = 'no';
	document.getElementById(prefix+'dataDiv').style.height = height;
	document.getElementById(prefix+'checkboxDiv').style.height = height;
	document.getElementById(prefix+'dataDiv').style.width = width;
	document.getElementById(prefix+'headDiv').style.width = width;
	if (typeof(document.getElementById(prefix+'totalDiv')) != 'undefined') {
		if (document.getElementById(prefix+'totalDiv') != null) {
			document.getElementById(prefix+'totalDiv').style.width = width;
		}
	}
}

var first_left = 0;

function UpdateGridSizes()
{
	first_left = 0;
	//alert('updateing sizes');
	grid_prefixes = registry['grid_prefixes'];
	for (i=0; i < grid_prefixes.length; i++)
	{
		//alert('prefix '+grid_prefixes[i]);
		SetGridSizes(grid_prefixes[i]);
	}
}

function SetDivWidth()
{
	var top = document.getElementById('fieldsDiv').offsetTop;
	var left = document.getElementById('fieldsDiv').offsetLeft;
	var height = document.body.clientHeight - top - 35;
	var width = document.body.clientWidth - left;
	if(height < 99){
		height = 100;
		document.body.scroll = 'yes';
	} //else
		document.body.scroll = 'no';
	document.getElementById('fieldsDiv').style.width = width;
	document.getElementById('fieldsDiv').style.height = height;
}


	function OpenPopup(url, win_width, win_height, w_options)
	{
		top_x = (screen.width - win_width) / 2;
		top_y = (screen.height - win_height) / 2 - 30;
		
		if (w_options != '')
			w_options = ',' + w_options;
		
		window.open(url,'popup','left='+top_x+',top='+top_y+',width='+win_width+',height='+win_height + w_options);	
	}	

function cms_edit(block_id)
{
	if (lang_prefix != default_lang_prefix) {
		document.kernel_form.t.value = 'cms/translate_text_block';
		document.kernel_form.force_translation_language.value = lang_prefix;
	}
	else {
		document.kernel_form.t.value = 'cms/edit_text_block';
	}

	document.kernel_form.cms_blocks__id.value = block_id;
	win_name = 'cms_block_edit_'+block_id;
	openwin('', win_name, 800,600);
	document.kernel_form.target = win_name;
//	set_admin_action();	
	submit_action('cms_blocks__', 'action_form', 'load');
}

function getStates(country_field, state_field)
{
	c_value = document.kernel_form.elements[country_field].value;
	
	country = '';
	state	  = '';
	s = '';
	
	var initial_length = document.kernel_form.elements[state_field].options.length;
	
	for (var i = initial_length - 1; i >= 0; i--) 	// obnuljaet massiv optionsov
		document.kernel_form.elements[state_field].options[i] = null; 
	
	if (c_value == 'CA' || c_value == 'US') {
		document.kernel_form.elements[state_field].disabled = false;
		document.kernel_form.elements[state_field].options[0] = new Option('', ''); // add an new empty option

		for(country in countries) { // base countries list
			if (c_value == country) {
				i=1;
				for(state in countries[country]) { // base states list
					//s = s + " => "+  state +"\n";
					document.kernel_form.elements[state_field].options[i] = new Option(countries[country][state], state);
					i++;
				}
			}
		}					
		//alert("States array is: \n" + s);
	}
	else {
		document.kernel_form.elements[state_field].options[0] = new Option('', ''); // add an new empty option
		document.kernel_form.elements[state_field].disabled = true;
	}
}

function OpenChatWindow(chat_url,sid)
{
		norm_width = 1024;
    norm_height = 780;
    screen_x = (screen.availWidth-norm_width)/2;
    screen_y = (screen.availHeight-norm_height)/2;
    window.open(chat_url, 'chat_window', 'width='+norm_width+',height='+norm_height+',scrollbars=no,left='+screen_x+',top='+screen_y);
}

