﻿var editDetailsControl = new Array();
editDetailsControl.data = new Array();
editDetailsControl.applyID = "";
editDetailsControl.nonhandledIDs = new Array();
editDetailsControl.hdnSaveRequest = null;
editDetailsControl.lnkSaveRequest = null;
editDetailsControl.container = null;
//editDetailsControl.onclickfunctions = {};
editDetailsControl.dURL = "/controls/BSWeb/EditDetailsControlDispatcher.aspx";
//editDetailsControl.IsDataChanged = false;

function editCardInit(applyID, nonhandledIDs, container)
{
	//if(!editDetailsControl.hdnSaveRequest) return;
	if(!editDetailsControl.IsDataChanged) return;
	if(!document.getElementById(applyID)) return;
	if(!$(container)) return;
	if($(container).offsetHeight == 0) return;
	document.getElementById(applyID).onclick = editCardApply;
	
	//alert(document.getElementById("<%= hdnSaveRequest.ClientID%>").value);
	var param = getCookie("editDetailsControl");
	if(param)
	//if(editDetailsControl.hdnSaveRequest.value != "")
	{
		deleteCookie("editDetailsControl");
		var params = param.split("|");
		if(params[0] == "id")
		{
			var tmp = params[1];
			//alert(tmp);
			//editDetailsControl.hdnSaveRequest.value = "";
			if(document.getElementById(tmp).href == "javascript:void(0)")
			{
				if(typeof document.getElementById(tmp).onclick != "undefined")
					document.getElementById(tmp).onclick();
			}
			else
			{
				//editDetailsControl.lnkSaveRequest.href = document.getElementById(tmp).href;
				if (document.all)
				{
					locationHref(document.getElementById(tmp).href);
				}
				else
					document.location.href = document.getElementById(tmp).href;
				return false;
			}
		}
		else
		{
			try
			{
				if(params[1].toLowerCase().indexOf("location.href") != -1)
				{
					eval(params[1]);
					return;
				}
			}
			catch(e){}
			if (document.all)
			{
				locationHref(params[1]);
			}
			else
				document.location.href = params[1];
			return false;
		}
	}

	editDetailsControl.applyID = applyID;
	if(nonhandledIDs != "")
	{
		var arrnonhandledIDs = nonhandledIDs.split(",");
		for(var i = 0; i < arrnonhandledIDs.length; i++)
			editDetailsControl.nonhandledIDs[arrnonhandledIDs[i]] = true;
	}
	editDetailsControl.container = container;
	editCardSaveValues();
	//Каждую секунду проверяем состояние и меняем иконку сохранения соответсвенно.
	setTimeout("editCardUpdateState()", 10);
	var arrInput = document.getElementsByTagName("a");
	var cont = $(container);
	for(var i = 0; i < arrInput.length; i++)
	{
		var a = arrInput[i];
		if(!hasParent(a, cont))
			if (a.id != editDetailsControl.applyID && typeof editDetailsControl.nonhandledIDs[a.id] == "undefined" && !a.getAttribute("nosaverequest") && a.id.indexOf("cmdHelp") == -1)
			{
				if(typeof a.onclick == "function")
				{
					//alert(arrInput[i].onclick);
					a.onclickfunction = a.onclick;
				}
				a.onclick = editCardSaveRequest;
			}
	}
	var arrInput = document.getElementsByTagName("tr");
	for(var i = 0; i < arrInput.length; i++)
	{
		var tr = arrInput[i];
		if(!hasParent(tr, cont))
			if (tr.getAttribute("menuclick"))
			{
				if(typeof tr.onclick == "function")
				{
					//alert(arrInput[i].onclick);
					tr.onclickfunction = tr.onclick;
				}
				tr.onclick = editCardSaveRequest;
			}
	}
	
	/*for(var i in arrInput)
	{
		if(typeof arrInput[i].id != 'undefined')
		{
			if (arrInput[i].id != "" && arrInput[i].id != editDetailsControl.applyID && typeof editDetailsControl.nonhandledIDs[arrInput[i].id] == "undefined" && arrInput[i].id.indexOf("CalendarControl") == -1  && !arrInput[i].getAttribute("nosaverequest") && arrInput[i].id.indexOf("cmdHelp")+7 != arrInput[i].id.length)
			{
				if(typeof arrInput[i].onclick == "function")
				{
					//alert(arrInput[i].onclick);
					editDetailsControl.onclickfunctions[arrInput[i].id] = arrInput[i].onclick;
				}
				arrInput[i].onclick = editCardSaveRequest;
			}
		}
	}*/

	var arrInput = document.getElementsByTagName("select");
	for(var i in arrInput)
		if(typeof arrInput[i].onchange == "function" && typeof arrInput[i].getAttribute != 'undefined')
			if (arrInput[i].getAttribute("listboxid") != null)
				arrInput[i].onchange();
	
	attachValidationEventsToElements();

}

