/**
* Содержит вспомогательные функции
*
* @package stockphoto
* @author Igor Palchik <viper@uptsoft.com>
* @copyright UPT Ltd 2007
* @version $Id: common.js,v 1.20 2008/11/06 15:36:43 mn Exp $
*/

/**
* Функция включения/выключения кнопки в зависимости от значения чекбокса
*/
function fEnableButton(pObj, pBtnObj, pEnableClassName, pDisableClassName)
{
	var checkboxObj = document.getElementById(pObj);
	var buttonObj = document.getElementById(pBtnObj);

	if (checkboxObj == "" || checkboxObj == 'undefined' || checkboxObj == null)
	{
		return false;
	}
	if (buttonObj == "" || buttonObj == 'undefined' || buttonObj == null)
	{
		return false;
	}
	if (checkboxObj.checked)
	{
		buttonObj.className = pEnableClassName;
		buttonObj.disabled = false;
	}
	else
	{
		buttonObj.className = pDisableClassName;
		buttonObj.disabled = true;
	}
}

/**
* Просмотр фотографии
*/
function fView(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement("INPUT");

	item.setAttribute('name', 'item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);

	pObj.appendChild(item);

	pObj.method = 'GET';

	pObj.submit();

	return false;
}

/**
* Удаление фотографии
*/
function fDelete(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}
	if (confirm(MSG_DELETE_CONFIRM))
	{
		var item = document.createElement('INPUT');
		item.setAttribute('name', 'delete_item_id');
		item.setAttribute('type', 'hidden');
		item.setAttribute('value', pItemId);
		pObj.appendChild(item);
		pObj.submit();
		return false;
	}

	return false;
}

/**
* Удаление записи
*/
function fDeleteRecord(pObj)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}
	if (confirm(MSG_DELETE_CONFIRM))
	{
		var item = document.createElement('INPUT');
		item.setAttribute('name', 'delete');
		item.setAttribute('type', 'hidden');
		pObj.appendChild(item);
		pObj.submit();
		return false;
	}

	return false;

}