function editCardSaveValues()
{
	var arrInput = document.getElementById(editDetailsControl.container).getElementsByTagName("input");
	var index = arrInput.length;
	var arrOther = document.getElementById(editDetailsControl.container).getElementsByTagName("select");
	for(var i = 0; i < arrOther.length; i++, index++) arrInput[index] = arrOther[i];
	arrOther = document.getElementById(editDetailsControl.container).getElementsByTagName("textarea");
	for(var i = 0; i < arrOther.length; i++, index++) arrInput[index] = arrOther[i];
	for(var i in arrInput)
	{
		if(typeof arrInput[i].id != 'undefined')
			if (arrInput[i].id != "" && arrInput[i].getAttribute && !arrInput[i].getAttribute("nosaverequest"))
			{
				switch(arrInput[i].type)
				{
					case "checkbox":
						editDetailsControl.data[arrInput[i].id] = arrInput[i].checked;
						break;
					case "select-one":
					case "text":
					case "textarea":
						//alert(arrInput[i].type + " " + arrInput[i].id + " " + arrInput[i].value);
						editDetailsControl.data[arrInput[i].id] = arrInput[i].value;
						break;
				}
			}
	}
}

function editCardCheckValues()
{
	if(editDetailsControl.IsDataChanged.value == "1") return true;

	var arrInput = document.getElementById(editDetailsControl.container).getElementsByTagName("input");
	var index = arrInput.length;
	var arrOther = document.getElementById(editDetailsControl.container).getElementsByTagName("select");
	for(var i = 0; i < arrOther.length; i++, index++) arrInput[index] = arrOther[i];
	arrOther = document.getElementById(editDetailsControl.container).getElementsByTagName("textarea");
	for(var i = 0; i < arrOther.length; i++, index++) arrInput[index] = arrOther[i];
	editDetailsControl.IsDataChanged.value = "1";
	for(var i in arrInput)
	{
		if(typeof arrInput[i].id != 'undefined')
			if (arrInput[i].id != "")
				if(typeof editDetailsControl.data[arrInput[i].id] != "undefined")			{
					switch(arrInput[i].type)
					{
						case "checkbox":
							if(editDetailsControl.data[arrInput[i].id] != arrInput[i].checked) return true;
							break;
						case "select-one":
						case "text":
						case "textarea":
							if(editDetailsControl.data[arrInput[i].id] != arrInput[i].value) return true;
							break;
					}
			}
	}
	editDetailsControl.IsDataChanged.value = "0";
	return false;
}

function editCardUpdateState()
{
	if(editCardCheckValues())
	{
		document.getElementById(editDetailsControl.applyID).getElementsByTagName("img")[0].src = "/images/Save_Yellow.gif";
		return;
	}
	setTimeout("editCardUpdateState()", 1000);
}