/**
* Редактирование фотографии
*/
function fEdit(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement('INPUT');
	item.setAttribute('name', 'edit_item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);
	pObj.appendChild(item);
	pObj.submit();

	return false;
}

/**
* Редактирование фотографии
*/
function fAddToLightBox(pObj, pItemId)
{

	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement('INPUT');
	item.setAttribute('name', 'lightbox_item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);
	pObj.appendChild(item);
	pObj.submit();

	return false;
}

/**
* Редактирование фотографии
*/
function fAddToOrder(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement('INPUT');
	item.setAttribute('name', 'order_item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);
	pObj.appendChild(item);
	pObj.submit();

	return false;
}

/**
* Редактирование фотографии
*/
function fRemoveFromLightBox(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement('INPUT');
	item.setAttribute('name', 'remove_lightbox_item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);
	pObj.appendChild(item);
	pObj.submit();

	return false;
}

/**
* Редактирование фотографии
*/
function fRemoveFromOrder(pObj, pItemId)
{
	if (pObj == "" || pObj == 'undefined' || pObj == null)
	{
		return false;
	}

	var item = document.createElement('INPUT');
	item.setAttribute('name', 'remove_order_item_id');
	item.setAttribute('type', 'hidden');
	item.setAttribute('value', pItemId);
	pObj.appendChild(item);
	pObj.submit();

	return false;
}

/**
* Функция для обработки нажатия на кнопку просмотра фотографий фотографа
*/
function fViewPhoto(pURL, pVar, pFormName)
{
	eval('var oForm = document.' + pFormName + ';');

	if (oForm != null && oForm != 'undefined')
	{
		var id = 0;
		for(i=0; i<oForm.id.length; i++)
		{
			if (oForm.id[i].checked)
			{
				id = oForm.id[i].value;
			}
		}
		oForm.action = pURL;
		el = document.createElement('input');
		el.setAttribute('name', pVar);
		el.setAttribute('type', 'hidden');
		el.setAttribute('value', id);
		oForm.appendChild(el);
		oForm.submit();
	}
}

/**
* Функция для обработки нажатия на кнопку просмотра оплат фотографу
*/
function fViewPayments(pURL, pVar, pFormName)
{
	eval('var oForm = document.' + pFormName + ';');
	if (oForm != null && oForm != 'undefined')
	{
		var id = 0;
		for(i=0; i<oForm.id.length; i++)
		{
			if (oForm.id[i].checked)
			{
				id = oForm.id[i].value;
			}
		}
		oForm.action = pURL;
		el = document.createElement('input');
		el.setAttribute('name', pVar);
		el.setAttribute('type', 'hidden');
		el.setAttribute('value', id);
		oForm.appendChild(el);
		oForm.submit();
	}
}

/**
* Функция для обработки нажатия на кнопку просмотра заказов покупателя
*/
function fViewOrders(pURL, pVar, pFormName)
{
	eval('var oForm = document.' + pFormName + ';');
	if (oForm != null && oForm != 'undefined')
	{
		var id = 0;
		for(i=0; i<oForm.id.length; i++)
		{
			if (oForm.id[i].checked)
			{
				id = oForm.id[i].value;
			}
		}
		oForm.action = pURL;
		el = document.createElement('input');
		el.setAttribute('name', pVar);
		el.setAttribute('type', 'hidden');
		el.setAttribute('value', id);
		oForm.appendChild(el);
		oForm.submit();
	}
}

/**
* Функция для ресета передаваемой формы.
*/
function fReset(pForm)
{
	if (pForm == null || pForm == 'undefined')
	{
		return false;
	}
	pForm.reset();
	return true;
}

function fShowExifInfo(pID, pObj)
{
	Ext.BLANK_IMAGE_URL = 'library/extjs/i/default/s.gif';
	Ext.form.DateField.format = 'y/m/d';
	var win_wait = Ext.MessageBox.show({
           title: TXT_LOADING,
           msg: TXT_LOADING,
           progressText: TXT_LOADING,
           waitConfig: {interval:100},
           wait: true,
           width:300,
           progress:true,
           closable:false,
           animEl: pObj
    });

	Ext.Ajax.request({
		method: 'POST',
		params: {exif:'', pid: pID},
		url: exif_url,
		success: function(t) {
	        if (t.responseText != "")
	        {
	        	setTimeout(function(){win_wait.hide();},3000);
	        	eval('var params = ' + t.responseText + ';');
	        	var store_data = new Array();
				for(var i in params)
				{
					if (params[i].PE_NAME != null && params[i].PE_NAME != 'undefined' && params[i].PE_NAME != '' && params[i].PE_VALUE != null && params[i].PE_VALUE != 'undefined' && params[i].PE_VALUE != '')
					{
						var tmp = new Array();
						tmp[0] = params[i].PE_NAME;
						tmp[1] = params[i].PE_VALUE;

						store_data.push(tmp);
					}
				}

				var available_exif_info = new Ext.data.SimpleStore({
					fields: ['name', 'value'],
					data: store_data
				});

			    var win = new Ext.Window({
			        layout:'fit',
			        width:800,
			        height:600,
			        plain: true,
			        modal: true,
					items:[new Ext.grid.GridPanel(
					{
						store: available_exif_info,
				        columns: [
				            {id:'name', header: '', sortable: false, dataIndex: 'name'},
				            {id:'value', header: '', width: 600, sortable: false, dataIndex: 'value'}
				        ],
				        stripeRows: true,
				        autoExpandColumn: 'name',
				        height:350,
				        autoScroll: true,
				        width:800,
				        title:''
					})]
			    });
			    setTimeout(function(){win.show(pObj);}, 2000);
	        }
	        else
	        {
	        	win_wait.hide();
	        }
		},
		failure: function(){}
	});

    return false;
}

function fChooseNewVal(pObj, pName, pArrName)
{
	var tmpArr = new Array();

	eval("tmpArr = " + pArrName);

	selId = pObj.options[pObj.selectedIndex].value;

	for (j=0; j<pObj.options.length; j++)
	{
		if (pObj.options[j] != null && pObj.options[j] != 'undefined')
		{

			pChildNodes = new Array();

			fGetChildNodesRecursive(tmpArr, pObj.options[j].value);

			for (ii=0; ii<pChildNodes.length; ii++)
			{
				el = document.getElementById(pName + tmpArr[pChildNodes[ii]]['pid']);
				if (el != null && el != 'undefined')
				{
					Element.remove(pName + tmpArr[pChildNodes[ii]]['pid']);
				}
				el = document.getElementById("BR" + pName + tmpArr[pChildNodes[ii]]['pid']);
				if (el != null && el != 'undefined')
				{
					Element.remove("BR" + pName + tmpArr[pChildNodes[ii]]['pid']);
				}
			}
		}
	}

	newSelectOptionsArr = null;
	newSelectOptionsArr = fGetChildNodes(tmpArr, selId);

	if (tmpArr[selId] != null && tmpArr[selId] != 'undefined')
	{
		parentId = tmpArr[selId]['pid'];

		if (document.getElementById(pName + parentId) != null && document.getElementById(pName + parentId) != 'undefined')
		{
			document.getElementById(pName + parentId).name = "";
		}
	}

	pObj.name = pName;

	if (selId == 0)
	{
		pObj.name = "";
		if (pObj.options.length > 0)
		{
			tmpOpt = pObj.options[1].value;
			if (tmpArr[tmpOpt] != null && tmpArr[tmpOpt] != 'undefined')
			{
				if (tmpArr[pObj.options[1].value]['pid'] != "")
				{
					tmpSel = '<select id="' + pObj.id + '" onchange="fChooseNewVal(this,\'' + pName + '\', \'' + pArrName + '\');">';
					tmpSel = tmpSel + '<option value="0">' + tmpArr[tmpArr[pObj.options[1].value]['pid']]['emptyVal'] + '</option>';
					for (var i in pObj.options)
					{
						if (pObj.options[i] != 'undefined' && pObj.options[i] != null)
						{
							tmpSel = tmpSel + '<option value="' + pObj.options[i].value + '">' + tmpArr[pObj.options[i].value]['value'] + '</option>';
						}
					}
					tmpSel = tmpSel + '</select>';
					Element.remove(pObj.id);

					new Insertion.After('BR' + pName + tmpArr[tmpOpt]['pid'], tmpSel);
				}
			}
		}
	}

	if (newSelectOptionsArr != null && newSelectOptionsArr != 'undefined')
	{
		new Insertion.After(pObj.id, '<br id="BR' + pName + selId + '"/><select id="' + pName + selId + '" onchange="fChooseNewVal(this, \'' + pName + '\', \'' + pArrName + '\');"><option value="0">' + tmpArr[selId]['emptyVal'] + '</option></select>');
		var opt_arr = new Array();
		for (var i in newSelectOptionsArr)
		{
			if (newSelectOptionsArr[i] != 'undefined' && newSelectOptionsArr[i] != null)
			{
				if (tmpArr[newSelectOptionsArr[i]] != 'undefined' && tmpArr[newSelectOptionsArr[i]] != null)
				{
					var opt = document.createElement('option');
					opt.setAttribute('value', newSelectOptionsArr[i]);
					opt.innerHTML = tmpArr[newSelectOptionsArr[i]]['value'];
					opt.text = tmpArr[newSelectOptionsArr[i]]['value'];
					opt_arr[parseInt(tmpArr[newSelectOptionsArr[i]]['index'])] = opt;
				}
			}
		}
		for (var i=0; i<opt_arr.length; i++)
		{
			if (typeof(opt_arr[i]) == 'object')
			{
				document.getElementById(pName + selId).appendChild(opt_arr[i]);
			}
		}
	}
}

function fGetChildNodes(pArr, pId)
{
	var result = new Array();
	for (var i=1; i<pArr.length; i++)
	{
		if (pArr[i] != null && pArr[i] != 'undefined')
		{
			if (pArr[i]['pid'] == pId)
			{
				result[i] = i;
			}
		}
	}
	return (result.length > 0)? result : null;
}

var pChildNodes = new Array();

function fGetChildNodesRecursive(pArr, pId)
{
	var result = fGetChildNodes(pArr, pId);

	if (result != null && result != 'undefined')
	{
		for (var i=0; i<result.length; i++)
		{
			if (result[i] != null && result[i] != 'undefined')
			{
				pChildNodes = pChildNodes.concat(result[i]);
				fGetChildNodesRecursive(pArr, result[i]);
			}
		}
	}

	return false;
}
//дополнительная генерация уникального значения _fvc инпутов для защиты от кеширования
function generateFVC()
{
	var inputs = document.getElementsByName('_fvc');
	for(var i=0;i<inputs.length;i++)
	{
		var attr = inputs[i].getAttribute('name');
		var num = Math.random();
		var prev_attr = inputs[i].getAttribute('value');
		inputs[i].setAttribute('value',prev_attr+num);
	}
}