function editCardSaveRequest()
{
	if(editCardCheckValues())
		if (window.confirm("Would you like to save changes before leaving?"))
		{
			//editDetailsControl.hdnSaveRequest.value = this.id;
			if(this.getAttribute("menuclick"))
				setCookie("editDetailsControl", "href|" + this.getAttribute("menuclick"), 20);
			else if(this.id)
				setCookie("editDetailsControl", "id|" + this.id, 20);
			else if(this.href && typeof this.onclickfunction != "function")
				setCookie("editDetailsControl", "href|" + this.href, 20);
				
			if (document.all)
				document.getElementById(editDetailsControl.applyID).click();
			else
				document.location.href = document.getElementById(editDetailsControl.applyID).href;
			return false;
		}
	if(typeof this.onclickfunction == "function") this.onclickfunction();
}

function editCardApply()
{
	var message = validateForm();
	if(message != "")
	{
		alert(message);
		return false;
	}
}

function editCardHandleLocking(itemID, sheetID, lock)
{
	setTimeout("editCardCheckLocking('" + itemID + "', '" + sheetID + "')", 10000);
}

function editCardCheckLocking(itemID, sheetID)
{
	var pars = "action=islocked&itemID=" + itemID + "&sheetID=" + sheetID;
    new Ajax.Request(editDetailsControl.dURL, {method: 'post', onSuccess: function(s){editCardLockingChecked(s, itemID, sheetID)}, parameters: pars} );
}

function editCardLockingChecked(s, itemID, sheetID)
{
	var r = s.get_responseData();
	var divLocked = getElementByAttribute("div", "cid", "EditDetailsControl_divLocked_" + sheetID)
	var divUnlocked = getElementByAttribute("div", "cid", "EditDetailsControl_divUnlocked_" + sheetID)
	if(r == "1")
	{
		if(divLocked.style.display == "none") divLocked.style.display = "";
		if(divUnlocked.style.display != "none") divUnlocked.style.display = "none";
		var lblLockedBy = getElementByAttribute("span", "cid", "EditDetailsControl_lblLockedBy_" + sheetID);
		lblLockedBy.innerHTML = s.getResponseHeader("lockedby");
	}
	else
	{
		if(divLocked.style.display != "none")
		{
			divLocked.style.display = "none";
			if(divUnlocked.style.display == "none") divUnlocked.style.display = "";
		}
		editCardKeepLocking(itemID, sheetID);
	}
	setTimeout("editCardCheckLocking('" + itemID + "', '" + sheetID + "')", 10000);
}

function editCardKeepLocking(itemID, sheetID)
{
	var pars = "action=keeplocking&itemID=" + itemID + "&sheetID=" + sheetID;
	var me = this;
    new Ajax.Request(editDetailsControl.dURL, {method: 'post', onSuccess: function(s){editCardLockingKeeped(s, itemID, sheetID)}, parameters: pars} );
}

function editCardLockingKeeped(s, itemID, sheetID)
{
}

var listboxesDropdownsData = new Array();

function handleListboxRelation(elem, child)
{

	var options = new Array();
	var j = 0;
	for(var i in listboxesData[child])
	{
		if(listboxesData[child][i] == elem.value) options[j++] = i;
	}
	
	var arrInput = document.getElementsByTagName("select");
	for(var i in arrInput)
		if(typeof arrInput[i].getAttribute != 'undefined')
			if (arrInput[i].getAttribute("listboxid") == child)
			{
				var objElem = arrInput[i];
				var oldValue = objElem.value;
				if(listboxesDropdownsData[objElem.id] == null)
				{
					listboxesDropdownsData[objElem.id] = new Array();
					for(var j = 0; j < objElem.options.length; j++)
					{
						listboxesDropdownsData[objElem.id][objElem.options[j].value] = objElem.options[j].text;
					}
				}
				objElem.options.length = 0;
				for(var j = 0; j < options.length; j++)
					if(options[j] == oldValue)
					{
						objElem.options[j] = new Option(listboxesDropdownsData[objElem.id][options[j]], options[j]);
						objElem.options[j].selected = true;
					}
					else
						objElem.options[j] = new Option(listboxesDropdownsData[objElem.id][options[j]], options[j]);
				//alert("parent value: " + elem.value + "; child: " + child + "\n id: " + arrInput[i].id);
				//objElem.value = oldValue;
			}
}